https://arxiv.org/abs/1706.03762
Attention Is All You Need
The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new
arxiv.org
Abstract
sequence 변환 모델들은 encoder와 decoder를 포함한 복잡한 RNN 또는 CNN 구조이다. 거기에 더해 성능이 좋은 모델들은 attention 메커니즘을 사용한다. 이 논문은 오직 attention만으로 구성된 새로운 네트워크 구조인 Transformer를 제안한다. 결과적으로 기계 번역 실험에서 이 모델은 더 높은 성능을 달성하면서도 병렬화가 가능하고 학습 시간이 훨씬 짧았다.
1. Introduction
RNN, 특히 LSTM과 GRU는 언어 모델링과 기계 번역과 같은 sequence modeling 문제에서 최첨단 방법으로 자리 잡았다. 이후에도 이러한 RNN 기반 모델과 encoder-decoder 구조의 성능을 더욱 향상시키기 위한 다양한 연구들이 진행되어 왔다. RNN 모델 구조는 본질적으로 순차적이기 때문에 하나의 문장 내부에서도 병렬 처리가 불가능하다. 특히 문장이 길어질수록 심해지며 메모리 제한 때문에 batch 처리에도 어려움이 존재한다.
한편, attention 메커니즘은 입력과 출력 시퀀스에서 거리와 상관없이 의존 관계를 학습할 수 있게 해주며 다양한 모델에서 중요한 요소로 자리 잡았다. 그러나 대부분의 경우 attention은 여전히 RNN과 함께 사용되는 보조적인 역할이었다. 본 논문에서는 이러한 문제를 해결하기 위해 recurrence 없이 오직 attention만으로 구성된 Transformer 구조를 제안한다. Transformer는 입력과 출력 간의 전역적인 의존 관계를 attention만으로 모델링하며 훨씬 높은 병렬화가 가능하다.
2. Background
순차적 계산을 줄이려는 시도는 Extended Neural GPU, ByteNet, ConvS2S와 같은 모델에서도 나타난다. 이 모델들은 CNN을 사용하여 입력과 출력의 모든 위치에 대해 병렬로 hidden representation을 계산한다. 하지만 이러한 모델에서는 서로 멀리 떨어진 위치 간의 관계를 연결하기 위해 필요한 연산 수가 거리(distance)에 따라 증가한다. (convS2S - 선형적 증가, ByteNet-로그로 증가)
반면 Transformer에서는 두 위치 간의 관계를 연결하는 데 필요한 연산이 상수(constant)이다. 다만 attention은 여러 위치의 정보를 평균내는 과정이 있어 해상도(resolution)가 낮아질 수 있는데 이를 Multi-Head Attention으로 보완한다. Self-attention은 하나의 시퀀스 내부의 서로 다른 위치 간 관계를 학습하여 시퀀스 전체를 표현하는 메커니즘이다. 이는 독해, 요약, 문장 유사도 등 다양한 작업에서 이미 성공적으로 사용되어 왔다. 또한 End-to-end memory network는 RNN 대신 attention 기반 구조를 사용하여 간단한 질의응답 및 언어 모델링에서 좋은 성능을 보였다. (그러나 여전히 RNN 또는 CNN과 함꼐 사용) 본 논문에서 제안하는 Transformer는 오직 self-attention만을 사용하는 최초의 모델이다.
3 Model Architecture

encoder : 입력 시퀀스 (x1,...,xn)을 연속적인 표현 z=(z1,...,zn)으로 변환
decoder : z 바탕으로 출력 시퀀스 (y1,...,ym)을 한 단어씩 생성
이 과정에서 모델은 이전에 생성된 단어들을 입력으로 사용하며 auto-regressive (자귀 회귀, 이전 겨로가 이용해 다음 값 예측하는) 방식으로 동작한다. Transformer는 encoder와 decoder 모두에서 self-attention과 fully connected layer를 반복적으로 쌓은 구조를 사용한다.
3.1 Encoder and Decoder Stacks
Encoder : 동일한 구조의 layer를 N=6개 쌓은 형태, 각 layer는 두 개의 sub-layer로 구성
- Multi-head self-attention - 같은 문장 안에서 단어들끼리 서로 얼마나 중요한지 계산 x N (여러번 동시에)
- Position-wise fully connected feed-forward network - 각 단어에 대해 독립적인 FFN
각 sub-layer 주변에는 residual connection이 적용되며 그 후 layer normalization이 수행된다.
LayerNorm(x+Sublayer(x)) -> 이러한 residual 연결을 위해 모든 sub-layer와 embedding은 동일한 차원 d_model=512을 갖는다.
Decoder : 동일한 구조의 layer를 N=6개 쌓은 형태, 각 layer는 3개의 sub-layer로 구성
- Masked multi-head self-attention
- Encoder-Decoder attention
- Feed-forward network - Linear + ReLU + Linear, 각 단어 개별적 변환 (책 -> 벡터 > FFN -> 더 풍부한 의미 벡터)
encoder와 동일하게 각 sub-layer마다 residual connection + layer normalization이 적용된다. 또한 decoder의 self-attention에서는 미래 단어를 보지 못하도록 masking을 적용한다.
-> masking과 출력 shifting 덕분에 각 위치 i 의 예측은 오직 i 이전 단어들에만 의존
3.2.1 Scaled Dot-Product Attention
입력은 query(지금 내가 보고 있는 단어), key(비교 대상 단어들), value(실제 가져올 정보)로 구성된다.

query (내적) key -> 루트d_k 로 나누기 -> softmax -> 가중치 -> 가중치 x value -> ouput
3.2.2 Multi-Head Attention
단일 attention을 사용하는 대신 query, key, value를 여러 개의 서로 다른 선형 변환으로 투영한 뒤 각각에 대해 attention을 병렬로 수행하는 것이 더 효과적이다. 각 attention의 결과는 이후 연결(concatenate)되고 다시 선형 변환을 거쳐 최종 출력이 생성된다.

각 W_Q, W_K, W_V는 서로 다른 학습 가능한 행렬이다. 본 논문에서는 h=8개의 head를 사용하며 각 head의 차원은 dk = dv = dmodel/h = 64이다. 여러 head를 사용하면 모델이 서로 다른 표면 공간에서 다양한 관계를 동시에 학습 가능하다.
3.2.3 Applications of Attention in our Model
Transformer는 multi-head attention을 세 가지 방식으로 사용한다.
1. Encoder-Decoder Attention (Cross Attention)
query는 decoder에서 key와 value는 encoder의 출력에서 옴 -> decoder의 각 위치는 입력 시퀀스의 모든 위치 참고 가능
2. Encoder의 Self-Attention
encoder는 query, key, value 모두 이전 layer의 encoder 출력에서 나옴 -> encoder의 각 위치는 입력 문장의 모든 위치참고 가능
3. Decoder의 Self-Attention (Masked)
decoder에서도 self-attention이 사용되며 각 위치는 이전 위치들까지만 참고 가능 -> 이를 위해 masking 사용
3.3 Position-wise Feed-Forward Networks
각 encoder와 decoder의 layer에는 attention sub-layer 외 fully connected feed-forward network(FFN)가 포함되어 있다.
이 FFN은 각 위치(position)에 대해 독립적으로 동일하게 적용된다. ( 입력 → Linear → ReLU → Linear → 출력 )

입력과 출력의 차원은 d_model = 512이고, hidden 차원은 d_ff = 2048이다. 차원을 키웠다 줄이는 이유는 더 풍부한 표현을 만들기 위함이다.
3.4 Embeddings and Softmax
다른 sequence 모델들과 마찬가지로 입력 토큰과 출력 토큰을 벡터로 변환하기 위해 embedding을 사용한다. 또한 decoder의 출력은 linear transformation + softmax를 통해 다음 단어의 확률로 변환된다. 입력 embedding, 출력 embedding, softmax 이전 linear transformation이 같은 weight를 공유한다.

complexity per Layer - 연산량 / sequential operations - 순차 연산 (1은 병렬) / maximum path length - 정보 전달 거리
-> 병렬처리 가능하고 장거리 의존성도 없고 계산 효율이 좋은 모델은 self- attention 이다.
3.5 Positional Encoding
transformer는 recurrence도 없고 convolution도 없기 때문에 시퀀스의 순서 정보를 활용하기 위해 토큰의 위치 정보를 따로 추가해주어야 한다. 이를 위해 우리는 encoder와 decoder의 입력 embedding에 positional encoding을 더해준다. positional encoding은 embedding과 같은 차원을 가지며 두 값을 더할 수 있도록 설계된다. positional encoding엔 여러 방식이 존재하고 학습 가능 방식과 고정도니 방식이 존재한다. 본 논문에서는 서로 다른 주파수를 가지는 sin, cos 함수 기반 positional encoding을 사용한다.

pos = 위치 (1,2,3...) / i = 차원 인덱스(0 ~ d_model/2) / d_model = 전체 차원 (논문에선 512)
-> positional encoding의 짝수 차원은 sin, 홀수 차원은 cos로 구성, 복잡한 숫자는 주기 조절로 i 커질수록 값 작아져 변화 느려짐
4 Why Self-Attention
self-attention layer를 RNN이나 CNN과 같은 기존 layer들과 비교한다. 입력 시퀀스 (x1,...,xn)을 동일한 길이의 표현 (z1,...,zn)으로 변환하는 문제를 고려한다. self-attention을 사용하는 이유를 4가지 기준으로 비교한다.
1. 계산 복잡도
self-attention의 계산 복잡도는 O(n2⋅d)이다. RNN은 , CNN은 O(k⋅n⋅d2)이다.
-> 문장 길이 n이 표현 차원 d보다 작은 경우, self-attention이 더 효율적이다.
2. 병렬화
self-attention은 모든 위치를 동시에 계산할 수 있어 순차 연산이 O(1)이다.
3. 장거리 의존성
self-attention에서는 모든 위치 간 경로 길이가 O(1)이다. 반면 RNN은 O(n), CNN은 O(log n)이다.
-> 경로가 짧을수록 장거리 의존성 학습하기 쉽다.
4. 표현력
self-attention은 multi head로 각 head가 서로 다른 역할을 하여 학습하는 것을 확인할 수 있다.
-> 모델을 더 해석 가능하게 만든다.
5. Training
5.1 Training Data and Batching
약 450만 개의 문장 쌍으로 구성된 WMT 2014 영어-독일어 데이터셋 사용, 문장은 byte-pair encoding(BPE)을 사용하여 인코딩되었으며 약 37,000개의 공유 vocabulary를 사용 영어-프랑스어의 경우 더 큰 데이터셋(3,600만 문장)을 사용하였고, 32,000개의 word-piece vocabulary로 나눔 문장 쌍은 길이가 비슷한 것끼리 batch로 묶었다. 각 batch에는 약 25,000개의 source token과
25,000개의 target token이 포함되었다. -> 단어를 쪼개서 vocabulary 줄임, 길이 비슷한 것끼리 batching 효율 높이기
5.2 Hardware and Schedule
8개의 NVIDIA P100 GPU를 사용하여 모델을 학습하였다. -> 짧은 시간에 높은 성능
5.3 Optimizer
Adam optimizer를 사용, 러닝레이트 초반에 점점 증가 시키다가 후반에 점점 감소시켰다.
5.4 Regularization
Residual Dropout : 각 sub-layer 출력에 dropout을 적용한 뒤 residual connection과 normalization을 수행, embedding과 positional encoding의 합에도 dropout을 적용
Label Smoothing : label smoothing (ε = 0.1)을 적용 -> perplexity를 악화시키지만 accuracy와 BLEU score를 향상

6. Results
6.1 Machine Translation
WMT 2014 영어→독일어 번역 작업에서 Transformer (big) 모델은 기존의 최고 성능 모델들(앙상블 포함)보다 2 BLEU 이상 높은 성능(28.4 BLEU)을 달성하였다. 또한 base 모델조차도 기존의 모든 모델 및 앙상블보다 더 낮은 학습 비용으로 더 높은 성능을 달성하였다.
영어→프랑스어 번역 작업에서는, big 모델이 41.0 BLEU를 달성하여 기존 single model보다 우수한 성능을 보였으며, 학습 비용은 기존 최고 모델의 1/4 수준이었다. base 모델의 경우, 마지막 5개의 checkpoint를 평균하여 최종 모델을 구성하였다. big 모델의 경우, 마지막 20개의 checkpoint를 평균하였다.
추론(inference) 시에는 beam search를 사용하였으며, beam size는 4, length penalty는 0.6으로 설정하였다. 출력 길이는 입력 길이 + 50으로 제한하였으며, 가능한 경우 더 일찍 종료하였다.
6.2 Model Variations
Transformer의 각 구성 요소가 얼마나 중요한지 평가하기 위해, base 모델을 다양한 방식으로 변경하고 영어→독일어 번역(dev set)에서 성능 변화를 측정

(A) Attention head 수 변화
attention head의 개수와 각 head의 차원을 조절 -> single-head attention은 최적 설정보다 약 0.9 BLEU 낮은 성능, head 수 너무 많아도 성능 감소
(B) Key 차원 dk 감소
attention key의 차원을 줄이면 성능이 감소 -> 단순한 dot-product 만으로는 충분한 관계 표현이 어려울 수 있음
(C), (D) 모델 크기 변화
모델의 크기가 커질수록 성능이 향상되는 경향, dropout은 과적합 방지에 중요한 역할
(E) Positional Encoding 방식 비교
sinusoidal positional encoding 대신 학습 가능한 positional embedding을 사용해도 거의 동일한 성능
6.3 English Constituency Parsing
Transformer가 다른 작업에도 잘 일반화되는지 평가하기 위해 어 구문 분석(task)에 대한 실험을 수행

기존의 RNN 기반 seq2seq 모델은 데이터가 적은 환경에서는 좋은 성능을 내지 못했다. dropout, learning rate, beam size 등 일부 하이퍼파라미터만 조정하고, 나머지는 번역 모델과 동일하게 유지하였다. 실험 결과, Transformer는 task-specific tuning이 거의 없음에도 불구하고 매우 좋은 성능을 보였다. 특히 WSJ-only 설정에서도 Berkeley Parser보다 더 높은 성능을 달성하였다. 이는 Transformer가 작은 데이터 환경에서도 기존 RNN 기반 모델보다 더 뛰어난 성능을 보일 수 있음을 의미한다.
7 Conclusion
본 논문에서는 attention만으로 구성된 최초의 sequence 변환 모델인 Transformer를 제안하였다. 기존 encoder-decoder 구조에서 널리 사용되던 recurrent layer를 제거하고, multi-head self-attention으로 대체하였다. 기계 번역 작업에서 Transformer는 RNN이나 CNN 기반 모델보다 훨씬 빠르게 학습되며, 더 높은 성능을 달성하였다. 특히 영어→독일어 작업에서는 기존의 모든 앙상블 모델보다도 더 높은 성능을 보였다. 텍스트뿐만 아니라 이미지, 오디오, 비디오와 같은 다양한 입력/출력 형태에도 Transformer를 확장할 수 있을 것으로 본다. 더 나아가, 생성 과정을 덜 순차적으로 만드는 것도 향후 연구 과제이다.