Attention Weighted Sum
Q와 K로 score를 만들었다면, 이제 실제 정보를 가져와야 한다. 이때 쓰는 것이 V다.
attention weights: [T, T]
V: [T, H]
output: [T, H]
계산은 다음과 같다.
attention weights for token 2
w1 0.08
w2 0.17
w3 0.58
w4 0.17
value vectors
V1V2V3V4
new token 2 vector
Σ wj Vj
output = attention weights x V
각 token 위치의 출력은 여러 V 벡터의 가중합이다.
output[i]
= weight[i, 1] * V[1]
+ weight[i, 2] * V[2]
+ weight[i, 3] * V[3]
+ ...
즉 i번째 token은 자기 attention weight에 따라 다른 token들의 정보를 섞어 새 표현을 만든다.
Attention 한 줄 요약
Self-attention의 핵심 흐름은 이렇게 정리할 수 있다.
x
-> Q, K, V
-> scores = QK^T
-> weights = softmax(scores)
-> output = weights V
여기서 Q/K는 “어디를 볼지”를 정하고, V는 “무엇을 가져올지”를 제공한다.
확인
- Attention weight와 V를 곱하면 어떤 shape의 출력이 나오는가?
- i번째 token의 출력은 V 하나만 복사한 것인가, 여러 V의 가중합인가?
- Attention에서 Q/K와 V의 역할 차이는 무엇인가?