Artificial Intelligence/Research Paper

Attention Is All You Need

Hyo__ni 2024. 5. 20. 11:11

Abstract

dominant sequence transduction model 들은, 인코더와 디코더를 포함하는 recurrent or conv neural network에 기초한다. 가장 좋은 성능을 내는 모델들 또한 attention 메커니즘을 통해 인코더와 디코더로 연결되어있다. 우리는 새로운 단순한 네트워크 구조를 제안한다. ⇒ Transformer; based solely on attention mechanisms, dispensing with recurrence & conv entirely.

 

두 번역 실험에서 병렬화가 가능해지고, 상당히 적은 시간이 훈련에 필요했던 반면에 우수한 성능을 냈다. WMT 2014 영어-독일어 번역 태스크에서 28.4 BLEU(*Bilingual Evaluation Understudy Score; 기계 번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역성능측정) 달성했으며, 앙상블 모델을 포함하여 기존 최고 결과를 2 BLEU 넘게 향상했다.

우리는 Transformer가 다른 작업들에도 잘 일반화된다는 것을, large and limited training data를 사용해서 영어 구문 분석을 성공적으로 수행함으로써 보여주었다.


1.  Introduction

RNN, LSTM, GRU 모델은 특히 sequence modeling, 언어 모델링과 기계번역과 같은 변환(transduction) 문제에서 최첨단 접근 방식으로 확고히 자리 잡았다. 수많은 노력들이 recurrent language model, 인코더-디코더 구조의 한계를 끊임없이 넓혀왔다.

 

Recurrent models은 전형적으로 입력 출력 시퀀스의 위치(symbol positions)를 따라서 계산을 고려한다. 계산 시간의 단계를 따라서 위치를 정렬하면, 'previous hidden states h(t-1)' 와 위치 't' 에 대한 입력으로 인해서, hidden states 'h(t)' 의 시퀀스를 생성한다.

이 본질적인 순차적 성질이 훈련 예제 내에서 병렬화를 불가능하게 하는데, 이는 메모리 제약으로 예제 간 일괄처리(batching)을 제한시킴으로써, 시퀀스 길이가 길어질수록 중요해진다. 

 

최근 연구는 인수분해(factorization tricks), 조건부계산(conditional computation)을 통해 상당한 계산 효율성 향상을 달성했고, 후자의 경우 모델 성능도 개선되었다. 하지만, 순차적 계산의 근본적인 문제는 여전히 남아있다.

 

어텐션 메커니즘은 다양한 작업의 sequence modeling, transduction 모델의 필수적인 부분이 되어, 입력 또는 출력의 시퀀스의 거리에 관계없이 종속성을 모델링을 할 수 있도록 했다. 몇 가지 경우를 제외하고는 전부 어텐션 메커니즘은 recurrent network와 함께 사용된다. 

 

이 연구에서 우리는 Transformer; (recurrence를 피하고 대신 입력과 출력 사이의 전역적 종속성(global dependencies)을 나타내기위해 전적으로 어텐션 메커니즘에 의지한 모델 구조) 를 제안한다. 트랜스포머는 상당히 더 많은 병렬화를 허용하며, 8개의 P100 GPU에서 단 12시간만 훈련된 후에도 번역 품질에서 최첨단에 도달할 수 있다.


2.  Background

순차적 계산을 줄이는 목표는 Extended Neural GPU, ByteNet, ConvS2S 의 기초를 형성시켰다. 이것들은 모두 basic block으로써 CNN을 사용하고, 입력과 출력의 모든 위치에 대해 모든 숨겨진 표현(hidden representations)을 병렬로 계산한다. 이 모델들은, 두 임의의 입력 또는 출력 위치 간의 신호를 연관시키는 데 요구되는 연산 수는 위치들 간의 거리에 따라 ConvS2S 에 대해서는 선형적으로, ByteNet 에 대해서는 로그적으로 증가한다. 이것은 멀리 떨어진 거리 사이의 종속성을 학습하기 더 어렵게 만든다. Transformer에서 이는 일정한 수의 작업으로 감소하는데, 비록 주의의 가중치 평균화로 인해 유효 해상도가 감소하지만, Multi-Head Attention으로 상쇄한다.

 

Self-attention(sometimes called infra-attention)은 시퀀스의 표현을 계산하기 위해서 단일 시퀀스 내에서 서로 다른 위치들을 연관시키는 어텐션 메커니즘이다. self-attention은 다양한 작업에서 성공적으로 사용된다. ⇒ 독해력(reading comprehension), 추상적 요약(abstractive summarization), 본문 함의(textual entailment), 독립적인 문장 표현(learning task-independent sentence representations)

sequence aligned recurrence 대신 recurrent attention 메커니즘을 기반으로 하는 End-to-end memory networks는 간단한 질의응답 및 언어 모델링 작업에서 잘 수행됨을 보였다.

 

우리가 아는한, Transformer는 입력과 출력의 표현들을 계산하기 위해서 'sequence-aligned RNNs' 또는 'convolution'을 사용하지 않고 전적으로 self-attention에 의존하는 첫번째 변환(transduction) 모델이다.

 


[Recurrent network]
텍스트, 음성 등의 sequential한 data를 처리하기 위해 사용되는데, sequential하다는 것은 등장 시점(또는 위치)을 정보로 취급한다는 의미이다. 따라서 context vector를 앞에서부터 순차적으로 생성해내고, 그 context vector를 이후 시점에서 활용하는 방식으로 구현한다. 즉, 이후 시점의 연산은 앞 시점의 연산에 의존적이다. 따라서 앞 시점의 연산이 끝나지 않을 경우, 그 뒤의 연산을 수행할 수 없다. → RNN 계열은 병렬 처리가 불가한 문제 발생!

[Transformer]
Attention 개념을 도입해 어떤 특정 시점에 집중하고, Positional Encoding을 사용해 sequential한 위치 정보를 보존했으며, 이후 시점에 대해 masking을 적용해 이전 시점의 값만이 이후에 영향을 미치도록 제한했다. → 병렬 가능!

 


3.  Model Architecture

대부분의 경쟁적인 neural sequence transduction 모델들은 인코더-디코더 구조를 가지고 있다. ⇒ seq2seq! (즉, 이전 단계가 완료되어야 다음 단계를 수행할 수 있으므로 병렬적 처리가 불가함)

 

여기서 인코더는 기호 표현(x1, ..., xn)의 입력 시퀀스를 연속적인 표현 Z = (z1, ..., zn)의 시퀀스로 매핑한다. Z가 주어지면, 디코더는 한 번에 하나씩 기호의 출력 시퀀스 (y1, ..., ym)를 생성한다. 각 단계에서 모델은 자가 회귀적(auto-regressive)이므로, 다음을 생성할 때 이전에 생성된 기호들을 추가적인 입력으로 사용한다. Transformer는 인코더와 디코더 모두에 self-attention과 point-wise FC layers 를 쌓아올린 아키텍처를 따른다.

3.1  Encoder and Decoder Stacks

Encoder

  -  The encoder is composed of a stack of N = 6 identical layers. (6개의 동일한 레이어)

  -  Each layer has two sub-layers. ⇒ The first is a multi-head self-attention mechanism, and the second is a simple, position- wise fully connected feed-forward network.

  -  We employ a residual connection around each of the two sub-layers, followed by layer normalization

  -  즉, the output of each sub-layer is LayerNorm(x + Sublayer(x)), 여기서 Sublayer(x) 는sub-layer 자체에 의해 구현된 함수

  -  residual connections 을 용이하게 하기 위한 모든 sub-layers 및 embedding layers 는 출력 차원이 512이다. (dmodel = 512)

 

Decoder

  -  The decoder is also composed of a stack of N = 6 identical layers. (6개의 동일한 레이어)

  -  In addition to the two sub-layers in each encoder layer, the decoder inserts a third sub-layer(; 인코더 스택의 출력에 대해 multi-head attention 을 수행하는)

  -  인코더와 유사하게, we employ residual connections around each of the sub-layers, followed by layer normalization.

  -  또한 디코더 스택의 self-attention sub-layer 를 수정하여, 위치들이 이후의 위치에 영향받는 것을 막는다.

  -  이 마스킹(masking)은 출력 임베딩이 한 위치만큼 오프셋되어 있으므로, 위치 i 에 대한 예측이 i 보다 작은 위치의 알려진 출력에만 의존함을 보장한다.

 


[Encoder]

  -  sentence를 input으로 받아 하나의 vector를 생성 ( → Encoding)
  -  Encoding으로 생성된 vector는 context라고 부르는데, 문장의 ‘문맥’을 함축해 담은 vector 이고, Encoder는 context를 제대로 생성(문장의 정보들을 빠뜨리지 않고 압축)해내는 것을 목표로 학습됨

[Decoder]
  -  context를 input으로 받아 sentence를 output으로 생성 ( → Decoding)
  -  Decoder는 input으로 context만을 받지는 않고, output으로 생성해내는 sentence를 right shift한 sentence도 함께 입력받음. 즉, Decoder는 sentence, context를 input으로 받아 sentence를 만들어내는역할

 

3.2  Attention

attention function  ⇒ 'query''key-value pairs' 를 출력으로 매핑하는 것 (query, keys, values, output 모두 벡터값)

출력은 값들의 가중 합(weighted sum)으로 계산되며, 각 value에 할당된 가중치는 query 와 해당하는 key 의 호환성 함수(compatibility function)에 의해 계산된다.

 


e.g.  The animal didn't cross the street, because it was too tired.

(1) attention? → 문장 내 두 token 사이의 연관정도(attention)을 계산하는 것으로, 같은 문장 내 존재하는 두 token 사이를 계산하면 self-attention, 서로 다른 두 문장에서 각각 존재하는 두 token 사이의 계산은 cross-attention.

(2) Query, Key, Value? →  attention 계산에는 이 3가지 vector가 사용됨
                                            - Query: 현재 시점의 token
                                            - Key: attention을 구하고자 하는 대상 token
                                            - Value: attention을 구하고자 하는 대상 token을 의미 (Key와 동일한 token)

(3) 'it' 이 무엇을 지칭하는지 알아내려면?
  - ‘it’ token과 문장 내 다른 모든 token들에 대해 attention을 구해야 함 → Query : ‘it’
  - Key, Value는 서로 완전히 같은 token을 의미, 문장의 시작부터 끝까지 모든 token들 중 하나가 됨.
  - 즉, Query는 고정되어 하나의 token을 가리키고, Query와 가장 부합하는(Attention이 가장 높은) token을 찾기 위해서 Key, Value를 문장 처음부터 끝까지 탐색!

Scaled Dot-Product Attention

-  The input consists of queries and keys of dimension 'dk', and values of dimension 'dv'.

  -  We compute the dot products of the query with all keys → divide each by dk → apply a softmax function → obtain the weights on the values.

실제로는 행렬 Q 로 묶인 queries 에 대해서 attention function을 동시에 계산한다. 키(keys)와 값(values)도 행렬 K와 V로 묶인다. 출력 행렬은 다음의 식으로 계산된다.

 

가장 흔하게 사용되는 attention function은 additive attention, dot-product(multiplicative) attention 두 가지 이다.

  -  dot-product attention : scaling factor(1/√dk)를 제외하고는 우리 알고리즘과 동일하다.

  -  additive attention : 단일 은닉층(single hidden layer)을 가진 feed-forward 네트워크를 사용하여 호환성(compatibility) 함수계산

 

두 방법은 이론적으로 복잡성이 유사한 반면에, 실제로는 dot-product attention이 훨씬 빠르고 공간 효율적(space-efficient)이다. 왜냐하면 최적화된 행렬곱(matrix multiplication) 코드를 사용하여 구현될 수 있기 때문이다. dk의 값이 작을 때 두 메커니즘은 유사하게 작동하지만, dk의 값이 클 때는 스케일링 없는 dot-product attention 보다 additive attention 이 더 우수한 성능을 낸다. dk의 값이 클 때, dot-product 의 크기가 커지며, 소프트맥스 함수가 극히 작은 기울기를 가진 지역으로 밀려날 것으로 의심한다.

⇒ 이 악영향에 대비하기 위해서 우리는 dot-product를 1/√dk 로 스케일링했다.

 


 -  input 으로 들어오는 token embedding vector를 fully connected layer에 넣어 세 vector를 생성
 -  세 vector를 생성해내는 FC layer는 모두 다름! 즉, self-attention에서는 Query, Key, Value를 구하기 위해 3개의 서로 다른 FC layer 존재
 -  FC layer들은 모두 같은 input shape, output shape 이다. (모두 동일한 token embedding vector를 input으로 받기 때문)
 -  FC layer로 구해진 Query, Key, Value 는 모두 같은 shape의 vector가 됨!

Multi-Head Attention

dmodel 차원의 keys, values, queries 로 single attention function 을 수행하는 대신, 우리는 dk, dk, dv 차원에 대해 각각 다른 학습된 선형 투영(linear projection)를 사용하여 queries, keys, values 를 h번 선형으로 투영(linearly project)하는 것이 유익하다는 것을 발견했다. 

queries, keys, values 의 투영된 버전 각각에 대해, 우리는 attention function 을 병렬로 수행하여 dv 차원의 출력 값을 산출한다. 이들은 연결(concatenated)되고 다시 한 번 투영되어 최종 값을 생성한다.

 

Multi-head attention : 다른 위치에 있는 서로 다른 표현 공간(subspaces)으로부터의 정보에, 모델이 합동으로 주의를 기울일 수 있도록한다. single-head attention 의 경우에는 평균화(averaging)가 이것을 제한한다.

 

이 작업에서는 h = 8개의 병렬 attention layers 또는 heads 를 사용한다. 각각에는 dk = dv = dmodel/h = 64 를 사용한다. 각 헤드의 차원이 줄어들기 때문에 전체 계산 비용(computational cost)은 완전한 차원(full dimensionality)의 single-head attention 와 유사하다.

Applications of Attention in our Model 

Transformer 는 multi-head attention 을 3가지 다른 방법으로 사용한다.

  -  "encoder-decoder attention" : queries 는 이전 디코더 레이어에서 가져오고, 메모리 keys, values 는 인코더의 출력에서 가져온다. 이는 디코더의 각 위치가 입력 시퀀스의 모든 위치를 참고할 수 있게한다. 이는 sequence-to-sequence 모델의 전형적인 인코더-디코더 어텐션 메커니즘을 모방한다.

  -  "self-attention in encoder" : 모든 keys, values, queries 의 self-attention layer 는 동일한 위치에서 오며, 인코더의 이전 레이어의 출력에서 가져온다. 인코더의 각 위치는 인코더의 이전 레이어의 모든 위치를 참고한다.

  -  "self-attention in decoder" : 디코더의 각 위치는 해당 위치까지의 모든 위치를 참고할 수 있다. 디코더에서 왼쪽 방향(leftward)의 정보 흐름을 방지하여 자기 회귀적 특성(auto-regressive property)을 보존해야 한다. 이를 위해 스케일된 dot-product attention내부에서 구현하며, softmax의 입력에서 불법적인 연결에 관련된 모든 값을 마스킹하여(-∞로 설정) 차단한다.

 

3.3  Position-wise Feed-Forward Networks

attention sub-layers 뿐만 아니라, 인코더와 디코더의 각 레이어에는 각 위치에 대해 별도로 동일하게 적용되는 fully connected feed-forward network 가 포함되어 있다. 이는 ReLU activation 을 사이에 둔 두 개의 선형 변환(linear transformations)으로 구성된다.

선형 변환(linear transformations)은 다른 위치 간에 동일한 반면에, layer 간에는 다른 매개변수를 사용한다. 이를 다른 방식으로 설명하면 kernel size 가 1인 두 개의 convolution 으로 표현할 수 있다. 입력과 출력의 차원은 dmodel = 512이며, 내부 레이어의 차원은 dff = 2048 이다.

 

3.4  Embeddings and Softmax

다른 sequence transduction 모델과 마찬가지로, 학습된 임베딩을 사용해서 입력 토큰과 출력 토큰을 dmodel 차원의 벡터로 변환시킨다. 또한 디코더 출력을 예측된 다음 토큰 확률로 변환하기 위해, 보통 학습된 선형 변환 및 softmax 함수를 사용한다.

모델에서는 두 임베딩 레이어와 pre-softmax 선형 변환 사이에 동일한 가중치 행렬을 공유한다. 임베딩 레이어에서는 이러한 가중치를 √dmodel 로 곱한다.

 

3.5  Positional Encoding

우리의 모델에는 recurrence, convolution 이 없기 때문에 시퀀스의 순서를 활용하기 위해 시퀀스 내 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입해야만 한다. 이를 위해서 우리는 인코더와 디코더 스택 바닥의 입력 임베딩(input embeddings)에 "positional encodings"을 추가했다. positional encoding 은 임베딩과 동일한 차원(dmodel)을 갖기 때문에 두 가지가 더해질 수 있다. positional encoding 의 선택지는 많으며, 학습되는 것과 고정된 것이 있다.

 

여기서는 다른 주파수의 sine, cosine 함수를 사용한다.

여기서 pos는 위치를, i는 차원을 나타낸다. 즉, 위치 인코딩의 각 차원은 사인파(sinusoid)와 일치한다. 파장(wavelengths)은 2π에서 10000 × 2π까지의 등비수열(geometric progression)을 형성한다. 고정된 오프셋 k에 대해 PEpos+k가 PEpos의 선형 함수로 표현될 수 있으므로, 모델이 관련된 위치에 대해 쉽게 참조할 수 있을 것으로 가정했기 때문에, 우리는 이 함수를 선택했다.


4.  Why Self-Attention

self-attention layers 를 다양한 측면에서 recurrent, convolutional layers 와 비교해 보자.

  -  total computational complexity per layer (각 layer에서 연산 복잡도가 더 작아서 속도가 빠름)

  -  amount of computation that can be parallelized (recurrent network와 달리, 모든 sequence position을 연결하여 한번에 처리)

  -  path length between long-range dependencies in the network → 장거리 종속성을 학습하는 것은 많은 sequence transduction 작업에서 중요하다. 이러한 종속성을 학습하는 능력에 영향을 미치는 주요 요소는 네트워크에서 forward, backward 신호가 통과해야하는 경로의 길이이다. input, output sequences 의 위치 조합 사이의 경로가 짧을수록 종속성을 학습하기가 쉽다. 따라서 우리는 또한 다른 layers 유형으로 구성된 네트워크에서 두 input, output 위치 사이의 최대 경로 길이를 비교한다.

 

표 1에서 알 수 있듯이 self-attention layers 는 순차적으로 실행되는 일정한 수의 작업으로 모든 위치를 연결하는 반면, recurrent layers 에서는 O(n) 개의 순차적 작업이 필요하다. 계산 복잡성 측면에서, 시퀀스 길이(n)가 표현 차원(d)보다 작을 때 self-attention layers 는 recurrent layers 보다 빠르다. 

 

long sequences 작업의 계산 성능을 향상시키기 위해서, self-attention은 각 출력 위치를 중심으로 input sequence 에서 크기 r의 인접한 영역만을 고려하도록 제한될 수 있다. 이렇게 하면 최대 경로 길이가 O(n/r)로 늘어난다. 

 

  -  self-attention could yield more interpretable models (attention distribution 확인 가능)


5.  Training

WMT 2014 English-German dataset consisting of about 4.5 million sentence pairs, byte-pair encoding (which has a shared source target vocabulary of about 37000 tokens.)

 

WMT 2014 English-French dataset consisting of 36M sentences and split tokens into a 32000 word-piece vocabulary.

 

Sentence pairs were batched together by approximate sequence length.

Each training batch contained a set of sentence pairs containing approximately 25000 source tokens and 25000 target tokens.

 

Optimizer : Adam

Regularization : three types of regularization

Residual Dropout : We apply dropout to the output of each sub-layer, before it is added to the sub-layer input and normalized. In addition, we apply dropout to the sums of the embeddings and the positional encodings in both the encoder and decoder stacks. (Pdrop = 0.1)


7.  Conclusion

트랜스포머는 attention 으로만 구성된 최초의 sequence transduction 모델로, 인코더-디코더 구조에서 가장 일반적으로 사용되는 recurrent layers를 multi-headed self-attention 으로 대체했다. 번역 작업의 경우, 트랜스포머는 recurrent, convolutional layers 를 기반으로 한 구조보다 훨씬 빠르게 훈련될 수 있다.

트랜스포머를 확장해서, 텍스트 이외의 입출력 형태를 다루는 문제에 적용하고, 이미지, 오디오 및 비디오와 같은 큰 데이터를 효율적으로 처리하기 위해서 local, restricted attention mechanism을 탐구할 것이다. 생성을 덜 순차적(less sequential)으로 만드는 것도 연구 목표이다.