Abstract
현재 지배적인 Sequence 변환 모델은 Encoder와 Decoder를 포함한 복잡한 RNN or CNN 모델로 이루어져있다.
이 중 Best performace를 보이는 모델은 Encoder와 Decoder를 Attention Mechanism으로 연결 한 것이다.
본 논문에서는 새로운 Newtork: Transformer를 제안한다.
Transformer을 두 가지 번역 과제를 대상으로 실험 한 결과, 품질 향상과 병렬 처리성으로 학습에 훨씬 적은 시간이 소요됐다.
Transformer는 최고의 BLUE 를 달성했으며 크고 제한된 학습 데이터를 바탕으로 영어 뿐 아닌 다른 일반화된 작업에 역시 잘 적용할 수 있다.
BLUE(Bilingual Evaluation Understanding) :
기계 번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교해 번역에 대한 성능을 측정한다. 측정 기준은 N-Gram에 기반하며, 언어에 구애받지 않고 계산 속도가 빠른 이점을 가지고 있다. 점수가 높을수록 성능이 높다.
Introduction
RNN,LSTM,GRU와 같은 Neural Networks는 Sequence 번역 문제에서 최첨단 접근 방식으로 자리잡았으며, 이와 같은 Recurrent Model들은 입력 및 출력 위치의 심볼을 바탕으로 계산을 진행한다.
t 시점에서 hidden state ht를 이전 시점의 hidden state h(t-1)와 t 시점의 input 값을 결합한 함수로 생성한다. 이러한 순차적 특성으로 인해 Training set 내에서 병렬화가 불가능하다. 하지만, 메모리 제약으로 인해 예제 간 일괄 처리가 제한되므로 시퀀스 길이가 길어질수록 병렬화가 중요해진다. 이를 위해 최근 연구에서는 Facotrization Tricks를 통해 성능과 효율성을 향상했고 발전중이다. 하지만, 근본적인 Sequential Computations에 대한 제약은 여전히 존재한다.
Attention 기법은 다양한 sequence 모델링과 기계 번역에서 Input과 Output Sequences의 거리에 관계없는 모델링을 하므로써 매우 매력적인 기법이다. 대부분의 경우에 Attention 기법은 RNN과 함께 사용된다.
해당 논문에서는 반복 작업을 피하고 Attention 매커니즘에 전적으로 의존하여 Input과 Output간의 Global Dependencies를 도출하는 Transformer를 제안한다. Transformer는 병렬화가 가능해 훈련 시간이 단축된다.
Background
- Self-attention: 단일 Sequence의 여러 Position을 연결해 Sequence의 표현을 계산하는 Attention Mechanism이다.
- End-to-end memory networks: Sequence 정렬 반복이 아닌, Recurrent Attention Mechanism의 종류이며, Simple-language question answering과 language modeling tasks에 잘 적용된다.
Transformer는 Sequence정렬 RNN 또는 Convolution이 아닌, Self-Attention에만 의존해 Input과 Output을 표현하는 최초의 모델이다.
Model Architecture
Encoder는 Input Sequence of Symbol Representations(x1,x2...)를 연속적인 표현 Z로 표현한다. Z가 주어졌을 때, Decoder는 Output sequence를 생성한다.
Transformer는 Encoder,Decoder 모두에 대해 Stacked Self-attention과 Fully Connected Layers를 사용한다.
Encoder and Decoder Stacks
Encoder:
- N = 6의 개별적인 Layer로 쌓여 있으며, 각각의 Layer에는 2개의 Sub Layer가 존재한다.
- 첫번째 sub-layer: Multi-Head Self-Attention Mechanism
- Token 처리 시 함께 주어진 다른 Input들을 얼마나 중요하게 볼 것인지에 대한 계산. 이때 단어의 Position은 그대로 적용된다.
- 두번째 sub-layer: Position별 Fully Connected Feed-Forward Network
- 각각의 Self Attention이 수행된 단어들에 해대 Neural Network 적용해 Output 추출. 역시 Position은 그대로 적용된다. 즉, 단어 하나하나끼리 Self -Attention, FFD 따로 진행
- 첫번째 sub-layer: Multi-Head Self-Attention Mechanism
- 두가지 sub-layer 주변에 각각 Residual Connections을 적용한 후 Layer를 Normalization 시킨다. (Add & Norm)
- Residual Connections를 용이하게 하기 위해, 모델의 모든 sub-layer와 임베딩 layer는 d_model = 512차원의 출력을 생성한다.
Decoder:
- N = 6의 개별적인 Layer로 쌓여 있으며, Encoder에 포함된 2개의 sub-layer과 Encoder의 Output과의 Multi-Head Attention을 적용한 세번째 sub-layer가 존재한다.
- sub-layer 주변에 각각 Residual Connections을 적용한 후 Layer를 Normalization 시킨다. (Add & Norm)
- Decoder에서는 보고 있는 단어 이후에 출력되는 단어는 제외(마스킹)한다. 즉, i번째의 위치는 i보다 빠른 위치의 출력에만 의존하도록 한다.
Attention
Attention은 Query와 (Key:Value) 쌍을 매핑한다고 표현할 수 있다. Query, Key, Value의 Output은 모두 벡터로 이루어지며, Output은 Value의 Weighted sum이다. 이때의 Weight는 Key와 Query를 바탕으로 계산된다.
Scaled Dot-Product Attention
Input: 차원 d(k)로 이루어진 Queries와 Keys, 차원 d(v)로 이루어진 Values
- 주목하고 있는 Query와 모든 Key를 내적한다.
- Root(d_k)로 나누기
- Softmax 함수 적용
- Softmax 값을 바탕으로 Value에 가중치 적용
Dot-product Attention이 Additive Attention보다 속도가 빠르고 공간을 더 효율적으로 사용하기에 Dot-product Attention을 사용했다.
하지만, Dot-product Attention에서 차원 수 d_k가 클 때, Dot-product 값이 너무 커져 Softmax function을 Gradient가 매우 작은 영역으로 보낼 수 있기에, 이를 방지하기 위해 Root(d_k)로 나눠준다.
Multi-Head Attention
Model의 차원에 맞춰 Key,Query, Value Single Atttention을 수행하는 것 보다
학습된 서로 다른 Linear Projections을 d_k(Key),d_k(Query),d_v(Value)에 투영해 h번 반복하는 것이 더 효과적이다.
각각의 projected된 Query,Key,Value들은 병렬적으로 Attention 매커니즘을 적용하고, d_v 차원의 Output Value를 계산한다.
그 후 Concat해 Multi-Head Attention을 수행한다.
본 논문에서는 8개의 병렬 Attention을 사용했고, d_k = d_b = d_model/h = 64로 설정한다.
각 헤드의 크기가 줄어들었기 때문에 총 계산 비용은 전체 차원을 사용하는 Single-Head Attention과 유사하다.
Application of Attention in our Model
Transformer는 Multi-Head Attention을 다음과 같은 세가지 상황에서 사용한다.
- Encoder-Decoder Attention:
- Query는 이전 Decoder Layer에서 추출되고, Key,Value는 Encoder의 Output에서 추출된다.
- 이를 바탕으로 Decoder의 모든 Position이 Input Sequence의 모든 Position을 Attention할 수 있다.
- Encoder Self-Attention
- Self-Attention Layer에서 Key, Value, Query는 모두 같은 부분에서 추출되며, 이 상황에서는 이전 Encoder의 출력부분에서 나온다.
- Encoder의 각 Position은 이전 Layer의 Encoder의 모든 Postion을 확인할 수 있따.
- Decoder Self-Attention
- Decoder는 내가 주목하고 있는 Position 이전 위치까지만 확인한다.
- Softmax를 취할 때 masking( - inf로 보낸다)를 통해 이를 구현할 수 있다.
Position-wise Feed-Forward Networks
각각의 sub-layer에서 Attention 뿐 아니라 Fully Connected Feed-Forward Network를 포함한다.
이는 각 Position 별 Separately, Indetically 존재한다.
FFN은 두번의 선형변환을 진행하며 ReLU를 활성화함수로 갖는다.
선형변환 시, 한 Layer에서 서로 다른 Position에서 동일하게 일어난다(Weight 동일)
하지만, 다른 Layer 끼리는 다른 Parameter를 가진다.
Embeddings and Softmax
다른 Sequence 변환 모델과 같이, 해당 논문에서는 학습된 Embeddings를 사용해 Input과 Output Tokens을 d_model 차원의 벡터로 변환시켰다.
또한, 선형변환과 Sofrmax 함수를 사용해 Decoder Output을 예측된 다음 Token의 확률로 변환했다. 이를 바탕으로 Argmax 사용해 단어 반환.
Transformer는 두 Embedding layer와 pre-softmax 선형변환에서는 동일한 가중치 행렬을 가진다.
Positional Encoding
Transformer는 Recurrence와 Convolution이 없으므로, Sequence의 순서를 반영하기 위해 Sequence의 Token에 순서 정보를 추가해야 했다. 이렇게 추가한 Positional Encoding를 Encoder와 Decoder Stack의 첫번째 Input Embeddings에 더한다.
Positional Encoding은 d_model 차원과 똑같은 차원을 가지고 있다, 많은 Positional Encoding 방법 중, sine, cosine function을 사용했다.
pos: Position
i: dimension
즉, Poisitonal Encoding의 각 차원은 Sinsusoidal 와 연관된다는 것이다.
파장은 2π에서 10000 * 2π까지의 기하학적 진행을 형성한다. 이 함수를 선택한 이유는 고정된 Offset k에 대해 PE_pos+k는 PE_pos의 선형 함수로 표현할 수 있기 때문에 모델이 상대적인 위치에 따라 쉽게 학습할 수 있을 것이라는 가설을 세웠기 때문이다.
또한, 해당 함수가 아닌, 새로운 2가지 버전의 learned positional embeddings를 사용했을 때도 거의 동일한 결과가 도출됐다.
Sinsusoidal 버전을 선택한 이유는 모델이 훈련 중에 발생하는 것보다 더 긴 시퀀스 길이로 추정할 수 있기 때문이다.
Why Self-Attention
이번 Section에서는 다양한 관점의 Self-Attention layers와
One variable-length sequence of symbol representations(x_1,x_2 ... x_n) to another sequence of equal length (z_1,z_2,...z_n)를 매핑하는데 사용되는 Recurrent/Convolution layers를 비교한다.
Self-Attention을 사용하는 목적으로 3가지 사항을 고려했다.
- Total computational complexity per layer. (레이어 당 총 계산 복잡도)
- Amount of computation that can be parallelized. (병렬화할 수 있는 계산의 양으로 필요한 최소 Sequential 연산 횟수로 측정)
- Path length between long-range dependencies in the network. (네트워크의 장거리 Dependencies 간의 경로 길이)
- 장거리 종속성을 학습하는 것은 Sequence 변환 작업에서 매우 중요한 과제이다.
- 장거리 종속성을 학습하는데 능력을 미치는 핵심 요소는 네트워크에서 Forward와 Backward가 통과해야 하는 경로의 길이이다. Input과 Output Sequences의 모든 Position 조합의 경로가 짧을수록 장거리 종속성을 학습하기 쉽다. 그렇기에 다른 layer 유형으로 구성된 네트워크에서 Input과 Output의 Position 사이의 최대 경로 길이도 비교한다.
시간 복잡도 기준에서, Self-Attention이 이점을 가진다.
또한, 추가적으로 Self-Attention은 해서이 더 용이한 모델을 얻을 수 있다. 각각의 Attention Head는 다른 Task를 수행하는 방법을 명확하게 학습할 뿐 아니라, 문장 전체의 의미 및 구조를 학습하는 것으로 나타났다.
Training
약 450만개의 문장 쌍으로 구성된 standard WMT 2014 English-German Dataset을 학습했다.
각 문장은 byte-pair enccoding으로 Encoding 되어 있었으며, 약 37000개의 source-target을 공유했다.
English-French의 경우 더 큰 WMT 2014 English-French Dataset으로 학습했으며 토큰을 32000개의 word-piece vocabulary로 분할했다. 문장 쌍은 Sequence 길이에 따라 일괄 처리했다.
각 Training Batch에는 약 25000개의 Source Token과 25000개의 Target Token이 포함된 문장 쌍이 포함됐다.
Optimizer: Adam
Regularization: Residual Dropout, Label Smoothing
Results
Machine Translation
WMT 2014 Englist to German translation task
: Transformer(big) Model이 28.4 BLUE로 State-of-the-art(Sota) model 달성 + Training cost 역시 제일 낮음
WMT 2014 English to French translation task
: 41.0 BLUE, 기존 SOTA model보다 1/4 수준의 Training cost 달성
Model Variations
English to German traslation에 대한 성능을, base model을 다양하게 변화시키며 중요한 요소를 찾고자 했다.
row A는 계산량을 일정하게 유지하며 Attention Head, d_key,d_value의 차원 수를 변경했다. Single Head Attention는 최상의 결과와 비교해 0.9 BLUE 나쁘지만, Head의 수가 너무 많아도 점수가 낮아지는 것을 알 수 있다.
row B는 d_k(Key의 차원 수)를 줄이면 모델의 성능이 줄어드는 것을 알 수 있다.
row C,D에서는 모델이 클수록 더 좋으며, Dropout이 Overfitting을 방지하는데 효과적임을 알 수 있다.
row E에서는 기존에 사용하는 sinusoids 기반 Positional Embedding을 Learned Positional Embedding으로 변경했는데, 거의 기존 모델과 동일한 결과가 나오는 것을 알 수 있다.
English Constituency Parsing
Transformer가 번역 뿐 아닌, 다른 작업에도 일반화할 수 있는지 평가하기 위해 English Constituency Parsing에 대한 실험을 수행했다. 해당 실험은 Output이 큰 구조적 제약이 따르고 Input보다 Output이 훨씬 긴 Sequence라는 특수한 경우이다. 게다가 RNN Seq2seq는 좋은 결과를 내지 못했다.
Transformer 모델 사용 결과, RNN Seq2seq와 다르게 모델 학습이 매우 잘 수행돼 일반화 역시 가능하다는 것을 알 수 있다.
Conclusion
본 연구에서는 Encoder-Decoder 구조에서 일반적으로 사용되는 recurrent layer을 Multi Head Self Attention로 대체한, 최초의 Attention에만 의존하는 Sequence 변환 모델인 Transformer를 제안했다.
번역 작업의 경우 Transformer은 Recurrent 또는 Convolution Layer에 기반한 구조보다 유의미하게 빠른 속도로 훈련이 가능하며 2가지 Task에서 SOTA를 달성했다.
Attention 기반 Transformer를 텍스트 이외의 문제에 해결하기 위한 제한된 Attention 매커니즘을 연구할 것이다.