또치의 AI 공부정리/NLP 논문 정리

Attention Is All You Need(Transformer)

AI또치 2022. 1. 18. 21:14

이번 논문은 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

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). Figure 1

 

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에 의해 계산된다.

 

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). Figure 2

 

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 구하기 완료!

 

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). (1)

 

- 가장 흔하게 사용되는 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이 이를 막는다.

 

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).

 

- 이 연구에서는 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 활성화 함수를 포함한다.

 

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). (2)

 

- 선형 변환은 다른 위치들에 대해 동일하게 적용되지만, 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차원을 갖게 하였고, 그로 인해 두 벡터가 더해질 수 있게 한다.

 

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).

 

- 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 사이의 최대 경로 길이를 비교한다. 

 

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). Table 1

- 표 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

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). Table 2

- WMT 2014 영어-독일어 번역 작업에서 빅 트랜스포머 모델은 이전에 보고된 최고의 모델(앙상블 포함)보다 2.0 BLEU 이상 성능이 뛰어나 새로운 상태를 확립했다.

 

6.2 Model Variations

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). Table 3

- 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 한 것보다 성능이 좋았다.