Self-Attention과 KV 캐시 설명
쿼리가 전체 키에 대한 정보를 계산하는 이유
Self-Attention의 핵심은 각 Query(Q)가 전체 Key(K)와의 연관성을 계산해, 적절한 Value(V)를 선택하도록 하는 것입니다. 이를 통해 모델은 문맥(Context)을 이해하고 중요한 정보를 가중치로 반영할 수 있습니다.
Attention Score 계산 (정확히 다시 설명)
Score=dQ[K1,K2,…,Kn]T
- Q: 현재 토큰의 Query
- [K1,K2,…,Kn]: 이전 모든 토큰의 Key
- KiT: Key를 전치해 Query와 내적 가능하도록 준비
Query가 전체 Key와의 연관성을 계산하는 것은, 문장에서 특정 토큰이 다른 모든 토큰과 어떻게 연결되는지를 반영하기 위함입니다.
수식과 예시를 통해 다시 설명
모델 가정
- 토큰: ["ChatGPT", "는", "뛰어나다"]
- Key, Value, Query 차원: d=2
- 가중치 동일 (WK, WV, WQ)
1. 첫 번째 토큰: "ChatGPT"
Key, Value, Query 계산
K1=[12],V1=[0.51],Q1=[3−1]
Self-Attention
첫 번째 토큰은 Key가 하나이므로:
Score1=2Q1K1T=2[3−1][12]=23×1+(−1)×2=21
Softmax 결과는 1이 되므로,
Attention1=V1=[0.51]
2. 두 번째 토큰: "는"
Key, Value, Query 계산
K2=[01],V2=[00.5],Q2=[1−1]
Attention Score 계산
Query(Q2)는 모든 Key(K1,K2)에 대해 Score를 계산:
Score2=2Q2[K1,K2]T=2[1−1][1201]=2[−1,−1]
Softmax 적용:
softmax(−1,−1)=[0.5,0.5]
Attention Output
Attention2=softmax⋅[V1,V2]=[0.5,0.5][0.5100.5]=[0.250.75]
3. 세 번째 토큰: "뛰어나다"
Key, Value, Query 계산
K3=[21],V3=[10.5],Q3=[31]
Attention Score 계산
Query(Q3)는 모든 Key(K1,K2,K3)에 대해 Score를 계산:
Score3=2Q3[K1,K2,K3]T=2[31][120121]=2[5,1,7]
Softmax 적용:
softmax(25,21,27)=[0.119,0.006,0.875]
Attention Output
Attention3=softmax⋅[V1,V2,V3]=[0.119,0.006,0.875][0.5100.510.5]=[0.9420.557]
KV 캐시의 역할
- Key와 Value를 계속 저장해, 새 Query만 전체 Key에 대한 Attention Score를 계산.
- 이전 Key/Value를 다시 계산할 필요 없음.