LSTM
LSTM은 RNN의 hidden state에 cell-state를 추가한 구조입니다.
LSTM은 Long Short-Term Memory의 약자로, 단기 기억을 길게 가져간다는 의미이다.
LSTM 모델의 궁극적 아이디어는 cell state 정보를 어떠한 변환없이 그대로 계속 가져가는데에 있다.
이 모델에서 핵심적으로 사용되는 cell state는 과거의 기억들을 최대한 보존하면서 가져갈 수 있으며 이를 통해 Long Short-Term Memory라는 이름에 걸맞는 역할을 하게 된다.
그래서 사실 cell state는 과거 대부분의 정보를 기억하고 있는 벡터, hidden state는 현재 시점에서 필요한 정보만을 cell state에서 필터링한 벡터라고 보면 된다.
i,f,o,g는 각각 Input
, Forget
, Output
, Gate gate
를 의미하며 각 게이트는 셀에 정보를 쓸지, 셀의 정보를 지울지, 얼마나 셀의 정보를 드러낼지, 얼마나 셀에 정보를 쓸지를 결정한다.
cell state와 hidden state의 역할에 대해 다시 한 번 생각해보기 위해 아래와 같은 예시를 생각해보자.
'word'
라는 단어를 예측 하고 싶을때 현재 'wo
까지 예측을 했다고 가정하면, 작은 따옴표가 열려있기 때문에 언제가 될지 모르지만 작은 따옴표를 닫아야 할 것이다. 그러나 현재 그 정보는 중요하지 않고 다음 단어인 r
을 예측하는 것이 더중요하다.
따라서 이 경우 cell state가 따옴표에 대한 정보를 기억하고 있지만 hidden state는 현재 시점에서 필요한 정보인 r
에 대한 예측 정보만 기억하려고 할 것이다.
GRU
GRU는 LSTM의 모델을 경량화하여 적은량의 메모리와 빠른 시간을 보장한다. LSTM에서 두 가지 종류로 존재하던 cell State Vector과 Hidden State Vector을 일원화 하여 hidden state vector만 존재한다.
따라서 여기서의 hidden state는 LSTM의 cell state에 가까운 역할을 한다.
아래의 식을 살펴보면 GRU의 hidden state의 점화식과 LSTM의 cell state의 점화식이 형태가 매우 유사 한것을 알 수 있다.
GRU에서는 점화식에서 input_gate만 사용한다. forget gate의 위치에는 1 - input_gate 값이 들어 가게 된다 .두 개의 게이트가 하던 일을 한 개의 게이트가 혼자 하도록 그 규모를 축소하였음에도 성능 및 동작이 비슷하다는 데에 의의가 있다.
Backpropagation in LSTM/GRU
cell state vector가 업데이트 되는 과정이 단순히 곱하는 게아니라 forget gate를 곱하고 필요한 정보를 덧셈으로 처리 하기 때문에 기울기 소실이 없다. 더하기 연산은 backprorpagtion 수행시 gradient를 복사
해주는 역할을 한다.
LSTM/GRU summary
- rnn은 다양한 길이를 가질 수 있는 시퀀스 데이터에 특화된 유연한 형태의 딥러닝 모델 구조
- vanlia rnn 은 구조가 간단하지만 거의 잘안쓴다.
- 보다 진보된 형태인 LSTM/GRU를 실제로 많이 사용하고
cell state vector
과hidden state vector
를 업데이트하는 방식이 덧셈이므로 기울기 소실이 해결 됨.