Transformer
Attention Mechanism
- RNN은 순차적 연산은 병렬 연산을 할 수 없도록 함
- LSTM, GRU를 사용해도 긴 문장에 대해서는 성능이 낮음
- Attention을 RNN 계열 seq2seq에 도입하면 기계 번역의 성능을 상당 부분 개선함
- 그런데 어텐션으로 모든 state에 접근할 수 있다면 굳이 RNN이 필요한지?
Attention is All you need
- 기계 번역을 위해 탄생. RNN의 경우 각 step 별로 연산하므로 병렬 연산 불가
- 많은 어텐션 메커니즘이 RNN과 함께 사용됨
- 하지만 이 모델은 병렬 연산을 추구하며 RNN을 사용하지 않음 ⇒ Transformer
Transformer
- 기계 번역의 경우 Transformer 모델은 입력 언어로 된 문장을 출력 언어로 번역한 문장으로 바꿈
- Transformer 모델을 열어보면 encoder, decoder 그리고 그 사이를 이어주는 connection이 있음

- Encoding 부분은 여러 개의 encoder를 쌓아올려 만든 것
- Encoder들은 모두 똑같은 구조를 가지고 있음 (weight를 공유하지는 않음)
- Decoding 부분은 encoding 부분과 동일한 개수만큼의 decoder를 쌓음

- 인코더와 디코더의 모든 입력의 차원을 d_model로 유지함
Positional Encoding
- RNN이 자연어 처리에서 유용했었던 이유는 단어 입력을 순차적으로 받아 각 단어의 위치 정보(position information)을 가질 수 있었기 때문