[논문 링크]
From NIPS 2017
0. Abstract
- 지금까지의 대부분 시퀀스 변환(sequence transduction) 모델들은 복잡한 RNN or CNN을 기반으로 한다.
- 가장 성능이 뛰어난 모델들도 인코더와 디코더를 Attention mechanism으로 연결한 것
- 우리는 순환 구조와 합성곱 구조를 완전히 없애고 어텐션으로만 구성된 새로운 모델을 제안한다: Transformer
- 트랜스포머는 더 성능이 우수하면서도 병렬화가 가능하고 학습 시간이 짧다.
- 트랜스포머는 제한된 학습 데이터로 다른 task에도 일반화해서 적용 가능함을 확인했다. (ex. English constituency parsing)
1. Introduction
- 그동안 기계 번역 같은 transduction problem에서는 RNN, LSTM, GRU가 SOTA를 달성했다.
- 하지만 RNN 계열의 모델은 입력과 출력 시퀀스의 position을 순차적으로 계산하기 때문에 병렬 처리 및 일괄 처리가 제한됨
- h_t를 계산하기 위해 h_t-1과 t-1(input)이 제공되어야 함
- t 이전의 모든 출력이 차례로 계산되어야지만 최종적인 output 생성 가능
- 이러한 문제는 시퀀스의 길이가 더 길수록 더 문제
- 어텐션 매커니즘은 입출력 시퀀스의 길이에 상관없이 사용할 수 있어 많이 사용되지만, 대부분 RNN계열과 함께 사용됨.
- 그래서 우리는 RNN없이 어텐션만을 사용하는 transformer를 제안, 짧은 훈련 시간만으로도 SOTA 달성한다.
2. Background
- (RNN 계열 모델들의 특징인) Sequential한 연산을 줄이려는 시도는 다양한 모델들에서 이루어져 왔다.
- Ex) Extended Neural GPU, ByteNet, ConvS2S
- 이런 모델들은 CNN을 basic building block으로 사용하고, 모든 input과 output position에 대해 병렬 연산을 시도했다.
- 하지만 이후 input과 output의 position을 연결하는데 필요한 연산이 너무나 폭등했고,
- 이로 인해 멀리 떨어진 position 간의 종속성(dependency)을 학습하는 것이 더욱 어려워졌다.
- Transformer에서는 이 연산을 줄였지만 multi-head attention을 통해 그 부작용을 상쇄했다.
- Self-attention은 sequence의 representation을 계산하기 위해 한 sequence에서 다른 sequence를 연결하는 방식
- 서로가 서로에게 가중치 부여
- 다른 다운스트림 작업에서 성공적으로 사용됨
- End-to-end memory network는 순차적인 recurrence 보다 recurrent attention에 기반하고, 간단한 언어의 question answering이나 language modeling task에서 좋은 성능을 보인다.
- 그럼에도 불구하고 Transformer는 순차적인 RNN이나 CNN을 사용하지 않고 입출력의 표현(representation)을 위해 오로지 attention에만 의존하는 최초의 모델이다.
3. Model Architecture
- 대부분의 시퀀스 변환 모델은 encoder-decoder 구조를 가진다.
- 인코더는 (x1, x2, … , x_n)이 입력 시퀀스로 주어지면 연속적인 표현인 Z = (z1, z2, …, z_n)으로 매핑한다.
- 디코더는 Z를 입력으로 받아 출력 시퀀스 (y1, y2, … , y_m)을 한번에 한 요소씩 생성한다.
- transformer는 auto-regressive: 이전 단계에서 생성된 출력을 현재 단계의 추가적인 입력으로 사용하므로
3.1 Encoder and Decoder Stacks
- 인코더
- 6개의 동일한 레이어가 stack된 구조
- 각 레이어는 두 개의 sub-layer로 구성
- Multi-head self-attention mechanism
- Position-wise Fully Connected Feed-Forward Network
- 각 sub-layer에는 residual connection과 layer normalization을 적용
- LayerNorm(x+Sublayer(x))
- residual connection을 용이하게 하기 위해 sub-layer와 embedding layer의 output의 차원은 512
- residual connection 하려면 input과 연결된 output의 차원이 같아야 하므로
- 디코더
- 인코더처럼 6개의 동일한 레이어가 stack된 구조
- 인코더와 다르게 각 레이어에는 하나의 sub-layer가 추가됨
- Masked Multi-Head Self-Attention mechanism
- 다음 스텝 position은 attention을 하지 않도록 masking
- i번째 position을 예측할 때는 i보다 작은 position의 output만을 사용
- Multi-Head Self-Attention mechanism
- Encoder의 output에 대해 attention 연산을 수행
- Position-wise Fully Connected Feed-Forward Network
- 인코더와 비슷하게 각 sub-layer에는 residual connection과 layer normalization이 적용
3.2 Attention
Attention은 query와 key-value 쌍 세트를 출력에 매핑하는 것이라고 할 수 있다. outputr은 value의 weighted-sum으로 계산된다.
3.2.1 Scaled Dot-Product Attention
- Transformer에서 수행되는 attention은 ‘Scaled Dot-Prodoct Attention’이라고 부른다.
- 이는 query와 key들을 모두 내적한 뒤 √dk로 나누어 주고, softmax 연산을 적용하는 것
- 보통 자주 쓰이는 attention mechanism에는 Additive attention과 dot-product(multiplicative) attention 두가지가 있음
- Additive attention
- Single hidden layer로 구성된 feed-foward network를 사용해서 단어 간 일치도 계산
- Dot-product attention
- Scaling 된 점을 빼면 동일
- 이론적 복잡도는 두 attention이 비슷하지만 실제 연산 속도와 공간 효율도가 dot-product attention이 휠씬 좋다.
- dk값이 크면 내적이 커져서 기울기가 매우 작아지는 것으로 의심됨 → 스케일링으로 조정했다.
3.2.2 Multi-Head Attention
- 단일 구조의 attention보다 h개의 attention을 선형으로 연결하는 것이 더 성능적으로 유리한 것을 확인했다. (h=8)
- attention 연산들은 병렬로 수행되어 각각의 output을 생성하고 concat되어 최종 값이 된다.
- Multi-head attention은 서로 다른 위치에 있는 단어에 집중(attention)하는 성능을 향상시켰다.
- 8개의 Representation subspaces를 제공하여 여러 position의 representation에 대해 정보를 결합하여 attention 연산을 수행할 수 있기 때문
- Head의 output에서 차원이 축소되기 때문에, 총 계산 비용은 결론적으로 single head attention 과 유사하다.
3.2.3 Application of Attention in our Model
Transformer에서는 Multi-head attention을 세가지 방식으로 사용했다:
- ‘Encoder-decoder attention’ layer
- 이 레이어의 query는 이전 단계의 decoder layer로부터 오고, key & value는 encoder의 ouput으로부터 온다.
- 이는 decoder의 모든 position이 input sequence의 모든 position을 사용할 수 있게 한다.
- ‘Encoder Self-attention’ layer
- Self-attention에서는 모든 query, key, value가 같은 곳에서 온다. 즉, 이전 단계 encoder의 출력이 현재 단계 encoder의 입력이 된다.
- 따라서 각 encoder layer는 이전 layer까지가 처리한 정보를 활용할 수 있다.
- ‘Masked Decoder Self-attention’ layer
1. Auto-regressive한 속성(출력값을 다시 입력으로 사용하는 것)을 보존하기 위해 뒤쪽의 position 정보를 참조하는 것을 막아주어야 하는데, transformer에서는 이를 위해 그러한 값들에 해당하는 softmax 값을 -∞로 마스킹했다.
(논문에 없는 그림)
3.3 Position-wise Feed-Forward Networks
- Encoder와 Decoder는 둘다 각각 Fully Connected Feed-Forward Network를 통과한다.
- 동일한 구조를 갖고 있는 network를 encoder와 decoder에서 갖고 있어서 position-wise라고 부른다.
- 이 구조는 선형 변환 → ReLU → 선형 변환의 순서로 이루어진다.
(논문에 없는 그림)
- 위 계산은 kernel size =1인 convolution을 두번 수행한 것으로 이해할 수도 있다.
3.4 Embeddings and Softmax
- 다른 시퀀스 변환 모델 처럼 입력과 출력 토큰을 d_model 차원으로 변환시키기 위해 학습된 embedding을 사용했다.
- 선형 변환과 softmax도 학습된 것을 사용했다.
- embedding layer 두개와 softmax 전 선형변환에서는 동일한 weight matrix를 사용한다.
3.5 Positional Encoding
- Transformer는 recurrent나 convolution을 사용하지 않으므로 시퀀스의 순서 정보를 사용하기 위해서는 토큰의 상대 or 절대 정보를 넣어줘야 할 필요가 있다.
- 그래서 encoder와 decoder의 embedding에 Positional Encoding을 더했다.
- Positional Embedding은 d_model과 같은 512의 차원을 가지며, 이는 입력 임베딩과의 결합을 위한 것이다.
- position이 홀수일 때는 cos, 짝수일 때는 sin을 사용.
4. Why Self-Attention
- Self-attention을 Recurrent와 Convolution layer와 비교한다.
- 세가지 측면에서 self-attention을 쓰는 것이 유리했다.
-
Layer 당 연산 복잡도
-
병렬화될 수 있는 연산의 양
→ 순차적인 연산(sequential operation)의 숫자가 최소가 되는 방향으로 계산함
-
network 내 장거리 종속성(long-range dependency)의 최대 길이
- 장거리 종속성을 학습시키는게 시퀀스 변환 모델들에게는 큰 과제였다.
- 이 학습에 영향을 미치는 요소는 순방향 및 역방향 신호가 통과해야 하는 경로의 ‘길이’이다.
- input과 output sequence의 position 사이 거리가 짧을수록 장거리 종속성을 배우기 더 쉽다.
- 따라서 우리는 input / output sequence의 position 사이의 maximum 거리 길이도 구해서 비교한다.
5. Training
Transformer의 훈련 방식에 대해 설명한다.
5.1 Training Data and Batching
- Training Data
- English-German dataset: Standard WMT 2014 Eng-Ger 450만 문장쌍
- English-French dataset: WMT 2014 Eng-Fre 3600만 문장
- Batching
- 각 배치는 대략 25000 source 토큰과 25000 target 토큰을 포함하는 문장 쌍들을 담고 있다.
5.2 Hardware and Schedule
- P100 8개로 학습 돌렸다.
- base model: 100,000 steps or 12시간 (step 당 0.4초)
- big model: 300,000 steps(3.5일) (step 당 1초)
5.3 Optimizer
- Adam optimizer라는 최적화 알고리즘을 사용했다. (β1 = 0.9, β2 = 0.98, ϵ = 10−9)
- learning rate는 다음과 같은 공식에 의해 조절했다.
- 위 공식은 warmup_steps(=4000) 단계에서는 learning rate를 선형적으로 증가시키고, 이후 단계에서는 step number의 역제곱근에 비례하여 leaning rate를 감소시키는 것을 의미한다.
5.4 Regularization
- Residual Dropout
- 각 sub-layer의 출력마다 그 출력이 다시 add & norm 되기 전에 dropout을 해준다.
- 또한 embedding과 positional encodding 의 합들에도 dropout을 적용한다.
- Base model에 사용한 dropout값 Pdrop = 0.1.
- Label Smoothing
- ϵls = 0.1의 label smoothing 값을 적용했다.
- 이는 모델이 더 불확실한 것을 학습하지만 오히려 모델의 정확성과 BLEU 점수를 향상시킨다.
6. Results
6.1 Machine Translation
-
Eng-Ger 번역에서
- Big model은, (앙상블을 포함한) 기존 모델보다 2.0이 넘는 BLEU의 향상을 보이면서 28.4의 SOTA를 달성했다.
- Base model조차도, 기존 모델들의 성능을 능가하며 training cost는 절약했다.
-
Eng-Fre 번역에서
- Big model은, 41.8의 BLEU를 기록하며 SOTA를 달성했는데, 그러면서도 훈련 비용은 기존 SOTA 모델들보다 1/4로 줄였다.
- Pdrop=0.1 사용했다(0.3 대신)
- 20 checkpoint의 평균으로 얻어진 single model을 사용했다.
- Base model은, 5 checkpoint의 평균으로 얻어진 single model을 사용했다.
-
Beam Search를 사용했다.
-
Beam size = 4, Length Penalty α=0.6
-
위 파라미터는 development set에 대한 실험 이후에 결정됐다.
-
번역 시 최대 출력 길이는 입력 길이 +50이지만 최대한 짧게 출력한다.
-
Beam Search?
-
확률이 높은 K개의 선택지만을 메모리에 관리 하면서 최상 우선 탐색을 진행하는 기법
-
즉 Best First Search에서 기억 노드의 수를 제한하는 것
(논문에 없는 그림)
-
Length Penalty: 번역 길이가 길어지면 페널티를 주는 가중치
-
Beam size를 크게하면 번역 성능이 올라가지만 디코딩 속도가 낮아짐
6.2 Model Variations
- Transformer의 여러 구성 요소들의 중요성을 평가하기 위해 base model을 다양하게 수정해서 development set인 newstest2013에서 Eng-Ger 번역의 성능 변화를 측정했다.
- Beam search는 사용했지만 Checkpoint averaging은 사용하지 않았다.
- (A) 행에서는 3.2.2와 같이 Multi-head Attention의 head 수를 변경했다. single-head attention은 best setting 보다 BLEU가 0.9 낮지만, head가 너무 많으면 또 BLEU가 떨어진다.
- (B) 행에서는 Attention의 key size(차원)인 d_k 값을 줄이면 모델의 성능이 줄어든다는 것을 알 수 있다. 이는 dot-product attention 보다 더 정교한 compatibility function이 존재할 수 있음을 시사한다.
- (C) 행에서는 예상대로 더 큰(bigger) 모델이 더 좋다(better)는 것을 알 수 있다.
- (D) 행에서는 dropout이 과적합을 피하는 데에 좋다는 것을 알 수 있다.
- (E) 행에서는 기존에 사용한 Sinusoidal positional encoding을 learned positional encoding으로 바꿨는데 성능이 거의 동일했다.
6.3 English Constituency Parsing
- Constituency Parsing
- Transformer가 번역이 아닌 다른 작업에도 일반화할 수 있는지 평가하기 위해 영어 구 단위 구문 분석에 대한 실험을 수행했다.
- 이 작업은 구조적인 제약이 있고 입력보다 휠씬 더 긴 출력을 낸다는 특수한 과제를 갖고 있다.
- WSJ의 문장에 대해 추가 학습을 시켰다. 일부는 반지도 학습을 시켰다.
- 작업 별 튜닝이 부족했음에도 불구하고 transformer는 RNN 문법[8]을 제외하고 이전 모든 모델들보다 더 나은 성능을 보여준다.
- RNN Seq2Seq[37]와 달리 Transformer는 40,000개의 WSJ 문장에 대해서만 훈련하는 경우에도 BerkeleyParser[29] 보다 성능이 뛰어나다.
7. Conclusion
- 우리는 전적으로 Attention에만 의존한 시퀀스 변환 모델을 처음으로 제안했다.
- 가장 흔하게 쓰이던 encoder-decoder 아키텍처를 multi-head self attention으로 바꿨다.
- 번역 작업에서, Transformer는 recurrent나 convolution을 기반으로 하는 아키텍처보다 휠씬 빠르게 훈련할 수 있다. 우리는 Eng-Ger과 Eng-Fre에서 SOTA를 달성했다.
- 우리는 transformer를 텍스트 말고도 이미지, 오디오, 비디오 같은 대규모 입출력을 효율적으로 처리하기 위해 attention mechanism을 더 살펴볼 것이다.