Transformer와 Attention
1. Attention: 순차적 처리의 한계를 넘어서
기존의 순환 신경망(RNN)은 단어를 순서대로 하나씩 처리하며 문맥 정보를 압축된 벡터(hidden state)에 저장했습니다. 이는 문장이 길어질 경우, 초반부의 중요한 정보가 뒤로 갈수록 희석되는 장기 의존성 문제(long-term dependency problem)를 야기했습니다. 또한, $t$번째 단어를 처리하기 위해 $t-1$번째 단어의 처리가 끝나야 하므로 병렬 계산이 어려워 학습 속도가 느렸습니다.
어텐션(Attention)은 이러한 패러다임을 완전히 바꾸었습니다. 순차적으로 정보를 압축하는 대신, 문장 내 모든 단어를 하나의 '집합'으로 보고, 특정 단어를 해석할 때 다른 모든 단어와의 관계를 한 번에, 동적으로 계산하여 문맥을 파악합니다.
직관적 비유: 우리가 "그녀는 강둑에 앉아 책을 읽는다"라는 문장을 번역할 때, '강둑'이라는 단어는 영어로 'river bank'가 될 것입니다. 이때 'bank'라는 단어가 '은행'이 아닌 '둑'이라는 의미를 갖는다는 것을 주변 단어인 '강(river)'과의 관계를 통해 파악합니다. 어텐션은 이처럼 특정 단어를 해석할 때, 문장 내의 모든 단어를 둘러보고 어떤 단어에 더 집중(attention)해야 하는지를 동적으로 계산하는 메커니즘입니다.
2. Scaled Dot-Product Attention
트랜스포머에서 사용되는 어텐션의 핵심 수식은 다음과 같습니다.
$$ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V $$
이 한 줄의 수식은 세 가지 핵심 요소 Query, Key, Value와 세 단계의 연산으로 이루어집니다.
2-1. 쿼리(Query), 키(Key), 값(Value)
입력 문장의 각 단어(토큰) 벡터 $x_i$는 세 가지 다른 역할로 변신합니다. 이는 마치 분산 데이터베이스에서 정보를 검색하는 과정과 같습니다.
- 쿼리 (Query, $Q$): 정보 검색을 위한 질의어입니다. 현재 내가 주목하고 있는 단어의 역할로, "나는 이런 정보를 찾고 있어!"라고 다른 모든 단어들에게 질문을 던집니다.
- 키 (Key, $K$): 데이터베이스의 각 항목에 붙어있는 인덱스 또는 검색 키워드입니다. 쿼리의 질문에 대해 "내게 이런 정보가 있어!"라고 자신의 관련성을 어필하는 역할을 합니다.
- 값 (Value, $V$): 해당 인덱스(키)에 저장된 실제 데이터입니다. 키가 쿼리와의 관련성을 인정받으면, 값이 최종 결과에 전달됩니다.
수학적으로, 이들은 입력 행렬 $X \in \mathbb{R}^{n \times d_{\text{model}}}$에 각각 다른 학습 가능한 가중치 행렬 $W^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}, W^K \in \mathbb{R}^{d_{\text{model}} \times d_k}, W^V \in \mathbb{R}^{d_{\text{model}} \times d_v}$를 곱하여 만들어집니다.
$$ Q = XW^Q, \quad K = XW^K, \quad V = XW^V $$
이 선형 변환은 모델이 각 단어로부터 쿼리, 키, 값에 해당하는 특징을 독립적으로, 그리고 학습을 통해 가장 유용한 방식으로 추출할 수 있게 하여 표현력을 극대화합니다.
2-2. 어텐션 계산 3단계와 내적의 의미
- 1단계: 점수(Score) 계산 - 내적을 통한 관련도 측정$$ S_{ij} = q_i^\top k_j $$
- $i$번째 쿼리 $q_i$와 $j$번째 키 $k_j$의 내적(dot-product)은 두 벡터 사이의 유사도를 측정합니다. 벡터 내적의 정의 $q^\top k = \|q\|\|k\|\cos\theta$를 생각해보면, 내적 값은 두 벡터가 같은 방향을 가리킬수록 커집니다. 의미 공간(semantic space)에서 두 단어 벡터의 방향이 비슷하다는 것은 두 단어가 의미적으로 관련이 깊다는 뜻입니다. 따라서 $q_i^\top k_j$는 "$i$번째 단어의 질문에 대해 $j$번째 단어가 얼마나 관련 있는 답변을 가지고 있는가"를 나타내는 정량적 점수가 됩니다.
- 2단계: 스케일링(Scaling) 및 소프트맥스(Softmax) - 확률적 가중치로 변환$$ A_{ij} = \frac{\exp(S_{ij} / \sqrt{d_k})}{\sum_{l=1}^n \exp(S_{il} / \sqrt{d_k})} $$
- 왜 $\sqrt{d_k}$로 나누는가? (수학적 심층 분석): $q_i$와 $k_j$의 각 요소가 평균 0, 분산 1을 갖는 독립적인 확률 변수라고 가정하면, 두 벡터의 내적 $S_{ij} = \sum_{l=1}^{d_k} q_{il}k_{jl}$의 분산은 $\mathrm{Var}(S_{ij}) = d_k$가 됩니다. $d_k$가 커질수록 이 분산도 커져서 점수 값들이 극단적으로 커지거나 작아집니다. 소프트맥스 함수는 입력값이 클 경우 그래디언트가 거의 0이 되는 '포화(saturation)' 현상이 발생하는데, 이는 학습을 방해합니다. 점수를 $\sqrt{d_k}$로 나누면 점수의 분산이 $\mathrm{Var}(S_{ij}/\sqrt{d_k}) = 1$로 안정화되어, 차원 $d_k$의 크기와 무관하게 안정적인 그래디언트 흐름을 보장할 수 있습니다.
- 소프트맥스의 역할: 각 행의 점수들을 합이 1인 확률 분포로 변환합니다. $A_{ij}$는 $i$번째 단어가 $j$번째 단어에 얼마나 주의를 기울여야 하는지를 나타내는 어텐션 가중치(attention weight)가 됩니다.
- 3단계: 가중합(Weighted Sum) - 정보의 종합$$ y_i = \sum_{j=1}^n A_{ij}v_j $$
- 어텐션 가중치 행렬 $A$와 값 행렬 $V$를 곱합니다. $i$번째 출력 벡터 $y_i$는 모든 단어의 값 벡터 $v_j$들을 어텐션 가중치 $A_{ij}$로 가중 평균한 값이 됩니다. 즉, 현재 단어($q_i$)와 관련성이 높은($A_{ij}$가 높은) 단어들의 '값(의미)'($v_j$)을 더 많이 가져와 새로운 문맥적 표현을 만들어냅니다.
3. Multi-Head Attention: 여러 관점에서 바라보기
한 번의 어텐션만으로는 문장 내의 다양한 관계(예: 문법적 관계, 의미적 관계)를 모두 포착하기 어렵습니다. 멀티-헤드 어텐션(Multi-Head Attention)은 $Q, K, V$를 $H$개의 '헤드'로 나누어, 각각 독립적으로 어텐션을 수행한 뒤 결과를 이어 붙여 종합하는 방식입니다.
각 헤드는 $d_k = d_v = d_{\text{model}}/H$ 차원을 갖도록 투영됩니다.
$$ \mathrm{head}_h = \mathrm{Attn}(XW_h^Q, XW_h^K, XW_h^V) \qquad \mathrm{MHA}(X) = \mathrm{Concat}(\mathrm{head}_1, \dots, \mathrm{head}_H)W^O $$
직관적 비유: 한 명의 전문가가 모든 것을 판단하는 대신, 여러 명의 전문가(헤드)가 각자 다른 관점에서(다른 부분 공간에서) 데이터를 분석하고, 마지막에 그 의견들을 종합($W^O$를 통한 선형 변환)하여 최종 결정을 내리는 것과 같습니다. 이를 통해 모델은 더 풍부하고 다각적인 문맥 정보를 학습할 수 있습니다.
4. 트랜스포머의 완전한 구조: Encoder-Decoder
4-1. 위치 정보 추가: Positional Encoding
어텐션 자체는 단어의 순서를 고려하지 않는 메커니즘입니다. "나는 너를 좋아해"와 "너는 나를 좋아해"를 구분하기 위해, 각 단어의 위치 정보를 입력 임베딩에 더해줍니다. 트랜스포머는 사인(sin)과 코사인(cos) 함수를 이용한 고정된 위치 인코딩을 사용합니다.
$$ \mathrm{PE}_{(t, 2i)} = \sin\!\left(\frac{t}{10000^{2i/d_{\text{model}}}}\right), \qquad \mathrm{PE}_{(t, 2i+1)} = \cos\!\left(\frac{t}{10000^{2i/d_{\text{model}}}}\right) $$
이 방식의 장점은 삼각함수의 덧셈정리에 의해 특정 상대적 위치 이동($\Delta t$)이 선형 변환으로 표현될 수 있다는 점입니다. 이 덕분에 모델이 단어의 상대적인 위치 관계를 쉽게 학습할 수 있습니다.
4-2. 트랜스포머 블록: Pre-Norm 구조와 안정적인 학습
- 첫 번째 서브층 (Multi-Head Attention):$$ H_1 = X + \mathrm{MHA}(\mathrm{LN}(X)) $$
- 입력 $X$에 계층 정규화(Layer Normalization, LN)를 먼저 적용한 뒤 멀티-헤드 어텐션을 수행하고, 그 결과에 원래 입력 $X$를 더해주는 잔차 연결(Residual Connection)을 사용합니다.
- 두 번째 서브층 (Feed-Forward Network):$$ Y = H_1 + \mathrm{FFN}(\mathrm{LN}(H_1)) $$
- 첫 번째 서브층의 출력 $H_1$에 다시 LN을 적용하고, 간단한 2층 신경망(FFN)을 통과시킨 뒤, 다시 잔차 연결을 적용합니다.
LN과 잔차 연결의 역할: 이 두 장치는 딥러닝 모델이 매우 깊어질 때 발생하는 그래디언트 소실/폭발 문제를 해결하는 핵심적인 역할을 합니다. LN은 각 층의 입력을 안정적인 분포로 만들어주고, 잔차 연결($y=x+F(x)$)의 야코비안이 $J=I+J_F$가 되어 그래디언트가 소실되지 않고 이전 층으로 잘 전달될 수 있는 '지름길'을 제공합니다.
4-3. 디코더의 특별한 점: Masked Attention
디코더는 다음 단어를 예측하는 자기회귀(autoregressive) 방식으로 작동하므로, 현재 위치의 단어는 미래 위치의 단어 정보를 볼 수 없어야 합니다. 이를 위해 디코더의 첫 번째 어텐션 층에서는 마스크된 어텐션(Masked Attention)을 사용합니다. 이는 어텐션 점수 행렬에서 미래 위치에 해당하는 부분에 매우 큰 음수($-\infty$)를 더하여, 소프트맥스 이후 해당 위치의 어텐션 가중치가 0이 되도록 만드는 기법입니다.
5. 확률론적 관점과 학습
어텐션의 확률론적 해석
어텐션 가중치 $\alpha_j$는 "쿼리 $q$가 주어졌을 때, 이 쿼리가 $j$번째 키와 정렬(align)될 사후 확률(posterior probability)"로 해석할 수 있습니다.
$$ \alpha_j = P(Z=j \mid q, K) $$
이 관점에서 최종 출력 $\sum_j \alpha_j v_j$는 "정렬될 키에 해당하는 값들의 조건부 기댓값"이 됩니다.
$$ \text{output}(q) = \mathbb{E}[V_Z \mid q, K] $$
학습 목표: Cross-Entropy Loss
언어 모델링과 같은 태스크에서 트랜스포머는 다음 단어를 예측하도록 학습됩니다. 이는 모델의 예측 확률 분포 $p_\theta$와 실제 정답 단어의 원-핫 벡터 분포 $\hat{p}$ 사이의 차이를 최소화하는 것과 같습니다. 이를 위해 교차 엔트로피(Cross-Entropy) 손실 함수가 사용되며, 이는 두 분포 사이의 KL-발산(KL-Divergence)을 최소화하는 것과 수학적으로 동일합니다.
$$ \min_\theta \sum_t \mathrm{CE}(y_t, p_t) \;=\; -\sum_t \sum_k \hat{p}_{tk} \log p_\theta(y_{tk}\mid \dots)\; \Leftrightarrow\; \min_\theta \sum_t \mathrm{KL}\!\big(\hat{p}_t \,\|\, p_\theta(\cdot \mid y_{<t})\big) $$
이 손실 함수의 그래디언트는 $\frac{\partial \mathrm{CE}}{\partial z_k} = p_k - \hat{p}_k$ (여기서 $z$는 로짓)로 간단하게 계산되어 안정적인 학습을 가능하게 합니다.
'ML' 카테고리의 다른 글
| KL Divergence, MLE (0) | 2025.08.17 |
|---|---|
| Batch Normalization, Layer Normalization (0) | 2025.08.17 |
| K-means clustering, K-NN (0) | 2025.08.17 |
| 드롭아웃 (dropout)의 수학적·확률론적 해석 (0) | 2025.08.17 |
| 가우시안 혼합모형 (Gaussian Mixture Model, GMM)과 EM 알고리즘 (0) | 2025.08.17 |