Attention Is All You Need: 순환과 합성곱을 넘어선 Transformer 모델

Transformer는 복잡한 recurrent나 convolutional neural network 대신 오직 attention 메커니즘에만 기반한 새로운 네트워크 아키텍처입니다. 이 모델은 recurrence와 convolutions를 완전히 제거하여 병렬 처리를 극대화하고 훈련 시간을 크게 단축시켰으며, 기계 번역 작업에서 최고의 성능을 달성했습니다. Transformer는 encoder와 decoder 구조를 사용하며, multi-head self-attention을 통해 입력과 출력 시퀀스 간의 global dependency를 효과적으로 학습합니다. 논문 제목: Attention Is All You Need

Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).

Attention Is All You Need

Ashish Vaswani*<br>Google Brain<br>avaswani@google.com

Noam Shazeer*<br>Google Brain<br>noam@google.com

Niki Parmar*<br>Google Research<br>nikip@google.com

Jakob Uszkoreit*<br>Google Research<br>usz@google.com

Llion Jones*<br>Google Research<br>llion@google.com

Aidan N. Gomez* \boldsymbol{\dagger}<br>University of Toronto<br>aidan@cs.toronto.edu

Łukasz Kaiser*<br>Google Brain<br>lukaszkaiser@google.com

Illia Polosukhin* { }^{\ddagger}<br>illia.polosukhin@gmail.com

Abstract

주요 sequence transduction 모델들은 encoder와 decoder를 포함하는 복잡한 recurrent 또는 convolutional neural network에 기반한다. 최고의 성능을 보이는 모델들은 encoder와 decoder를 attention mechanism을 통해 연결하기도 한다. 우리는 recurrence와 convolution을 완전히 배제하고 오직 attention mechanism만으로 구성된 새로운 단순한 network architecture인 Transformer를 제안한다. 두 개의 machine translation task에서 실험한 결과, 이 모델들은 더 높은 품질을 보이면서도 병렬화가 더 용이하고 학습에 필요한 시간이 크게 줄어드는 것으로 나타났다. 우리 모델은 WMT 2014 English-to-German translation task에서 28.4 BLEU를 달성하였으며, 이는 기존 최고 성능(ensemble 포함)보다 2 BLEU 이상 개선된 수치이다. WMT 2014 English-to-French translation task에서는 8개의 GPU로 3.5일간 학습한 후, 단일 모델(single-model) 기준 새로운 state-of-the-art BLEU score인 41.8을 기록하였으며, 이는 기존 문헌의 최고 모델 학습 비용의 일부만으로 달성한 성과이다. 우리는 Transformer가 대규모 및 제한된 training data 모두에서 English constituency parsing에 성공적으로 적용됨을 보여주어, Transformer가 다른 task에도 잘 일반화됨을 입증한다.

1 Introduction

Recurrent Neural Network (RNN)는 특히 Long Short-Term Memory (LSTM) [13]와 Gated Recurrent Unit (GRU) [7]와 같은 모델들이 언어 모델링 및 기계 번역 [35, 2, 5]과 같은 시퀀스 모델링 및 변환(transduction) 문제에서 state-of-the-art 접근 방식으로 확고히 자리매김해왔다. 이후에도 수많은 연구들이 recurrent language model 및 encoder-decoder 아키텍처의 한계를 확장하기 위해 지속적으로 노력해왔다 [38, 24, 15].

Recurrent model은 일반적으로 입력 및 출력 시퀀스의 **심볼 위치(symbol position)를 따라 연산을 분해(factor)**한다. 이들은 계산 시간의 단계에 위치를 정렬하여, 이전 hidden state ht1h_{t-1}와 현재 위치 tt의 입력에 대한 함수로 hidden state 시퀀스 hth_t를 생성한다. 이러한 본질적인 순차적 특성학습 예시 내에서의 병렬화(parallelization)를 불가능하게 한다. 이는 더 긴 시퀀스 길이에서 치명적인 문제가 되는데, 메모리 제약으로 인해 예시 간의 배칭(batching)이 제한되기 때문이다. 최근 연구에서는 factorization tricks [21] 및 conditional computation [32]을 통해 계산 효율성을 크게 향상시켰으며, 후자의 경우 모델 성능도 개선되었다. 그러나 순차적 연산이라는 근본적인 제약은 여전히 남아있다.

Attention mechanism은 다양한 task에서 매력적인 시퀀스 모델링 및 변환 모델의 필수적인 부분이 되었으며, 입력 또는 출력 시퀀스 내에서의 거리에 관계없이 의존성을 모델링할 수 있게 해준다 [2, 19]. 그러나 몇몇 예외 [27]를 제외하고는, 이러한 attention mechanism은 recurrent network와 함께 사용된다. 본 연구에서는 Transformer를 제안한다. Transformer는 재귀(recurrence)를 배제하고, 대신 입력과 출력 간의 전역적인 의존성(global dependencies)을 파악하기 위해 전적으로 attention mechanism에 의존하는 모델 아키텍처이다. Transformer는 훨씬 더 많은 병렬화를 허용하며, 8개의 P100 GPU에서 단 12시간만 학습해도 번역 품질에서 새로운 state of the art에 도달할 수 있다.

2 Background

순차적 연산을 줄이는 목표는 Extended Neural GPU [16], ByteNet [18], 그리고 ConvS2S [9]의 기반이 되며, 이들 모두 convolutional neural networks를 기본 구성 요소로 사용하여 모든 입력과 출력 위치에 대해 hidden representation을 병렬로 계산한다. 이러한 모델에서는 두 임의의 입력 또는 출력 위치의 신호를 연관시키기 위해 필요한 연산 수가 위치 간 거리에 따라 증가하는데, ConvS2S의 경우 선형적으로, ByteNet의 경우 로그(logarithmic)적으로 증가한다. 이로 인해 먼 위치 간의 dependency를 학습하는 것이 더 어려워진다 [12]. Transformer에서는 이러한 연산 수가 상수(constant) 수준으로 줄어드나, attention-weighted 위치를 평균화함에 따라 효과적인 resolution이 줄어드는 비용이 발생한다. 우리는 이를 3.2절에서 설명하는 Multi-Head Attention을 통해 보완한다.

Self-attention(때로는 intra-attention이라고도 함)은 하나의 sequence 내의 서로 다른 위치를 연결하여 그 sequence의 representation을 계산하는 attention mechanism이다. Self-attention은 reading comprehension, abstractive summarization, textual entailment, 그리고 task-independent sentence representation 학습 [4, 27, 28, 22] 등 다양한 작업에서 성공적으로 사용되어왔다.

End-to-end memory networks는 sequence-aligned recurrence 대신 recurrent attention mechanism을 기반으로 하며, 단순한 언어의 question answering과 language modeling 작업에서 좋은 성능을 보여주었다 [34]. 그러나 우리가 아는 한, Transformer는 sequence-aligned RNN이나 convolution을 사용하지 않고, 오직 self-attention만으로 입력과 출력의 representation을 계산하는 최초의 transduction model이다. 다음 절에서는 Transformer를 설명하고, self-attention을 도입한 동기를 제시하며, [17, 18] 및 [9]와 같은 모델에 비해 가지는 장점을 논의할 것이다.

3 Model Architecture

대부분의 경쟁력 있는 신경 시퀀스 변환(neural sequence transduction) 모델은 encoder-decoder 구조를 가진다 [5, 2, 35]. 이 구조에서 encoder는 입력 시퀀스 심볼 표현(x1,,xnx_1, \ldots, x_n)을 연속적인 표현 z=(z1,,zn)\mathbf{z}=(z_1, \ldots, z_n)의 시퀀스로 매핑한다. decoderz\mathbf{z}가 주어졌을 때, 한 번에 하나의 요소를 생성하며 출력 시퀀스(y1,,ymy_1, \ldots, y_m)를 생성한다. 각 단계에서 모델은 auto-regressive하게 동작하며 [10], 다음 심볼을 생성할 때 이전에 생성된 심볼들을 추가 입력으로 사용한다.

Figure 1: The Transformer - 모델 아키텍처.

Transformer는 Figure 1의 왼쪽과 오른쪽에 각각 나타난 encoder와 decoder 모두에 stacked self-attention과 point-wise fully connected layer를 사용하여 이러한 전체 아키텍처를 따른다.

3.1 Encoder and Decoder Stacks

Encoder: Encoder는 6개의 동일한 layer 스택으로 구성된다. 각 layer는 두 개의 sub-layer를 가진다. 첫 번째는 multi-head self-attention 메커니즘이고, 두 번째는 간단한 position-wise fully connected feed-forward network이다. 우리는 두 sub-layer 각각에 residual connection [11]을 적용하고, 이어서 layer normalization [1]을 수행한다. 즉, 각 sub-layer의 출력은 LayerNorm (x+Sublayer(x))(x+\operatorname{Sublayer}(x))이며, 여기서 Sublayer (x)(x)는 sub-layer 자체에 의해 구현된 함수이다. 이러한 residual connection을 용이하게 하기 위해, 모델의 모든 sub-layer와 embedding layer는 dmodel =512d_{\text {model }}=512 차원의 출력을 생성한다.

Decoder: Decoder 또한 6개의 동일한 layer 스택으로 구성된다. 각 encoder layer의 두 sub-layer 외에도, decoder는 세 번째 sub-layer를 추가하는데, 이는 encoder 스택의 출력에 대해 multi-head attention을 수행한다. encoder와 유사하게, 우리는 각 sub-layer에 residual connection을 적용하고, 이어서 layer normalization을 수행한다. 또한, decoder 스택의 self-attention sub-layer를 수정하여 현재 위치가 이후 위치를 참조하지 못하도록(attend to subsequent positions) 마스킹한다. 이 마스킹은 출력 embedding이 한 위치만큼 오프셋(offset)된다는 사실과 결합되어, 위치 ii에 대한 예측이 ii보다 작은 위치의 알려진 출력에만 의존하도록 보장한다.

3.2 Attention

Attention 함수는 querykey-value 쌍의 집합출력으로 매핑하는 것으로 설명할 수 있으며, 여기서 query, key, value, 출력은 모두 벡터이다. 출력은 **가중합(weighted sum)**으로 계산된다.

Figure 2: (왼쪽) Scaled Dot-Product Attention. (오른쪽) Multi-Head Attention은 여러 개의 attention layer가 병렬로 실행되는 것으로 구성된다.

이때 각 value에 할당되는 가중치는 **query와 해당 key 간의 호환성 함수(compatibility function)**에 의해 계산된다.

3.2.1 Scaled Dot-Product Attention

우리는 우리가 제안하는 특정 attention을 "Scaled Dot-Product Attention"이라고 부른다 (Figure 2). 입력은 차원 dkd_k의 query와 key, 그리고 차원 dvd_v의 value로 구성된다. 우리는 query와 모든 key의 dot product를 계산하고, 각각을 dk\sqrt{d_k}로 나눈 다음, softmax 함수를 적용하여 value에 대한 가중치를 얻는다.

실제로는, 우리는 여러 query를 동시에 묶어 행렬 QQ로 만든 상태에서 attention 함수를 계산한다. key와 value 또한 각각 행렬 KKVV로 묶인다. 출력 행렬은 다음과 같이 계산된다:

Attention(Q,K,V)=softmax(QKTdk)V\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V

가장 일반적으로 사용되는 두 가지 attention 함수는 additive attention [2]과 dot-product (multiplicative) attention이다. Dot-product attention은 스케일링 인자 1dk\frac{1}{\sqrt{d_k}}를 제외하면 우리의 알고리즘과 동일하다. Additive attention은 단일 hidden layer를 가진 feed-forward network를 사용하여 호환성 함수를 계산한다. 이론적인 복잡도 면에서는 두 방식이 유사하지만, dot-product attention은 고도로 최적화된 행렬 곱셈 코드를 사용하여 구현할 수 있기 때문에 실제로는 훨씬 빠르고 공간 효율적이다.

dkd_k 값이 작을 때는 두 메커니즘이 유사한 성능을 보이지만, dkd_k 값이 커질수록 additive attention이 스케일링 없는 dot-product attention보다 우수한 성능을 보인다 [3]. 우리는 dkd_k 값이 클 때 dot product의 크기가 매우 커져, softmax 함수가 기울기가 극히 작은 영역으로 밀려나는 것으로 추정한다. 이러한 효과를 상쇄하기 위해 우리는 dot product를 1dk\frac{1}{\sqrt{d_k}}로 스케일링한다.

3.2.2 Multi-Head Attention

dmodeld_{\text {model}}-차원의 key, value, query를 사용하여 단일 attention 함수를 수행하는 대신, 우리는 query, key, value를 각각 dk,dk,dvd_k, d_k, d_v 차원으로 hh번 다르게 학습된 선형 투영(linear projection)을 통해 선형적으로 투영하는 것이 유익하다는 것을 발견했다.
각각의 투영된 query, key, value에 대해 attention 함수를 병렬로 수행하여 dvd_v-차원의 출력값을 얻는다. 이 값들은 연결(concatenate)된 후 다시 한번 투영되어 최종 값이 된다. 이는 Figure 2에 묘사되어 있다.

Multi-head attention은 모델이 서로 다른 표현 부분 공간(representation subspace)의 정보에 대해 다른 위치에서 동시에 attend할 수 있도록 한다. 단일 attention head로는 평균화(averaging)로 인해 이러한 기능이 저해된다.

MultiHead(Q,K,V)=Concat(head1,,headh)WO where headi=Attention(QWiQ,KWiK,VWiV)\begin{aligned} \operatorname{MultiHead}(Q, K, V) & =\operatorname{Concat}\left(\operatorname{head}_{1}, \ldots, \operatorname{head}_{\mathrm{h}}\right) W^{O} \\ \text { where } \operatorname{head}_{i} & =\operatorname{Attention}\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right) \end{aligned}

여기서 투영(projection)은 파라미터 행렬 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}}WORhdv×dmodel W^{O} \in \mathbb{R}^{h d_{v} \times d_{\text {model }}}이다.

본 연구에서는 h=8h=8개의 병렬 attention layer, 즉 head를 사용한다. 각 head에 대해 우리는 dk=dv=dmodel/h=64d_k=d_v=d_{\text{model}}/h=64를 사용한다. 각 head의 차원이 감소되었기 때문에, 총 연산 비용은 전체 차원을 사용하는 단일 head attention과 유사하다.

3.2.3 Applications of Attention in our Model

Transformer는 multi-head attention을 세 가지 다른 방식으로 사용한다:

  • "encoder-decoder attention" layer에서는 query가 이전 decoder layer에서 오고, memory key와 value는 encoder의 출력에서 온다. 이를 통해 decoder의 모든 위치가 입력 시퀀스의 모든 위치에 attend할 수 있다. 이는 [38, 2, 9]와 같은 sequence-to-sequence 모델의 일반적인 encoder-decoder attention 메커니즘을 모방한다.
  • encoderself-attention layer를 포함한다. self-attention layer에서는 모든 key, value, query가 동일한 곳에서 오는데, 이 경우 encoder의 이전 layer의 출력에서 온다. encoder의 각 위치는 encoder의 이전 layer의 모든 위치에 attend할 수 있다.
  • 마찬가지로, decoder의 self-attention layer는 decoder의 각 위치가 해당 위치를 포함하여 decoder의 모든 위치에 attend할 수 있도록 한다. auto-regressive 속성을 유지하기 위해 decoder에서 왼쪽 방향으로의 정보 흐름을 방지해야 한다. 우리는 이를 scaled dot-product attention 내부에서 불법적인 연결에 해당하는 softmax 입력의 모든 값을 마스킹( -\infty로 설정)함으로써 구현한다. Figure 2를 참조하라.

3.3 Position-wise Feed-Forward Networks

attention sub-layer 외에도, 우리의 encoderdecoder의 각 layer는 완전히 연결된 feed-forward network를 포함하며, 이는 각 위치에 대해 독립적이고 동일하게 적용된다. 이 네트워크는 ReLU 활성화 함수를 사이에 둔 두 개의 선형 변환으로 구성된다.

FFN(x)=max(0,xW1+b1)W2+b2\operatorname{FFN}(x)=\max \left(0, x W_{1}+b_{1}\right) W_{2}+b_{2}

선형 변환은 서로 다른 위치에 걸쳐 동일하지만, layer마다 다른 파라미터를 사용한다. 이를 설명하는 또 다른 방법은 커널 크기가 1인 두 개의 convolution으로 볼 수 있다. 입력 및 출력의 차원은 dmodel =512d_{\text {model }}=512이며, 내부 layer의 차원은 dff=2048d_{f f}=2048이다.

3.4 Embeddings and Softmax

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

Table 1: 다양한 layer 유형에 대한 최대 경로 길이, layer당 복잡도 및 최소 순차 연산 수. nn은 시퀀스 길이, dd는 표현 차원, kk는 convolution의 kernel 크기, rr은 restricted self-attention의 이웃 크기이다.

Layer TypeComplexity per LayerSequential OperationsMaximum Path Length
Self-AttentionO(n2d)O\left(n^{2} \cdot d\right)O(1)O(1)O(1)O(1)
RecurrentO(nd2)O\left(n \cdot d^{2}\right)O(n)O(n)O(n)O(n)
ConvolutionalO(knd2)O\left(k \cdot n \cdot d^{2}\right)O(1)O(1)O(logk(n))O\left(\log _{k}(n)\right)
Self-Attention (restricted)O(rnd)O(r \cdot n \cdot d)O(1)O(1)O(n/r)O(n / r)

3.5 Positional Encoding

우리 모델은 recurrence와 convolution을 포함하지 않기 때문에, 시퀀스의 순서를 활용하려면 시퀀스 내 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입해야 한다. 이를 위해, 우리는 encoder와 decoder 스택의 맨 아래에서 입력 embedding에 “positional encoding”을 더한다. Positional encoding은 embedding과 동일한 차원 dmodeld_{\text{model}}을 가지므로 두 값을 합할 수 있다. Positional encoding에는 학습된 방식과 고정된 방식 등 여러 가지 선택지가 있다 [9].

본 연구에서는 서로 다른 주파수의 sine과 cosine 함수를 사용하였다:

PE(pos,2i)=sin(pos/100002i/dmodel) PE(pos,2i+1)=cos(pos/100002i/dmodel)\begin{aligned} P E_{(pos, 2i)} & = \sin \left( pos / 10000^{2i / d_{\text{model}}} \right) \ P E_{(pos, 2i+1)} & = \cos \left( pos / 10000^{2i / d_{\text{model}}} \right) \end{aligned}

여기서 pospos는 위치, ii는 차원을 나타낸다. 즉, positional encoding의 각 차원은 하나의 사인파에 대응한다. 파장의 길이는 2π2\pi에서 100002π10000 \cdot 2\pi까지 기하급수적으로 증가한다. 우리는 이 함수를 선택한 이유가, 어떤 고정된 오프셋 kk에 대해 PEpos+kPE_{\text{pos}+k}PEposPE_{\text{pos}}의 선형 함수로 표현할 수 있으므로 모델이 상대적 위치에 따라 쉽게 attention을 학습할 수 있을 것이라고 가정했기 때문이다.

또한, 우리는 학습된 positional embedding [9]을 사용하는 실험도 진행했으며, 두 버전이 거의 동일한 결과를 내는 것을 확인했다 (Table 3의 (E) 행 참조). 우리는 학습 시 보지 못한 더 긴 시퀀스 길이로의 extrapolation이 가능할 수 있다는 이유로 sinusoidal 버전을 선택했다.

4 Why Self-Attention

이 섹션에서는 self-attention layer의 다양한 측면을, 가변 길이의 심볼 표현 시퀀스 (x1,,xn)\left(x_{1}, \ldots, x_{n}\right)를 동일한 길이의 다른 시퀀스 (z1,,zn)\left(z_{1}, \ldots, z_{n}\right)로 매핑하는 데 일반적으로 사용되는 recurrent layer 및 convolutional layer와 비교한다. 여기서 xi,ziRdx_{i}, z_{i} \in \mathbb{R}^{d}는 일반적인 sequence transduction encoder 또는 decoder의 hidden layer와 같은 역할을 한다. Self-attention 사용의 동기를 부여하기 위해 세 가지 바람직한 특성을 고려한다.

첫째는 layer당 총 연산 복잡도이다. 둘째는 병렬화될 수 있는 연산의 양으로, 이는 필요한 최소 순차 연산 수로 측정된다. 셋째는 네트워크 내 장거리 의존성(long-range dependencies) 간의 경로 길이이다. 장거리 의존성을 학습하는 것은 많은 sequence transduction task에서 핵심적인 도전 과제이다. 이러한 의존성을 학습하는 능력에 영향을 미치는 주요 요인 중 하나는 네트워크에서 순방향 및 역방향 신호가 통과해야 하는 경로의 길이이다. 입력 및 출력 시퀀스의 어떤 위치 조합 간에도 이러한 경로가 짧을수록 장거리 의존성을 학습하기 쉽다 [12]. 따라서 우리는 서로 다른 layer 유형으로 구성된 네트워크에서 임의의 두 입력 및 출력 위치 간의 최대 경로 길이도 비교한다.

Table 1에서 언급했듯이, self-attention layer는 모든 위치를 일정한 수의 순차적으로 실행되는 연산으로 연결하는 반면, recurrent layer는 O(n)O(n)의 순차 연산이 필요하다. 연산 복잡도 측면에서, self-attention layer는 시퀀스 길이 nn이 표현 차원 dd보다 작을 때 recurrent layer보다 빠르다. 이는 word-piece [38] 및 byte-pair [31] 표현과 같이 기계 번역 분야의 state-of-the-art 모델에서 사용되는 문장 표현의 경우에 가장 흔하게 해당된다. 매우 긴 시퀀스를 포함하는 task의 연산 성능을 향상시키기 위해, self-attention은 해당 출력 위치를 중심으로 하는 입력 시퀀스 내의 크기 rr의 인접 영역만을 고려하도록 제한될 수 있다. 이 경우 최대 경로 길이는 O(n/r)O(n / r)로 증가할 것이다. 우리는 향후 연구에서 이 접근 방식을 더 자세히 조사할 계획이다.

커널 너비 k<nk<n인 단일 convolutional layer는 모든 입력 및 출력 위치 쌍을 연결하지 않는다. 이를 위해서는 연속적인 커널의 경우 O(n/k)O(n / k)개의 convolutional layer 스택이 필요하며, dilated convolution [18]의 경우 O(logk(n))O\left(\log _{k}(n)\right)개의 스택이 필요하여 네트워크 내 임의의 두 위치 간의 가장 긴 경로 길이가 증가한다. Convolutional layer는 일반적으로 recurrent layer보다 kk배 더 비싸다. 그러나 separable convolution [6]은 복잡도를 O(knd+nd2)O\left(k \cdot n \cdot d+n \cdot d^{2}\right)로 상당히 감소시킨다. 하지만 k=nk=n인 경우에도 separable convolution의 복잡도는 self-attention layer와 point-wise feed-forward layer의 조합과 동일하며, 이는 우리 모델에서 채택한 접근 방식이다. 부가적인 이점으로, self-attention은 더 해석 가능한 모델을 제공할 수 있다. 우리는 모델의 attention 분포를 검사하고 부록에서 예시를 제시하고 논의한다. 개별 attention head는 명확하게 다른 task를 수행하도록 학습될 뿐만 아니라, 많은 head가 문장의 구문적(syntactic) 및 의미적(semantic) 구조와 관련된 동작을 보이는 것으로 나타났다.

5 Training

이 섹션에서는 우리 모델의 **학습 방식(training regime)**에 대해 설명한다.

5.1 Training Data and Batching

우리는 약 450만 개의 문장 쌍으로 구성된 표준 WMT 2014 English-German 데이터셋으로 학습을 진행했다. 문장은 **byte-pair encoding [3]**을 사용하여 인코딩되었으며, 이는 약 37,000개의 토큰으로 이루어진 공유 source-target vocabulary를 가진다. English-French의 경우, 우리는 훨씬 더 큰 WMT 2014 English-French 데이터셋을 사용했는데, 이는 3,600만 개의 문장으로 구성되어 있으며, 토큰은 32,000개의 **word-piece vocabulary [38]**로 분할되었다. 문장 쌍은 대략적인 시퀀스 길이에 따라 배치로 묶였다. 각 학습 배치는 약 25,000개의 source 토큰과 25,000개의 target 토큰을 포함하는 문장 쌍들로 구성되었다.

5.2 Hardware and Schedule

우리는 8개의 NVIDIA P100 GPU가 장착된 한 대의 머신에서 모델을 학습시켰다. 본 논문에서 설명된 하이퍼파라미터를 사용한 기본 모델(base model)의 경우, 각 학습 단계는 약 0.4초가 소요되었다. 기본 모델은 총 100,000단계(약 12시간) 동안 학습되었다. 대형 모델(big model)(Table 3의 맨 아래 줄에 설명됨)의 경우, 단계당 학습 시간은 1.0초였다. 대형 모델은 300,000단계(약 3.5일) 동안 학습되었다.

5.3 Optimizer

우리는 β1=0.9,β2=0.98,ϵ=109\beta_{1}=0.9, \beta_{2}=0.98, \epsilon=10^{-9}를 사용하는 **Adam optimizer [20]**를 사용하였다. 학습률은 학습 과정 동안 다음 공식에 따라 변화시켰다:

\text { lrate }=d_{\text {model }}^{-0.5} \cdot \min \left(\text { step_num }^{-0.5}, \text { step_num } \cdot \text { warmup_steps }^{-1.5}\right)

이는 첫 warmup_steps 동안 학습률을 선형적으로 증가시키고, 그 이후에는 step_num의 역제곱근에 비례하여 감소시키는 방식에 해당한다. 우리는 warmup_steps를 4000으로 설정하였다.

5.4 Regularization

우리는 학습 중에 세 가지 유형의 **정규화(regularization)**를 사용한다:

Table 2: Transformer는 이전 state-of-the-art 모델들보다 훨씬 적은 학습 비용으로 English-to-German 및 English-to-French newstest2014 테스트에서 더 나은 BLEU 점수를 달성한다.

ModelBLEUTraining Cost (FLOPs)
EN-DEEN-FREN-DEEN-FR
ByteNet [18]23.75
Deep-Att + PosUnk [39]39.21.010201.0 \cdot 10^{20}
GNMT + RL [38]24.639.922.310192.3 \cdot 10^{19}1.410201.4 \cdot 10^{20}
ConvS2S [9]25.1640.469.610189.6 \cdot 10^{18}1.510201.5 \cdot 10^{20}
MoE [32]26.0340.562.010192.0 \cdot 10^{19}1.210201.2 \cdot 10^{20}
Deep-Att + PosUnk Ensemble [39]40.48.010208.0 \cdot 10^{20}
GNMT + RL Ensemble [38]26.3041.161.810201.8 \cdot 10^{20}1.110211.1 \cdot 10^{21}
ConvS2S Ensemble [9]26.3641.297.710197.7 \cdot 10^{19}1.210211.2 \cdot 10^{21}
Transformer (base model)27.338.13.31018\mathbf{3 . 3} \cdot \mathbf{10}^{\mathbf{1 8}}
Transformer (big)28.441.82.310192.3 \cdot 10^{19}

Residual Dropout
우리는 각 sub-layer의 출력에 대해 dropout [33]을 적용하며, 이는 해당 출력이 sub-layer 입력에 더해지고 정규화되기 전에 이루어진다. 또한, encoder와 decoder 스택 모두에서 embedding과 positional encoding의 합에도 dropout을 적용한다. base model의 경우, Pdrop =0.1P_{\text {drop }}=0.1의 비율을 사용한다.

Label Smoothing
학습 중에 우리는 ϵls=0.1\epsilon_{l s}=0.1 값의 label smoothing [36]을 사용했다. 이는 모델이 더 불확실하게 학습되므로 perplexity를 저해하지만, 정확도와 BLEU 점수를 향상시킨다.

6 Results

6.1 Machine Translation

WMT 2014 영어-독일어 번역 task에서, **대형 Transformer 모델 (Table 2의 Transformer (big))**은 기존에 보고된 최고 성능 모델들(앙상블 포함)을 2.0 BLEU 이상 능가하여, 28.4의 새로운 state-of-the-art BLEU 점수를 달성했다. 이 모델의 구성은 Table 3의 마지막 줄에 명시되어 있다. 학습에는 8개의 P100 GPU로 3.5일이 소요되었다. 심지어 우리의 기본 모델(base model)조차도 기존에 발표된 모든 모델과 앙상블을 능가하며, 경쟁 모델들의 학습 비용의 일부만으로도 이러한 성과를 이루었다.

WMT 2014 영어-프랑스어 번역 task에서, 우리의 대형 모델은 41.0의 BLEU 점수를 달성하여, 기존에 발표된 모든 단일 모델들을 능가했으며, 이는 이전 state-of-the-art 모델의 학습 비용의 1/4 미만으로 달성된 결과이다. 영어-프랑스어 학습에 사용된 Transformer (big) 모델은 **dropout rate Pdrop =0.1P_{\text {drop }}=0.1**을 사용했으며, 이는 0.3 대신 적용된 값이다.

**기본 모델(base model)**의 경우, 10분 간격으로 저장된 마지막 5개 checkpoint를 평균하여 얻은 단일 모델을 사용했다. **대형 모델(big model)**의 경우, 마지막 20개 checkpoint를 평균했다. 우리는 beam size 4와 length penalty α=0.6\alpha=0.6 [38]을 사용하여 beam search를 수행했다. 이러한 하이퍼파라미터는 개발 세트(development set)에 대한 실험을 통해 선택되었다. 추론 시 최대 출력 길이는 입력 길이 +50으로 설정했지만, 가능한 경우 조기에 종료되도록 했다 [38].

Table 2는 우리의 결과를 요약하고, 우리의 번역 품질 및 학습 비용을 문헌의 다른 모델 아키텍처와 비교한다. 우리는 모델 학습에 사용된 부동 소수점 연산(floating point operations)의 수학습 시간, 사용된 GPU 수, 그리고 각 GPU의 지속적인 단정밀도 부동 소수점 용량 추정치를 곱하여 계산했다.

6.2 Model Variations

Transformer의 다양한 구성 요소의 중요성을 평가하기 위해, 우리는 기본 모델을 여러 방식으로 변경하고, English-to-German 번역 task에서 newstest2013 개발 세트에 대한 성능 변화를 측정하였다. 우리는 이전 섹션에서 설명한 대로 beam search를 사용했지만, 체크포인트 평균화(checkpoint averaging)는 사용하지 않았다. 이러한 결과는 Table 3에 제시되어 있다.

Table 3의 (A) 행에서는 Section 3.2.2에서 설명한 대로, 연산량을 일정하게 유지하면서 attention head의 수와 attention key 및 value의 차원을 변경하였다. 단일 head attention은 최적 설정보다 BLEU 점수가 0.9 낮았으며, head 수가 너무 많아도 품질이 저하되는 것을 확인했다.

Table 3의 (B) 행에서는 attention key 크기 dkd_k를 줄이면 모델 품질이 저하됨을 관찰했다. 이는 호환성(compatibility)을 결정하는 것이 쉽지 않으며, dot product보다 더 정교한 호환성 함수가 유용할 수 있음을 시사한다. (C) 및 (D) 행에서는 예상대로 모델이 클수록 성능이 좋고, dropout이 과적합(over-fitting)을 방지하는 데 매우 유용함을 추가로 관찰했다. (E) 행에서는 sinusoidal positional encoding을 학습된 positional embedding [9]으로 대체했으며, 기본 모델과 거의 동일한 결과를 얻었다.

[^2]Table 3: Transformer 아키텍처의 변형. 목록에 없는 값은 기본 모델과 동일하다. 모든 지표는 English-to-German 번역 개발 세트인 newstest2013에 대한 것이다. 제시된 PPL(Perplexity)은 우리의 byte-pair encoding에 따른 wordpiece당 값이며, 단어당 PPL과 비교해서는 안 된다.

NNdmodel d_{\text {model }}dff d_{\text {ff }}hhdkd_{k}dvd_{v}Pdrop P_{\text {drop }}ϵls\epsilon_{l s}train stepsPPL (dev)BLEU (dev)params ×106\times 10^{6}
base65122048864640.10.1100 K4.9225.865
(A)15125125.2924.9
41281285.0025.5
1632324.9125.8
3216165.0125.4
(B)165.1625.158
325.0125.460
(C)26.1123.736
45.1925.350
84.8825.580
25632325.7524.528
10241281284.6626.0168
10245.1225.453
40964.7526.290
(D)0.05.7724.6
0.24.9525.5
0.04.6725.3
0.25.4725.7
(E)positional embedding instead of sinusoids4.9225.7
big610244096160.3300 K4.3326.4213

6.3 English Constituency Parsing

Transformer가 다른 task에도 일반화될 수 있는지 평가하기 위해 우리는 영어 constituency parsing에 대한 실험을 수행했다. 이 task는 다음과 같은 특정한 도전 과제를 제시한다: 출력은 강력한 구조적 제약을 받으며, 입력보다 상당히 길다. 또한, RNN sequence-to-sequence 모델은 소량의 데이터 환경에서 state-of-the-art 결과를 달성하지 못했다 [37].

우리는 Penn Treebank [25]의 Wall Street Journal (WSJ) 부분에 대해 dmodel =1024d_{\text {model }}=10244-layer Transformer를 학습시켰다. 이 데이터셋은 약 4만 개의 학습 문장으로 구성되어 있다. 또한, 약 1,700만 개의 문장을 포함하는 더 큰 high-confidence 및 BerkleyParser 코퍼스를 사용하여 semi-supervised 설정으로도 학습시켰다 [37]. WSJ 단독 설정에서는 16K 토큰의 어휘집을 사용했고, semi-supervised 설정에서는 32K 토큰의 어휘집을 사용했다.

우리는 Section 22 개발 세트에서 dropout (attention 및 residual 모두, 섹션 5.4), 학습률, beam size를 선택하기 위해 소수의 실험만을 수행했으며, 다른 모든 파라미터는 영어-독일어 기본 번역 모델과 동일하게 유지했다. 추론 시에는 최대 출력 길이를 입력 길이 +300으로 늘렸다. WSJ 단독 설정과 semi-supervised 설정 모두에서 beam size는 21, α\alpha는 0.3을 사용했다.

Table 4: Transformer는 영어 constituency parsing에 잘 일반화된다 (결과는 WSJ Section 23 기준)

ParserTrainingWSJ 23 F1
Vinyals & Kaiser el al. (2014) [37]WSJ only, discriminative88.3
Petrov et al. (2006) [29]WSJ only, discriminative90.4
Zhu et al. (2013) [40]WSJ only, discriminative90.4
Dyer et al. (2016) [8]WSJ only, discriminative91.7
Transformer (4 layers)WSJ only, discriminative91.3
Zhu et al. (2013) [40]semi-supervised91.3
Huang & Harper (2009) [14]semi-supervised91.3
McClosky et al. (2006) [26]semi-supervised92.1
Vinyals & Kaiser el al. (2014) [37]semi-supervised92.1
Transformer (4 layers)semi-supervised92.7
Luong et al. (2015) [23]multi-task93.0
Dyer et al. (2016) [8]generative93.3

Table 4의 결과는 task-specific 튜닝이 부족했음에도 불구하고 우리 모델이 놀랍도록 좋은 성능을 보이며, Recurrent Neural Network Grammar [8]를 제외한 모든 이전에 보고된 모델보다 더 나은 결과를 산출했음을 보여준다.

RNN sequence-to-sequence 모델 [37]과 대조적으로, TransformerWSJ 학습 세트의 4만 개 문장만으로 학습했을 때도 BerkeleyParser [29]보다 우수한 성능을 보인다.

7 Conclusion

본 연구에서 우리는 Transformer를 제안하였다. Transformer는 전적으로 attention에 기반한 최초의 sequence transduction 모델로, encoder-decoder 아키텍처에서 가장 흔히 사용되던 recurrent layer를 multi-headed self-attention으로 대체하였다.

번역 task에서 Transformer는 recurrent 또는 convolutional layer 기반 아키텍처보다 훨씬 빠르게 학습될 수 있다. WMT 2014 영어-독일어 및 WMT 2014 영어-프랑스어 번역 task 모두에서 새로운 state of the art를 달성하였다. 특히 영어-독일어 task에서는 우리의 최고 모델이 이전에 보고된 모든 앙상블 모델보다도 뛰어난 성능을 보였다.

우리는 attention 기반 모델의 미래에 대해 기대가 크며, 이를 다른 task에도 적용할 계획이다. Transformer를 텍스트 외의 다른 입력 및 출력 modality(양식)를 포함하는 문제로 확장하고, 이미지, 오디오, 비디오와 같은 대규모 입력 및 출력을 효율적으로 처리하기 위한 지역적(local)이고 제한된 attention 메커니즘을 연구할 계획이다. 생성(generation) 과정을 덜 순차적으로 만드는 것 또한 우리의 연구 목표 중 하나이다. 모델 학습 및 평가에 사용된 코드는 https://github.com/tensorflow/tensor2tensor에서 확인할 수 있다.

감사의 글 유익한 의견, 수정 및 영감을 주신 Nal Kalchbrenner와 Stephan Gouws에게 감사드린다.

Attention Visualizations

Figure 3: encoder self-attention의 6개 layer 중 5번째 layer에서 장거리 의존성(long-distance dependencies)을 따르는 attention 메커니즘의 예시.
많은 attention head들이 동사 'making'의 먼 의존성에 집중하여 'making...more difficult' 구문을 완성한다. 여기서는 'making'이라는 단어에 대한 attention만 표시되었다. 다른 색상은 다른 head를 나타낸다. 컬러로 보는 것이 가장 좋다.

Figure 4: 역시 6개 layer 중 5번째 layer에 있는 두 개의 attention head로, 대명사 해소(anaphora resolution)와 관련되어 보인다.
상단: Head 5의 전체 attention.
하단: Attention head 5와 6에 대해 'its'라는 단어에서만 분리된 attention. 이 단어에 대한 attention이 매우 날카롭다는 점에 주목하라.

Figure 5: 많은 attention head들이 문장의 구조와 관련된 행동을 보인다.
위 그림은 encoder self-attention의 6개 layer 중 5번째 layer에 있는 두 개의 다른 head에서 가져온 두 가지 예시이다. 이 head들은 명확히 다른 task를 수행하도록 학습되었다.