0. Abstract
주요 시퀀스 변환 모델은 인코더와 디코더를 포함하는 RNN 또는 CNN을 기반으로 한다. 최고 성능의 모델은 또한 어텐션 메커니즘을 통해 인코더와 디코더를 연결한다. 본 논문에서는 recurrence와 convolution을 완전히 없애고 attention 메커니즘에만 기반한 새로운 간단한 네트워크 아키텍처인 Transformer를 제안한다.
1. Introdution
특히 RNN과 gated RNN은 언어 모델링 및 기계 번역과 같은 시퀀스 모델링 및 변환 문제에 대한 최첨단 접근 방식으로 확고히 자리 잡았다.
Recurrent model은 일반적으로 입력 및 출력 시퀀스의 symbol 위치를 따라 계산을 고려한다. 계산 시간의 step에 따라 위치를 정렬하면, 이전의 hidden state $ h_{t-1} $ 및 위치 $ t $에 대한 input의 함수로 hidden state $ h_{t} $가 생성된다. 이런 본질적인 순차적 특성으로 인해 training examples 내에서 병렬화가 불가능하며, 이는 메모리 제약으로 인해 예제 간 일관 처리가 제한되므로 시퀀스 길이가 길어질수록 critical 해 진다.
Attention 메커니즘은 다양한 작업에서 강력한 시퀀스 모델링 및 변환 모델의 필수적인 부분이 되어 입력 또는 출력 시퀀스의 거리에 관계없이 종속성을 모델링할 수 있다. 이 연구에서 본 논문에서는 반복을 피하는 대신 Attention 메커니즘에 전적으로 의존하여 입력과 출력 사이의 전역 종속성을 그리는 모델인 Transformer를 제안한다.
2. Background
Intra-attention이라고도 불리는 Self-attention은 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 다양한 위치와 관련된 Attention 메커니즘이다. Self-attention은 독해, 추상적 요약, 텍스트 수반 및 작업 독립적인 문장 표현 학습을 포함한 다양한 작업에서 성공적으로 사용되었다.
End-to-end momory networks는 sequence-aligned recurrence 대신에 recurrent attention 메커니즘을 기반으로 하며, 간단한 언어 QA 및 언어 모델링 작업에서도 잘 수행되는 것을 보였다.
그러나 Transformer는 sequence-aligned RNN 또는 컨볼루션을 사용하지 않고 입력 및 출력 표현을 계산하기 위해 self-attention에 의존하는 최초의 변환 모델이다. 다음 섹션에서 Transformer에 대해 설명한다.
3. Model Architecture
가장 경쟁력 있는 neural sequence transduction model은 encoder-decoder 구조를 가진다. 여기서 encoder는 입력 시퀀스의 symbol 표현 $ (x_{1}, ..., x_{n}) $를 시퀀스의 연속적인 표현 $ \textbf{z} = (z_{1}, ..., z_{n}) $에 매핑한다. $ \textbf{z} $가 주어지면, decoder는 한 번에 한 요소씩 symbol의 출력 시퀀스 $ (y_{1}, ..., y_{m}) $을 생성한다. 각 단계에서 모델은 자동 회귀적이며, 이전에 생성된 symbol을 다음 symbol을 생성할 때 추가 입력으로 사용한다.
Transformer는 Figure 1의 왼쪽과 오른쪽에 각각 표시된 것처럼 encoder와 decoder 모두에 대해 stacked self-attention 및 point-wise fully conntected layers를 사용하는 전체 아키텍처를 따른다.
3.1 Encoder and Decoder Stacks
Encoder:
encoder는 N = 6개의 동일한 layer의 stack으로 구성된다. 각 layer에는 2개의 하위 layer가 있다. 첫 번째는 multi-head attention 메커니즘이고, 두 번째는 간단하고 위치 별로 완전히 연결된 feed-forward network이다. 본 논문에서는 2개의 sub-layer 각각 주위에 residual connection을 사용하고, layer normalization을 수행한다. 즉, 각 하위 계층의 출력은 $ LayerNorm(x + Subkatyer(x)) $이며, 여기서 $ Sublayer(x) $는 sub-layer 자체에서 구현되는 함수이다. 이러한 residual connection을 용이하게 하기 위해 모델의 모든 sub-layer와 embedding layer는 dimension $ d_{model} = 512 $의 출력을 생성한다.
Decoder:
decoder 또한 N = 6 개의 동일한 layer의 stack으로 구성된다. 각 인코더 레이어의 두 sub-layer 외에도 decoder는 encoder stack의 출력에 대해 multi-head attention을 수행하는 세 번째 sub-layer를 삽입한다. encoder와 유사하게 각 sub-layer 주위에 residual-connection을 사용하고 이어서 layer normalization을 수행한다. 또한 potision들이 후속 position들에 참여하는 것을 방지하기 위해 decoder stack의 self-attention sub-layer를 수정했다. Output Embedding이 one position만큼 offset된다는 사실과 결합된 이 masking은 위치 $ i $에 대한 예측이 $ i $ 보다 작은 위치의 알려진 출력에만 의존할 수 있음을 보장한다.
3.2 Attention
attention function은 query와 key-value 쌍 세트를 출력에 매핑하는 것으로 설명할 수 있다. 여기서 query, key, value 및 output은 모두 벡터이다. 출력은 value의 가중합으로 계산된다. 여기서 각 value에 할당된 가중치는 해당 key에 대한 query의 호환성 함수에 의해 계산된다.
3.2.1 Scaled Dot-Product Attention
본 논문에서는 우리들의 특별한 attention을 "Scaled Dot-Product Attention"이라고 부른다. 입력은 $ d_{k} $ 차원의 query와 key, $ d_{v} $ 차원의 value로 구성된다. 모든 key를 사용해 query의 내적을 계산하고 각각을 $ \sqrt{d_{k}} $로 나눈 다음 softmax function을 적용하여 값에 대한 가중치를 얻는다.
실제로, 본 논문에서는 행렬 Q로 함께 묶인 일련의 query에 대해 동시에 attention function을 계산한다. key와 value도 행렬 K와 V로 함께 묶는다. 출력 행렬을 다음과 같이 계산한다.
$ Attention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V $
가장 일반적으로 사용되는 2가지 attention function은 additive attention과 dot-product(multiplicative) attention이다. Dot-product attention은 스케일링 인수 $ \frac{1}{\sqrt{d_{k}}} $ 를 제외하고 본 논문의 알고리즘과 동일하다. Additive attention은 single hidden layer가 있는 feed-forward network를 사용해 호환성 함수를 계산한다. 이 2가지 이론의 complexity는 유사하지만 Dot-product attention은 매우 최적화된 행렬 곱셈 코드를 사용해 구현할 수 있기 때문에 실제로 훨씬 더 빠르고 공간 효율적이다.
작은 $ d_{k} $ 값에 대해서는 두 메커니즘이 유사하게 수행되지만, 더 큰 $ d_{k} $ 값에 대해서는 Additive attention이 scaling이 없는 Dot-product attention보다 뛰어나다. 우리는 $ d_{k} $값이 크면 내적의 크기가 커지기 때문에 softmax function이 매우 작은 gradient를 갖는 영역으로 push한다고 의심합니다. 이 효과를 상쇄하기 위해 우리는 dot products를 $ \frac{1}{d_{k}} $으로 scale한다.
3.2.2 Multi-Head Attention
우리는 $ d_{model} $ 차원의 keys, values, queries를 사용해 single attention function을 수행하는 것 대신에, 각 $ d_{k} $, $ d_{k} $, $ d_{v} $ 차원에 대해 서로 다른 학습된 linear projection을 사용해 queries, keys, values를 $ h $번 선형으로 투영하는 것이 이득이라는 것을 발견했다. queries, keys, values의 각 projected version에 대해 attention function을 병렬로 수행해 $ d_{v} $ 차원의 출력 값을 생성한다. 이들은 연결되고 다시 한 번 투영되어 Figure 2에 설명된 대로 최종 값이 생성된다.
Multi-head attention은 모델이 서로 다른 위치에 있는 서로 다른 representation subspace으로부터 정보에 공동으로 attend 할 수 있다. Single attention head를 사용하면 평균화가 이를 억제한다.
$ MultiHead(Q, K, V) = Concat(head_{1}, ..., haed_{h})W^{O} $
$ where head_{i} = Attention(QW_{i}^{Q}, KW_{i}^{K}, VW_{i}^{V}) $
본 논문에서는 h = 8개의 parallel attention layers, 즉 head를 사용한다. 이들 각각에 대해 $ d_{k} = d_{v} = d_{model}/h = 64 $를 사용한다. 각 헤드의 차원이 줄어들기 때문에 총 계산 비용은 전체 차원을 갖춘 single head attention의 비용과 유사하다.
3.2.3 Applications of Attention in out Model
Transformer는 3사지 다른 방식으로 multi-head attention을 사용한다.
- "encoder-decoder attention" layer에서 query는 이전 decoder layer에서 나오고 memory key와 value는 encoder의 출력에서 나온다. 이를 통해 decoder의 모든 위치가 입력 시퀀스의 모든 위치에 attend할 수 있다.
- Encoder에는 self-attention layer가 포함되어 있다. self-attention layer에서는 모든 key, value, query가 동일한 위치(이 경우 encoder의 이전 레이어 출력)에서 나온다. encoder의 각 위치는 encoder의 이전 layer에 있는 모든 위치에 참여할 수 있다.
- 마찬가지로 decoder의 self-attention layer를 사용하면 decoder의 각 위치가 해당 위치까지 포함하는 decoder의 모든 위치에 attend할 수 있다. 자동 회귀 속성을 유지하려면 디코더에서 왼쪽 방향의 정보 흐름을 방지해야 한다. 우리는 illegal connection에 해당하는 softmax 입력의 모든 값을 masking out(무한으로 설정)하여 scaled dot-product attention 내부에서 이를 구현한다.
3.3 Position-wise Feed-Forward Networks
Attention sub-layer 외에도 encoder와 decoder의 각 layer에는 각 위치에 개별적으로 동일하게 적용되는 fully connected feed-forward network가 포함되어 있다. 이는 ReLU activation을 사이에 두고 2개의 linear transformation으로 구성된다.
$ FFN(x) = max(0, xW_{1} + b_{1})W_{2} + b_{2} $
linear transformation은 여러 위치에서 동일하지만 layer마다 다른 매개변수를 사용한다. 이를 설명하는 또 다른 방법은 커널 크기가 1인 개의 컨볼루션이다. 입력과 출력 차원은 $ d_{model} = 512 $ 이고 inner-layer의 차원은 $ d_{ff} = 2048 $이다.
3.4 Embeddings and Softmax
다른 시퀀스 변환 모델과 마찬가지로 learned embedding을 사용해 입력 토큰과 출력 토큰을 차원 $ d_{model} $의 벡터로 변환한다. 우리는 또한 일반적으로 learned linear transformation과 softmax function을 사용해 decoder 출력을 예측한 다음 토큰 확률로 변환한다. 우리 모델에서는 2개의 embedding layer와 pre-softmax linear transformation 간 동일한 가중치 행렬을 공유한다. embedding layer에서는 해당 가중치에 $ \sqrt{d_{model}} $을 곱한다.
3.5 Positional Encoding
우리 모델에서는 recurrence나 convolution이 없기 때문에 모델이 시퀀스의 순서를 결정하려면 시퀀스의 상대적 또는 절대 위치에 대한 정보를 주입해야 한다. 이를 위해 encoder 및 decoder stack의 하단에 있는 input embedding에 "positional encoding"을 추가한다. positional encoding은 embedding과 동일한 차원 $ d_{model} $을 가지므로 두 가지를 합칠 수 있다.
이 논문에서는 서로 다른 주파수의 sin 및 cos 함수를 사용한다.
$ PE_{(pos, 2i)} = sin(pos/10000^{2i/d_{model}}) $
$ PE_{(pos, 2i+1)} = cos(pos/10000^{2i/d_{model}}) $
여기서 pos는 위치이고 i는 차원이다. 즉, positional encoding의 각 차원은 정현파에 해당한다. 파장은 $ 2\pi $에서 $ 10000 \cdot 2\pi $까지 기하학적 진행을 progression을 형성한다.
4. Why Self-Attention
이 섹션에서는 self-attention을 RNN 및 CNN과 비교한다. self-attention을 사용하도록 동기를 부여하기 위해 우리는 세 가지 희망 사항을 고려합니다.
- layer 당 총 계산 복잡성
- 필요한 순차 작업의 최소 수로 측정되는 병렬화할 수 있는 계산량
- 네트워크의 장거리 종속성 간의 경로 길이
long range depenfency를 학습하는 것은 많은 sequence transduction task에서 중요한 과제다. 이러한 dependency를 학습하는 능력에 영향을 미치는 주요 요소 중 하나는 네트워크에서 forward 및 backward signal이 통과해야 하는 경로의 길이다. input과 output sequence의 위치 조합 사이의 경로가 짧을수록 long range dependency를 학습하기 더 쉽다. 따라서 우리는 서로 다른 layer 유형으로 구성된 network에서 두 input과 output position 사이의 최대 경로 길이를 비교한다.
Table 1에서 알 수 있듯이 self-attention layer는 순차적으로 실행되는 일정한 수의 작업으로 모든 위치를 연결하는 반면, recurrent layer에서는 $ O(n) $ 개의 순차적 작업이 필요하다. 계산 복잡성 측면에서, 시퀀스 길이 $ n $이 representation demensionality $ d $보다 작을 때 self-attention layer는 recurrent layer보다 빠르다. 매우 긴 시퀀스와 관련된 작업의 계산 성능을 향상시키기 위해 self-attention은 각 output position을 중심으로 한 입력 시퀀스에서 크기 r의 이웃만 고려하도록 제한될 수 있다. 이렇게 하면 최대 경로 길이가 $ O(n/r) $로 늘어난다.
커널 너비가 k < n인 single convolutional layer는 모든 input 및 output position 쌍을 연결하지 않는다. 그렇게 하려면 인접한 커널의 경우 $ O(n/k) $ convolutional layer stack이 필요하고, 확장된 convoltion의 경우 $ O(log_{k}(n)) $ 이 필요하며 두 위치 사이에 가장 긴 경로 길이를 늘린다. convolutional layer는 일반적으로 recurrent layer보다 k배 더 비싸다. 그러나 separable layer는 복잡성을 $ O(k \cdot n \cdot d + n \cdot d^{2}) $로 상당히 줄인다. 하지만 k=n인 경우에도 separable layer의 복잡성은 self-attention layer와 point-wise feed-forward layer의 조합과 동일하다.
5. Training
5.1 Training Data and Batching
본 논문에서는 약 450만 개의 문장쌍으로 구성된 표준 WMT 2014 영어-독일어 데이터 셋을 학습했다. 문장은 약 37,000개 토큰의 shared source-target vocabulary를 갖는 byte-pair encoding을 사용하여 인코딩되었다. 영어-프랑스어의 경우, 우리는 36M 문장과 분할 토큰으로 구성된 훨신 더 큰 WMT 2014 영어-프랑스어 데이터세트를 32,000갸의 단어 단위 어휘로 사용했다. 문장 쌍은 대략적인 시퀀스 길이에 따라 batch되었다. 각 training batch는 약 25,000개의 source token과 25,000개의 target token이 포함된 문장 쌍 세트가 포함되어 있다.
5.2 Optimizer
우리는 $ \beta_{1} = 0.9, \beta_{2} = 0.98, \varepsilon = 10^{-9} $인 Adam 최적화 프로그램을 사용했다. 우리는 다음 공식에 따라 Training 과정에서 learning rate를 다양하게 변경했다.
$ lrate = d_{model}^{-0.5} \cdot min(step\_num^{-0.5}, step\_num \cdot warmup\_steps^{-1.5}) $
이것은 첫 번째 Warmup_steps Training steps에 대해 learning rate를 선형적으로 증가시키고 이후 step 수의 역제곱근에 비례해 감소시키는 것에 해당한다. 우리는 Warmup_steps = 4000을 사용했다.
5.3 Regularization
Residual Dropout
본 논문에서는 sub-layer 입력에 추가되고 정규화되기 전에 각 sub-layer의 output에 드롭아웃을 적용한다. 또한 encoder와 decoder stack 모두에서 embedding와 positional encoding의 합에 dropout을 적용한다. 기본 모델의 경우 $ P_{drop} = 0.1 $의 비율을 사용했다.
Label Smoothing
Training 동안, 우리는 $ \epsilon_{ls} = 0.1 $의 label smoothing을 사용했다.
6. Results
6.1 Machine Translation
WMT 2014 영어-독일어 번역 작업에서 big transformer model은 28.4의 BLEU score를 달성하며 이전에 보고된 최고 성능의 모델보다 2.0 BLEU 이상을 능가한다. 심지어 base model도 이전에 발표된 모든 model 및 ensemble을 능가하며, 경쟁 model에 비해 training cost도 훨씬 저렴하다.
WMT 2014 영어-프랑스어 번역 작업에서 big transformer model은 이전에 발표된 모든 single model 보다 뛰어난 성능인 41.8의 BLEU score를 달성했으며, 학습 비용은 이전의 model들보다 1/4 수준이다.
base model의 경우 10분 간격으로 작성된 마지막 5개의 checkpoint를 평균해 얻은 single model을 사용했다. big model의 경우 마지막 20개의 checkpoint를 평균화했다. 본 논문에서는 beam size가 4이고 length penalty $ \alpha =0.6 $인 beam search를 사용했다.
6.2 Model Variations
Transformer의 다양한 구성 요소의 중요성을 평가하기 위해 base model을 다양하게 변경해 development set인 newstest2013의 영어-독일어 번역 성능 변화를 측정했다. 이전 섹션에서 설명한 대로 beam search를 사용했지만 checkpoint averaging은 사용하지 않았다. 이러한 결과를 Table 3에 제시한다.
Table 3의 (A)에서는 section 3.2.2에 설명된 대로 계산량을 일정하게 유지하면서 attention head 수와 attention key, value 차원을 변경한다. single head attention은 best setting보다 0.9 BLEU가 나쁘지만 head가 너무 많으면 quality 또한 떨어진다.
Table 3의 (B)에서는 attention key size $ d_{k} $를 줄이면 model quality가 저하된다는 것을 알 수 있다. (C)와 (D)에서는 예상대로 더 큰 모델이 더 좋고, dropout이 overfitting을 피하는 데 매우 유용하다는 것이 추가로 관찰되었다. (E)에서는 정현파 positional Encoding을 learned positional embedding으로 대체하고 base model과 거의 동일한 결과를 얻음을 관찰했다.
7. Conclusion
이 작업에서 본 논문은 encoder-decoder architecture에서 가장 일반적으로 사용되는 recurrent layer를 multi-headed self-attention으로 대체하는 전적으로 attention을 기반으로 하는 최초의 sequence transduction model인 Transformer를 제시했다.
translation task의 경우 Transformer는 recurrent 또는 convolutional layer를 기반으로 하는 architecture보다 훨씬 빠르게 학습될 수 있다. WMT 2014 English-to-German과 WMT 2014 English-to-French translation task 모두에서 우리는 새로운 최첨단 기술을 달성했고, 이전에 보고된 모든 ensemble보다 성능이 뛰어나다는 것을 확인했다.