Transformer의 encoder와 decoder 차이
Encoder
- 양방향 self-attention
- Masking이 없음. 따라서 sequence 내의 token 들은 자기 자신을 포함한 sequence 내의 다른 token 들을 볼 수 있음.
- 예를 들어, 문장의 첫 번째 단어를 처리할 때문장의 마지막 단어 정보까지 참조할 수 있음.
- "I went to the bank to deposit money"와 "I sat by the river bank"에서 'bank' 라는 단어의 의미를 결정할 때 주변 문맥 전체를 활용할 수 있게 함
- 병렬 처리
- RNN과 달리 시간 순서대로 처리할 필요가 없음. 입력된 모든 token의 Q, K, V 연산이 matrix muliplication을 통해 수행됨.
- output
- Encoder의 최종 output은 input sequence와 동일한 길이를 가지며, 각 vector는 해당 위치의 token이 전체 문맥 내에서 가지는 의미를 고차원 공간에 mapping 한 것임.
- 이 output은 decoder의 K와 V값으로 사용됨.
Decoder
- Masked Self-Attention
- Decoder는 traning 시 ground truth sequence를 입력으로 받지만 현재 Step t 이후의 token을 참조해서는 안됨. 이를 위해 t step 이후의 token을 masking 하는 causal mask를 이용함.
- Cross-Attention
- Decoder layer 중간에 encoder의 출력 정보를 참조하는 cross-attention 연산이 필요함. Q는 이전 layer의 Decoder 에서 오고, K와 V는 encoder의 최종 output 에서 옴.
2. Decoder-only (GPT) 에서 취한 전략
Encoder의 대체
- Encoder가 없다는 것은 input prompt를 별도의 context로 변환하는 장치가 없다는 것을 말함.
- input와 output을 각각의 sequence가 아니라 하나의 sequence로 취급함
- input(prompt)는 생성될 답변의 앞 부분에 그대로 있음
즉, [x1,...,xn]이라는 입력과 [y1,...,ym]이라는 출력이 있는 것이 아니라, [t1,...,tn+m] 이라는 하나의 sequence로 존재한다.
- 여기서 t1…tm은 prompt이고 tm+1…tm+n은 생성된 text를 말함
- 또한 step이 길어질 수록 masking되는 부분이 적어지고, 이에 따라 모델은 더 긴 Token 나열을 보게 된다. 이 과정에서 전체 문맥을 학습하게 된다.
Cross-Attention의 대체
- 생성 중인 token이 원문(prompt)의 feature를 명시적으로 참조할 수 있는 src가 사라짐. - encoder에서 input을 K와 V로 변환해 주기 때문 - 이를 해결하기 위해 hidden state를 사용함.
- KV cache
- 추가공부 필요
- 또한 아래 테크닉들도 복습할 필요가 있음
- RoPE
- Sliding Window Attention
양방향 Context
- Decoder-only model은 input prompt를 처리할 때에도 미래의 token을 볼 수 없다.
- 해당 문제는 모델의 크기와 Training dataset의 크기로 해결한다.
- prompt 학습 시에는 단방향의 정보만을 사용하지만, 추론 단계가 시작될 때는 전체 prompt token에 대한 학습을 마친 후이기 때문에 양방향 학습과 비슷한 효과를 낸다.
- 이 단계에서 모델의 파라미터가 낭비되는 경향이 있다. 프롬프트만 양방향으로 학습을 주장한 모델들도 있으나, 대세는 아님.