Scaled Dot-Product Attention
앞에서 Query와 Key가 “어디를 읽을지”를 정하고 Value가 “읽을 내용”을 제공한다는 역할을 보았다. 이제 이 선택을 실제로 계산한다. Query마다 모든 allowed Keys의 score를 구하고, scale과 mask를 적용한 뒤, 그 Query의 주의를 Keys 사이에 배분하는 weights로 바꾼다. 마지막에는 그 비중대로 Values를 섞어 Query 하나당 output vector 하나를 만든다.
- ÷ + Mask
- Softmax over keys
- query별 output
Computation
각 query에 대해 Score, Scaling과 Mask, Softmax, Value의 가중합 순서로 계산한다.
Score:
Scaling & Mask:
Softmax:
Output:
는 Query positions, 는 memory positions의 수다. Score matrix의 한 row는 Query 하나가 모든 Keys를 비교한 결과이므로 Softmax도 Key 축을 따라 적용한다. 한 row의 weights 합이 1이라는 것은 그 Query의 전체 비중을 접근 가능한 positions에 나눈다는 뜻이다. Self-Attention에서는 이지만 Cross-Attention에서는 두 sequence 길이가 달라도 된다.
Mask는 matrix의 shape를 줄이지 않는다. 접근 불가 위치의 logit에 -∞를 더하면 exponential이 0이 되어 해당 Value가 가중합에 기여하지 않는 것이다. 아래 예시에서는 raw score가 가장 큰 세 번째 Key도 mask 때문에 선택되지 않는다.
이고 일 때 계산은 다음과 같다.
Raw Scores:
Scaled & Masked:
Weights:
Weighted Sum:
Scaling
Initialization에서 components가 서로 independent이고 평균이 0, 분산이 1이라고 가정한다.
이때 dot product의 variance는 이다.
로 나누면 variance가 1이 된다. 인 예를 비교하면 scaling의 영향을 볼 수 있다.
Unscaled Logits:
Unscaled Weights:
Scaled Logits:
Scaled Weights:
Scaling 전에는 거의 모든 비중이 첫 Key로 몰리지만, scaling 뒤에는 첫 Key가 여전히 가장 크면서 다른 Keys도 비중을 가진다. Scale은 순위를 뒤집는 연산이 아니라 Softmax로 들어가는 차이를 완화하는 연산이다. Softmax의 자기 logit에 대한 미분은 다음과 같다.
가 0이나 1에 매우 가까우면 이 기울기가 작아진다. 그래서 초기부터 near-one-hot으로 포화되면 다른 관계를 조정하는 학습 신호가 약해질 수 있다. 분산은 상수 로 나누면 로 나뉘므로, 분산 인 dot product를 로 나누어 1로 맞추는 것이다.
단 이 유도는 초기 독립·평균 0·분산 1이라는 가정을 사용한다. 학습 후에는 Q/K의 분포와 norm이 달라질 수 있으므로, 고정된 scaling 하나가 training 내내 score의 크기를 통제한다고 보장하지 않는다. 이 한계가 뒤의 QK Norm과 연결된다.
Score는 Softmax 이전의 값이고 weight는 Softmax 이후의 값이다. Mask의 −∞는 Softmax에서 probability 0이 된다.
Worked Example
입력과 Key dimension은 다음과 같다.
Raw Scores:
Scaling:
Softmax:
Values:
여기서는 다. Q/K의 4차원은 compatibility 계산에 쓰이고, 2차원 Value는 전달할 내용을 정하므로 두 폭이 달라도 된다. 세 Value의 기여를 따로 계산하면 다음과 같다.
이를 합하면 아래 output을 얻는다. Raw score가 0이던 둘째 Key도 masked된 것은 아니므로 Softmax 뒤에는 약 0.19의 비중으로 참여한다.
같은 logits를 10배하면 weights는 다음처럼 sharp해진다.
반올림 때문에 화면에 표시한 weights의 합이 정확히 1이 아닐 수 있다.
가중합은 세 Values를 하나로 섞으므로 각 slot의 정보를 따로 보존한 목록은 아니다. Single head가 한 관계에 집중하면 다른 관계가 같은 mixture 안에서 약해질 수 있다. 다음의 Multi-Head Attention은 이 계산을 여러 learned subspaces에서 수행하여 서로 다른 관점을 표현할 여지를 만든다. 모든 head가 반드시 다른 유용한 역할을 얻는다는 보장은 없다.
슬라이드의 개별 vector 내적 와 matrix 표기 는 다른 algorithm이 아니다. 개별 vector를 column으로 적느냐, token states를 matrix의 rows로 쌓느냐에 따라 transpose의 위치가 달라지는 것이다.
Attention과 FFN의 특징과 차이를 Transformer block 안의 역할과 연결해 설명할 수 있어야 한다.
Check
(),(),()에서 와 최종 output shape는?
Answer
는 , Softmax는 각 query의 key축에 적용한다. AV는 다.
왜 가 아니라 로 나누며 학습 중에는 무엇을 보장하지 못하는가?
Answer
초기 independent unit-variance components의 dot product variance가 여서 표준편차 로 나누면 variance1이다. Learned / magnitude 증가와 초기 가정의 지속은 보장하지 못한다.
Scaled logits와 세 개로 output을 계산하고 logits×10의 결과를 설명하라.
Answer
Softmax≈, weighted 다. ×10이면 거의 첫 value에 집중하여 다른 slot 정보가 덜 전달된다.
Raw score가 큰 Key라도 output에 전혀 기여하지 않을 수 있는가?
Answer
가능하다. Mask가 그 위치의 logit을 −∞로 만들면 Softmax weight가 0이 되어 해당 Value는 output에 기여하지 않는다. Mask는 score matrix의 shape를 줄이는 연산이 아니며, Softmax는 Query마다 Key 축을 따라 계산한다.
//가 주어졌을 때 output을 얻는 네 연산을 shape와 함께 복원하라.
Answer
() → ÷+M → Softmax_keys weights() → AV().
Attention · FFN를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
교수님이 안내한 첫 서술형 준비 방향: 두 sublayer의 차이를 Residual Stream과 연결한다.
정보 접근: Attention=Allowed positions 간 혼합 / FFN=각 position 독립 계산
주요 연산: Attention= → scale/mask → Softmax → AV / FFN=Up → activation/gate → down
Output: Attention=Value의 weighted mixture / FFN=Token features의 비선형 변환
Vanilla matrix weights: Attention=///O: / FFN=→4d→:
Vanilla forward: Attention= projections + / FFN=
Residual 역할: Attention=위치 간 통신 update를 더함 / FFN=위치별 계산 update를 더함
확장 개념: Attention=MHA / GQA / MLA / FFN=SwiGLU / MoE
조건: FFN 입력은 이미 Attention의 문맥을 포함할 수 있다.
위 상수는 dense vanilla / FFN4d / multiply-add2 FLOPs 가정이다.
Scaling · QK Norm · Soft-cap를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
서로 다른 위치에서 서로 다른 scale 문제를 제어한다.
위치: Scaling=Dot product 후 / QK Norm=Dot product 전 / / Soft-capping=Dot product 후 score
제어 대상: Scaling=초기 의존 variance / QK Norm=Vector magnitude / Soft-capping=Score 범위
표현: Scaling=/ / QK Norm=Norm(),Norm() / Soft-capping=50 tanh(a/50)
한계: Scaling=Learned norms 증가 보장 못함 / QK Norm=Learned gains 영향 남음 / Soft-capping=표시한 score를 (-50,50)에 매핑