3장. Attention과 Encoder
정리
- Self-Attention 은 낱말마다 문장 전체를 살펴 관련 있는 낱말의 정보를 더 많이 섞습니다. 그래서 같은 낱말도 문장마다 다른 벡터(문맥 임베딩)가 됩니다.
- 같은 입력 X 에 W_Q, W_K, W_V 를 곱해 Query(검색어), Key(이름표), Value(본문)를 만듭니다. 이 세 표가 학습 대상입니다.
- 식은
softmax(QKᵀ / √d_k) V입니다. 낱말 n 개, 폭 d_k 이면 QKᵀ 는 (n, n) 점수표이고, 결과는 (n, d_k) 로 낱말 수가 그대로입니다. - d_k 가 커지면 내적의 표준편차가 √d_k 쯤으로 커집니다. √d_k 로 나누면 눈금이 1 안팎으로 돌아와 softmax 가 한 낱말에 쏠리지 않습니다.
- Multi-Head 는 d_model 을 h 조각으로 나눠(512 = 64 × 8) Attention 을 따로 계산하고, 이어 붙인 뒤 W_O 로 섞습니다. 가중치 수는 head 수와 상관없습니다.
- Encoder 블록은 Multi-Head Attention → Add & Norm → FFN → Add & Norm 입니다. Attention 만 낱말 사이를 섞고, FFN 은 낱말마다 따로 가공하며 파라미터의 약 2/3 를 차지합니다.
- Encoder 만 쌓은 BERT 는 앞뒤를 모두 보아 이해에 강하고, 생성에는 미래를 가리는 Decoder 가 필요합니다.