AI/논문 리뷰

[논문 리뷰] Attention is All You Need

sangwonYoon 2023. 6. 12. 22:11

논문이 다루는 Task

  • Task: Machine Translation
  • WMT 2014 English-to-German translation task
    • input: tokenize된 영어 문장
    • input_size: (batch size, source_max_length)
    • output: 독일어 token의 probability sequence
    • output_size: (batch size, target_max_length, vocab_size)
  • WMT 2014 English-to-French Translation task
    • input: tokenize된 영어 문장
    • input_size: (batch size, source_max_length)
    • output: 프랑스어 token의 probability sequence
    • output_size: (batch size, target_max_length, vocab_size)

 

기존 연구의 한계

Recurrent 구조의 한계

  • 입력 sequence 내에서 병렬 연산을 수행할 수 없다.

 

CNN 구조의 한계

  • 입력과 출력의 위치에 따라 거리가 멀어질수록 종속성을 학습하기 어렵다.

 

제안 방법론

Model Architecture

다른 시퀀스 변환 모델(Sequence Transduction Model)과 마찬가지로 Transformer 또한 Encoder-Decoder 구조를 따른다.

 

Encoder

encoder 구조

encoder는 embedding layer와 N개의 동일한 복합 layer가 반복되는 구조를 갖는다. 이 때, 복합 layer는 두 개의 sub-layer를 갖는다. 첫번째 sub-layer는 multi-head self-attention layer, 두번째 sub-layer는 position-wise fully connected feed-forward layer이다. 각 복합 layer는 같은 구조를 갖지만, 서로 다른 파라미터 값을 갖는다.

두 sub-layer에 residual-connection을 적용하여 성능을 향상시켰고, 이후 layer normalization을 수행한다.

최종적으로 마지막 N번째 복합 layer의 출력값을 decoder의 multi-head attention layer에 넣어준다.

 

Decoder

decoder 구조

decoder는 embedding layer와 N개의 동일한 복합 layer가 반복된 이후, 출력값을 token probability로 변환하기 위한 linear layer와 softmax layer로 구성되어 있다.

decoder의 복합 layer는 encoder의 복합 layer와 달리 encoder의 출력값을 입력받는 multi-head attention layer가 sub-layer로 추가된다. 또한, multi-head self-attention layer의 경우 $i$번째 위치에서는 $i$+1번째 이후의 위치에 마스킹을 적용하여 모델이 예측할 때 현재 위치 이후에 있는 token들을 참조하지 못하도록 수정했다.

 

Scaled Dot-Product Attention

Attention 연산은 아래와 같이 정의된다.

$$ \textrm{Attention}(Q,K,V)=\textrm{softmax}\left( QK^\intercal \over \sqrt{d_k}\right)V $$

Q, K, V는 각각 query, key, value를 의미하며 모두 벡터의 형태를 갖는다.

Attention 연산은 value의 가중 평균으로 계산되는데, 이 연산에서의 가중치는 query와 key의 내적을 수행한 뒤, $\sqrt{d_k}$로 나눈 값에 ($d_k$는 query와 key의 차원) softmax를 취하여 계산한다. 이 연산을 위해 반드시 query와 key의 차원은 동일해야 한다.

query와 key의 내적값을 $\sqrt{d_k}$로 나누어 rescale 하는 이유는 query와 key의 내적값은 $d_k$가 커질수록 값이 커지게 되고, 이는 softmax의 연산 결과가 매우 작은 gradient를 갖게하기 때문이다.

 

Multi-Head Attention

단일 attention 연산을 수행하는 것보다, h개의 서로 다른 attention 연산을 수행하는 multi-head attention이 더 좋은 성능을 얻을 수 있었다.

multi-head attention은 각 head가 서로 다른 attention concept를 학습하도록 하여 다양한 특징에 초점을 맞춘 토큰 간의 관계를 학습할 수 있다.

각 head에서 나온 output들을 concat한 뒤, linear layer에 통과시켜 최종 결과값을 얻는다.

 

position-wise Feed Forward Networks

위 그림은 encoder와 decoder의 Feed Forward Layer의 구조를 나타낸 그림이다.

입력의 위치마다 개별적으로 적용되므로 position-wise이고, 같은 layer에서는 같은 W와 b의 파라미터 값을 공유하지만, layer별로 파라미터의 값이 달라진다.

 

Embedding and Softmax

다른 sequence 변환 모델들과 같이 transformer 또한 input과 output의 token들을 embedding하는 과정을 거친다. 또한 decoder의 마지막 부분에서 attention layer의 출력을 선형 변환한 후, softmax 함수를 적용해 다음 토큰을 추정한다. 

이 때 softmax 함수를 취하기 전 선형 변환에서 사용되는 가중치 행렬과 embedding layer의 가중치 행렬은 서로 값을 공유한다.

 

Positional Encoding

transformer는 recurrnt 모델이나 convolution 모델이 아니기 때문에 sequence의 위치 정보를 이용하기 위해서는 sequence의 토큰에 위치에 대한 정보를 주입해야 한다. 이를 위해 본 연구에서는 아래와 같은 positional encoding 값을 embedding vector에 더해주었다.

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

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

위 수식에서 $pos$는 토큰의 위치이고, $i$는 차원을 의미한다.

$PE_{pos+k}$는 $PE_{pos}$의 선형 변환으로 나타낼 수 있기 때문에 모델이 두 token 간에 상대적인 위치 정보를 쉽게 학습할 수 있다.

학습된 positional embedding을 사용하는 것과 위 방식처럼 sinusoidal 방식을 사용하는 것이 거의 비슷한 결과가 나오는 점과 학습 시 주어졌던 가장 긴 길이의 문장보다 더 긴 문장이 inference 시 주어질 경우 문제가 될 수 있기 때문에 본 연구에서는 정적인 값을 embedding vector에 더해주는 sinusoidal version을 채택했다.

 

Contribution

  • RNN이나 convolution layer을 사용하지 않고, self-attention만을 사용해 input과 output의 representation 계산하는 sequence 변환 모델인 Transformer를 제안했다.
  • self-attention 연산을 통해 입력 sequence 내의 병렬 연산이 가능해지면서 모델의 훈련 속도가 획기적으로 빨라졌다.
  • WMT 2014 English-to-German 번역 task와 WMT 2014 English-to-French 번역 task에서 state-of-the-art를 달성하면서 우수한 성능을 입증하였다.

 

실험 및 결과

Dataset

1. WMT 2014 English-to-German 데이터셋

  • 450만개의 문장 쌍
  • 37000개의 어휘 토큰 사용

2.WMT 2014 English-to-French 데이터셋

  • 3600만개의 문장 쌍
  • 32000개의 어휘 토큰 사용
  • sequence의 길이가 유사한 문장 쌍끼리 묶어서 같은 batch로 학습 진행

 

Training Details

1. Hardware and Schedule

  • 8개의 NVIDIA P100 GPU를 사용해 학습
  • Base Model
    • 각 training step에 0.4초 소요
    • 총 10만 step 학습, 12시간 소요
  • Big Model
    • 각 training step에 1초 소요
    • 총 30만 step 학습, 3.5일 소요

 

2. Optimizer

  • Adam Otimizer 사용 : β1 = 0.9, β2 = 0.98 and ε = 10−9
  • learning rate scheduler는 아래와 같다.

$$ lrate = d_{model}^{-0.5} \cdot min(step\_num^{-0.5}, step\_num \cdot warmup\_steps^{-1.5}) $$

  • $warmup\_steps$까지 선형적으로 증가, 이후 step_number의 역제곱근에 비례하여 감소
  • 본 연구에서는 $warmup\_steps$를 4000으로 설정

 

3. Regularization

  • Residual Dropout ($P_{drop}$ = 0.1)
    • 각 sub layer의 output에 적용 (output이 residual connection으로 인해 sub layer의 input과 더해지기 전에 적용)
    • token embedding과 positional encoding 값을 더한 후 적용
  • Label smoothing ( $\epsilon_{ls}$ = 0.1)
    • perplexity 지표에 부정적인 영향을 미치지만, 정확도와 BLEU 점수가 향상된다.

 

Result

1. Machine Trainslation

  • Base model : 마지막 5개의 checkpoint들을 평균 낸 단일 모델 사용
  • Big model : 마지막 20개의 checkpoint들을 평균 낸 단일 모델 사용
  • 기타 세부 사항 
    • beam search 활용(beam_size=4), length penalty $\alpha$ = 0.6
    • inference시, output의 최대 길이는 (input 길이) + 50
  • WMT 2014 English-to-German Translation
    • Transformer(Big) 모델이 기존 SOTA 모델의 BLEU 점수에서 2점 오른 28.4점을 달성
    • Base model도 다른 기존에 발표된 모델과 앙상블한 모델들보다도 적은 training cost로 더 높은 성능을 보임
  • WMT 2014 English-to-French Translation
    • Transformer(Big)은 기존 SOTA 모델의 1/4도 안되는 training cost를 사용해 더 높은 성능을 보임

Machine Translation task 결과

 

2. Model Variations

Transformer를 구성하는 요소들의 중요도를 평가하기 위해 Transformer의 Base model을 다양하게 변형시키며 학습하여 성능을 평가

$N$.        (복합 layer의 수)
$d_{model}$ (모델의 출력 차원)
$d_{ff}$       (FFN의 내부 차원)
$h$          (attention head의 수)
$d_k$        (query와 key 벡터의 차원)
$d_v$         (value 벡터의 차원)
$P_{drop}$   (dropout 확률)
$\epsilon_{ls}$        (label smoothing factor)
  • (A)를 통해 attention head의 수가 너무 많아지면 성능이 낮아지는 것을 확인할 수 있다.
  • (B)를 통해 $d_k$를 줄이면 성능이 낮아지는 것을 확인할 수 있다. 이는 token 간의 연관성을 판단하기 쉽지 않다는 것을 시사한다. 따라서 dot product보다 더 정교한 compatibility function을 사용하면 더 효과적일 것이다.
  • (C)를 통해 더 큰 모델이 더 좋은 성능을 보인다는 것을 확인할 수 있다.
  • (D)를 통해 dropout이 과적합을 방지하는데 효과적이라는 것을 확인할 수 있다.
  • (E)를 통해 기존에 사용하는 sinusoidal positional encoding을 학습 가능한 positional embedding으로 교체하여도 큰 성능 차이가 없다는 것을 확인할 수 있다.

 

3. English Constituency Parsing

Transformer의 다른 task에서의 일반화 성능을 검증하고자 시행

  • English Consituency Parsing : 문장을 구문 구조로 분석하는 것

English Consituency Parsing

Dataset

  • Wall Street Journal (WSJ) portion of the Penn Treebank 
    • 40000개의 학습 문장 활용
    • 16000개의 토큰 
  • BerkleyParser corpora (semi-suprevised training)
    • 1700만개 학습 문장 활용
    • 32000개의 토큰

English Consituency Parsing 성능 비교표

  • 간단한 하이퍼 파라미터 튜닝만 거쳤음에도, Transformer가 좋은 성능을 보이면서 다양한 task에 적용 가능함을 입증

 

*본 템플릿은 DSBA 연구실 이유경 박사과정의 템플릿을 토대로 하고 있습니다. 

 

출처