Search
Duplicate

AI/ Paper/ Attention Is All You Need

Abstract

지배적인 시퀀스 변환 모델들은 encoder와 decoder를 포함하는 복잡한 recurrent 또는 convolutional neural network에 기반한다. 가장 좋은 성능 모델 또한 attention 메커니즘을 통해 encoder와 decoder를 연결한다. 우리는 recurrence와 convolution을 완전히 배제하고 attention mechanism에만 의존하는 새로운 간단한 네트워크 아키텍쳐인 Transformer를 제안한다. 2가지 기계 번역 작업에 대한 실험 결과, 이 모델은 품질 면에서 우수하면서 더 병렬화 가능하고 학습 시간을 상당히 단축한다. 우리의 모델은 WMT 2014 English-to-German 번역 task에서 28.4 BLEU를 달성하여 앙상블을 포함하여 기존 최고 결과를 2 BLEU 이상 개선한다. WMT 2014 English-to-French 번역 작업에서 우리의 모델은 8대 GPU에 대해 3.5일 동안 학습하여 41.8점의 새로운 단일 모델 최고 BLEU를 달성하는데, 이는 기존 문헌의 최고 모델의 학습 비용의 작은 부분에 불과하다. 우리는 Transformer를 대규모와 제한된 학습 데이터로 English 구문 분석에 성공적으로 적용함으로써 다른 작업에도 잘 일반화될 수 있음을 보인다.

1 Introduction

recurrent neural networks 특히, long short-term memory와 gated recurrent neural networks은 언어 모델링과 기계 번역 같은 시퀀스 모델링과 변환 문제에서 최첨단 접근법으로 확고히 설립되었다. 이후 수많은 노력이 recurrent 언어 모델과 encoder-decoder 아키텍쳐의 한계를 계속 확장해왔다.
Recurrent 모델은 일반적으로 입력과 출력 시퀀스의 심볼 position을 따라 계산을 인수분해한다. position을 계산 시간의 단계에 맞추어, 이전 hidden 상태 ht1h_{t-1}과 position tt의 입력을 함수로 hidden 상태 hth_t의 시퀀스를 생성한다. 이러한 본질적인 순차적 특성은 학습 예제 내에서 병렬화를 배제하데, 이는 메모리제약으로 인해 예제 간 배치가 제한되는 더 긴 시퀀스 길이에서 중요하다. 최근 작업은 factorization 트릭과 조건부 계산을 통해 계산적 효율성을 상당히 개선했으며, 후자의 경우에 모델 성능도 더 개선되었다. 그러나 순차적 계산의 근본적 제약은 여전히 남아 있다.
attention 메커니즘은 다양한 작업에서 강력한 시퀀스 모델링과 변환 모델의 필수적인 부분이 되어 입력이나 출력 시퀀스에서 거리에 대한 의존성을 모델링을 할 수 있게 했다. 그러나 몇몇 경우를 제외하고 이런 attention 메커니즘은 recurrent 네트워크와 연결되어 사용된다.
이 작업에서 우리는 recurrence를 회피하고 입력과 출력 사이의 global 의존성을 도출하기 위해 완전히 attention 메커니즘에만 의존하는 모델 아키텍쳐인 Transformer를 제안한다. Transformer는 더 병렬적이고 8대 P100 GPUs에서 12시간만 학습한 후에 번역 품질에서 새로운 최첨단에 도달한다.

2 Background

순차적 계산을 감소시키려는 목표는 또한 Extended Neural GPU, ByteNet, ConvS2S의 근간을 형성한다. 이들 모두는 convolutional neural network를 basic 빌딩 블록으로 사용하여 모든 입력과 출력 position에 대한 hidden representation을 병렬로 계산한다. 이러한 모델에서 두 개의 임의의 입력 또는 출력 position 간의 신호를 연관시키는데 필요한 연산의 수는 position 사이의 거리에 따라 증가되며, ConvS2S의 경우 선형적으로 ByteNet의 경우 log 적으로 증가한다. 이것은 멀리 떨어진 position 사이의 의존성을 학습하는 것을 더 어렵게 한다. Transformer에서는 이것은 상수 연산으로 축소하지만 평균 attention-weighted position 때문에 유효 해상도가 감소하는 비용이 발생한다. 이 효과는 섹션 3.2에서 설명하는 Multi-Head Attention을 사용하여 상쇄시킨다.
Self-attention, 때로 intra-attention이라고도 불리는 것은 단일 시퀀스의 서로 다른 position을 연관 시켜 시퀀스의 representation을 계산하는 attention 메커니즘이다. Self-Attention은 독해력, 추상적 요약, 텍스트 함의, 작업 독립적 문장 표현 학습 등 다양한 task에서 성공적으로 사용되었다.
End-to-end memory 네트워크는 sequence-aligned recurrence 대신 recurrent attention 메커니즘에 기반하여 간단한 언어 question answering과 언어 모델링 task에서 잘 수행된다.
그러나 우리가 아는 한 Transformer는 입력과 출력의 representation을 계산하기 위해 sequence-aligned RNN이나 convolution을 사용하지 않고 self-attention에만 의존하는 첫 번째 변환 모델이다. 이어지는 섹션에서는 Transformer와 self-attention의 동기를 설명하고 [17, 18]과 [19]와 같은 모델에 대한 이점을 논의한다.

3 Model Architecture

대부분 경쟁력 있는 neural sequence transduction 모델은 encoder-decoder 구조를 갖는다. 여기서 encoder는 심볼의 representation의 입력 시퀀스 (x1,...,xn)(x_1, ..., x_n)를 연속 representation의 시퀀스 z=(z1,...,zn)\bold{z} = (z_1, ..., z_n)로 매핑한다. z\bold{z}가 주어지면 decoder는 심볼의 시퀀스 (y1,...,ym)(y_1, ..., y_m)을 한 번에 하나씩 생성한다. 각 단계에서 모델은 auto-regressive이고 이전에 생성된 심볼을 입력으로 흡수하여 다음을 생성한다.
Transformer는 이러한 전반적인 아키텍쳐를 따르며 encoder와 decoder 모두에 대해 self-attention과 point-wise, fully-connected layer를 쌓는다. 이는 그림 1의 왼쪽과 오른쪽 절반에서 각각 보인다.

3.1 Encoder and Decoder Stacks

Encoder
encoder는 N=6N=6개 동일한 레이어의 stack으로 구성된다. 각 레이어는 2개의 sub-layer를 갖는다. 첫 번째는 multi-head self-attention 메커니즘이고, 두 번째는 단순한 position-wise fully connected feed-forward network이다. 우리는 두 sub-layer 각각에 residual connection과 layer normalization 을 추가한다. 즉 각 sub-layer의 출력은 LayerNorm(x+Sublayer(x))\text{LayerNorm}(x + \text{Sublayer}(x))이다. 여기서 Sublayer(x)\text{Sublayer}(x)는 sub-layer 자체가 구현하는 함수이다. 이 residual connection을 용이하게 하기 위해 모델의 모든 sub-layer 뿐만 아니라 embedding layer는 dmodel=512d_\text{model} = 512 차원의 출력을 생성한다.
Decoder
decoder 또한 N=6N=6개의 동일한 layer의 stack이다. 각 encoder layer에서 2개 sub-layer에 더해 decoder는 encoder stack의 출력에 대해 multi-head attention을 수행하는 3번째 sub-layer를 추가한다. encoder와 유사하게 우리는 각 sub-layer에 residual connection과 layer normalization을 수행한다. 우리는 또한 decoder stack에서 self-attention sub-layer를 수정하여 position이 후속 position에 attending 하는 것을 방지한다. 이러한 masking은 output embedding은 1 position offset되어 있다는 사실과 결합하여 position ii에 대한 예측이 ii 보다 작은 position의 알려진 출력에만 의존하는 것을 보장한다.

3.2 Attention

attention 함수는 query와 key-value pair의 집합을 출력에 매핑하는 것으로 설명할 수 있다. 여기서 query, keys, values와 output은 모두 벡터이다. output은 values의 weighted sum으로 계산되며, 각 value에 할당되는 가중치는 해당하는 query와 key의 호환가능한 함수에 의해 계산된다.

3.2.1 Scaled Dot-Product Attention

우리는 우리의 특별한 attention을 ‘Scaled Dot-Product Attention’(그림 2)라 부른다. 입력은 dkd_k차원의 queries와 keys와 dvd_v차원의 values로 구성된다. 우리는 query와 모든 keys의 dot product를 계산하고 각각 dk\sqrt{d_k}로 나눈 다음 softmax 함수를 적용하여 values에 대한 가중치를 얻는다.
실제로 우리는 queries를 동시에 처리하기 위해 행렬 QQ로 묶어서 attention 함수를 계산한다. keys와 values 또한 행렬 KKVV로 묶는다. 우리는 출력의 행렬을 다음처럼 계산한다.
Attention(Q,K,V)=softmax(QKTdk)V(1)\text{Attention}(Q, K, V) = \text{softmax}\left({QK^T \over \sqrt{d_k}} \right)V \tag{1}
두 가지 가장 일반적으로 사용되는 attention 함수는 additive attention과 dot-product(multiplicative) attention이다. dot-product attention은 스케일링 factor 1dk{1\over \sqrt{d_k}}를 제외하면 우리의 알고리즘과 동일하다. additive attention은 단일 hidden layer 갖는 feed-forward network를 사용하여 호환성 함수를 계산한다. 이론적 복잡성은 둘 다 유사하지만 실제로는 dot-product attention이 고도로 최적화된 행렬 곱 코드를 사용하여 구현될 수 있기 때문에 훨씬 빠르고 공간 효율적이다.
dkd_k의 값이 작을 때는 두 메커니즘의 성능이 유사하지만 dkd_k의 값이 커질수록 additive attention이 scaling 없는 dot product attention의 성능을 능가한다. 우리는 dkd_k의 값이 클 때, dot product가 크기가 커져 softmax 함수를 gradient가 극도로 작은 영역으로 밀어 넣는다고 의심한다. 이 효과를 상쇄하기 위해 위해 우리는 dot product를 1dk{1\over \sqrt{d_k}}로 스케일링한다.

3.2.2 Multi-Head Attention

dmodeld_\text{model}-차원의 keys, values와 queries로 단일 attention 함수를 수행하는 대신, queries, keys와 values를 각각 dk,dkd_k, d_kdvd_v차원으로 hh번 다르게 학습된 선형 투영을 하는 것이 낫다는 것을 발견했다. 이렇게 투영된 queries, keys, values의 각 버전에 대해 attention 함수를 병렬로 수행하여 dvd_v-차원 출력 값을 산출한다. 이것들을 concatenated하고 다시 한 번 투영하여 최종 values를 얻는다. 그림 2 참조
Multi-head attention은 모델이 서로 다른 position에서 다른 representation 부분공간의 정보에 jointly attention할 수 있게 한다. 단일 attention head에서는 평균화가 이것을 억제한다.
MultiHead(Q,K,V)=Concat(head1,...,headh)WO(headi=Attention(QWiQ,KWiK,VWiV))\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1,...,\text{head}_h)W^O \\ (\text{head}_i = \text{Attention}(QW_i^Q,KW_i^K,VW_i^V))
여기서 투영은 파라미터 행렬 WiQRdmodel×dk,WiKRdmodel×dk,WiVRdmodel×dvW_i^Q \in \mathbb{R}^{d_\text{model}\times d_k}, W_i^K \in \mathbb{R}^{d_\text{model}\times d_k}, W_i^V \in \mathbb{R}^{d_\text{model}\times d_v}WORdhv×dmodelW^O \in \mathbb{R}^{dh_v\times d_\text{model}}이다.
이 연구에서 우리는 h=8h=8개의 병렬 attention layer이나 head를 사용한다. 각각에 대해 dk=dv=dmodel/h=64d_k =d_v = d_\text{model}/h = 64를 사용한다. 각 head의 차원이 축소되어 전체 계산 비용은 전체 차원을 갖는 single-head attention과 유사하다.

3.2.3 Applications of Attention in our Model

Transformer는 multi-head attention을 3가지 다른 방법으로 사용한다.
‘encoder-decoder attention’ 레이어에서 queries는 이전 decoder 레이어에서 오고 memory keys와 values는 encoder의 출력에서 온다. 이를 통해 decoder의 모든 position이 입력 시퀀스의서 모든 position에 attention 할 수 있다. 이것은 [38, 2, 9]와 같은 sequence-to-sequence 모델에서 일반적인 encoder-decoder attention 메커니즘을 모방한다.
encoder는 self-attention 레이어를 포함한다. self-attention 레이어에서는 모든 keys, values, queries가 동일한 장소에서 온다. 이 경우에서는 encoder의 이전 레이어의 출력이다. encoder의 각 position은 encoder의 이전 레이어의 모든 position에 대해 attention할 수 있다.
유사하게 decoder의 self-attention layer는 decoder의 각 position이 해당 위치까지의 decoder의 모든 position에 attention 할 수 있게 한다. 우리는 auto-regressive 속성을 보존하기 위해 decoder에서 왼쪽으로 정보가 흐르는 것을 막아야 한다. 우리는 scaled dot-product attention의 내부에서 불법 연결에 해당하는 softmax의 입력의 모든 값을 masking out(-\infty로 설정)하여 이것을 구현한다.

3.3 Position-wise Feed-Forward Networks

attention sub-layer 외에도 우리의 encoder와 decoder의 각 레이어는 fully-connected feed-forward network를 포함한다. 이것은 각 position에 별도로 그리고 동일하게 적용된다. 이것은 두 선형변환 사이의 ReLU 활성화로 구성된다.
FFN(x)=max(0,xW1+b1)W2+b2(2)\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 \tag{2}
선형 변환이 서로 다른 positions에서 동일하지만, 레이어마다 다른 파라미터를 사용한다. 이것을 kernel 크기 1의 2개의 convolution으로 설명할 수 있다. 입력과 출력의 차원은 dmodel=512d_\text{model} = 512이고, 내부 레이어는 dff=2048d_\text{ff} = 2048이다.

3.4 Embeddings and Softmax

다른 시퀀스 변환 모델과 유사하게 우리는 학습된 embedding을 사용하여 입력 토큰과 출력 토큰을 dmodeld_\text{model} 차원의 벡터로 변환한다. 우리는 또한 일반적인 학습된 선형 변환과 softmax 함수를 사용하여 decoder 출력을 다음 토큰 예측 확률로 변환한다. 우리 모델에서 [30]과 유사하게 두 embedding 레이어와 pre-softmax 선형 변환 사이에 동일한 가중치 행렬을 공유한다. 이러한 가중치에 dmodel\sqrt{d_\text{model}}를 곱한다.

3.5 Positional Encoding

우리의 모델이 recurrence와 convolution을 포함하지 않기 때문에, 모델이 시퀀스의 순서를 활용하도록 만들기 위해, 시퀀스 내 토큰들의 상대적 또는 절대적 position에 관한 정보를 주입해야 한다. 이를 위해 encoder와 decoder stack의 하단에서 입력 임베딩에 ‘positional encoding’를 추가한다. positional encoding은 임베딩과 동일한 차원 dmodeld_\text{model}을 가지며 이를 합산할 수 있다. positional encoding에는 학습되되는 것과 고정되는 것 등 많은 선택이 존재한다. 이 연구에서 우리는 서로 다른 주파수의 sine과 cosine 함수를 사용한다.
PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)\begin{aligned} PE_{(pos,2i)} &= \sin(pos/10000^{2i/d_\text{model}}) \\ PE_{(pos,2i+1)} &= \cos(pos/10000^{2i/d_\text{model}}) \end{aligned}
여기서 pospos는 position이고 ii는 차원이다. 즉 positional encoding의 각 차원은 sinusoid에 해당하며 파장은 2π2\pi에서 100002π10000 \cdot 2\pi까지의 기하급수를 형성한다. 우리는 이 함수를 선택했는데, 이는 임의의 고정된 offset kk에 대해 PEpos+kPE_{pos+k}PEposPE_{pos}의 선형 함수로 표현될 수 있기 때문에, 모델이 상대적 position에 쉽게 attend 할 수 있을 것이라고 가정했기 때문이다.
우리는 또한 학습된 positional embedding을 사용하는 실험도 했으며, 두 버전이 비슷한 결과를 내는 것을 발견했다(Table 3). 우리는 sinusoidal 버전을 선택했는데, 이것이 모델이 학습 중 마주한 시퀀스 길이 보다 더 긴 길이로 외삽할 수 있게 해줄 수 있기 때문이다.

4 Why Self-Attention

이 섹션에서 우리는 self-attention layer의 다양한 측면을 일반적으로 사용되는 recurrent와 convolutional layer와 비교한다. 이들은 하나의 가변 길이 심볼 표현의 시퀀스 (x1,...,xn)(x_1, ..., x_n)를 또 다른 동일한 길이의 시퀀스 (z1,...,zn)(z_1, ..., z_n)로 매핑 하는데 사용된다. 여기서 xi,ziRdx_i, z_i \in \mathbb{R}^d. 이는 일반적인 시퀀스 변환 encoder나 decoder에서 hidden layer와 같다. 우리의 self-attention의 사용의 동기를 설명하기 위해 3가지 요구사항을 고려한다.
첫 번째는 레이어 당 총 계산 복잡도이다. 두 번째는 병렬화 가능한 계산량으로 필요한 최소 시퀀셜 연산 수로 측정된다.
세 번째는 네트워크에서 long-range 의존성 사이의 경로 길이이다. long-range 의존성 학습은 많은 시퀀스 변환 task에서 핵심 도전이다. 이러한 의존성을 학습하는 능력에 영향을 미치는 주요 요인 중 하나는 네트워크에서 forward와 backward 신호가 통과해야 하는 경로의 길이이다. 입력과 출력 시퀀스의 모든 position 사이의 결합 사이의 경로가 짧을수록 long-range 의존선을 학습하기가 더 쉽다. 따라서 우리는 서로 다른 레이어 유형으로 구성된 네트워크에서 임의의 두 입력과 출력 position 사이의 최대 경로 길이도 비교한다.
Table 1에서 언급한 것처럼 self-attention 레이어는 일정한 수의 순차적 연산으로 모든 position을 연결하는 반면 recurrent layer는 O(n)O(n)의 순차적 연산을 요구한다. 계산 복잡성 측면에서 self-attention 레이어는 시퀀스 길이 nn이 representation 차원 dd 보다 더 작을 때, recurrent 레이어보다 빠르다. 이는 최첨단 기계 번역 모델에서 사용되는 문장 representation(단어 조각과 byte 쌍 representation)에서 대부분의 경우에 해당한다. 매우 긴 시퀀스를 포함하는 task에서 계산 성능을 개선하기 위해 self-attention은 입력 시퀀스에서 각 출력 position을 중심으로 한 크기 rr의 이웃만 고려하도록 제한할 수 있다. 이렇게 하면 최대 경로 길이를 O(n/r)O(n/r)로 증가시킬 수 있다. 우리는 앞으로 이러한 접근을 더 조사할 예정이다.
kernel width k<nk < n의 단일 convolutional layer는 입력과 출력 position의 모든 쌍을 연결하지 않는다. 이것은 contiguous 커널의 경우 O(n/k)O(n/k) convolutional layer의 stack이 필요하며, dilated convolution의 경우에서 O(logk(n))O(\log_k(n))가 필요하다. 이는 네트워크에서 임의의 두 position 사이의 가장 긴 경로 길이를 증가시킨다. 일반적으로 convolutional 레이어는 recurrent 레이어보다 kk배 더 비싸다. 그러나 separable convolution은 복잡성을 O(knd+nd2)O(k \cdot n \cdot d + n \cdot d^2)로 상당히 감소시킨다. 그러나 k=nk=n인 경우 separable convolution의 복잡성은 self-attention 레이어와 point-wise feed-forward 레이어의 결합과 동일하다. 우리의 모델에서 채택한 접근 방법이다.
추가적으로 self-attention은 더 해석가능한 모델을 산출할 수 있다. 우리는 우리의 모델에서 attention 분포를 검사하고 부록에서 예시를 제시하고 논의한다. 개별 attention head들이 분명히 다른 task를 수행하도록 학습되었을 뿐만 아니라, 많은 head들이 문장의 구문과 의미 구조와 관련된 동작을 나타내는 것으로 나타났다.

5 Training

이 섹션에서 우리 모델의 학습 방식을 설명한다.

5.1 Training Data and Batching

우리는 약 4.5M 문장 쌍으로 구성된 standard WMT 2014 English-German dataset에서 학습했다. 문장은 약 37000 토큰으로 구성된 source-target 공유된 어휘를 가지며 byte-pair encoding으로 인코딩되었다. English-French의 경우 36M 문장으로 구성된 훨씬 더 큰 WMT 2014 English-French 데이터셋을 사용하며, 이를 32000 단어 조각 어휘로 분할했다. 문장 쌍은 시퀀스 길이를 근사하여 함께 batch 된다. 각 학습 배치는 약 25000 source 토큰과 25000 target 토크을 포함하는 문장 쌍의 집합을 포함한다.

5.2 Hardware and Schedule

우리는 8대 NVIDIA P100 GPUs을 사용하는 한 대의 머신에서 우리 모델을 학습했다. 이 논문에서 설명한 하이퍼파라미터를 사용하는 base 모델의 경우, 각 학습 단계는 약 0.4초 걸린다. 우리는 base 모델을 총 100,000 단계 또는 12시간 동안 학습했다. 우리의 대형 모델(Table 3의 하단에 설명된)은 단계 당 시간이 1.0초이고, 300,000 단계 동안 학습되었다(3.5일).

5.3 Optimizer

우리는 Adam optimizer를 β1=0.9,β2=0.98,ϵ=109\beta_1 = 0.9, \beta_2 = 0.98, \epsilon = 10^{-9}로 사용했다. 우리는 학습의 단계에서 다음 공식을 따라 learning rate를 변화시켰다.
lrate=dmodel0.5min(step num0.5,step numwarmup steps1.5)(3)\text{lrate} = d_\text{model}^{-0.5} \cdot \min(\text{step num}^{-0.5},\text{step num} \cdot \text{warmup steps}^{-1.5}) \tag{3}
이것은 첫 warmup_step 학습 단계 동안 learning rate를 선형적으로 증가시키고, 그 후에 step number의 역 제곱근에 비례하여 감소시킨다. 우리는 warmup steps=4000\text{warmup steps} = 4000을 사용했다.

5.4 Regularization

우리는 학습하는 동인 regularization의 3가지 유형을 활용한다.
Residual Dropout
우리는 각 sub-layer의 출력에 dropout을 적용한 후 sub-layer 입력에 더하고 normalized 전에 적용했다. 또한 encoder와 decoder stack 모두에서 embedding과 positional encoding의 합에도 dropout을 적용한다. base 모델의 경우 Pdrop=0.1P_\text{drop} = 0.1을 사용한다.
Label Smoothing
학습하는 동안 우리는 ϵls=0.1\epsilon_\text{ls} = 0.1의 label smoothing을 사용한다. 이것은 모델을 더 불확실하게 하여 perplexity에 해를 미치지만 정확도와 BELU score를 개선한다.

6 Results

6.1 Machine Translation

WMT 2014 English-to-German 번역 작업에서 대형 transformer model(Table 2에서 Transformer (big))은 기존에 리포트된 최고 모델(앙상블을 포함하여)을 2.0 이상 BLEU로 능가하고 28.4 BLEU로 최첨단 점수를 수립한다. 이 모델의 설정은 Table 3의 하단에 나와 있다. 학습은 8대 P100 GPU로 3.5일간 했다. base 모델 조차 이전 공개된 모든 모델과 앙상블을 능가하고 경쟁력 있는 모델에 비해 학습 비용이 훨씬 적다.
WMT 2014 English-to-French 번역 작업에서 우리의 대형 모델은 41.0의 BLEU score를 달성하고 기존의 공개된 모든 단일 모델을 능가하며 이전의 최첨단 모델의 1/4 학습 비용이었다. English-to-French에 대해 학습된 Transformer (big) 모델은 0.30.3 대신 Pdrop=0.1P_\text{drop} = 0.1을 사용한다.
base 모델의 경우 10분 간격으로 저장된 마지막 5개 checkpoint를 평균화하여 단일 모델을 얻었다. 대형 모델의 경우 마지막 20개 checkpoint를 평균화했다. 우리는 beam 크기 44와 길이 패널티 α=0.6\alpha=0.6을 사용하여 beam search를 사용한다. 이러한 하이퍼파라미터는 development set에서 실험을 통해 선택되었다. 추론하는 동안 출력의 최대 길이를 입력 길이의 +50+50으로 설정하지만 가능한 경우 조기에 종료한다.
Table 2는 우리의 결과를 요약하고 문헌의 다른 모델 아키텍쳐와 번역 품질과 학습 비용을 비교한다. 우리는 학습 시간, 사용된 GPU 수, GPU의 지속적인 단일-정밀도 floating-point 능력을 곱하여 모델을 학습하는데 사용된 floating point 연산의 수를 추정했다.

6.2 Model Variations

Transformer의 다양한 컴포넌트의 중요성을 평가하기 위해, 우리는 base 모델을 다양한 방법으로 변경하여 development set newstest2013에서 English-to-German 번역에서 성능 변화를 측정한다. 이전에서 설명된 beam search를 사용하지만 checkpoint averaging 하지 않는다. 우리는 이 결과를 Table 3에 제시한다.
Table 3 행(A)에서 섹션 3.2.2에서 설명된 대로 계산의 양을 일정하게 유지하면서 attention head 수와 attention key와 value 차원를 변경한다. 단일 head attention은 최고 설정보다 0.9 BLEU 낮으며, 너무 많은 head도 품질을 drop 한다.
Table 3 행(B)에서 우리는 attention key 크기 dkd_k를 축소하는 것이 모델 품질을 해치는 것을 관찰한다. 이것은 호환성을 결정하는 것이 쉽지 않고 dot product 보다 더 정교한 호환성 함수가 유용할 수 있음을 시사한다. 추가로 (C)와 (D) 행에서 기대했던대로 더 큰 모델이 더 우수하고 dropout이 과적합을 피하는데 매우 도움이 된다는 것을 관찰한다. (E) 행에서 sinusoidal positional encoding을 학습된 positional embedding으로 교체했지만 base 모델과 거의 동일한 결과를 관찰한다.

6.3 English Constituency Parsing

Transformer가 다른 task에 일반화할 수 있는지를 평가하기 위해 우리는 English constituency parsing 실험을 수행한다. 이 task는 특정한 도전을 나타낸다. 출력은 강력한 구조적 제약을 받으며, 입력 보다 훨씬 더 길 수 있다. 또한 RNN sequence-to-sequence 모델은 작은 데이터 방식에서 최첨단 결과를 얻지 못했다.
우리는 Penn Treebank의 Wall Street Journal(WSJ) portion에서 약 40K 학습 문장을 사용하여 dmodel=1024d_\text{model} = 1024인 4개 layer transformer를 학습한다. 또한 약 17M 문장으로 구성된 고 신뢰도 및 BerkleyParser corpora를 사용하는 semi-supervised 설정에서도 학습했다. WSJ 전용 설정에서는 16K 토큰의 어휘를 사용하고 semi-supervised 설정에서는 32K 토큰의 어휘를 사용한다.
우리는 섹션 22 development set에서 dropout(attention과 residual 모두), learning rate와 beam size를 선택하기 위해 소수의 실험을 수행했으며, 모든 다른 파라미터는 English-to-German base 번역 모델과 동일하게 유지된다. 추론시 우리는 최대 출력 길이를 입력 길이 +300으로 증가시키고, WSJ와 semi-supervseid 설정 모두에서 모두 21의 beam size와 α=0.3\alpha = 0.3을 사용한다.
우리 결과는 Table 4 참조. task-specific 조정이 부족함에도 우리의 모델은 놀랍게도 잘 수행되고 Recurrent Neural Network Grammar를 제외한 모드 이전에 리포트된 모델 보다 더 나은 결과를 산출한다.
RNN sequence-to-sequence 모델과 달리 Transformer는 40K 문장으로 구성된 WSJ 학습 셋에서만 학습할 때도 Berkeley-Parse를 능가한다.

7 Conclusion

이 연구에서 우리는 Transformer를 제시한다. 이것은 완전히 attention에만 기반한 첫 번째 시퀀스 변환 모델로, encoder-decoder 아키텍쳐에서 가장 일반적으로 사용되는 recurrent 레이어를 multi-headed self-attention으로 대체 했다.
번역 작업에서 Transformer는 recurrent나 convolutional 레이어 기반 아키텍쳐보다 훨씬 빠르게 학습될 수 있다. WMT 2014 English-to-German과 WMT 2014 English-to-French 번역 작업 모두에서 우리는 최첨단 성능을 달성한다. 우리의 최상위 모델은 이전에 리포트된 모든 앙상블을 능가한다.
우리는 attention-based 모델의 미래에 관해 매우 기대하며, 이를 다른 작업에도 적용할 계획이다. Transformer를 텍스트 이외의 입력과 출력 모달리티를 포함한 문제로 확장하고, 이미지나 오디오, 비디오 같은 대규모 입력과 출력을 효율적으로 처리하기 위해 local이고 제한된 attention 메커니즘을 연구할 예정이다. 또한 생성 과정을 덜 순차적으로 만드는 것도 우리의 연구 목표이다.
우리 모델을 학습하고 평가하는데 사용된 코드는 git에서 접근 가능하다.
tensor2tensor
tensorflow