이번 논문은 Attention구조를 활용하여 NLP 분야의 한 획을 선사한 transformer에 관한 논문이다.
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).
Abstract
- 이제까지의 우세한 sequence 변환 model은 인코더와 디코더를 포함한 복잡한 RNN, CNN 기반의 구조가 주를 이루었다.
- 저자는 여기에서 새롭고 간단한 네트워크 구조를 제안하는데 이것이 바로 transformer이다. 이는 attention 메커니즘만을 단독으로 기반하여 recurrence와 convolutions를 모두 제거하였다.
- 실험을 통해 두 개의 기계 번역 task는 병렬화되고 훈련하는데 필요한 시간을 줄여 높은 성능을 달성했다.
1 Introduction
- RNN, LSTM, GRU는 시퀀스 모델링과 transduction문제에서 최고 성능을 달성해왔다.
- 순환 모델은 일반적으로 입력, 출력 sequence의 기호 위치에 따라 계산을 분해하여 수행했다.
- 각 step의 위치에 따라 위치를 정렬시키고, hidden state ht를 ht-1과 t에서의 input을 통해 생성했다.
- 이러한 모델은 근본적으로 훈련과정에서 병렬화를 제외시키는데, 이는 배치화를 제한하기 때문에 더 긴 길이의 sequence를 처리할 때 치명적인 문제가 발생한다.
- 최근 연구에서는 factorization tricks와 conditional computation을 통해 계산 효율성 부분에서 상당한 개선을 하였다. 물론 이 또한 모델 성능을 개선하였다.
- 하지만, 근본적인 sequential computation의 제한점은 남아있게 된다.
- Attention 메커니즘은 다양한 tasks에서 강력한 sequence 모델링과 변환 모델에서 필수적인 요소이다. 왜냐하면, input or output sequences와 관련하여 거리에 상관없이 의존성 모델링을 가능하게 해 주기 때문이다.
- 하지만, attention 메커니즘은 recurrent 네트워크를 함께 사용했다.
- 그렇기 때문에 본 논문은 Transformer라는 모델 구조를 제안한다. 이는 recurrence를 피하고, 대신에 attention 메커니즘을 이용하여 input과 output의 전역 의존성을 이끌어낸다.
- Transformer는 상당한 병렬화를 가능하게 하였으며, 좋은 성능을 낼 수 있도록 했다.
2 Background
- sequential computation을 줄이는 것의 목표는 Extended Neural GPU, ByteNet, ConvS2S의 기반을 형성했다.
- 이는 모두 CNN을 기반으로 하는 building block을 사용했으며, input과 output 포지션을 위한 병렬의 hidden representations를 계산한다.
- 이러한 모델들은 input과 output의 두 위치로부터의 신호와 연관된 연산 수가 그들 사이의 거리에 따라 증가한다. 이러한 점은 거리 위치 사이의 의존성과 함께 학습의 어려움을 도래한다.
- Transformer은 attention-weighted positions를 평균화하기 때문에 감소된 유효 해상도에도 불구하고, 연산수를 줄인다. 이러한 점은 Multi-Head Attention으로 상쇄시킬 수 있다.
- Self-attention은 intra-attention이라고도 불리는데, sequence의 representation을 계산하기 위해서 단일 sequence의 다른 위치와 연관된 요소들을 관련시키는 메커니즘이다. 이는 성공적으로 다양한 tasks에 적용되었으며, 종합적인 읽기, 문서 요약 등이 포함된다.
- End-to-end 메모리 네트워크는 recurrent attention mechanism에 기반한다.
- 하지만, transformer는 RNN이나 CNN의 sequence 배열을 사용하지 않고 input과 output의 표현을 계산하는 self-attention에 기반하는 첫 번째 transduction model이다.
3 Model Architecture
- 가장 경쟁력 있는 신경망 sequence 번역 모델들은 encoder-decoder 구조이다. encoder는 input sequence의 연속적인 표현 (x1,..., xn)을 다른 연속적인 표현 z=(z1,..., zn)에 매핑한다. z를 가지고 decoder는 output sequence (y1,..., yn)을 생성한다. (각 time-step에서 하나의 element생성)
- 모델의 각 step에서 다음을 생성할 때, 이전에 생성된 symbol들을 추가적인 input으로 사용하기 때문에 Auto-regressive 하다.
- transformer는 전반적으로 self-attention 그리고 point-wise를 쌓아 올려 사용하는 구조를 사용한다. 이는 encoder와 decoder가 서로 연결되어 있다.
3.1 Encoder and Decoder Stacks
Encoder
- encoder는 6개의 동일한 스택으로 구성된다. 각 layer는 두 개의 sub-layers를 가지고 있다.
- 첫 번째는 multi-head self-attention 메커니즘이고, 두 번째는 간단한, position-wise fully connected feed-forward 네트워크이다.
- 저자는 두 개의 sub-layers의 각각에 residual connection을 이용한다. 즉, 각 sub-layer의 output은 LayerNorm(x + Sublayer(x))이고, Sublayer(x)는 sub-layer 자신에 의해 수행되는 함수이다.
- residual connections의 편리를 위해, 모델 내의 모든 sub-layers는 embedding layers를 포함하여 dim=512차원을 갖는다.
Decoder
- decoder 또한 6개의 동일한 layer의 스택으로 구성된다.
- 각 encoder layaer안에 두 개의 sub-layers와 함께, decoder는 3개의 encoder stack의 output에 대해 multi-head attention을 수행하는 sub-layer를 추가로 삽입한다.
- encoder와 비슷하게, sub-layers의 주변에 layer normalization이 뒤따르는 residual 연결을 사용한다.
- decoder stack에 self-attention sub-layer를 수정하는데, 이는 미래 positions에 대해 접근하는 것을 막기 위해서이다. 이를 마스킹이라고 하는데, 위치 i에 대한 예측이 i보다 작은 위치에서 알려진 출력에만 의존할 수 있도록 한다.
3.2 Attention
- attention function은 query와 key-value쌍의 set를 output에 매핑된다. 여기서 output, query, key, values는 모두 벡터이다.
- output은 values들의 가중치 합으로 계산되고, query와 해당 key의 호환성 function에 의해 계산된다.
3.2.1 Scaled Dot-Product Attention
- input은 query들과 dimension dk를 갖는 key 그리고 dimension dv로 구성된다.
- Q, K의 행렬을 계산(K는 Q의 transpose 하여 곱 > 내적 연산 > attention score 계산) -> -1~1의 값을 갖도록 scale 한다. 이때, 내적 값이 크면, Q와 K가 vector space에서 가까운 곳에 있다는 의미이다. 또한, vector dim이 커지면 학습이 어렵기 때문에 scale을 수행한다. -> 자신의 뒷단 어를 참고하지 못하게 하려고 masking작업을 한다. -> softmax를 이용하여 확률로 변환하고, value matrix와 곱한다. -> context vector 구하기 완료!
- 가장 흔하게 사용되는 Attention이 addictive, dot-product attention이다.
- dot-product는 1/sqrt(dk)로 scaling을 수행한다는 점을 제외하면 본 연구 알고리즘과 동일하다.
- addictive는 만일 hidden 계층을 가진 피드-포워드 네트워크를 사용하고 호환성 함수를 계산한다.
>> 이론적으로는 둘이 비슷하나, dot-product attention이 최적화 행렬 및 multiplication 코드를 사용하여 구현이 가능하다. 그래서 더 빠르고 공간 효율적이다.
- 만약, dk가 작다면 addictive, dot-product attention이 비슷한 수행 정도를 보여준다.
- 반면, dk가 크다면 dot-product attention이 더 잘 수행하지 못한다. 이는 극도로 작은 gradients 영역으로 넣는다 의심할 수 있기 때문에 scaling이 필요하다.
3.2.2 Multi-Head Attention
- dmodel차원의 keys, values, queries를 단일 attention으로 수행하는 대신에, dk, dk, dv에 대해 학습된 서로 다른 병렬적인 선형 투영을 사용하고자 한다. 서로 다른 h개의 dv차원 결과들을 얻고 그 결과들을 concat 한 뒤 한 번 더 선형 투영하여 최종 결과 벡터를 얻는다.
- Multi-head attention은 공동으로 다른 위치의 representation sub-space에서 결합적으로 접근하도록 한다. 단일 attention head에서는 averaging이 이를 막는다.
- 이 연구에서는 h=8인 병렬 attention layers or heads를 사용하였다. 또한, dk=dv=dmodel/h=64이다.
- 각 헤드에서 감소된 차원 때문에, 전체 계산 비용은 단일 헤드로 전체 full 차원 어텐션을 진행할 때와 전체 cost가 비슷하다.
3.2.3 Applications of Attention in our Model
- transformer는 multi-head attention을 3가지 방식으로 사용한다.
1. encoder-decoder attention layers In decoder : 쿼리들은 이전 decoder layer의 output으로부터 오고, key와 values들은 encoder의 최종 output으로부터 온다. 이것은 decoder의 각 위치에서 input sequence의 모든 위치에 접근할 수 있도록 허용한다. 이것은 seq2 seq 모델의 encoder-decoder attention을 모방한 것이다.
2. self-attention layers를 포함하는 encoder In encoder : self attention layer에 포함되는 모든 keys, values, queries는 같은 곳(encoder에서 이전 layer의 output)에서 온다. encoder의 각 위치는 이전 계층 encoder의 모든 위치에 관여 가능하다.
3. 비슷하게, self-attention layers in decoder는 디코더의 각 위치에 접근할 수 있도록 허용하고, 해당 position 이전까지의 모든 position들에 접근 가능하도록 한다. decoder의 auto-regressive를 보존하기 위해 leftward 정보 흐름을 막아야 한다. (여기서 leftward의 정보흐름이란, 미래 시점의 단어들을 미리 참고함에 따라 현재 단어 결정에 미치는 영향을 의미) 그러므로, -무한에 가까운 수를 부적절한 조회 위치에 더해주어 softmax를 취한 결과 해당 위치의 원소 값이 0에 수렴하도록 하는 방식으로 masking을 진행한다.
3.3 Position-wise Feed-Forward Networks
- 저자들의 encoder 그리고 decoder은 완전 연결 피드 포워드 네트워크를 포함하며 이는 각 위치를 독립적으로, 동등하게 적용한다. 이는 두 개의 선형 변환을 포함하고 ReLU 활성화 함수를 포함한다.
- 선형 변환은 다른 위치들에 대해 동일하게 적용되지만, layer에서 layer로 다른 파라미터들을 사용한다.
- 또 다른 방식으로, kernel size 1인 두 개의 합성곱 계층을 사용한다.
- input, output 차원은 동일하게 512차원이며, FFN내부 hidden layer는 2048차원을 갖는다.
3.4 Embeddings and Softmax
- input, output 토큰들을 dmodel 차원 vector변환을 위해 학습된 임베딩을 사용한다.
- decoder output을 예측된 다음 토큰 확률로 변환하기 위해 학습된 선형 변환과 softmax를 사용한다.
- embedding layers에서 sqrt(dmodel)을 가중치에 곱하여 사용한다.
3.5 Positional Encoding
- 저자가 제안한 모델은 recurrence 혹은 convolution을 포함하지 않는다. 시퀀스 순서를 활용하기 위해 시퀀스 내 토큰의 절대적 혹은 상대적 위치와 관련한 정보를 투입한다. 이를 positional encodings라고하며, encoder와 decoder의 최 하단에 위치한 input embedding에 더해준다.
- positional encoding은 임베딩과 마찬가지로 dmodel차원을 갖게 하였고, 그로 인해 두 벡터가 더해질 수 있게 한다.
- positional encodings에는 여러 종류가 있지만, 본 연구에서는 sine, cosine 함수를 사용했다. pos는 position을 의미하며 i는 dimension을 의미한다. 즉, 각 positional encoding의 차원은 sine곡선과 일치한다.
- 이러한 함수를 선택한 이유는 고정된 offset값 k에 대해 PEpos+k가 PEpos의 선형 함수로 표현될 수 있으며, model이 상대적 위치에 따라 학습에 쉽게 관여할 수 있다고 가정했기 때문이다.
- 또한, sine 버전의 학습이 시퀀스 길이가 더 길이에 대해서 extrapolate 가능했기 때문에 이를 사용했다고 서술한다.
4 Why Self-Attention
- 저자들은 가변 길이 sequence표현으로 매핑하는 recurrent와 convolutional layers를 사용하는 방법들과 self-attention layers 차이를 다양한 관점에서 살펴보고자 했다.
- 특히 세 가지 이유에 의해 self-attention을 고려했다.
1. 레이어당 총 계산 복잡도
2. 병렬화 될 수 있는 계산량, 이는 sequential 계산에 요구되는 최소 개수에 해당한다.
3. 네트워크 내부에서 장기 의존 성간의 경로 길이
- 많은 sequence transduction tasks에서 주 도전 과제는 장기 의존성을 학습하는 것이다. forward와 backward signals의 길이가 짧을수록 장기 의존성 학습이 쉽다. 그러므로, input과 output 사이의 최대 경로 길이를 비교한다.
- 표 1에서 알 수 있듯이 self-attention layer는 모든 위치를 일정한 수의 순차적으로 실행되는 작업으로 연결하는 반면, recurrent layer는 O(n) 개의 순차적 작업을 필요로 한다.
- 계산 복잡성의 관점에서, self-attention layer는 시퀀스 길이 n이 표현 차원 d보다 작을 때 순환 레이어보다 빠르다.
- 매우 긴 시퀀스를 포함하는 작업에 대한 계산 성능을 개선하기 위해, self-attention은 각 출력 위치를 중심으로 하는 입력 시퀀스에서 크기 r의 이웃만 고려하도록 제한될 수 있다. 이렇게 하면 최대 경로 길이가 O(n/r)이다.
- 부수적인 이점으로 self-attention은 더 해석 가능한 모델을 생성할 수 있다. 각 attention heads는 다른 tasks를 수행하도록 학습될 뿐만 아니라, 문장 내의 syntactic 하고 semantic 한 구조와 관련한 특성을 나타낸다.
5 Training
5.1 Training Data and Batching
- 약 450만 문장 쌍으로 구성된 표준 WMT 2014 영어-독일어 데이터 세트에 대해 훈련했다.
- 문장은 약 37000 토큰의 공유 소스 대상 어휘가 있는 바이트 쌍 인코딩을 사용하여 인코딩 되었다.
- 각 훈련 배치에는 약 25000개의 소스 토큰과 25000개의 대상 토큰이 포함된 문장 쌍 세트가 포함된다.
5.2 Hardward and Schedule
- 저자는 8개의 NVIDIA P100 GPU 사용
5.3 Optimizer
- Adam optimizer를 사용하였으며, 학습률을 훈련 과정에 따라 변화시켜 사용하였다.
5.4 Regularization
Residual Dropout & Label Smoothing 사용
6 Results
6.1 Machine Translation
- WMT 2014 영어-독일어 번역 작업에서 빅 트랜스포머 모델은 이전에 보고된 최고의 모델(앙상블 포함)보다 2.0 BLEU 이상 성능이 뛰어나 새로운 상태를 확립했다.
6.2 Model Variations
- Transformer의 다양한 구성 요소의 중요성을 평가하기 위해 저자는 기본 모델을 다양한 방식으로 변경하여 개발 세트인 newstest2013에서 영어-독일어 번역 성능 변화를 측정
7 Conclusion
- 본 연구에서 저자는 Transformer를 제안했다. 이는 recurrent layer들을 multi-headed self-attention으로 대체하여 encoder-decoder에서 사용한 최초의 모델이다.
- 번역 task에서 transformer는 recurrent 혹은 convolutional layers에 기반을 둔 구조들 보다 훈련이 유의미하게 빨랐다. 특히, WMT 2014 EN to GM, EN to FR 번역 task에서 최고 성능을 달성했다. 또한, 이전의 task에서 과거에 보도된 모든 것들을 ensemble 한 것보다 성능이 좋았다.