
- Seq2Seq은 인코더와 디코더의 RNN cell이 time-step 형태로 구성됨. 트랜스포머는 이러한 인코더 디코더 구조가 N개로 구성됨
- RNN은 time-step을 통해 단어 순서(word order)를 기억한다. 트랜스포머는 순차적으로 입력 받는 방식이 아니므로, 이를 위해 Positional Encoding을 사용해 순서 정보를 고려한 임베딩 벡터를 생성한다.


포지셔널 인코딩(Positional Encoding)
트랜스포머에서는 단어입력을 순차적으로 받는 방식이 아니기 때문에 위치정보를 다른 방식으로 알려줄 필요가 있다. 이때 각 단어의 임베딩 벡터에 위치정보들을 더해 모델의 입력으로 사용하게 되고, 이를 포지셔널 인코딩이라고 한다.
트랜스포머 인코딩
Self-Attention




-
1단계 (벡터 생성)
- 인코더의 입력 벡터 (각 단어의 임베딩)에서 3개의 벡터(Q, K, V)를 생성
- 이러한 벡터는 임베딩에서 학습된 3개의 행렬을 곱해 생성됨
- 이 벡터들의 차원은 64이고, 임베딩과 인코더 input/output의 차원은 512이다.
-
2단계 (점수 계산)
- 입력 문장의 각 단어에 대해 self-attention을 계산하여 점수를 매기는 것이다.
- 이 점수는 특정 위치에서 단어 인코딩 시 입력 문장의 다른 부분에 얼마나 많은 focus를 둘 것인지를 결정한다.

-
3, 4 단계 (점수 분할)

-
5단계 (점수 합산 준비)
- 각 v 벡터에 softmax 점수를 곱한다.
- 우리가 focus 하고자 하는 단어의 값을 그대로 유지 및 관련 없는 단어를 제거하는 과정