본문 바로가기
딥러닝(Deep Learning)/D&A Deep Session

[D&A Deep Session] 8차시 - 13. RNN, LSTM

by rahites 2022. 5. 16.

 

# RNN ( Recurrent neural network, 순환 신경망 )

: 순서가 중요한 Sequence data에 사용하는 모델 구조로, 기존 인공신경망에서 '순환성'을 추가하였다. 입력받는 신호의 길이가 한정되지 않은 동적 데이터를 처리한다는 점에서 붙여진 이름으로, 전통적인 Neural Network에서 이전에 일어난 사건을 이후에 발생하는 사건에 활용할 수 없다는 단점을 극복하고자 반복을 통해 이전 단계에서 얻은 정보를 다음 사건에 사용하게 만들어주는 모델이다. RNN은 추가적인 저장공간을 얻을 수 있으며, 이를 응용한 LSTM, GRU 등이 존재한다.

 

t = 1일때 은닉층의 각 노드 값 : t = 1 시점의 입력값과 t = 0  시점의 은닉층 값의 조합으로 계산

입력값 x_t와 이전 hidden state 값이 들어오면 활성함수인 f_w를 거쳐 새로운 값인 h_t가 업데이트 되는 방식이다.

 

값이 업데이트될 때 사용되는 가중치의 값은 매 step마다 동일하다. 이렇게 되면 추정할 매개변수가 획기적으로 줄어 속도와 정확도면에서 장점을 가지고, 이 때 매개변수는 특징 벡터의 길이 T와 무관하게 일정하다.

 

* 방식

- one to one : Vanilla Neural Networks

- one to many : Image Captioning 

- many to one : Sentence Classification 

- many to many : Machine Translation

- many to many : Video Classification, Pos Tagging

 

RNN에서의 Dropout : 과거부터 Forward해서 오는 값은 언제나 100% 보존되지만, 아래에서 위로 올라오는 값은 특정 확률로 Dropout을 진행한다.

 

* BPTT ( Back Propagation Through Time )

: RNN에서 사용되는 Back Propagation 방법으로 Sequential data의 특성으로 발생하는 hidden state를 따라 역행하면서 전파되는 gradient를 계산하는 방법이다. 

 

- 계산량이 많아 연산에 시간이 많이 소요된다.

- 문장의 길이가 길어질수록 tanh 함수가 여러 번 곱해지기 때문에 Gradient Vanishing이나 Exploding 문제가 발생한다.

- 따라서 Back Propagation이 잘 진행되지 않는다는 단점을 지닌다. 

 

 

# LSTM ( Long Short-Term Memory )

: 기존의 RNN 구조에서 발생하는 Gradient Vanishing, Exploding 문제를 해결하기 위해 남길 건 남기고, 잊어버릴 건 잊어버리고, 추가할 것은 추가하여 중요한 정보만 cell state에 흘러가도록 만든 구조이다. 여기서 cell state는 시간에 따른 중요정보의 흐름을 의미합니다. 

 

LSTM 모델의 아이디어 : tanh 함수의 영향을 받지 않는 cell state를 추가하면 어떨까? ( RNN의 hidden cell에서는 모든 값이 tanh 함수의 영향을 받는다 )

 

1. C_{t-1}에서 불필요한 정보를 지운다. ( forget gate )

2. C_{t-1}에 새로운 인풋 x_t와 h_{t-1}를 보고 중요한 정보는 넣는다. 임시 C_t를 계산한다. ( input gate )

3. 위 과정을 통해서 C_t를 만든다. f_t를 이용해서 C_{t-1}의 일부 정보를 날리고 임시 C_t 정보를 추가한다.  ( input gate )

4. C_t를 적절히 가공하여 해당 t에서의 h_t를 만든다. C_t를 가공한 output gate를 바탕으로 h_t를 계산한다. ( output gate )

5. C_t와 h_t를 다음 스텝인 t+1로 전달한다.

 

=> 비선형 함수를 거치지 않고 Back propagation이 이루어지기 때문에 Gradient Vanishing Problem의 상당 부분이 해결!!

 

 

 

** 참고 ** 

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

 

Long Short-Term Memory (LSTM) 이해하기

이 글은 Christopher Olah가 2015년 8월에 쓴 글을 우리 말로 번역한 것이다. Recurrent neural network의 개념을 쉽게 설명했고, 그 중 획기적인 모델인 LSTM을 이론적으로 이해할 수 있도록 좋은 그림과 함께

dgkim5360.tistory.com

 

댓글