다양한 시선의 집합, Multi-Head Attention
Transformer에서 사용되는 Attention 연산은 다음과 같다:
$$
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{T}\right) \cdot V
$$
이 하나의 연산이 하나의 Head이며, Transformer는 이 연산을 한 번만 하지 않는다.
여러 Head, 여러 관점
Transformer는 동일한 입력 $X$에 대해 서로 다른 $W_Q$, $W_K$, $W_V$를 적용해 여러 개의 $Q, K, V$ 세트를 병렬로 생성한다:
$$
Q_i = X \cdot W_{Qi} \
K_i = X \cdot W_{Ki} \
V_i = X \cdot W_{Vi}
$$
$$
\text{head}_i = \text{Attention}(Q_i, K_i, V_i)
$$
즉, 하나의 문장을 다양한 시선으로 해석하고, 서로 다른 의미 축에 집중하며, 다양한 관계성을 병렬로 포착한다.
왜 여러 Head가 필요할까?
언어는 한 가지 관점으로 설명되지 않는다.
- 어떤 Head는 문법적 관계를,
- 어떤 Head는 감정 표현을,
- 또 어떤 Head는 위치나 문장 구조에 주목한다.
서로 다른 Head들이 병렬로 시선을 던지며, Transformer는 단어 하나를 입체적으로 해석할 수 있게 된다.
Head 결합과 선형 변환
모든 Head의 출력은 이어붙인 뒤, 하나의 선형 변환 $W_O$를 통해 정리된다:
$$
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h) \cdot W_O
$$
$W_O$는 단순한 차원 축소기가 아니다.
각 Head가 바라본 의미를 하나의 일관된 표현으로 통합하는 통역기다.
예시: 조합의 효과를 구체적으로 살펴보자
예를 들어, 하나의 Encoder Layer에서
- Head 1이 형용사의 수식 관계를 집중적으로 바라보고,
- Head 2가 분사의 문법적 역할에 주목한다고 하자.
이 두 Head는 다음 문장에서 의미 있는 조합을 만들 수 있다:
"잠자는 고양이는 조용했다."
여기서 "잠자는"은 현재분사로서 형용사처럼 명사 '고양이'를 수식한다.
Head 1은 형용사-명사 구조를 포착하고,
Head 2는 분사로서의 시제 정보와 동사성을 이해한다.
$W_O$는 이 두 시선을 결합하여,
"형용사적 분사 표현이 명사를 어떻게 꾸미는지"에 대한 종합적 표현을 만들어낼 수 있다.
하지만 다른 Encoder Layer에서는 조합이 덜 효과적일 수 있다.
- Head 1′이 숫자 간 관계를 주로 해석하고,
- Head 2′가 감정 표현과 분위기에 집중한다고 하자.
이 경우, 두 Head의 출력을 단순히 결합한다고 해서
"42는 슬프다."
와 같은 문장을 자연스럽게 해석할 수 있는 것은 아니다.
의미적으로 연관이 약한 정보들이 억지로 결합될 경우,
해석이 오히려 모호하거나 왜곡될 수 있다.
결론적으로,
$W_O$는 모든 Head의 출력을 단순히 이어붙여 정리하는 것이 아니라,
서로 다른 관점의 정보를 얼마나 유의미하게 결합할 수 있는지를 결정짓는 핵심 요소다.
Transformer는 각 Encoder Layer마다 서로 다른 Head 조합과
서로 다른 $W_O$를 가지고 있기 때문에,
"해석의 다양성"과 동시에 "조합의 민감성"도 함께 내포한다.
성능은 단순히 많은 Head를 쓰는 데 있지 않다.
"의미 있는 조합을 얼마나 효과적으로 구성하는가"가 핵심이다.
Feed Forward Layer, 단어 표현의 재구성
Attention으로 문맥을 반영한 표현을 얻은 뒤, Transformer는 각 단어 자체의 의미를 더 풍부하게 만들기 위해 FFN을 사용한다.
🔹 구조
Feed Forward Layer는 각 토큰에 독립적으로 적용되는 작은 MLP 구조다:
$$
\text{FFN}(x) = \text{ReLU}(x \cdot W_1 + b_1) \cdot W_2 + b_2
$$
- 선형 → 비선형 → 선형
- 입력 차원 → 확장 → 다시 입력 차원
🔸 비선형성의 의미
- 비선형성은 단어 표현을 직선적이지 않은 방식으로 조절할 수 있게 만든다.
- 3출력이 단순히 비례하지 않고,
- 강조, 억제, 비틀기, 무시 등의 복잡한 의미 변형이 가능해진다.
이런 “의미의 비선형적 변화”는 선형 계층만으로는 표현할 수 없기 때문에, ReLU, GELU 같은 함수가 반드시 필요하다.
🔸 문맥은 사용하지 않지만, 의미는 깊어진다
Feed Forward는 Attention처럼 다른 단어를 보지 않는다.
하지만 문맥 정보를 담은 벡터를 비선형적으로 다듬는 최종 작업을 수행한다.
Attention이 “세상과의 관계”라면, FFN은 “내면의 복잡성”을 조정하는 층이다.
Residual Connection & LayerNorm — 의미를 잊지 않는 장치
Transformer는 Attention이나 FFN처럼 표현을 바꾸는 작업 이후에 항상
원래 자신의 상태를 보존하려는 장치를 둔다.
🔹 Residual Connection
$$
Z = \text{Input} + \text{Output}
$$
- 새로운 해석을 받아들여도, 원래 입력값을 더해줌으로써 변화에 균형을 더한다.
🔹 Layer Normalization
$$
\text{Norm}(Z) = \text{LayerNorm}(\text{Input} + \text{Output})
$$
- Residual로 더한 뒤, 값들이 쏠리거나 불안정해지는 것을 방지
- 모델은 학습 안정성과 표현 균형을 모두 얻는다
Transformer Encoder Block 구조
Transformer의 각 Encoder Block은 다음과 같다:
- Multi-Head Attention
- Residual + LayerNorm
- Feed Forward Layer
- Residual + LayerNorm
변화의 뒤에는 항상 복원과 균형이 존재한다.
Transformer는 스스로를 잊지 않으면서 해석을 확장해간다.
Encoder Layer, 의미를 다층적으로 쌓아올리다
Transformer의 Encoder는 이 Block을 한 층만 사용하는 것이 아니라,
여러 층을 쌓아올리며 문장의 의미를 점진적으로 정제한다.
🔹 레이어를 쌓는다는 것의 의미
각 Encoder Layer는
- 서로 다른 Head 조합
- 서로 다른 $W_Q, W_K, W_V, W_O$
- 서로 다른 FF 파라미터를 가진다.
같은 문장을 반복해서 보는 것이 아니라,
각 Layer가 서로 다른 방식으로 문맥을 재구성한다는 뜻이다.
🔸 MHA와 FF의 조합이 결정하는 것
레이어를 쌓는다는 것은 결국
MHA + $W_O$ + FFN의 새로운 조합을 추가하는 것이다.
- 어떤 Layer는 수식어와 중심어의 관계에 집중하고,
- 어떤 Layer는 전체 구조나 추상적 흐름을 본다.
레이어를 더할수록 의미의 해석은 더 깊어지고, 정교해진다.
결론
Transformer의 Encoder는 단순한 반복이 아니다.
각 Layer는 새로운 시선으로 문장을 다시 해석하는 과정이다.
이런 다층적 구조 덕분에
Transformer는 문장을 문맥적으로, 의미적으로, 구조적으로
입체적으로 이해하는 모델이 될 수 있다.
'문학적 Transformer' 카테고리의 다른 글
| 문학적 Transformer - Prologue (0) | 2025.04.11 |
|---|---|
| 문학적 Transformer - Decoder (0) | 2025.04.11 |
| 문학적 Transformer - Encoder - Attention (0) | 2025.04.11 |
| 문학적 Transformer - Embedding (0) | 2025.04.11 |