Seq2Seq Model

- Seq2Seq는 many to many 구조
- input sequence 전체를 입력으로 받아서, Sequence를 output으로 내보내는 구조.

- Encoder-Decoder 구조로 이루어져 있음.
- 각 Ecoder의 마지막 Hidden State가 Decoder의 첫번째 Hidden State로 입력되는 방식.
- Encoder의 마지막 Hidden State를 Context Vector라고 부르고, Context Vector에 Encoder의 정보가 함축되어 있다는 가정.
- 따라서, Encoder의 마지막 Hidden State를 입력으로 받는 Decoder는 Encoder의 정보를 활용하여 Decoding이 가능해진다.
Seq2Seq Model with Attention
- 입력 Sequence의 길이가 길어질수록 고정된 길이의 Context Vector에 모든 정보를 축적하는게 어려워진다.
- 또한 앞단에 있는 정보도 점점 소실되는 문제가 있다.
- 이를 해결하기 위해 Sequence에서 중요한 부분을 반영하는 Attention(Align)이 나오게 되었다.
Attention(Luong Attention)
-
어텐션의 기본 아이디어는 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고한다는 점
-
단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 보게 된다.

- t시점의 decoder의 hidden state와 모든 시점의 encoder의 hidden state를 내적하여 attention score를 구한다.
- attention score에 소프트맥스 함수를 적용하여 attention distribution을 구한다.
- 구해진 attention distribution과 모든 시점의 encoder hidden state 값을 가중평균하여 attention value(=attention output)를 구한다.
- attention value를 t시점의 decoder hidden state와 concat하여 y_hat을 구하는데 사용한다.
<aside>
📏 Teacher Forcing
Seq2Seq의 Decoder는 T시점의 예측이 T+1시점에 사용되는 구조이다.
하지만 T시점의 예측이 잘못되었다면, T+1 시점의 입력도 잘못되는 상황이 발생한다. 이는 학습과정을 불안정하게 만들기 때문에
학습과정 중에는 T시점의 출력이 잘못되었더라도, T+1 시점에 GT를 입력으로 넣어주는 Teacher Forcing이라는 학습 방법을 사용한다.
학습 과정 전체에서 Teacher Forcing을 하기도 하지만, 학습이 어느정도 진행된 후에는 Teacher Forcing을 사용하지 않은 채 학습하는 방법도 존재한다.(Scheduled Sampling/)
</aside>
-
Luong Attention의 Attention Fucntion
- Attention을 구할 때 사용하는 계산 방식이 여러가지가 존재한다.
- $h_t$는 Decoder의 hidden state, $h_s$는 Encoder의 hidden states이다.
- general, concat function은 단순하게 내적하여 유사도를 구하는 것을 넘어서 학습 가능한 parameter를 두어서 유사도를 구하는 방식이다.
- concat 방식은 $h_t$와 $h_s$를 concat하고, 2-layer-Nerual Net을 사용해서 유사도를 구하는 방식이다. $v_{a}^{T}$ 는 2번째 layer의 parameter, $W_a$는 1번째 layer의 parameter이다.

-
Bahdanau attention
바다나우 어텐션은 t시점의 decoder의 hidden state를 사용하는 것이 아니라, t-1시점의 hidden state를 사용하여 attention value를 구하고 이를 t시점의 입력과 concat하여 t시점의 디코더의 입력으로 사용한다.
Attention의 장점.
- NMT 성능을 상당히 향상시킬 수 있다.
- Decoder가 source sequence의 특정한 부분에 집중할 수 있기 때문에.
- Attention은 Bottleneck Problem을 해결할 수 있다.
- 기존 Context Vector에 정보가 함축되는 현상을 해결할 수 있다.
- Vanishing Gradient Problem을 어느 정도 해소할 수 있다.
- Attention은 해석가능성을 제공한다.
- Attention distribution을 살펴보면 Decoder가 어느 부분에 집중하는 지를 확인할 수 있음.