안녕하세요!
실무자분들 강사님, 주변 지인들이 논문이 좋다. 읽어보아라 해서 무작정 해보려고 했지만...나는 용어들조차도 아직 헷갈리는게 많아서 자주 쓰이는 용어들을 정리해보는 블로그(메모)를 먼저 작성하고 정리하려고 한다.
용어들도 모르고 무작정 읽자니 이해도 안 될 거 같았다.
1. 모델 개요 및 배경 (Background & Overview)
- [cite_start]Sequence Transduction (시퀀스 변환): 입력 시퀀스를 다른 형태의 출력 시퀀스로 매핑하는 작업입니다[cite: 15, 28].
- [cite_start]Encoder-Decoder (인코더-디코더): 입력 시퀀스를 처리하는 인코더와 출력 시퀀스를 생성하는 디코더로 나뉜 구조입니다[cite: 15, 50].
- [cite_start]Recurrent Neural Networks (RNN/순환 신경망): 데이터를 순차적으로 처리하는 기존 모델 방식으로, 순차적 특성 때문에 병렬화가 어렵다는 단점이 있습니다[cite: 28, 30].
- [cite_start]Convolutional Neural Networks (CNN/합성곱 신경망): 병렬 계산을 위해 사용되기도 했으나, 멀리 떨어진 단어 간의 관계를 파악하는 데 한계가 있었습니다[cite: 15, 40].
- [cite_start]Sequential Nature (순차적 특성): 데이터를 순서대로 처리해야 하는 성질로 인해 긴 문장에서 메모리 제약과 병렬화 방해의 원인이 됩니다[cite: 32].
- [cite_start]Parallelization (병렬화): 여러 계산을 동시에 처리하는 기술로, 트랜스포머는 RNN의 순차적 계산을 제거하여 이를 극대화했습니다[cite: 32, 38].
- [cite_start]Global Dependencies (전역 의존성): 문장 내에서 거리에 상관없이 단어들 사이의 관계를 파악하는 능력입니다[cite: 37].
- [cite_start]State of the Art (SOTA): 특정 분야에서 현재 가장 뛰어난 성능을 보이는 모델을 의미합니다[cite: 20, 38].
2. 핵심 메커니즘: 어텐션 (Attention Mechanism)
- [cite_start]Self-Attention (셀프 어텐션): 단일 시퀀스 내의 서로 다른 위치를 연결하여 해당 시퀀스의 표현을 계산하는 방식입니다[cite: 44, 45].
- [cite_start]Query (Q / 쿼리): 현재 정보를 찾고자 하는 주체 벡터입니다[cite: 89, 112].
- [cite_start]Key (K / 키): 쿼리와 비교되는 대상 토큰의 인덱스 벡터입니다[cite: 89, 112].
- [cite_start]Value (V / 밸류): 쿼리와 키의 연관성에 따라 실제로 가져올 정보 값이 담긴 벡터입니다[cite: 89, 112].
- [cite_start]Scaled Dot-Product Attention: 쿼리와 키의 내적을 계산하고 특정 값($\sqrt{d_k}$)으로 나누어(Scaling) 점수를 내는 방식입니다[cite: 110, 111].
- [cite_start]Multi-Head Attention (멀티 헤드 어텐션): 어텐션을 여러 개(헤드)로 나누어 병렬로 수행하여 다양한 관점의 정보를 수집합니다[cite: 122, 128].
- [cite_start]Compatibility Function (적합성 함수): 쿼리와 키가 얼마나 잘 맞는지를 계산하는 함수로, 본 논문에서는 점곱(Dot-product)을 사용합니다[cite: 109].
- [cite_start]Masking (마스킹): 디코더에서 현재 위치가 미래의 위치를 참조하지 못하도록 특정 값을 $-\infty$로 처리하여 정보 흐름을 차단하는 기술입니다[cite: 87, 143].
3. 내부 아키텍처 및 기술 (Architecture Details)
- [cite_start]Sub-layer (서브 레이어): 인코더/디코더 레이어 내부를 구성하는 어텐션이나 피드 포워드 층입니다[cite: 78, 81].
- [cite_start]Residual Connection (잔차 연결): 서브 레이어의 입력을 출력에 다시 더해주는 구조로 ($x + Sublayer(x)$), 층이 깊어져도 학습이 잘 되게 돕습니다[cite: 80, 85].
- [cite_start]Layer Normalization (레이어 정규화): 각 층의 출력을 정규화하여 학습을 안정시키고 속도를 높입니다[cite: 80, 81].
- [cite_start]Position-wise Feed-Forward Network: 각 위치별로 독립적이고 동일하게 적용되는 두 개의 선형 변환과 ReLU 활성화 함수로 구성된 네트워크입니다[cite: 79, 146].
- [cite_start]Embeddings (임베딩): 단어(토큰)를 모델이 처리할 수 있는 고차원 벡터로 변환하는 것입니다[cite: 153].
- [cite_start]Positional Encoding (포지셔널 인코딩): 순서 정보가 없는 모델에 위치 정보를 주입하기 위해 사인/코사인 함수 값을 입력 임베딩에 더해주는 것입니다[cite: 161, 163].
4. 학습 및 성능 지표 (Training & Performance)
- [cite_start]Adam Optimizer: 학습률을 효율적으로 조절하는 최적화 알고리즘입니다 ($\beta_1=0.9, \beta_2=0.98, \epsilon=10^{-9}$)[cite: 209, 210].
- [cite_start]Warmup Steps: 학습 초기에는 학습률을 선형적으로 높이다가 이후에 낮추는 과정입니다 (본 논문은 4,000단계)[cite: 214, 215].
- [cite_start]Label Smoothing: 모델이 정답을 과하게 확신하지 않도록 하여 정확도와 BLEU 스코어를 개선하는 기술입니다[cite: 224].
- [cite_start]Dropout (드롭아웃): 과적합 방지를 위해 무작위로 일부 뉴런을 끄는 기법입니다 ($P_{drop}=0.1$)[cite: 221, 223].
- [cite_start]BLEU Score: 기계 번역의 정확도를 측정하는 표준 지표입니다[cite: 19, 219].
- [cite_start]Beam Search (빔 서치): 번역 생성 시 최적의 문장 조합을 효율적으로 찾는 탐색 알고리즘입니다[cite: 235].
- [cite_start]Perplexity (PPL): 언어 모델이 문장을 얼마나 잘 예측하는지 나타내는 지표로, 낮을수록 좋습니다[cite: 225, 246].
[cite_start]5. 하이퍼파라미터 설정 (Hyperparameters) [cite: 247]
| 항목 | 기호 | Base 모델 | Big 모델 | 설명 |
|---|---|---|---|---|
| 레이어 수 | $N$ | 6 | 6 | 인코더와 디코더의 층 개수 |
| 모델 차원 | $d_{model}$ | 512 | 1024 | 임베딩 및 벡터의 크기 |
| FFN 내부 차원 | $d_{ff}$ | 2048 | 4096 | 피드 포워드 층의 차원 |
| 어텐션 헤드 수 | $h$ | 8 | 16 | 병렬 어텐션의 개수 |
| 헤드별 차원 | $d_k, d_v$ | 64 | 64 | $d_{model} / h$ 로 계산됨 |
| 드롭아웃 확률 | $P_{drop}$ | 0.1 | 0.3 | 규제 기법의 강도 |
| 학습 단계 | steps | 100,000 | 300,000 | 전체 학습 반복 횟수 |
