Paper

[Paper] Transformer: Attention is All You Need

구코딩 2025. 1. 14. 18:50
반응형

Attention mechanism만을 사용해 인코더와 디코더를 구성한 새로운 network

특징

  • CNN과 RNN을 완전히 제거하여 간단하고 병렬화가 용이하며, 훈련 시간도 크게 단축됨.
  • Attention Mechanism만을 사용해 입력/출력 간 global dependencies 학습.
  • 큰/한정된 데이터셋에서 모두 우수한 성능을 보임.

 

Multi-Head Attention

동일한 데이터에 여러 개의 어텐션 메커니즘을 병렬로 적용

  • 모델은 데이터의 다양한 측면을 동시에 고려
    - 서로 다른 의미적/구문적 관계 학습 가능.
    다양한 의존성 동시 고려
  • 더 풍부하고 다차원적인 데이터 표현 수집/분석

 

Self-Attention

같은 문장 내에서 단어들 간의 관계 고려

  • Q, K, V가 모두 동일한 embedding vector에서 도출됨.
  • 시퀀스의 서로 다른 위치 간의 관계를 학습하여 해당 시퀀스의 표현 계산.
  • 단일 입력 데이터의 모든 요소들 간의 관계 포괄적 이해.
  • 계산 효율성
    - 시퀀스 길이 $n$이 표현 차원 $d$보다 작을 때 계산이 효율적. → 레이어 당 $O(n^2 ⋅d)$
  • Parallelization
    - 모든 위치를 동시에 연결하여 병렬화에 용이하고, 순차적 계산이 $O(1)$로 최소화
    - 토큰 간 의존성을 빠르게 학습 가능
  • Long-term Dependency 해결
    - 모든 입력 간의 상호작용을 병렬로 처리
    - 경로 길이를 최소화
  • 다양한 형식의 데이터에 적용 가능
    - encoder-decoder attention은 입출력이 명확히 구분되는 번역, 생성 같은 작업에 유용

 

Positional Encoding

단어의 위치 정보를 얻기 위한 방식

시퀀스의 각 요소 위치에 대한 정보를 임베딩 벡터에 추가해 모델이 단어의 순서를 인식하도록 함.

  • 위치 정보 t가 주어졌을 때, 해당 위치에 대응하는 임베딩 벡터 E 반환.
  • sin & cos 함수를 사용하여 각 위치에 고유한 값 할당.
  • 모델이 위치 정보를 효율적으로 모델에 통합할 수 있는 장점.

 

기존 모델

  • Recurrent Models: 이전 결과를 입력으로 받는 순차적 특성으로 인한 병렬 처리의 어려움
    - Gradient Vanishing/Exploding
    - Long-term Dependency: 시퀀스의 앞/뒷부분 연관성 효과적 학습 어려움
  • Attention Mechanism: 입력 or 출력 sequence distance와 무관하게 dependencies 모델링 가능하도록 함. → 이전까지 순환 신경망과 함께 사용되었음.
    - 모델이 입력 시퀀스의 중요 부분에 ‘집중’하여 필요한 정보를 선택적으로 추출하는 방법을 제공
    - 전체 시퀀스를 일괄적으로 처리하는 대신 관련성이 높은 정보에 집중하여 효율적으로 처리
  • End-to-end memory network: recurrent attention mechanism 사용.

 

Model Architecture

 

Encoder

  • N = 6개의 동일한 레이어로 구성된 스택 구조 (사진은 그 중 하나)
  • 각 레이어는 2개의 sub-layer로 구성
    - Multi-head self-attention
    - feed-forward network
  • 각 sub-layer:
    - residual connection
    - layer normalization
  • $\text {LayerNorm}(x+ \text{Sublayer}(x))$
    - 해당 서브 레이어가 구현하는 함수.
    - 동일 배치에 있는 시점의 sequence를 모아서 정규화.
    -Multi-Head Attention or Feed Forward 이후.

 

Decoder

  • N = 6개의 동일한 레이어로 구성된 스택 구조 (사진은 그 중 하나)
  • 각 레이어는 3개의 sub-layer로 구성.
    - Masked Multi-head self-attention
    - Multi-head encoder-decoder attention
    - feed-forward network
  • 각 sub-layer:
    - residual connection
    - layer normalization

 

Attention

같은 문장 내에서 단어들 간의 연관성을 파악할 수 있음.

  • $Q$: Query. 현재 내가 보고 있는 단어의 표현 - “내가 무엇을 찾고 있는가?”
  • $K$: Key. 찾는 대상 - “이 정보는 내가 찾는 것과 얼마나 관련이 있는가?”
  • $V$: Value. 실제 값 - 입력 자체의 정보, 실제 반환 데이터. $Q, K$에 의해 가중치가 부여됨.
  • → Q와 K를 비교해서 Q와 가장 관련있는 V 반환.

Scaled Dot-Product Attention

$\text{Attention}(Q,K,V) = \text{softmax}\bigg(\cfrac{QK^T}{\sqrt {d_k}} \bigg)V$

  • Query와 모든 Key의 dot product를 통해 유사도를 계산하고 $\sqrt {d_k}$를 나눈 값에 softmax 적용.
  • 이 유사도를 가중치로 하여 (softmax) 키와 맵핑된 각각의 Value에 반영.
  • 다수의 Query에 대해 동시에 계산하고, 이를 행렬 Q에 묶어서 처리함. K, V도 마찬가지.

Scaling

$\sqrt {d_k}$로 나누는 과정

  • Scaling을 하지 않으면 additive attention보다 성능이 대폭 감소.
  • softmax가 0 근처에서는 gradient가 높고, 매우 크고 작은 값들에 대해서는 매우 낮은 gradient를 가지기 때문에 학습이 잘 되지 않는 문제
  • scaling을 통해 모든 값들이 0 근처에 오도록 만들어주어 해결.
  • 넓게 퍼진 값을 0 근처로 모아준다 생각하면 좋을듯.
  • Additive attention: 단일 hidden layer의 feed-forward 네트워크를 사용하여 호환성 함수를 계산한다. $d_k$가 작을 때 성능이 더 좋다.
  • Dot-product attention: $d_k$가 더 클 때는 빠른 행렬곱 알고리즘에 힘입어 더 빠르고 더 공간 효율적이다.

 

Multi-Head Attention

$d_{model}$-dimension의 Q, K, V에 대해 작업하면 대신 각각을 $d_k, d_k, d_v$ dimension으로 linear projection하는 것에 이점이 있음.

  • 따로 계산된 h쌍의 d_v차원 출력은 concat 후 한 번 더 선형 함수에 project시켜 최종 출력값이 됨.
  • num_heads의 차원을 가지는 Q, K, V에 대해 num_heads개의 병렬 attention 수행.
  • 각 attention값 행렬을 attention head라고 부름.
  • 각 가중치 행렬의 값은 8개의 attention head마다 전부 다름.
  • 어텐션을 병렬로 수행하여 다른 시각으로 정보를 수집하기 위함.

$\text {MultiHead}(Q, K, V ) = \text{Concat}(\text{head}_1, ..., \text {head}_h)W^O$ $\text {where head}_i = \text {Attention}(QW_i^Q, KW_i^ K, VW_i^V )$

  • $W^Q_i ∈ \mathbb R^{d_{model}×d_q}$
  • $W^K_i ∈ \mathbb R^{d_{model}×d_k}$
  • $W^V_i ∈ \mathbb R^{d_{model}×d_v}$
  • $W^O ∈ \mathbb R^{hd_v×d_{model}}$
  • 논문에서 $h=8,d_k=d_v=d_{model}/h=64$
  • 각 헤드마다 64개의 결과가 출력되고 8개의 헤드가 있으므로 8x64개의 벡터 출력.

 

Applications

encoder-decoder attention

  • Decoder의 두 번째 attention.
  • query는 이전 디코더 layer에서 오며 memory key와 value는 encoder의 출력에서 온다.
  • 디코더가 입력의 모든 위치(원소)를 고려할 수 있도록 한다.

Masked Attention

  • auto-regressive 속성을 보존하기 위해 디코더는 출력을 생성할 시 다음 출력을 고려해서는 안 된다. 즉 이전에 설명한 masking을 통해 이전 원소는 참조할 수 없도록 한다.
  • 이 masking은 dot-product를 수행할 때 −∞로 설정함으로써 masking out시킨다.
  • 이렇게 설정되면 softmax를 통과할 때 0이 되므로 masking의 목적이 달성된다.

 

Position-wise Feed-Forward Networks

encoder와 decoder에 포함된 FC feed-forward network.

  • ReLU activation function과 2개의 선형변환 포함.

$\text{FFN}(x) = \max(0, xW_1+b_1)W_2 +b_2$

  • 논문에서, $d_{model} = 512, d_{ff}=2048$

 

Positional Encoding

sequence에 있는 원소들의 위치에 대한 정보를 넣어주기 위한 방법.

$PE_{(pos, 2i)} = \sin(pos/10000^{2i/d_{model}})$

$PE_{(pos, 2i+1)} = \cos(pos/10000^{2i/d_{model}})$

  • $pos$: 입력 문장에서 embedding vector 위치
  • $i$: embedding vector 내 dimension index
  • encoder와 decoder 밑부분에 추가.
  • embedding과 같은 $d_{model}$ 차원을 가져 더할 수 있다.
  • 학습 때보다 긴 sequence를 만나도 추정이 가능하기 때문에 sin함수 선택.

각 차원에서 서로 다른 주기를 가진 sin&cos 동시에 사용

 

sin&cos 동시 사용

  • 동일한 값에 대해 서로 다른 주파수 패턴 적용
  • 위치 정보를 더 풍부하게 표현
  • 하나가 겹쳐도 다른 하나가 달라 겹치지 않음.

주기

  • 주기를 서로 다르게 하여 위치가 다른 단어의 positional embedding이 겹치지 않음.
  • ex) $[\sin\left(\frac{\text{pos}}{10000^{0/4}}\right), \cos\left(\frac{\text{pos}}{10000^{1/4}}\right), \sin\left(\frac{\text{pos}}{10000^{2/4}}\right), \cos\left(\frac{\text{pos}}{10000^{3/4}}\right)$
  • i가 커질수록 k값이 작아져 더 긴 주기를 생성함.

 

Training

  • 영-독 번역: WMT 2014 데이터셋 (450만 문장 쌍), Byte-Pair Encoding(BPE) 사용, 공유 어휘 크기 약 37,000개.
  • 영-프 번역: WMT 2014 데이터셋 (3,600만 문장), WordPiece 어휘 크기 32,000개.
  • 문장 쌍은 시퀀스 길이에 따라 배치. 배치 크기는 약 25,000개의 소스 및 타겟 토큰 포함.

Settings

Hardware

  • 기본 모델(Base):
    - NVIDIA P100 GPU 8대 사용, 100,000 steps (약 12시간 소요).
    - step당 0.4초 소요.
  • 대형 모델(Big):
    - 300,000 steps (약 3.5일 소요), step 당 1.0초 소요.

Optimizer

  • Adam 옵티마이저: $β_1=0.9, β_2=0.98, ϵ=10^{−9}.$
  • Learning rate schedule: $lrate = d_{model}^{-0.5} \cdot \min(step^{-0.5}, step \cdot warmup\_steps^{-1.5})$
  • $warmup\_steps=4000$ 설정.

Regularization

  1. 드롭아웃: 서브 레이어와 임베딩에 드롭아웃 $P_{drop} = 0.1$ 적용.
  2. Label Smoothing: $\epsilon_{ls} = 0.1$ 사용

 

Result

기계 번역

  • 영-독 번역:
    • Transformer (Big): BLEU 28.4, 기존 최고 성능보다 2.0 이상 향상.
    • Base 모델: BLEU 27.3, 비용 대비 성능 우수.
  • 영-프 번역:
    • Transformer (Big): BLEU 41.0, 기존 최고 단일 모델을 초과.

모델 변형 실험

  • 헤드 수: 1개는 성능 저하(BLEU 24.9), 너무 많아도 성능 하락.
  • 모델 크기: 모델 크기 증가 시 성능 향상(BLEU 26.2).
  • 드롭아웃: 드롭아웃이 과적합 방지에 효과적.
  • 위치 임베딩: 기존의 사인파 방식과 유사한 성능.

영어 구성 구문 분석

  • Wall Street Journal(WSJ) 데이터셋에서 실험.
  • 결과:
    • WSJ 데이터만 사용한 경우: F1 91.3 (최고 모델에 근접).
    • 반-지도 학습(semi-supervised) 설정: F1 92.7 (기존 최고 성능 초과).

 

 

References

 

반응형

'Paper' 카테고리의 다른 글

[Paper] ViT - Vision Transformer  (0) 2025.01.19