[시즌1].Lecture 12 - Recurrent Neural Network_NN의 꽃 RNN 이야기

* 이 글은 홍콩과기대 김성훈 교수님의 무료 동영상 강좌 "모두를 위한 머신러닝과 딥러닝 강의"를 보고 요점을 정리한 글 입니다.

 

Recurrent Neural Network(RNN)

우리가 사용하는 데이터에는 Sequence Data(순차적 데이터)가 굉장히 많습니다. Sequence Data란 하나의 데이터가 아니라 음성, 문장과 같은 연속적인 데이터를 의미합니다. 기본적인 Neural Network나 Convolutional Neural Network 같은 경우에는 1개의 입력이 1개의 출력으로 반환되는 형태이기 때문에 Sequence Data 같은 Series Data를 적용하기에는 어려움이 있습니다. 이전 State의 값이 현재 State의 값에 영향을 끼치는 Sequence Data를 사용하기 위해서 만든것이 Recurrent Neural Network(RNN) 입니다.

 

RNN을 정리하자면 Series Data 에 굉장히 적합한 모델이고 이전 State의 결과값이 현재 State의 결과에 영향을 끼치는 모델입니다. 이러한 특징을 수식으로 표현하면 Equation (1)과 같습니다.

 

$$ h_t = f_w(h_{t-1}, x_t) $$ (1)

 

수식에서 t는 현재 State를 의미하고 t-1은 이전 State를 의미합니다. 즉, Equation (1)은 현재 State의 값은 이전 State의 값과 현재의 입력값을 사용하여 도출됨을 의미합니다.

 

 RNN에는 여러가지가 있는데 가장 기초적인 RNN인 Vanilla RNN은 Activation Function으로 tanh function을 사용합니다. 입력값이 이전 State의 값과 현재 입력값 2개이기 때문에 각각 다른 Weight값을 사용하고 이것을 수식으로 표현하면 Equation (2)와 같습니다.

 

$$ h_t = \tanh(W_{hh}h_{t-1} + W_{xh}x_t) $$ (2)

 

위에서 표현한 수식은 각각의 State의 값을 표현한 것이지 결과값을 표현한 것이 아닙니다. RNN에서 결과값은 위의 수식에 새로운 Weight값을 곱해주어야 합니다. 따라서 이 모든 것을 수식으로 표현해보면 Equation (3)과 같습니다. 

 

$$ y_t = W_{hy}h_t $$ (3)

 

RNN 응용 분야

RNN을 사용하는 응용 분야로는 아래와 같은 것들이 있습니다.

 

- Language Modeling
- Speech Recognition
- Machine Translation
- Conversation Modeling / Question Answering
- Image / Video Captioning
- Image / Music / Dance Generation

 

각각의 응용 분야마다 사용되는 RNN의 구조는 다릅니다. 예를 들어 감정 분석은 Many to One의 구조를 사용하고 기계 번역 같은 것은 Many to Many의 구조를 사용합니다.

 

RNN도 중간에 사용되는 Layer를 많이 사용할 수록 학습하는데 어려움이 생기게 됩니다. 이런 문제점을 극복하기 위해서 Long Short Term Memory(LSTM), GRU 모델 중 1가지를 많이 사용합니다.