[Week 6] Recurrent Neural Network

PangDae·2021년 9월 11일
0

Recurrent Neural Network

  • 시간적 순서가 있는 데이터를 처리 할 때 사용하는 대표적인 모델

RNN Structure

RNN의 구조는 위의 사진처럼 X0으로 만들어진 H0의 output이 x1의 학습에 사용되는 구조를 갖는다. 여기서 중요한 것은 다음 각 Time Step에서의 Wight parameter A는 공유된다는 점이다.

RNN의 학습 과정


( 교수님이 너무 잘 설명해주셔서 강의화면을 그대로 캡쳐했다...)

위 식을 살펴보자. 현재 time의 hidden layer를 알기 위해 우리는 이전 hidden layer인 ht-1과 현재 time의 input인 x를 활성함수 fw에 넣는다.
이 식을 학습하기 위해서 W가 추가 되게 되는데 그 식은 그림의 오른쪽에 쓰여진 식과 같다.
그림의 오른쪽 식과 같이 xt와 ht-1을 concat한 vector가 w와 곱해지면서 현재 time의 h가 구해지게 된다.
여기서 Wxh는 Xt를 ht로 만드는 부분이고 Whh는 ht-1를 ht로 만드는 파라미터가 된다.
결국 RNN은 이 W를 공유하면서 각 Time step의 결과값인 ht를 구하는 과정이 된다.

RNN의 종류

  • RNN의 종류는 위 사진과 같이 각 time step의 input의 갯수와 output의 갯수에 따라 나뉜다.

RNN의 구체적인 이해

  • 'Hello'라는 단어를 RNN으로 만드는 문제를 푼다고 가정해보자!

위에서 정리한 것과 같이 현재 단계의 H를 예측하기 위해 Ht-1와 Xt를 W와 연산한 후, 활성 함수를 거쳐야 한다.
위 그림으로 설명하자면, h가 input으로 들어왔을 때 이전 단계의 hidden layer가 없기 때문에 bias값이 들어게 된다. 이것과 h의 값과 W를 연산 한 후, ground trues에 대한 확률값을 알기위해 softmax값을 취한다.
위 사진에서는 현재 ht의 결과가 'l'인 것을 확인할 수 있다.
(후에 W가 e를 예측할 수 있도록 역전파가 일어난다.)

여기서 눈여겨 볼 점은 첫번째 l은 다음 char로 l을 예측해야하고 두번째 다음의 char는 o를 예측해야한다는 점이다. 이렇게 예측하기 위해 w_hh에 이전 h,e,l 까지의 정보들을 담고, w_xh에는 현재 input에 대한 정보를 담아서 활용 한다.

-> 하나하나 세세히 설명해주시는 주재걸교수님 강의 다시한번 감탄했습니다..

profile
개발이 하고싶습니다.

0개의 댓글