Outline
- LSTM
- GRU
- seq2seq Attention
LSTM
- LSTM은 언어, 음성인식과 같은 다양한 분야에서 사용된다.
- RNN에서 gradient vanishing을 해결할 수 있다.
LSTM Cell
단순히 activation만 하는것이 아니라 시간적인 흐름을 조절해서 메모리를 잊어버릴지 유지할지 제어하는 네트워크가 심어져 있다.
LSTM Cell은 RNN Cell의 장기 의존성 문제를 해결하며, 빠르게 학습이 가능하다.
RNN과 같은 체인구조를 가지고 있지만, 반복모듈의 구조가 다르다.
3gates : ft, it, ot
2 outputs: ht, Ct
4 params: Wi, Wf, Wo, Wh

이미지 참고: colah’s blog
Forget Mechanism
- 과거의 정보를 기억할지 잊을지를 결정하는 단계이다.
- forget mechanism은 hidden unit(ht-1)과 input을 받아 sigmoid를 통과한다
- ft = 𝜎(Wf x [ht-1, xt] + bf)

Input Mechanism
- 현재의 정보를 잊을지 기억할지 결정하는 gate이다.
- input mechanism은 hidden unit(ht-1)과 input을 받아 sigmoid와 tanh를 통과 하여 Ct를 생성한다.
- it = 𝜎(Wi x [ht-1, xt] + bi)

Output Mechanism
- 최종적인 출력값이다. 현 시점의 hidden state는 현 시점의 cell state와 계산되어 출력되며, 다음 시점으로 hidden state를 넘긴다.
- ot = 𝜎(Wo x [ht-1, xt] + bo)
- ht = ot * tanh(Ct)
- Ct = ft * Ct-1 + it * C’t
- C’t = tanh(WC x [ht-1, xt] + bC)

GRU Cell
- LSTM cell의 간소화된 버전이다.
- LSTM에서 두 output Ct와 ht가 하나의 벡터 ht로 통합되었다.
- zt가 forget과 input 게이트를 모두 제어한다.
- zt가 1일때 forget 게이트가 열리고, 0일때 input 게이트가 열린다.
- output게이트가 없으며, 이전 hidden cell에서 어느 부분이 출력될지 결정하는 것은 rt가 수행한다.

Reset Gate
- 두 번째 식에 해당하는 부분이다. 이전 시점의 hidden state와 현 시점의 x를 𝑠𝑖𝑔𝑚𝑜𝑖𝑑를 적용하여 구한다. 즉 이전 hidden state를 얼마나 활용할지 결정한다.
Update Gate
- 과거와 현재의 정보를 얼마나 반영할지 비율을 정하는 부분이다. 𝑧는 현재의 정보에 대한것, 1−𝑧는 과거 정보에 대한 반영 비율을 나타낸다.
seq2seq Attention
- seq2seq은 입력 시퀸스를 받아 출력 시퀸스를 생성하는 모델이다. 가변적인 입 출력 시퀸스 길이를 처리할 수 있다. 하지만 vanishing gradient와 정보의 손실 문제가 발생한다. (bottleneck problem)
- 특정한 정보를 전달하기 위해 Attention Mechanism 사용한다.
- 디코더의 매 시점마다 인코더의 전체 입력을 다시 한번 참조할 수 있게 도와주는 역할을 한다.
- 전체 입력을 동일하게 참조하는 것이 아닌 현재 예측해야 할 부분과 가장 연관있는 부분에 더 집중적으로 참조한다.
[Score Function]
- Decoder의 hidden space vector d1을 구한다.
- d1은 Encoder의 모든 hidden space vector를 자신의 위치와 가장 관계가 깊은 단어가 무엇인지 고민한다.
- 모든 e를 살펴보며 score funtion을 통과 한 것이 Attention Score이다.

[Normalize]
- Sorce에 Softmax를 취한다.
- e와 a를 가지고 context vector c를 만든다.

[다음 언어 예측]
c와 d를 가지고 다음 언어를 예측할 수 있다. 이 때, 단어 예측을 위한 f는 Neural Network를 사용한다.
