데이터분석-머신러닝-AI/강의 정리

[혼자 공부하는 머신러닝+딥러닝] 23강. 순차 데이터와 순환 신경망 - 자연어 처리를 위한 신경망

bluebamus 2023. 11. 28.

https://www.youtube.com/watch?v=QCh_FqPWEsk&list=PLJN246lAkhQjoU0C4v8FgtbjOIXxSs_4Q&index=27

 

 - 순차 데이터란(sequential data)?

   - 순차 데이터(sequential data)란 텍스트 데이터 혹은 시계열 데이터와 같이 특정한 규칙에 의해 순서에 의미가 있는 데이터들을 의미한다.

      - 예시 :

         - I have an apple.  ( O )
         - an have apple I.  ( X )

 

   - context가 있다고도 표현한다.

   - 완전 연결 신경망이나 합성곱 신경망은 하나의 샘플(하나의 배치)을 사용하여 정방향 계싼을 수행하고 나면 해당 샘플을 버리고 다음 샘플을 처리할 때 재사용을 하지 않는다.

   - 피드포워드 신경망(feedforward neural network, FFNN) : 입력 데이터의 흐름이 앞으로만 전달되는 신경망이다.

      - 예시 : 완전 연결 신경망, 합성곱 신경망

 

 - 순환 신경망이란(recurrent neural network, RNN)?

   - 신경망이 이전에 처리했던 샘플 데이터를 다음 샘플을 처리하는데 재사용을 하며 해당 작업이 계속 순환되며 학습된다.

   - 순환 신경망은 완전 연결 신경망에 이전 데이터의 처리 흐름을 순환하는 고리 하나만 추가를 해주면 완성된다.

 

   - 뉴런의 순환 처리 동작은 다음과 같다.

      - 순환되는 O_A에는 A에 대한 정보가 들어 있고 O_B에는 B와 A에 대한 정보가 들어 있다. A에 대한 정보 보다 B에 대한 정보가 더 많이 들어 있을 것이다. 마지막 O_C에는 A, B, C에 대한 정보가 담겨 있다.

      - 순환 신경망에서 '이전 샘플에 대한 기억을 가지고 있다'고 하는데 이렇게 샘플을 처리하는 하나의 단계를 "타임스텝(timestep)이라 한다.

   - 층(Layer)과 셀(Cell)

      - 순환 신경망에서는 층(layer)을 셀(cell)이라고 부른다.

      - 하나의 셀에는 여러 개의 뉴런이 있지만 완전 연결 신경망과는 달리 모든 뉴런을 표시하지 않는다. 하나의 셀로 층을 표현한다. 셀의 출력을 은닉상태 (hidden state)라고 부른다.

      - 앞서 표현한 샘플 출력 값 O도 은닉 상태를 가리키는 것이다.

 

   - 일반적으로 은닉층의 활성화 함수는 하이퍼볼릭 탄젠트 함수인 tanh가 많이 사용된다.

      - tanh 함수도 s자 모양을 가지고 있기에 시그모이드 함수라 불리지만 차이가 있다.

         - tanh 함수는 -1 ~ +1 사이 범위에서 결과 값을 가진다.

         - sigmoid 함수는 0 ~ +1 사이 범위에서 결과 값을 가진다.

 

 - 타임스텝으로 펼친 신경망

   - 순환 신경망의 구조는 입력과 가중치를 곱해서 출력을 만드는 것은 완전 연결 신경망, 합성곱 신경망과 동일하다. 

      - 차이점으로 아래 그림에서처럼 두개의 가중치가 존재한다. 입력 X에 대해 Wx 가중치와 곱하고 이전 타임스텝의 은닉상태 h와 Wh 가중치와 곱한다.

      - 피드포워드 신경망과 동일하게 뉴런마다 하나의 절편이 포함되어 있다.

      - 이 결과 값을 활성화 함수를 통과시켜 새로운 은닉상태를 만든다.

      - 첫번째 은닉상태의 h0은 타임스텝이 없기 때문에 모두 0으로 초기화 한다고 가정하고 사용한다.

 

 

 - 순환 신경망의 가중치

   - 입력층과 순환층이 있는 경우 각각 뉴런들은 완전연결된다.

   - 이 경우 입력층은 4개이고 순환층은 3개이다. 이 경우 입력되는 가중치 Wx는 모두 12개가 된다.

   - 순환층의 출력 h는 다시 순환층의 가중치와 곱해진다. 이 때 h는 자기 뉴런에만 적용되는 것이 아니라 전체 다른 뉴런들과 완전연결 된다. 

      - 빨간색 화살표 : 첫 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.

      - 파란색 화살표 : 두 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.

      - 검은색 화살표 : 세 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.

   - 순환층에서 다음 타임스텝에 재사용되는 은닉 상태를 위한 가중치 Wh는 총 9개가 있다.

 

 - 순환 신경망의 입력

   - 만약 하나의 문장이 하나의 샘플이라 생각해 보자.

      - 예) I am a boy 

   - 이러한 단어 샘플을 토큰이라 부른다.

   - 하나의 단어를 여러개의 정수 혹은 실수 값으로 표현할 수 있다.

   - 아래 이미지에서 5는 오타다, 4가 맞다.

   - 타임스텝 크기는 4, 샘플은 하나이기 때문에 배치 차원은 1개, 토큰 하나를 표현하는 벡터는 3개로 구성되어 있다.

      - 샘플의 개수 = 1

      - 타임 스텝의 크기 (시퀀스의 길이) = 4

      - 숫자 표현 개수 (단어 표현) = 3

   - 이렇게 구성된 3차원 텐서, 배열이 순환층을 통과하게 되면 순환층에 있는 뉴런의 개수만큼 출력이 만들어지며 1차원 출력물이 만들어진다. 샘플이 여러개가 있다면 2차원 배열이 1개만 있다면 1차원 배열이 된다.

   - 이것은 완전 연결 신경망과 동일하다. 

 

 

 - 다층 순환 신경망

   - 순환층은 기본적으로 마지막 타임스텝의 은닉 상태만 출력으로 내보낸다.

   - 셀의 입력은 샘플 하나당 시퀀스 길이(타임스텝)과 단어표현으로 이루어진 2차원 배열이다.

   - 한개의 층만 사용하는 경우 출력은 마지막 타임 스텝의 은닉 상태만 출력 한다.

   - 여러개의 층을 쌓는 경우 모든 셀의 타임스텝의 은닉 상태를 출력한다.

      - 그래야 다음 셀에 3차원 텐서의 입력 상태가 유지될 수 있기 때문이다.

      - 이 3차원 텐서는 최초 입력과는 달리 단어표현 항목이 이전층의 셀에 있는 뉴런 개수가 된다.

      - 첫 번째 셀 : 모든 타임 스텝의 은닉 상태만 출력

      - 두 번째 셀 (마지막 셀) : 마지막 타임 스텝의 은닉 상태만 출력

 

 - 순환 신경망을 사용한 예측

   - 순환 신경망도 마지막에는 밀집층(dense)을 두어 클래스를 분류한다.

   - 다중분류의 경우 출력층에 클래스 개수만큼 뉴런을 두고 소프트맥스 활성화 함수를 사용한다.

   - 이중분류의 경우 하나의 뉴런을 두고 시그모이드 활성화 함수를 사용한다.

   - 마지막 순환 신경망의 셀 출력은 1차원이기 때문에 flatten 클래스를 이용해 차원을 1차원으로 만드는 작업 없이 그대로 밀집층에 사용할 수 있다.

   - 아래 이미지에 사용된 샘플은 20개의 타임스텝으로 이루어져 있고 각 타임스텝은 100개의 표현 또는 특성으로 이루어져 있다.

   - 셀의 출력은 은닉 상태의 크기와 같으며 셀에 있는 뉴런의 개수와 같다고 할 수 있다. (10,)이 된다.

   - 출력층에는 세개의 뉴런과 소프트맥스 활성화 함수가 사용되었다.

 

 

 

 - reference : 

https://engine.tistory.com/54

 

[혼공딥] CHAPTER 09-1 순차 데이터와 순환 신경망

순차 데이터(sequential data) : 텍스트나 시계열 데이터(time series data)와 같이 순서에 의미가 있는 데이터 완전 연결 신경망이나 합성곱 신경망은 하나의 샘플(하나의 배치)을 사용하여 정방향 계산

engine.tistory.com

https://velog.io/@cha-suyeon/%ED%98%BC%EA%B3%B5%EB%A8%B8-%EC%88%9C%EC%B0%A8-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%99%80-%EC%88%9C%ED%99%98-%EC%8B%A0%EA%B2%BD%EB%A7%9D

 

[혼공머] 순차 데이터와 순환 신경망

👩‍🔬 이번에는 혼공머 책의 챕터 9-1 파트입니다.📕 혼자공부하는머신러닝+딥러닝, 한빛미디어순차 데이터(sequential data)는 텍스트나 시계열 데이터(time series data)와 같이 순서에 의미가 있는

velog.io

https://turnoveranewleaf4me.tistory.com/46

 

[혼공머신] 9-1 : 순차 데이터와 순차 신경망

오늘은 한빛 미디어의 베스트셀러 TOP 1을 지키고 있는 '혼자 공부하는 머신러닝+딥러닝'에 대해 소개드립니다. 혼공 머신은 말 그대로 책만 보고도 스스로 머신러닝과 딥러닝에 대해서 익힐 수

turnoveranewleaf4me.tistory.com

 

댓글