Abstract
- 성능이 좋은 sequence 변환 모델은 Encoder와 Decoder를 포함하는 복잡한 RNN 혹은 CNN인데, 그 중 Encoder와 Decoder가 attention mechanism을 따르는 것이 가장 성능이 좋다.
- 해당 논문은 간단한 network architecture인 Transformer를 제안한다.
- Transformer는 recurrence와 convolution 완전히 배제하고, attention mechanism만을 활용한다.
- 실험은 두 가지 machine translation task에 대해 진행한다.
- 실험을 통해 Transformer의 성능이 우수하며, 더 병렬적이고 학습이 얼만큼 빨라지는지 보여준다.
- WMT 2014 영어 → 독일어 번역 task에서 앙상블 모델을 통해 기존 best result보다 2BLEU 높은 28.4 BLEU를 달성하였다.
- WMT 2014 영어 → 불어 번역 task에서 41.8 BLEU를 달성하며 새로운 single-model SOTA를 달성하였다.
- 8개의 GPU를 통해 3.5일 간 훈련하였는데, 이는 best model에 비해 매우 적은 cost임을 알 수 있다.
- 크고 제한된 학습 데이터를 가지는 English constituency parsing(영어 선거구 구문) 에 성공적으로 적용함으로써 Transformer의 일반화 성능이 뛰어남을 보여줬다.
1. Introduction
- RNN, LSTM, gated RNN은 sequence modeling과 transduction(변환) 문제에서 SOTA를 달성해왔고, 이후 수많은 노력으로 recurrent 언어 모델 영역과 encoder-decoder 구조의 경계를 넓혀가고 있다.
- Recurrent model
- input, output sequence의 symbol position 사이의 computation(연산량)을 고려하는데,
computation time(연산 시간) 안의 step에서 그 단어들을 연결하면서,
이전 hidden state h_t-1 과 sequence 내 단어의 위치 t 의 input의 함수로
hidden state h_t 를 산출한다.
- 이러한 순차적인 성질은 학습 데이터를 병렬화 할 수 없다는 본질적 한계가 존재한다.
- 이러한 한계는 long sequence 일 때, 메모리 제약으로 데이터 간 batching 이 제한되는 상황에서 문제가 발생한다.
- factorization tricks(인수 분해 트릭)과 conditional computation(조건부 연산)을 통해 계산 효율성을 향상 시켰으며, 조건부 연산의 경우에는 모델 성능을 향상 시켰지만, 여전히 한계는 존재한다.
- Attention mechanism
- 다양한 task에서 주목할만한 sequence modeling과 transduction 모델의 필수적인 부분이다.
- 그러나 이 또한 “recurrent network를 결합하여 사용한다”는 한계가 존재한다.
- Transformer는 recurrence를 피하고 attention mechanism에 전적으로 의존한다.
(Attention is All You Need 🙂)
- input과 output 사이에 global dependency(전역 의존도)를 도출하는 model architecture이다.
- 엄청난 병렬화가 가능하며, 8개의 P100 GPU로 12시간 정도 학습한 모델은 번역 성능 분야에서 SOTA를 달성할 수 있다.
2. Background
- Neural GPU, ByteNet, ConvS2S
- sequence의 연산량을 줄이기 위해 기초 block으로 CNN을 사용한 모델이다.
- 해당 block은 병렬적으로 놓인 모든 input과 output 단어들의 hidden representation을 계산한다.
- input과 output의 신호 연결을 위한 계산량은 input과 output 사이의 거리에 따라 증가한다. (ConvS2S는 선형적으로, ByteNet은 대수적(log)으로)
- 이러한 특성 때문에 input, output 간 의존도를 학습하는 것에 한계가 존재한다.
- Transformer에서는 이러한 특성이 계산량을 일정하게 줄여주지만,
attention-weighted position를 평균으로 계산하는 방법은
좋은 해상도를 줄이는 문제가 발생한다.
- 해당 논문에서 이러한 문제를 Multi-Head Attention으로 대응한다.
- Self-attention(intra-attention)
- sequence의 representation을 도출하기 위해 한 sequence의 여러 단어들을 연결하는 attention mechanism이다.
- 다양한 task(독해, 추상적 요약, textual entailment(문장 수반), task의 영향을 받지 않는 문장 표현)에서 성공적으로 사용되어 왔다.
- End-to-End memory network
- “순서가 정렬된 recurrence” 대신 recurrent attention mechanism을 기반으로 한다.
- 간단한 언어 질의 응답과 언어 모델링 task에서 좋은 성능을 보이고 있다.
- 다양한 관련 연구가 진행되어 왔지만, Transformer가
전적으로 self-attention만 사용하면서(순서가 정렬된 RNN이나 CNN을 사용 X),
input과 output의 representation을 계산하는 최고의 변환 모델이다.
3. Model Architecture

- 경쟁력 있는 sequence transduction(변환) 모델은 대부분 Encoder-Decoder 구조를 가지고 있다.
- Encoder는 symbol representation의 한 input sequence (x_1, …, x_n) 를
continuous(연속적인) representation의 한 sequence z (z_1, …, z_n) 에 mapping 한다.
- 이후 z 가 주어질 때, Decoder는 symbol들의 한 output sequence (y_1, …, y_n) 을 생성한다.
- 각 step에서 모델은 Auto-Regressive(AR) 방식으로,
이전에 생성된 symbol을 input으로 추가하여 다음 output을 생성한다.
- Transformer의 전체적인 구조는 Figure 1과 같다.
- 좌측 Encoder와 우측 Decoder에 모두 stacked(중첩) self-attention와 각 점마다 fully-connected layer를 사용한다.
3.1 Encoder and Decoder Stacks
- Encoder
- 동일한 layer가 6개가 쌓인 형태이다.
- 각 layer는 2개의 sub-layer를 가진다.
- 첫 번째 sub-layer는 multi-head self-attention 이고,
두 번째 sub-layer는 각 점마다 fully-connected 형태의 feed-forward network이다.
- 각 sub-layer는 residual connection(잔차 연결)을 사용하고, layer를 정규화한다.
- 해당 과정에 대한 output는 LayerNorm(x + Sublayer(x)) 로 표현되며,
이 때 Sublayer(x) 는 sub-layer 자기 자신에 의해 실행되는 함수이다.
- residual connection을 사용하기 위해 embedding layer의 output뿐만 아니라
모든 sub-layer들의 output을 512 차원으로 일치시킨다.
- Decoder
- 동일한 layer가 6개가 쌓인 형태이다.
- 각 layer는 3개의 sub-layer를 가진다.
- Encoder의 2가지 sub-layer와 Encoder stack의 output를 반영한 multi-head attention으로 구성된다.
- 각 sub-layer는 residual connection(잔차 연결)을 사용하고, layer를 정규화한다.
- Decoder stack에 있는 sub-layer의 self-attention에 masking을 추가한다.
- masking은 output 임베딩을 각 position마다 상쇄시켜 position들이 다음 position들에 영향을 주는 것을 막을 수 있다.
- position i 에 대한 예측이 i 이전 position의 결과만을 활용한 결과임을 보장한다.
3.2 Attention

- attention 함수는 하나의 query와 하나의 key-value 쌍을 output에 mapping하는 함수이며, query, key, value과 output 모두 vector 형태이다.
- output은 value에 대한 가중치 합으로 계산되는데, 가중치는 그 value에 해당하는 key를 포함한 query의 compatibility function(호환성 함수)에 의해 산출된다.
3.2.1 Scaled Dot-Product Attention
- Figure 2의 왼쪽이 Scaled Dot-Product Attention이다.

- Q : query 행렬
- K : key 행렬
- V : value 행렬
- d_k : key의 차원 수

- input은 query Q & d_k 차원에서의 key K & d_v 차원에서의 value V 로 구성된다.
- key와 query를 내적하고 key 차원 수의 제곱근으로 나눠준 값을 softmax를 통해 value에 대한 가중치로 만들어준다. 이를 해당 key와 쌍으로 존재하는 value에 곱한 값이 attention function의 ****값이 된다.
- 해당 과정에서 query, key, value를 각각 한 set 씩 합쳐서 matrix 형태로 동시에 계산한다.
- attention function은 일반적으로 두 가지를 사용한다.
- additive(합) attention
- 하나의 hidden layer와 함께 feed-forward network를 사용하여compatibility function를 계산한다.
- dot-product(내적) attention
- 위 수식에서 scaling을 위한 1/ √d_k 를 제외한 방식이다.
- 두 방식 모두 이론적인 복잡성은 유사하지만,
dot-product 방식이 최적화된 행렬 곱을 사용하기 때문에 더 빠르고, 공간효율적이다.
- 두 방식 모두 key 차원 수가 작을 때는 수행 능력이 유사하지만,
key 차원 수가 클 때, dot-product의 규모가 커지면서 softmax에서 급격히 작은 기울기를 보인다.
- 행렬곱을 사용하여 계산이 빠르고 효율적인 dot-product attention 방식에서 scaling을 위해 1/ √d_k 을 추가한 Scaled Dot-Product Attention 방식을 고안해냈다.
3.2.2 Multi-Head Attention
- QW_i^Q, KW_i^K, VW_i^V : query, key, value를 각각 선형적으로 project 하는 과정이다.
- head_i : 위 과정의 결과를 input으로 하여 Scaled Dot-Product Attention을 진행하는 것을 하나의 head로 묶어서 표현하고 이를 h번 반복한다.
- Concat(head_1, …, head_h)W_O : 위 과정의 결과를 병렬적으로 연결하고, 이를 선형 투영하여 output을 계산한다.

-
query, key, value의 차원 d_model 로 단일 attention function의 수행하는 것 보다
각각의 차원 (d_k(Q, K), d_v(V)) 에서 학습한 선형 투영을 h 만큼 반복하여
query, key, value를 선형적으로 투영하는 방법이 더 유용하다.
-
이후 query, key, value를 각각 투영하는 방법에서 attention function을 병렬적으로 수행하여 d_v 차원의 output value를 추출한다.
-
Figure 2를 보면 이러한 과정이 모두 연결되어있고, 다시 한 번 투영되어 최종 value를 만들어낸다.
-
Multi-Head Attention은 모델이 다른 단어에서 다른 representation subspace로부터 얻은 정보를 연결성 있게 처리하게 한다.
(단일 attention의 head에서 평균으로 계산하는 것이 이러한 처리를 방해한다.)
-
수식의 파라미터는 아래와 같다.
- Weight matrix 차원
WiQ∈Rdmodel×dk,WiK∈Rdmodel×dk,WiV∈Rdmodel×dv,WO∈Rhdv×dmodel
- 병렬적인 attention head의 개수 h = 8
- d_k = d_v = d_model / h = 64
- 각 head의 감소된 차원 때문에, 전체 연산 비용은 가득한 차원을 가진 단일 head-attention의 연산 비용과 비슷하다.
3.2.3 Applications of Attention in our Model
- Transformer의 multi-head attention 사용법이 3가지가 있다.
- “encoder-decoder attention” layer
- query는 이전 decoder layer로부터 생기고,
memory의 key와 value는 encoder의 output으로부터 생긴다.
- 이를 통해 decoder에서 모든 위치가 input sequence의 모든 위치를 반영할 수 있다.
- 이 방법은 sequence-to-sequence 모델에서 encoder-decoder mechanism을 반영하여 만든 방법이다.
- encoder에서 self-attention layer
- self-attention은 모든 query, key, value를 같은 공간으로부터 만든다. 이 경우에 encoder에서 이전 layer의 output이 만들어진다.
- encoder의 각 position은 encoder의 이전 layer에 있는 모든 position을 처리한다.
- decoder에서 self-attention layer
- encoder에서와 유사하게 decoder의 각 position이 그 position을 포함한 모든 position을 처리한다.
- decoder에서 Auto-Regressive(자동 회귀) 속성을 보존하기 위해
이전 time step으로 정보가 흐르는 것을 막아야 한다.
- softmax의 input 중 illegal(불법적인) 모든 연결은 −∞로 마스킹하여 scaled dot-product attention의 내부를 구현한다. (Figure 2 참고)
3.3 Position-wise Feed-Forward Networks
- attention sub-layer 뿐만 아니라 encoder와 decoder의 layer에 fully connected 형태의 feed-forward network를 포함하고 있다.
- feed-forward network는 각각의 position을 개별적으로 동일하게 적용한다.
- 이것은 활성화 함수 ReLU 두개의 선형 변환과 그 둘 사이의 ReLU 함수로 이루어져 있다.
FFN(x)=max(0,xW1+b1)W2+b2
- 선형 변환은 모든 position에서 동일하지만, layer마다 다른 parameter를 가진다. 이는 커널 크기가 1인 2개의 convolution으로 설명할 수 있다.
- input과 output의 차원 d_model 은 512이며, inner-layer d_f f 는 2048차원을 가진다.
3.4 Embeddings and Softmax
- sequence 변환 모델과 비슷하게, input token과 output token을
d_model 차원의 벡터로 변환하기 위해 학습된 임베딩을 사용한다.
- decoder output을 예측된 다음 token 확률로 변환하기 위해
일반적인 학습된 선형 변환과 softmax 함수를 사용한다.
- [Ofir Press and Lior Wolf., 2016]와 비슷하게, 2개의 embedding layer와
pre-softmax 선형 변환 사이에 같은 weight matrix를 공유한다.
- embedding layer에서는 weight에 √d_model 을 곱한다.
3.5 Positional Encoding
- RNN과 CNN을 사용하지 않으면서 sequence의 순서 정보를 이용하여 위해 positional encoding을 사용한다.
- positional encoding을 통해 sequence 내에서 token의 상대적이고 절대적인 정보를 입력한다.
- positional encoding은 encoder와 decoder 스택의 가장 아래 쪽에서 입력되는 임베딩에 더해준다. (Figure 1을 보면 input embedding과 output embedding 둘 다에 positional embedding이 더해짐을 알 수 있다.)
- 입력되는 임베딩과의 합을 위해 positional encoding의 차원 수는 d_model 로 구성한다.
- positional encoding은 다양한 방법들(학습을 하거나, 고정 값으로 사용하거나)이 존재하고, 이를 선택하여 사용한다.
- pos : position (sequence 내의 token의 위치)
- i : 차원
PE(pos,2i)=sin(pos/100002i/dmodel) PE(pos,2i+1)=cos(pos/100002i/dmodel)
- positional encoding의 각 차원은 sinusoid와 일치한다.
- 파장은 2π부터 10000 · 2π까지의 값을 형성한다.
- 고정된 offset k에 대하여 PE_pos+k 는 PE_pos의 선형 함수로 제시될 수 있기 때문에
모델이 상대적인 위치에 의해 처리하는 것이 쉽게 배울 수 있다고 가정을 세웠다.
- 아래 Table 3의 (E) 행은 sinusoid 대신 학습된 positional embedding을 사용하여 실험을 진행한 결과이다.

- 성능 측면에서는 거의 동일하지만, sinusoid한 모델이 학습에서 사용되는 sequence length보다 더 긴 길이를 extrapolate(추론하다)할 수 있기 때문에 sinusoid한 버전을 선택했다.
4. Why Self-Attention
- self-attention의 다양한 측면을 소개하고자 한다.
- 전형적인 sequence transduction(문장 변환) encoder나 decoder 에서의 hidden layer 같이 (x_1, x_2, ,,, , x_n) 을 (z_1, z_2, ,,, , z_n)에 mapping하기 위해 일반적으로 사용되는 방법인 RNN, CNN layer과 비교하여 설명한다. ( x_i, z_i ∈ d차원 )
- (x_1, x_2, ,,, , x_n) : symbol representation의 길이가 다양한 sequence
- (z_1, z_2, ,,, , z_n) : 동일한 길이의 다른 sequence
- 해당 논문에서 사용하는 self-attention은 3가지 desiderata(원하는 것들)을 고려하여 적용한다. 1) layer 마다 총 계산 복잡도 2) 병렬화가 가능한 계산량 (적어도 이 정도의 양은 연속으로 작업해야 한다는 양) 3) 네트워크 안에서 long-range dependency 사이의 경로 길이
- 문장 변환 분야에서 long-range dependency에 대한 학습이 중요한데,
- 이 학습은 네트워크에서 순방향 및 역방향 신호가 통과하는 경로의 길이가 중요한 요소이다.
- input, output sequence에서 단어 간 결합 사이의 경로가 짧다면 학습이 쉬워진다.
- 그러므로 우리는 다른 layer 형태로 구성된 네트워크에서
input, output 단어의 위치 간 최대 경로 거리를 비교한다.
- 아래 Table 1은 Layer 형태에 따른 layer 별 복잡도, Sequential Operations(연속 계산), 최대 경로 거리를 나타낸 표이다.

- self-attention layer은 모든 단어의 위치와 연결하기 위해 O(1)의 Sequential Operations(연속적인 계산)이 필요하다. 반면에, Recurrent 는 O(n)의 Sequential Operations이 필요하다.
- 계산 복잡도 측면에서 보면, self-attention은 recurrent layer 보다 빠르다. (sequence의 길이 n 이 representation의 차원 d 보다 작을 때)
- 성능 측면에서 보면, recurrent layer은 word-piece와 byte-pair 표현과 같이 기계 번역 분야에서 SOTA로 사용되는 문장 표현에서 가장 자주 사용된다.
- self-attention은 아래서 설명하는 제한을 통해 (self-attention(restricted)) 최대 경로 길이를 O(n/r)로 증가시켰다.
- 각각의 output token의 위치를 중심으로 하는 input 문장에서
size r 의 주변 단어 만을 고려하는 것으로 제한한다.
- 이 제한을 통해 매우 긴 문장이 포함된 task의 계산 능력을 향상 시킨다.
- 우리는 향후 연구에서 해당 접근 방법을 더 연구할 계획이다.
- kernel 너비 k 가 sequence의 길이 n 보다 작은 단일 convolution layer는
input과 output token의 위치의 모든 짝을 연결할 수 없다.
- 연결하려면,
contiguous kernel(연속 커널)의 경우, O(n/k) convolution layer의 stack이 필요하고,
dilated convolution(확장 컨볼루션)의 경우, O(log_k(n)) convolution layer가 필요하며,
네트워크 내 임의의 두 token의 위치 사이의 최대 경로 길이는 증가한다.
- 일반적으로 convolution layer는 k 때문에 recurrent layer보다 비싸지만,
분리가능한 convolution layer는 O(k · n · d + n · d^2)로 복잡도가 대폭 감소된다.
- 그러나 분리가능한 convolution layer에서 k=n이더라도
해당 논문에서 사용한 방식(self-attention layer + point-wise feed-forward layer)의 복잡도와 같다.
- 추가적으로, self-attention은 더 이해 가능한 모델을 만들 수 있다는 이점이 있다.
- 해당 논문에서 제시한 모델로부터 attention distribution(분포)를 연구하였고, 예시들을 제시하였다.
- 각각의 attention head들이 서로 다른 task를 수행하는 것을
분명히 학습할 뿐만 아니라,
많은 사람들이 문장의 구문적이고 의미적인 구조와 관련된 행동을 보이는 것으로 보인다.
5. Training
5.1 Training Data and Batching
- 4.5M 개의 문장 쌍으로 이루어진 standard WMT 2014 영어→독일어 데이터셋을 사용한다.
- 문장은 공유된 source-target 37,000 개의 token을 가지는 byte-pair encoding 기법을 통해 인코딩 되었다.
- 영어 → 불어의 경우, 상당히 더 큰 WMT 2014 영어→불어 데이터셋(36M 개의 문장 쌍, 32,000 word-piece 단어)을 사용하였다.
- 문장 쌍은 문장 길이의 근사치에 의해 함께 배치되는데, 각 훈련 배치는 대략 25,000개 source token과 25,000개의 target token으로 이루어진 문장 쌍을 포함했다.
5.2 Hardware and Schedule
- 8개의 NVIDIA P100 GPUs를 탑재한 하나의 기계로 모델을 학습하였다.
- base model 학습
- 해당 논문에서 제시하는 hyper parameter를 사용한다.
- 한 step 당 0.4초, 총 12시간(100,000 steps)이 소요되었다.
- big model 학습
- 한 step 당 1초, 총 3.5일(300,000 steps)이 소요되었다.
5.3 Optimizer
- optimizer로 Adam을 사용한다.
- β1 = 0.9, β2 = 0.98, ϵ = 10^-9
- learning rate는 아래와 같은 수식을 통해 산출한다.
5.4 Regularization
- 아래 3가지의 규제를 사용한다.
- Residual Dropout (P_drop = 0.1)
- sub-layer의 Add&Normalized 전에 dropout을 적용하고,
각 sub-layer의 결과에 dropout을 적용한다.
- encoder와 decoder stack에서 embedding의 합과 positional encoding에 드롭아웃을 적용한다.
- Label Smoothing
- 학습 동안 ϵ_ls = 0.1 의 label smoothing을 적용한다.
- 모델이 더 정확하지 않은 정보를 배움으로써 perplexity 는 낮아질 수 있지만,
정확도와 BLEU score는 향상된다.
6. Results
6.1 Machine Translation
- Table 2는 결과를 요약하고, 번역 성능과 학습 비용을 다른 모델과 비교하는 표이다.
- the number of floating point operations used to train a model 추정 방법
- 훈련 시간, 사용된 GPU 개수, 각 GPU의 일관된 단일-정밀 부동 소수점 능력에 대한 추정치
- 위 3개의 값을 곱한다.

Dataset(task)
Baseline
- big transformer model Transformer (big)
- configuration(환경) : Table 3 가장 아래 big 에 설명되어있으며, 8개의 P100 GPU로 학습시킨 결과 3.5일이 소요되었다.
결과
- 28.4 BLEU score
- 이전 best model(앙상블이 포함된 model)보다 2.0 BLEU point 향상된 결과를 보이며, 새로운 SOTA로 등록되었다.
- publish된 모든 모델과 앙상블을 뛰어넘었고, 어떠한 경쟁력 있는 모델의 학습 비용 부분에서도 우월함을 보였다.
Dataset(task)
Baseline
- big transformer model Transformer (big)
- dropout rate P_drop = 0.1 (0.3 대신)
결과
- 41.0 BLEU score
- 이전에 publish된 모든 단일 모델의 성능을 뛰어넘는 결과를 보였다.
- 이전 SOTA 모델의 학습 비용에서 1/4 을 줄이는 결과를 보였다.
- base model : 10분 간격 동안 작성된 지난 checkpoint 5개의 평균 값을 단일 모델에 사용한다.
- big model : 지난 checkpoint 10개의 평균 값을 사용한다.
- 의사결정 방식으로 beam search를 사용한다.
- beam size = 4, length penalty α = 0.6
- 이러한 hyper parameter는 development set의 실험을 통해 결정한다.
- 추론 과정 동안, 최대 output 길이를 input 길이의 +50으로 설정하지만, 가능하다면 빠르게 종료한다.
6.2 Model Variations
- Transformer 각 요소의 중요도를 평가하기 위해, base model에 다양한 기법을 추가하여 변화를 주었다.
- development set의 데이터로 newstest2013을 사용하였고, English-to-German translation에 대한 성능 변화를 측정한다.
- In Table 3, rows (A)
- attention head h 와 attention key 차원 수 d_k , attention value 차원 수 d_v 변화를 준 모델이다. (이 때, 계산량은 일정하게 유지하도록 차원 수를 조정한다.)
- single attention의 경우, best setting(h=8, d_k, d_v = 64) 보다 0.9 BLEU 낮아졌고,
성능 또한, 많은 head에서 떨어졌다.
- 결론 : 동일한 계산량에서는 base model의 setting이 가장 성능이 좋다.
- In Table 3, rows (B)
- attention key 차원 수(size) d_k 감소 → 이를 통한 성능 하락을 관찰한다.
- compatibility(호환성)을 결정하는 것은 어렵고, dot-product보다 더욱 정교한 compatibility function(호환성 함수)가 더 좋을 수 있다는 것을 제안한다.
- 결론 : 계산량(parameter 수)은 감소하나, 성능 하락을 보인다. 이에, key의 차원 수를 줄이는 것이 좋다는 결정을 할 순 없다.
- In Table 3, rows (C)
- 결론 : 더 큰 모델일수록(계산량이 많을수록) 성능이 좋다.
- In Table 3, rows (D)
- dropout
- PPL(작을수록 좋음) : P_drop = 0.1 < P_drop=0.2 < P_drop = 0.0
- BLEU(클수록 좋음) : P_drop = 0.1 > P_drop=0.2 > P_drop = 0.0
- label smoothing
- PPL(작을수록 좋음) : ϵ_ls = 0.0 < ϵ_ls = 0.1 < ϵ_ls = 0.2
- BLEU(클수록 좋음) : ϵ_ls = 0.1 > ϵ_ls = 0.2 > ϵ_ls = 0.0
- 결론 : dropout, label smoothing은 과적합 방지에 도움이 된다.
- In Table 3, rows (E)
- 학습한 positonal embedding과 함께 sinusoid한 positional encoding에 변화를 준다.
- 결론 : base model과 거의 비슷한 성능을 보인다.

6.3 English Constituency Parsing
- Transformer가 다른 task에서도 좋은 성능을 발휘할 수 있는지 평가하기 위해 영어 선거구 구문에서 실험을 진행하였다.
- 영어 선거구 구문 실험의 output은 강한 구조적인 제약조건에 따른 결과이고, input보다 상당히 긴 결과를 가진다는 어려움이 존재한다.
- 게다가, RNN seq2seq 모델은 데이터가 작은 task에서 SOTA를 달성해오지 못했다.
Dataset
- Wall Street Journal (WSJ) portion of the Penn Treebank (40K 개의 학습 데이터 문장)
- BerkleyParser corpora의 데이터 (대략 17M 개의 문장)
Model
- 4-layer의 transformer 구조 (model의 차원 수 d_model = 1024)
- WSJ만의 setting 에서 16K 개 token을 사용하고,
준지도 setting에서 32K 개 token 단어를 사용한다. (BerkleyParser corpara 데이터 포함)
- learning rate와 beam size, dropout 값 선정을 위해 Section 22 development set로 attention과 residual 모두 작은 실험을 진행했다.
- 모든 parameter는 영어→독일어 번역 모델과 같은 parameter를 유지하였다.
- WSJ만의 setting과 준지도 setting에서 beam size = 21, length penalty α = 0.3 을 사용한다.
- 추론 과정에서 최대 output 길이를 input 길이의 +300으로 설정하였다. (input보다 output이 상당히 긴 결과를 가지는 데이터 특성 상을 반영한다.)
결과
- task에 특화된 모델 튜닝이 부족했지만, 놀랍게도 Recurrent Neural Network Grammar를 제외하고 가장 좋은 성능을 보였다.
- RNN seq2seq 모델과는 반대로, WSJ 학습 세트(40K 개의 문장)에서 학습만 했을 때에도 BerkleyParser corpora를 능가하는 성능을 보였다.

7. Conclusion
- 가장 일반적인 recurrent layer 대신 attention으로만 구성한 문장 변환 모델 Transformer를 제시하였다.
- encoder-decoder 구조를 가지며, multi-head 형태의 self-attention을 포함한다.
- translation task에서 Transformer는 RNN, CNN 구조의 모델보다 훨씬 빠르게 학습될 수 있다.
- WMT 2014 영어→독일어, 영어→불어 translation task에서 SOTA를 달성하였다.
- 심지어 영어 → 독일어 에서는 이전 기록된 모든 앙상블 모델보다 성능이 좋았다.
- Attention 기반 모델의 미래에 기대하고 연구할 것이다.
- 1) 다른 task에 Transformer를 적용할 계획이다.
- 2) text보다 다른 입출력 데이터 형태를 수반한 과제들로 확장할 계획이다.
- 3) local(지역적), restricted(제한된) attention mechanism에 대한 연구를 통해 이미지, 오디오, 비디오와 같이 더 큰 입출력 데이터를 효율적으로 다룰 것이다.
- 덜 sequential한 생성을 만드는 것이 또 다른 연구 목표이다.
Insight
3.5절 Positional Encoding에서 위치에 대한 정보를 sinusoid 한 함수로 표현함을 확인하였다. 위치 정보를 제공한다고 했을 때, 가장 먼저 생각한 방법은 token의 위치에 따라 첫 번째는 1, 두 번째는 2,,, 이런 식으로 순서에 대한 정보를 부여하는 방식이었는데, 해당 논문에서는 이를 과한 정보라고 판단한 것으로 보인다. 이에 대해 궁금증이 생겨 다른 Transformer 논문 관련 리뷰를 찾아본 결과, sequence의 길이에 따라 positional embedding 벡터가 선형적으로 증가하게 되면, 길이가 긴 sequence에 대해 단어 자체 정보보다 위치 정보가 지배적으로 커지면서 단어의 의미가 훼손될 수 있다는 내용을 보았다.
이를 보면서 Transformer가 위치 정보는 최소한으로 필요한 만큼만을 담으면서 단어 정보를 최대한으로 살리면서 좋은 representation을 출력할 수 있다는 점에서 한 번 더 좋은 모델임을 알 수 있었다.
6.2절을 보면, (A) 열에서 같은 계산량을 가지는 다양한 경우에 대한 비교를 진행하였다. 이 때, base model의 계산량을 기준으로 head의 개수와 key, value의 차원을 조절하였다. 또한, (C) 열을 보면 parameter의 수 (계산량)이 클수록 성능이 좋음을 알 수 있다.
해당 부분을 읽어보면서 더 큰 계산량을 가지는 모델에서 계산량을 유지한채로 차원수를 조정했을 때의 결과도 궁금했다. (물론, 실험을 진행했음에도 논문에 표현이 안 되어 있을수도 있고, 모든 경우의 수를 실험하기에 한계가 존재한다고 생각한다.)
해석에 부족한 부분이 있을 수 있습니다. 읽어보시고 댓글로 피드백 해주시면 감사하겠습니다!
Reference