Transformer — 어텐션만으로 구축한 시퀀스 모델
Transformer는 Vaswani et al. (2017)이 “Attention Is All You Need”에서 제안한 아키텍처로, RNN이나 CNN 없이 Self-Attention만으로 시퀀스를 처리합니다. 현대 NLP의 사실상 표준 아키텍처이며, BERT, GPT, T5 등 거의 모든 대규모 언어모델의 기반입니다.핵심 아이디어
Transformer의 핵심 설계 원칙은 세 가지입니다.- 병렬 처리: RNN의 순차적 계산을 제거하여 GPU 병렬화를 극대화합니다
- 장거리 의존성: Self-Attention으로 시퀀스 내 임의의 두 위치를 연산으로 연결합니다
- 모듈화: 동일한 구조의 레이어를 쌓아(Stack) 깊은 모델을 구성합니다
| 특성 | RNN | CNN | Transformer |
|---|---|---|---|
| 병렬화 | 불가 (순차적) | 부분 가능 | 완전 병렬 |
| 장거리 의존성 | 경로 | 경로 | 경로 |
| 레이어당 복잡도 | |||
| 최대 경로 길이 |
: 시퀀스 길이, : 표현 차원, : 합성곱 커널 크기. Transformer는 인 일반적 상황에서 RNN보다 효율적입니다.
동작 방식
전체 아키텍처
인코더 스택 (Encoder Stack)
인코더는 개의 동일한 레이어를 쌓은 구조입니다. 각 레이어는 두 개의 서브레이어로 구성됩니다. 서브레이어 1: Multi-Head Self-Attention 입력 시퀀스의 모든 위치가 서로를 참조합니다. 패딩 마스크만 적용되며, 양방향(Bidirectional)으로 모든 토큰을 볼 수 있습니다. 서브레이어 2: Position-wise Feed-Forward Network (FFN) 각 위치에 독립적으로 적용되는 2층 완전연결 네트워크입니다.- 내부 차원: (원 논문), 외부 차원:
- 위치별로 같은 가중치를 공유하지만, 레이어별로는 다른 가중치를 사용합니다
디코더 스택 (Decoder Stack)
디코더도 개의 동일한 레이어를 쌓지만, 인코더보다 하나의 서브레이어가 더 있습니다. 서브레이어 1: Masked Multi-Head Self-Attention 미래 마스크(Look-Ahead Mask)를 적용하여 현재 위치 이후의 토큰을 참조하지 못하게 합니다. 이를 통해 자기회귀적(Autoregressive) 생성이 가능합니다. 서브레이어 2: Multi-Head Cross-Attention 디코더의 상태를 Query로, 인코더의 출력을 Key/Value로 사용합니다. 이 레이어가 인코더의 정보를 디코더로 전달하는 다리 역할을 합니다. 서브레이어 3: Position-wise Feed-Forward Network 인코더와 동일한 구조의 FFN입니다.잔차 연결과 레이어 정규화
모든 서브레이어에는 잔차 연결(Residual Connection)과 레이어 정규화(Layer Normalization)가 적용됩니다.- 잔차 연결: 서브레이어의 입력을 출력에 더합니다. 기울기 소실을 방지하고 깊은 네트워크 학습을 가능하게 합니다
- 레이어 정규화: 각 샘플의 특성(Feature) 차원에 대해 정규화합니다. 배치 정규화(Batch Normalization)와 달리 배치 크기에 독립적입니다
잔차 연결을 위해 모든 서브레이어의 출력 차원이 로 동일해야 합니다. 임베딩 차원도 같은 이유로 512입니다.
입력 임베딩과 출력 레이어
입력 임베딩 토큰을 차원의 벡터로 변환합니다. 임베딩 가중치에 를 곱합니다. 이는 위치 인코딩(Positional Encoding)과 더해질 때 임베딩 값의 상대적 크기를 유지하기 위함입니다. 출력 레이어 디코더의 최종 출력을 어휘 크기()에 대한 확률 분포로 변환합니다. 원 논문에서는 입력 임베딩, 출력 임베딩, 출력 선형 변환 레이어가 가중치를 공유합니다(Weight Tying).구현 (코드)
핵심 모듈 정의
인코더/디코더 레이어
실행 예시
학습 세부사항
원 논문에서 사용한 학습 기법들입니다.Optimizer와 학습률 스케줄링
Adam Optimizer를 사용하되, 특별한 학습률 스케줄(Warmup + Decay)을 적용합니다.- Warmup 단계: 학습률을 선형으로 증가시킵니다 (원 논문: 4000 스텝)
- 이후: 스텝 수의 역제곱근에 비례하여 감소합니다
정규화 기법
| 기법 | 적용 | 원 논문 설정 |
|---|---|---|
| Dropout | 각 서브레이어 출력, 임베딩 + 위치 인코딩 | |
| Label Smoothing | 손실 함수에 적용 | |
| Weight Tying | 입력 임베딩, 출력 임베딩, 출력 선형 레이어 | 가중치 공유 |
관련 기술 비교
| 특성 | Transformer (2017) | RNN Seq2Seq + Attention | Convolutional Seq2Seq |
|---|---|---|---|
| 핵심 연산 | Self-Attention | 순환 + Attention | 합성곱 + Attention |
| 병렬 학습 | 완전 병렬 | 불가 | 부분 가능 |
| 장거리 의존성 | |||
| 학습 속도 | 빠름 | 느림 | 중간 |
| 메모리 | |||
| 위치 정보 | 명시적 인코딩 필요 | 순서가 내재 | 부분 내재 |
Transformer의 한계점
Transformer의 한계점
- 메모리: Self-Attention의 어텐션 행렬이 시퀀스 길이의 제곱에 비례하여 메모리를 소비합니다. 긴 시퀀스(수만 토큰)에서 GPU 메모리 제한에 빠질 수 있습니다
- 위치 정보 한계: 순환/합성곱 구조가 없어 위치 인코딩에 의존하며, 매우 긴 시퀀스에서 위치 정보가 약해질 수 있습니다
- 고정 컨텍스트 윈도우: 입력 길이가 학습 시 설정한 최대 길이를 초과할 수 없습니다 (외삽 문제)
- 데이터 효율성: CNN/RNN에 비해 유도 편향(Inductive Bias)이 적어 충분한 데이터가 필요합니다
Pre-Norm vs Post-Norm
Pre-Norm vs Post-Norm
원 논문은 Post-Norm (서브레이어 이후에 LayerNorm)을 사용합니다. 이후 연구에서 Pre-Norm (서브레이어 이전에 LayerNorm)이 학습 안정성을 높인다는 것이 밝혀졌습니다. GPT-2 이후 대부분의 대규모 모델은 Pre-Norm을 채택합니다.
원 논문의 학습 설정
원 논문의 학습 설정
- 데이터: WMT 2014 영-독 (4.5M 문장쌍), 영-불 (36M 문장쌍)
- Tokenizer: Byte Pair Encoding (BPE), 공유 어휘 37K 토큰
- 배치: 약 25,000 소스 토큰 + 25,000 타겟 토큰
- 하드웨어: 8x NVIDIA P100 GPU
- 학습 시간: Base 모델 12시간, Big 모델 3.5일
- Base 모델: , , , (65M 파라미터)
- Big 모델: , , , (213M 파라미터)
참고 논문
| 논문 | 학회/연도 | 링크 |
|---|---|---|
| Attention Is All You Need (Vaswani et al.) | NeurIPS 2017 | arXiv 1706.03762 |
| Layer Normalization (Ba et al.) | 2016 | arXiv 1607.06450 |
| Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau et al.) | ICLR 2015 | arXiv 1409.0473 |
| Effective Approaches to Attention-based Neural Machine Translation (Luong et al.) | EMNLP 2015 | arXiv 1508.04025 |
| On Layer Normalization in the Transformer Architecture (Xiong et al.) | ICML 2020 | arXiv 2002.04745 |
| The Annotated Transformer (Rush) | 2018 | nlp.seas.harvard.edu |

