헤드마다 다른 곳을 본다
어텐션은 "지금 이 자리에서 어느 자리를 얼마나 볼까" 를 정하는 계산입니다. Q 와 K 를 곱해 점수를 내고, √d 로 나누고, 미래 칸을 가린 뒤, softmax 로 합이 1 인 가중치를 만듭니다. softmax 하나는 합이 1 이라 여러 곳을 동시에 강하게 볼 수 없습니다. 그래서 헤드를 여럿 둡니다. 아래 문장에서 동사 "먹었다" 는 헤드 셋을 통해 바로 앞 토큰, 주어, 목적어를 따로 봅니다.
헤드 셋을 깊이로 쌓은 가중치 막대
판 하나가 헤드 하나, 판 위의 줄이 쿼리, 열이 키입니다. 막대 높이가 가중치입니다 · 헤드 1 · 바로 앞 토큰 · 헤드 2 · 누가 했나(주어) · 헤드 3 · 무엇을(목적어) · 흐린 막대는 고르지 않은 쿼리 줄 · 회색 바닥은 마스크로 가린 미래 칸 · 노란 판은 고른 헤드
골라 보기
해 볼 것 두 가지. "고양이가" 를 고르고 인과 마스크를 꺼 보세요 — 주어 헤드가 뒤에 있는 동사 "먹었다" 로 옮겨 갑니다. 켜 두면 아직 오지 않은 동사를 볼 수 없어 [시작]에 기댑니다. 그리고 √d 로 나누기를 꺼 보세요 — 가장 큰 칸이 가중치를 거의 다 가져갑니다.
계산
- 헤드마다 가장 많이 보는 토큰
| 키 토큰 | 점수 Q·K | 마스크 뒤 | softmax 가중치 |
|---|
마스크는 softmax 전에 −∞ 를 넣습니다. exp(−∞) 는 정확히 0 이라 남은 칸끼리 합이 1 이 됩니다. softmax 뒤에 0 을 곱하면 합이 1 보다 작아져 가중 평균이 아니게 됩니다.
고른 헤드의 Q 와 K 보기
점수 한 칸은 Q 의 한 줄과 K 의 한 줄을 곱해 더한 값입니다. 차원 이름은 이해를 돕기 위해 붙였습니다 — 학습된 모델의 차원에는 이름이 없습니다.