[NLP] Attention is all you need : Transformer 논문 제대로 읽기

건너별·2022년 3월 9일
0

NLP 및 추천시스템

목록 보기
11/13

이 글은 Attention is all you need)논문을 읽으며 내용을 정리한 글입니다. 논문을 직접 읽고 있는 그대로 해석하는 데에 집중하고자 했으며, Transfomer에 대하여 '이해'를 우선적으로 하고 싶은 분은 Transformer 논문 샅샅이 파헤치기 글을 참고해주시면 되겠습니다.😁

Abstract

  • 기존의 주요한 문장 변환(sequence transduction) 모델은 RNN 또는 CNN으로 되어있고, SOTA도 attention을 활용한 CNN RNN 모델
  • 이에 Attention만을 활용한 새로운 모델 구조를 제안

성능

  • Macine Translation Task에서 더 높은 성능을 낼 뿐 아니라, 병렬처리로 학습 시간 단축

👑2014년 World Machine Translation 대회에서,

  • 영어-독어 해석 task의 에서 28.4 의 BLEU score를 기록
    - 이는 앙상블 모델을 합쳐서 기존의 모델보다 2 이상 높은 기록
  • 영어-불어 해석 task에서 단일모델의 SOTA인 BLEU score인 41.0을 기록
    - 이는 3.5일간 8개의 GPU로 학습시킨 결과물
    • 이는 기존 문헌상의 최고 성능의 모델의 training cost와 비교해도 매우 작은 수준

** BLEU : NLP의 Machine Translation에서 평가 지표. label값을 더 정확하게 예측할수록 1에 가까운 값.

1. Introduction

  • RNN계열의 LSTM 및 GRU는 language modelling과 Machine translation 문제에 SOTA 접근방법을 확립해 았음
    - RNN model들은 input과 output의 token position을 따라 전형적으로 인자들을 곱함(그림1)

    [https://reddivarimadhusudhan77.medium.com/sentence-correction-using-rnns-deep-learning-fb0465ac8573]
    - 각 position을 Align하여 sequence의 hidden state hth_t 를 만들어 냄.

    • 이는 input(xtx_t)과 이전 hidden state(h{t-1})의 연산 결과물 ($$h_t=f(x_t, h{t-1})$$)
    • 이 구조는 병렬화(parallelization)을 못하게 함. -> sequence length가 길어질 수록 메모리 제약이 많아짐
    • fatorization trick이나 conditional computation으로 극복이 가능하나 여전히 한계점이 존재함
  • Attention mechanism 은 input, output sequence 내에서 각 token들 간 거리에 관계 없이 상관관계를 모델링 할 수 있는 '통합적인' 알고리즘인데 지금까지는 RNN에만 사용되어 왔음
    (참고자료(논문) : NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE)

2. Background

생략

3. Model Architecture

  • 일반적으로 경쟁력있는 sequence 전환 모델들은 encoder-decoder structure를 갖고 있고, Transformer 또한 마찬가지!
    • encoder-decoder structure?📰 : encoder -> z -> output
      - encoder input (of symbol representations) : (x1,x2,...,xn)(x_1,x_2,...,x_n)
      -> continuous representation : z=(z1,...,zn)z = (z_1,...,z_n)
      -> output sequence : (y1,y2,...,yn)(y_1,y_2,...,y_n)
      ** Autoregressive한 모델( 이전의 output을 추가적인 input으로 고려하여 다음 output 예측)
  • Transformer는 여러 겹 쌓인 self-attention fully connected FC layer를 이용하여 이러한 encoder 및 decoder 구조를 따름(그림)


[Overall Architecture of Transformer]

3.1 Encoder and Decoder Stacks

왼쪽이 Encoder, 오른쪽이 decoder 입니다.

- Encoder

  • N=6 개의 동일한 layer가 stacked 된 구조
  • 각 layer는 2개의 sub-layer로 이루어져 있음 : multihead self attention + position-wise FC FFN
    - 각 sub-layer에는 residual connection후 layer normalization이 있음(LayerNorm(x+Sublayer(x))LayerNorm(x + Sublayer(x)))
  • 모든 sub-layer와 embedding layer들은 512차원

- Decoder

  • N=6 개의 동일한 layer가 stacked 된 구조
  • 각 layer는 3개의 sublayer로 이루어져 있음(Encoder에 하나 추가) : masked multihead self attention + multihead attention of encoder output+ position-wise FC FFN
  • 첫 self-attention에서 Position을 다음 position과 관련짓는 것을 막기 위하여 Masking 진행
    - 이러한 masking은 position ii 에 대한 예측을 i 이전 위치의 값들에만 의존할 수 있게 함
  • Encoder와 같이 (LayerNorm(x+Sublayer(x))LayerNorm(x + Sublayer(x)))

3.2 Attention

  • Attention function은 Q(query) 와 key-value 쌍을 mapping하여 결과물을 내는 과정
  • Query, key, value, output은 모두 vector의 형태
  • output = weighted sum of values
  • weight = compatibility function of (Q,K)

3.2.1 Scaled Dot-Product Attention

  • scaled : dk\sqrt {d_k}
    - dot product 값이 커지게 되면 softmax function의 gradient값이 비정상적으로 작아지게 됨
  • dot product : QKTQK^T
  • Attention = weighted sum of values = softmax(QKTdk)Vsoftmax( \frac {QK^T} {\sqrt{d_k}}) V = weight * VV
  • 모든 Query set으로부터 attetnion score는 matrix 형태로 동시에 계산됨(matrix Q,K,VQ, K ,V)
  • dot product attention은 additive(더하는) attention보다 훨씬 빠르고 공간효율적

3.2.2 Multihead attention

  • 하나의 attention function을 모델의 차원 크기의 key, value, query 로 연산하는 것보다는, query, key, value를 각각 dkd_k,dkd_k,dvd_v 차원으로 linearly project(차원을 늘리는)하는 것이 더 효율적이라는 판단 (RdmodelR^{d_{model}} -> RdmodeldkR^{d_{model} * d_k})
  • 이는 병렬적으로 attention 연산을 수행하고 dvd_v 차원의 output을 계산해 냄
  • outputconcatenate 된 후 다시 project 되고 final output을 산출함.

  • WiQ,WiK,WiVW_i^Q, W_i^K, W_i^V 는 각각 query, key, value의 projection 된 parameter matrix
  • WiQRdmodeldkW_i^Q \in R^{d_{model} * d_k}, WiKRdmodeldkW_i^K \in R^{d_{model} * d_k}, WiVRdmodeldvW_i^V \in R^{d_{model} * d_v}
  • WoRhdvdmodelW^o \in R^{{h d_v}* d_{model}} : head 개수 만큼 concat 했으므로
  • default head 개수는 8개
  • 이에 따라, dkd_k = dvd_v = dmodel/hd_{model}/h = 512 / 8 = 64

query, key value with matrix


[https://data-science-blog.com/blog/2021/04/07/multi-head-attention-mechanism/]

from input to output z


[https://www.reddit.com/r/MachineLearning/comments/bkw2xp/d_what_is_the_rationale_behind_selfattention/]

3.2.3 attention의 적용


1. encoder-decoder attention

  • query가 이전의 decoder layer로부터 오고, key와 value는 encoder의 output으로부터 옴
  • 이는 decoder의 모든 position이 input sequence와 attention 연산을 수행하게 함
  • seq2seq 등의 전형적인 encoder-decoder attention 구조
  1. encoder self attention
  • query, key, value가 같은 곳에서 옴(이전 layer의 output)
  1. decoder self attention
  • query, key, value가 같은 곳에서 옴(이전 layer의 output)
  • autoregressive한 특성을 살리기위해 왼쪽 정보를 masking한 형태
  • attention

3.3 Position-wise FFN

FFN(x)=max(0,xW1+b1)W2+b2FFN(x) = max(0,xW_1 + b_1)W_2 + b_2
  • attention layer와 더불어 encoder와 decoder의 각 sub-layer에는 FFN가 존재.
  • 각각의 position이 독립적으로 동일하게 적용됨
  • ReLU activation을 포함하고 2개의 선형결합으로 이루어짐
  • position 별로는 같지만, layer별로는 다른 parameter
  • 마치 kernel(filter)size가 1인 두 convolution을 생각하면 됨*
  • input과 output 차원은 dmodel=512d_model=512, hidden layer의 차원인 dff=2048d_{ff}=2048.

3.4 Embeddings and Softmax

  • embedding : input token과 output token을 dmodel=512d_model=512 차원의 vector로 변형할 때 사용
  • Softmax (and linear function) : decoder output을 다음 token의 예측 확률값으로 매핑 시 사용

3.5 Positional encoding

  • Convolution이나 Recurrence가 없으므로, sequence 내 token의 순서 및 위치정보를 입력해 주어야 함. - 아래 식을 계산한 결과를 Positional encoding 결과값이며, 이 값을 input embedding을 더해줌(dmodel=512d_model=512과 같은 차원으로 설정되어 더해짐).

  • sin, cos 함수 이용

  • pospos = position

  • ii = dimension
    즉, 각 차원에 있는 position의 encoding 값이 sinosoid로 매핑됨

  • 계수가 10000이므로 파장은 100002π10000 * 2\pi가 됨.

  • 이 sinosoid 값을 매핑하는 것은 training 도중에 문장 길이보다 긴 위치로 sequence 길이를 추정할 수 있게 해줌.

  • Positional encoding의 조건(위 식이 아래 조건에 부합하는 방법인 것)

    	1) 각 Time-step마다 고유의 Encoding 값을 출력해야 한다.
    
    	2) 서로 다른 Time-step이라도 같은 거리라면 차이가 일정해야 한다.
    
    	3) 순서를 나타내는 값이 특정 범위 내에서 일반화가 가능해야 한다.
    
    	4) 같은 위치라면 언제든 같은 값을 출력해야 한다.

4. Why self-attention

  1. layer당 연산 복잡도가 낮다.
  2. 계산량의 많은 부분이 병렬화가 가능하다.
  3. network 안에서 장기적 의존도(long-range dependency)를 반영하기 위해 거쳐야 하는 path length가 짧다(장기적 의존도를 배우기가 수월하다).

    자세한 사항은 논문 참조.

5. Training

Training Data Batching

English-German

  • dataset : 4,500만개의 영어-독어 문장 pair
  • byte-pair encoding으로 인코딩됨
  • 37,000 token 을 가진 단어장

English-French

  • dataset : 3,600만개의 영어-불어 문장 pair

  • 32,000 token을 가진 단어장으로 매핑

  • batch 당 25000개의 source,target 쌍으로 이루어짐

5.2 Hardware and schedule

  • GPU : 8개의 NVIDIA P100 GPUs.

base model

hyperparameter를 언급된 값들로 설정한 결과(head=8, dimension=512 등),

  • training step별로 0.4 초의 시간이 걸림
  • 100,000 step 만큼 학습시킴(12시간).

big model

  • training step 별로 1초의 시간이 걸림
  • 300,000 step만큼 학습시킴(3.5일)

5.3 Optimizer

Optimizer 정리 참고.

  • Adam 사용. (β1=0.9,β2=0.98,ϵ=109\beta_1 = 0.9, \beta_2 = 0.98, \epsilon = 10^{-9})
  • learning rate를 아래와 같이 달리하였음.

    - 첫 warmup step에서는 lr 증가시키고, 이후에는 step number의 제곱근에 반비례하도록 감소시킴.
    • warmup_step = 4,000

5.4 Regularization

  1. Residual Dropout (Pdrop=0.1P_{drop}=0.1)
    • 각 sub-layer의 output에 dropout 적용(Residual computation, 그러니까 input과 더해지고 layer normalize 되는 연산을 진행하기 전에).
    • encoder와 decoder 모두에 embedding과 positional encoding 값의 합에 dropout 적용
  2. Label Smoothing (ϵls=0.1\epsilon_{ls}=0.1)
    • 불확실성을 높이지만, accuracy 및 BLEU score를 개선함.

6. Results

6.1 Machine Translation

  • BLEU score, cost 모두 Sota 모델을 능가함.
  • 특히 training cost면에서 압도적으로 우위를 보임(base)

    자세한 hyperparameter 및 조작된 값들은 논문을 참조.

6.2 Model Variations

  • 모델의 hyperparameter 값들을 변경해 가며 최상의 성능을 내는 값들을 실험함
  • big model로 그림의 hyperparameter로 perplexity 및 BLEU score에서 최적의 성능을 발휘
    **자세한 사항은 논문 참조.

7.Conclusion

  • 결과적으로 본 논문에서 소개한 Transformer model은 일반적인 RNN layer의 encoder-decoder 구조를 multi-headed self attention 으로 대체하였음.
  • 심지어 더 빠르고, 기존 앙상블 모델과 겨루어봐도 비비지 못함.
  • 다른 modality에 적용하고, image나 audio 및 video 에 attention mechanism을 적용할 계획을 갖고 있음
profile
romantic ai developer

0개의 댓글