수영장의 수영_데이터 분석 블로그

[NLP] 05. RNN 본문

Goorm 자연어처리 전문가 양성 과정 2기/NLP

[NLP] 05. RNN

슈빔멘 2022. 1. 7. 17:38

RNN (Recurrent Neural Network, 순환 신경망)

 

- 말 그대로 자기 자신을 계속 재현하는 구조의 신경망으로 볼 수 있다

- 연속적인 data를 다루기에 적합하다 -> 텍스트, 시계열

 

ex) x : I am going to school

x0 : I

x1 : am 

~ 이런식

 

 

- 핵심은 이전 time step의 state를 다음 time step에서도 사용해 데이터를 분석하는 것.

y를 구하기 위해서는 t-1시점의 h를 반영한 h가 필요하다(ht)

- 다른 신경망과 동일하게 input layer, hidden layer, output layer로 나뉘는데, 은닉층이 rnn의 핵심이다

- 조금 이해가 어렵다 

 

실제 예시로 이해하면 쉬워짐

1. input으로 임베딩된 텍스트 데이터를 넣는다

2. hidden layer 벡터와 연산하고

3. output 출력

4. 활성화함수를 거쳐 0~1 사이의 확률값으로 나타낸다

5. 확률이 가장 높은 인덱스에 해당하는 단어가 다음 단어로 예측된다

 

=> auto-regressive model : 자신이 만든 출력을 -> 다음 step의 입력으로 넣기 때문

 

Hidden Layer

- 여기서 ht를 구하는 function은 t에 상관없이 항상 같다 ( = 파라미터가 변화하지 않는다 )

- 기본적으로 RNN에서는 tanh 변환 방식을 사용한다고 함

 

1) ht-1, xt의 결합으로 ht를 구한다

=> ht = Whh * ht-1 + Wxh * xt 

머 걍 가중치 곱해서 더해준다는 뜻 (+편향)

 

2) 구한 ht에 가중치(Why)를 연산해 yt를 구한다 (=output) 

이것도 걍 ht에 가중치 곱하면 yt 된다는 뜻(+편향)

 

 

어렵지 않기도 하고 original RNN은 거의 사용되지 않는다고 한다

수업도 빠르게 지나가서 이정도만 정리하는 걸로