기존의 주요한 문장 변환(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 ht 를 만들어 냄.
이는 input(xt)과 이전 hidden state(h{t-1})의 연산 결과물 ($$h_t=f(x_t, h{t-1})$$)
이 구조는 병렬화(parallelization)을 못하게 함. -> sequence length가 길어질 수록 메모리 제약이 많아짐
fatorization trick이나 conditional computation으로 극복이 가능하나 여전히 한계점이 존재함
일반적으로 경쟁력있는 sequence 전환 모델들은 encoder-decoder structure를 갖고 있고, Transformer 또한 마찬가지!
encoder-decoder structure?📰 : encoder -> z -> output
- encoder input (of symbol representations) : (x1,x2,...,xn)
-> continuous representation : z=(z1,...,zn)
-> output sequence : (y1,y2,...,yn)
** 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)))
모든 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 i 에 대한 예측을 i 이전 위치의 값들에만 의존할 수 있게 함
Encoder와 같이 (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
- dot product 값이 커지게 되면 softmax function의 gradient값이 비정상적으로 작아지게 됨
dot product : QKT
Attention = weighted sum of values = softmax(dkQKT)V = weight * V
모든 Query set으로부터 attetnion score는 matrix 형태로 동시에 계산됨(matrix Q,K,V)
dot product attention은 additive(더하는) attention보다 훨씬 빠르고 공간효율적
3.2.2 Multihead attention
하나의 attention function을 모델의 차원 크기의 key, value, query 로 연산하는 것보다는, query, key, value를 각각 dk,dk,dv 차원으로 linearly project(차원을 늘리는)하는 것이 더 효율적이라는 판단 (Rdmodel -> Rdmodel∗dk)
이는 병렬적으로 attention 연산을 수행하고 dv 차원의 output을 계산해 냄
이 output은 concatenate 된 후 다시 project 되고 final output을 산출함.
WiQ,WiK,WiV 는 각각 query, key, value의 projection 된 parameter matrix
embedding : input token과 output token을 dmodel=512 차원의 vector로 변형할 때 사용
Softmax (and linear function) : decoder output을 다음 token의 예측 확률값으로 매핑 시 사용
3.5 Positional encoding
Convolution이나 Recurrence가 없으므로, sequence 내 token의 순서 및 위치정보를 입력해 주어야 함. - 아래 식을 계산한 결과를 Positional encoding 결과값이며, 이 값을 input embedding을 더해줌(dmodel=512과 같은 차원으로 설정되어 더해짐).
sin, cos 함수 이용
pos = position
i = dimension
즉, 각 차원에 있는 position의 encoding 값이 sinosoid로 매핑됨
계수가 10000이므로 파장은 10000∗2π가 됨.
이 sinosoid 값을 매핑하는 것은 training 도중에 문장 길이보다 긴 위치로 sequence 길이를 추정할 수 있게 해줌.
Positional encoding의 조건(위 식이 아래 조건에 부합하는 방법인 것)
1) 각 Time-step마다 고유의 Encoding 값을 출력해야 한다.
2) 서로 다른 Time-step이라도 같은 거리라면 차이가 일정해야 한다.
3) 순서를 나타내는 값이 특정 범위 내에서 일반화가 가능해야 한다.
4) 같은 위치라면 언제든 같은 값을 출력해야 한다.
4. Why self-attention
layer당 연산 복잡도가 낮다.
계산량의 많은 부분이 병렬화가 가능하다.
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 등),