AI 해부교실 · Part 5 어텐션 완전 정복
50장 한 번에 계산하기
Q. 단어가 1,000개면 47~49장의 계산을 1,000번 따로 해야 할까요?
- 지금까지 '간다' 한 단어만 계산했어요. 단어가 1,000개라면, 이걸 1,000번 따로 해야 할까요?
- 단어 벡터를 한 줄씩 쌓으면 행렬이 돼요(10장). 여기에 46장의 세 행렬을 곱하면, 모든 단어의 Q, K, V가 한꺼번에 나와요.
- 다음은 Q × Kᵀ. Kᵀ는 K를 옆으로 눕힌 행렬이에요. 결과의 칸마다 Q 줄과 K 줄의 내적, 즉 47장의 점수표가 나와요.
- 점수표를 통째로 √2로 나누고, 줄마다 소프트맥스를 해요(48장). 이제 줄마다 그 단어가 쳐다볼 비율이 들어 있어요.
- 마지막으로 비율표 × V. 결과의 줄마다 49장의 물감 섞기가 들어 있어요. 모든 단어의 새 벡터가 한꺼번에 나와요.
- 이 과정을 식 하나로 쓰면 softmax(QKᵀ/√d)V. 2017년 논문(44장)에 나오는 바로 그 어텐션 식이에요.
- 행렬 곱은 GPU가 수많은 칸을 동시에 계산해요. 그래서 트랜스포머는 긴 문장도 한꺼번에 빠르게 처리해요(44장).
한 장 요약
- 단어 벡터를 쌓은 행렬로 Q, K, V를 한 번에 만든다.
- Q × Kᵀ = 점수표, ÷ √d 하고 줄마다 소프트맥스 = 비율표, 비율표 × V = 새 벡터들.
- softmax(QKᵀ/√d)V: 행렬 곱이라 GPU가 모든 단어를 동시에 계산한다.