본문 바로가기
프로그래밍/김기현의 딥러닝을 활용한 자연어처리 입문과정

Vanilla RNN(Recurrent Neural Network)이란?

by 노마드데이터랩 2020. 7. 2.
728x90
반응형

보통의 딥러닝은 다음과 같은 입출력을 보인다.

즉, 입력 x가 들어가면 출력 y가 나오는 식이다. 그런데, RNN 또는 Vanilla RNN의 경우는 다음과 같다.(RNN과 Vanilla RNN은 같은 말이라고 생각하면 된다.)

입력 x가 들어가면 출력 h가 나오는데, 그 출력이 다시한번 입력과 결합되는 방식이다. 이런 RNN 모델에는 어떤 입력 x가 적합할까? 김기현 강사님에 따르면, Sequential Data에 적합하다고 한다.

Sequential Data란 말 그대로 순차적인 데이터를 뜻하는데, 예를 들어보면 내가 지금 쓰고 있는 텍스트나 샘플링 주기가 일정한 영상 또는 음성 등이 있다. 이러한 Sequantial Data의 경우에는 데이터의 순서정보가 중요하다고 한다. 텍스트의 경우에는 단어의 순서가 될 것이다. Time Series 데이터인 주식이나 센서 데이터도 RNN의 입력이 될 수 있는데 사실 Time Series보다는 Sequential Data가 더 적합하다고 말씀하신다.

RNN 모델을 한번 수식으로 살펴보자.

RNN 기본모델의 수식

여기서 나오는 h가 곧 출력 y햇을 뜻한다. 보면 가중치가 W_ih와 W_hh로 나뉘게 된다. 입력 x에 대해선s 가중치 W_ih가 곱해지고, 출력 h가 다시 입력으로 들어올 때는 가중치 W_hh가 곱해지게 된다. 이걸 조금 더 쉽게 이해하기 위해 RNN 모델을 펼쳐보면 다음과 같다.

왼쪽과 오른쪽 그림은 같은 RNN모델이다. 단지 시간에 따라 펼쳐 놓은것뿐이다. 그래서 출력까지 나타내서 RNN의 동작원리를 그려보면 다음과 같다.

h1이 결국 y햇1이 되고, 그게 바로 출력 값이다. 나머지도 마찬가지로 h2가 y햇2 즉 h가 y햇이 된다. 그래서 실제 y값과 차이를 계산하는 방식으로 RNN은 동작하게 된다.

[출처] 김기현의 딥러닝을 활용한 자연어처리 입문

728x90
반응형

댓글