Encoder-decoder architecture

- 마지막 hidden state vector에 인코더 앞부분의 모든 정보가 압축됨
- Long term dependency를 완화했지만, 마지막 인코더까지 갔을 때 정보가 소실 되는 경우가 잦음[ 주어를 번역하는 퀄리티가 많이 떨어짐]
- 이를 해결하는 트릭으로, 순서를 뒤집어서 입력하는 방법이 제안되기도 함
S2S with Attention mechanism
- 인코더 : 각 time stamp의 encoder에서 나오는 hidden state vector를 디코더에 제공
- 디코더 : 제공 받은 메트릭스 중 쓸모 있는 벡터를 선별하여 사용
학습
-
인코더는 마지막 time stamp hidden state를 decoder의 입력($h_0$)로 입력
-
디코더는 $h_0$와 <start> token을 받아 $h{^{d}{_1}}$를 계산

- $h{^{d}{1}}$와 인코더의 hidden state vector $h{^{e}{{1, 2, 3 .. n}}}$을 각각 내적하여 유사도를 계산
- 이 유사도를 Attention Score로 정하고, 이를 softmax에 통과 시켜 Attention Distribution을 계산
- Attention Distribution을 $h{^{e}{_{1, 2, 3 .. n}}}$의 가중치로 사용하여 가중 평균을 구함 ⇒
Attention output
- 결론적으로 Attention Module의 입력은 인코더의 hidden state vector 전체 $h{^{e}{_{1, 2, 3 .. n}}}$ 와 특정 디코더 벡터 $h{^{d}{_m}}$이며, 출력으로는 Attetnion output이 나오게 됨
-
Attention output과 디코더의 출력을 concat하여 output layer의 입력으로 들어가고, output layer의 출력으로 다음에 나올 단어를 예측하게 됨

역전파

- 역전파 과정에서 디코더는 Encoder hidden state vector를 잘 선택하게끔, 그리고 Attention output과 concat하여 출력(money)를 잘 예측하게 학습
- 전 time stamp에서 예측을 잘못하더라도 ground truth 값을 입력으로 넣어주기 때문에 학습에는 문제가 없음 - 이러한 방식을 Teacher Forcing이라고 칭함
- 학습이 빠르고 용이하지만, 과적합 될 수가 있음
- Teacher Forcing을 사용하지 않고, 예측을 잘못 하더라도 현재 time stamp의 출력 값을 다음 time stamp의 입력 값으로 사용하는 것이 실제 사용했을 때와 더 가까움(normalization?)
- 위의 두가지를 적절히 조합하는 경우도 있음, 먼저 Teacher Forcing을 사용하다가, 이후에는 사용하지 않는 방식으로
다양한 Attention Mechanism
Attention Score을 내적으로 구하는 것이 아니라, 다양한 방법으로 확장
