
트랜스포머의 어텐션(Attention) 함수는 문장이나 데이터 시퀀스 내의 여러 요소(예: 단어) 중 "지금 이 순간 어떤 요소에 집중(attention)해야 하는지"를 계산하는 메커니즘입니다.
간단히 말해, 특정 단어를 처리할 때 문장 내의 다른 모든 단어와의 연관성 점수(relevance score)를 계산하고, 이 점수를 가중치로 사용하여 문맥을 파악하는 방식입니다.
트랜스포머에서 사용하는 어텐션의 핵심은 "스케일드 닷-프로덕트 어텐션 (Scaled Dot-Product Attention)"입니다.
스케일드 닷-프로덕트 어텐션의 3가지 핵심 요소
어텐션 함수는 3가지 주요 벡터(혹은 행렬)를 입력으로 받습니다.
- Query (Q): 현재 처리 중인 요소(단어)를 나타냅니다. "내가 지금 찾고 싶은 것" 또는 "질문"에 비유할 수 있습니다.
- Key (K): 문장 내의 모든 요소(단어)를 나타내는 "식별표" 또는 "레이블"입니다. "내가 가진 것"에 비유할 수 있습니다.
- Value (V): Key와 1:1로 매핑되는 실제 "내용" 또는 "값"입니다.
도서관 비유:
- 내가 찾고 싶은 책의 주제(Query)를 가지고 있습니다. (예: "고전 역학")
- 도서관의 모든 책꽂이를 훑어봅니다. 각 책꽂이에는 주제 레이블(Key)이 붙어있습니다. (예: "물리학", "생물학", "미술사")
- 내 Query("고전 역학")와 각 Key("물리학", "생물학"...)를 비교하여 유사도 점수를 매깁니다. ("물리학" Key가 가장 높은 점수를 받겠죠.)
- 이 점수를 바탕으로, 각 책꽂이에 얼마나 "집중"할지 가중치(Weight)를 정합니다. (예: "물리학" 90%, "생물학" 5%, "미술사" 5%)
- 각 책꽂이에 있는 실제 책들(Value)을 이 가중치만큼 가져와서 합칩니다.
- 결과적으로 "물리학" 책꽂이의 내용(Value)이 대부분 반영된 새로운 정보 묶음(Output)을 얻게 됩니다.
어텐션 계산 4단계
어텐션은 이 과정을 수학적으로, 특히 행렬 연산으로 한 번에 처리합니다.
1단계: 점수(Score) 계산
- 현재 단어의 Query(Q) 벡터와 문장 내 모든 단어의 Key(K) 벡터들을 내적(Dot Product)합니다.
- 이는 Q와 K가 얼마나 유사한지를 측정합니다. (Q와 K가 비슷할수록 큰 값이 나옵니다.)
- $Scores = Q \cdot K^T$ ($K^T$는 K 행렬의 전치)
2단계: 스케일링(Scaling)
- 점수(Scores)가 너무 커지는 것을 방지하기 위해 특정 값으로 나눠줍니다.
- Q, K 벡터의 차원($d_k$)의 제곱근($\sqrt{d_k}$)으로 나눕니다.
- 이유: 값이 너무 커지면 Softmax 함수를 통과할 때 기울기(gradient)가 0에 가까워져 학습이 불안정해지는 것을 막기 위함입니다.
- $Scaled Scores = \frac{Q \cdot K^T}{\sqrt{d_k}}$
3단계: 가중치(Weight) 계산 (Softmax)
- 스케일링된 점수에 Softmax 함수를 적용합니다.
- Softmax는 모든 점수를 0과 1 사이의 값으로 변환하며, 모든 가중치의 합이 1이 되도록 만듭니다. (즉, 확률 분포로 만듭니다.)
- 이것이 바로 "어텐션 가중치"입니다.
- $Weights = \text{softmax}\left(\frac{Q \cdot K^T}{\sqrt{d_k}}\right)$
4단계: 최종 출력(Output) 계산
- 이 가중치(Weights)를 각 단어의 실제 내용인 Value(V) 행렬에 곱합니다.
- 이는 "중요한 단어의 Value는 크게 반영하고, 중요하지 않은 단어의 Value는 작게 반영하라"는 의미의 가중 평균(Weighted Sum)입니다.
- $Output = Weights \cdot V$
최종 공식
이 4단계를 하나의 공식으로 표현하면 다음과 같습니다.
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
원 논문에서의 어텐션 함수 정의
3.2Attention
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.

Attention Is All You Need
Provided proper attribution is provided, Google hereby grants permission to reproduce the tables and figures in this paper solely for use in journalistic or scholarly works. Attention Is All You Need Ashish Vaswani Google Brain avaswani@google.com &
arxiv.org
참고: 어텐션 점수를 벡터 차원의 제곱근으로 나누는 이유
결론부터 말하자면, 분산(variance)을 1로 유지하여 안정적인 학습을 하기 위해서입니다.
$d_k$ (차원 값)로 나누지 않고 $\sqrt{d_k}$ (차원의 제곱근)로 나누는 이유는 통계적 이론에 근거합니다.
1. 문제는 'Softmax 포화'
어텐션 스코어($QK^T$)는 Softmax 함수에 입력됩니다.
- 만약 Softmax에 입력되는 값들이 너무 크거나 작으면 (즉, 값들의 차이가 크면) Softmax 함수는포화(saturate)됩니다.
- 예를 들어, [1, 2, 10]을 Softmax에 넣으면 [0.0001, 0.0003, 0.9996]처럼 거의 [0, 0, 1]에 가까운 값이 나옵니다.
- 이렇게 출력이 0 또는 1에 극단적으로 치우치면, 역전파(backpropagation) 시 경사(gradient)가 거의 0이 되는 '경사 소실(Vanishing Gradient)' 문제가 발생합니다.
- 경사가 0이 되면 모델은 더 이상 학습을 진행하지 못합니다.
2. 왜 $\sqrt{d_k}$ 인가? (통계적 이유)
$Q$와 $K$의 벡터(각각 $d_k$ 차원)에 있는 값들이 평균 0, 분산 1을 갖는다고 가정해 봅시다.
- 두 벡터의 내적(Dot Product): $Q$ 벡터와 $K$ 벡터의 내적($q \cdot k$)은 $d_k$개의 곱을 더한 값입니다. ($q_1k_1 + q_2k_2 + \dots + q_{d_k}k_{d_k}$)
- 내적의 분산: 통계적으로, 평균이 0이고 분산이 1인 두 변수를 곱한 값의 분산도 1입니다. 이런 연산을 $d_k$번 더하면, 그 합(즉, 내적값)의 분산은 $d_k$가 됩니다.
- 표준편차: 분산이 $d_k$라는 것은, 데이터가 퍼져있는 정도를 나타내는 표준편차(standard deviation)는 $\sqrt{d_k}$라는 의미입니다.
즉, $d_k$ (차원)가 커질수록 $QK^T$의 내적 값들의 분산이 $d_k$ 만큼 커지고, 값들의 크기(표준편차)는 $\sqrt{d_k}$ 만큼 커집니다.
3. 해결책: 표준편차로 나누기
값이 $\sqrt{d_k}$의 비율로 커지는 것이 문제라면, 해결책은 간단합니다.
- 이 값들을 다시 $\sqrt{d_k}$로 나누어, 분산을 1 (표준편차도 1)로 되돌려 놓는 것입니다.
이렇게 스케일링을 해주면, $d_k$ 차원 크기가 64가 되든 512가 되든 상관없이, Softmax 함수는 항상 '적절한' 범위의 값들을 입력받게 됩니다.
요약
- $d_k$로 나누면 어떻게 되는가?
- 값이 너무 작아집니다 (분산이 $1/d_k$가 됨).
- 모든 입력값이 0에 가까워져 Softmax가 [0.33, 0.33, 0.33]처럼 균일한 분포만 출력하게 됩니다. 이러면 어텐션이 특정 단어에 '집중'하는 능력을 잃어버립니다.
- $\sqrt{d_k}$로 나누면 어떻게 되는가? (정답)
- 값이 적절하게 유지됩니다 (분산이 1이 됨).
- Softmax가 포화되지 않아 경사 소실 문제가 발생하지 않고, 모델이 안정적으로 학습할 수 있습니다.
'인공지능 > 트랜스포머 이해' 카테고리의 다른 글
| TR-06. 트랜스포머 디코더(Decoder) (0) | 2025.10.23 |
|---|---|
| TR-05. 트랜스포머 인코더(Encoder) (0) | 2025.10.23 |
| TR-04. 멀티-헤드 인코더-디코더 어텐션(Multi-head Encoder-Decoder Attention) (0) | 2025.10.22 |
| TR-03. 멀티-헤드 마스크드 셀프 어텐션(Multi-head Masked Self Attention) (0) | 2025.10.11 |
| TR-02. 멀티-헤드 셀프 어텐션(Multi-head Self Attention) (0) | 2025.10.11 |