상세 컨텐츠

본문 제목

[6주차/DL2팀/논문리뷰] Attention is all you need

2023 Summer Session/DL

by 원준혁 2023. 8. 19. 19:01

본문

# ABSTRACT

Sequence transduction modelencoderdecoder를 포함하는 복잡한 RNN이나 CNN 구조에 기초한다. 가장 성능이 좋은 모델은 attention 메커니즘을 통해 encoderdecoder를 연결한다. 논문에서는 RNNCNN을 배제하고 오직 attention 메커니즘을 기반으로하는 단순하지만 새로운 네트워크 구조를 제안한다. 두 가지 기계 번역 과제를 대상으로 실험한 결과 이 Transformer 모델이 품질이 우수하며 처리성도 높아 학습에 훨씬 적은 시간이 소요된다. Transformer는 대규모 또는 제한된 소규모 학습 데이터 기반의 영어 구문 분석 과제에서도 높은 성능을 보이며 다른 과제들 또한 일반화가 가능하다.

 

1. INTRODUCTION

RNN, LSTM, RNN은 언어 모델링, 기계 번역 등의 sequence modeling과 번역 문제에 성과를 보여왔다. 이후 RNNencoderdecoder 구조의 경계를 확장시키기 위해 수많은 노력이 있었다. RNN 모델은 이전 결과를 입력으로 받는 순차적 특성 때문에 병렬처리를 배제한다. 최근의 연구는 'factorization trick'과 '조건부 계산'을 통해 연산 효율을 대폭적으로 향상시켰으나 아직까지 순차적 계산의 근본적인 제약은 여전히 남아있다. Attention 메커니즘은 sequence 모델링 및 변환 모델을 처리하는데 필수적인 부분이 되어 encoder decoder sequence의 거리에 관계없이 모델링이 가능하다. 몇 가지 경우를 제외하고는 RNNattection 메커니즘이 함께 사용된다. 논문에서는 RNN을 피하고 Attention 메커니즘에 전적으로 의존하여 입력과 출력 사이의 global dependence를 이끌어내는 모델 구조인 Transformer를 제안한다. Transformer는 짧은 교육 시간에 훨씬 더 많은 병렬화가 가능하여 번역 성능 면에서 새로운 수준에 도달 가능하다.

 

2. BACKGROUNDS

순차적 계산을 줄이려는 목표는 확장 GPU, ByteNet, ConvS2S 등의 기초를 형성하며 이들 모두 기본 구성 block으로 CNN을 사용하여 모든 입력 및 출력 위치에 대해 hidden repersentation을 병렬적으로 계산한다. 이 모델들에서 두 개의 임의 입력 또는 출력 위치의 신호를 연관시키는 데 필요한 연산량은 ConvS2S의 경우 선형적, ByteNet의 경우 대수적으로 증가한다. 이것은 먼 거리에서의 의존성을 학습하는 것을 어렵게 만든다. Transformer에서는 평균 attention weight를 사용하여 연산을 효율적으로 줄인다.(Multi-Head Attention 효과)

Self attention은 서로 다른 위치의 sequence를 계산하기 위해 만들어진 attention 메커니즘이다. self attention은 읽기 이해, 추상적 요약, 독립 문장 표현을 포함한 다양한 과제에서 성공적으로 사용되었다. End-to-end 메모리 네트워크는 sequence 정렬 반복 대신 recurrent attention 메커니즘을 기반으로 하여 질문 응답 및 언어 모델링 작업에서 잘 수행된다. 그러나 Transformersequence 정렬 RNN이나 CNN을 사용하지 않고 입력 및 출력을 계산하는 데 전적으로 self attention에 의존하는 최초의 변환 모델이다.

 

3. MODEL  ARCHITECTURE

성능이 뛰어난 neural sequence transduction 모델은 대부분 encoder-decoder 구조를 가지고 있다.

 

 

이 구조에서는 이전에 생성된 출력을 다음 단계에서 사용하기 때문에 이전 단계가 완료되어야 다음 단계를 수행할 수 있다. transformer 또한 이 구조를 따르며, 그 내부는 self-attention fully connected layer(완전연결층)으로 구성되어 있다. (아래 Transformer 구조 참고)   

Transformer Model Architecture

 

3.1 Encoder and Decoder Stacks

encoder와 decoder 모두 Self-Attention point-wise FC layer를 쌓아올려 사용한다.

  • encoder : 6개의 동일한 layer로 이루어져 있으며 각각의 layer는 2개의 sub-layer를 가진다. 하나는 multi head self attention layer 이고 나머지 한 layer는 Feed Forward Neural Network이다. 각 sub layer의 reseidual connection을 용이하기 위해 모든 차원을 512차원으로 embedding하고 layer normalization을 적용한다.
  • decoder : 6개의 동일한 layer로 이루어져 있으며, 각 레이어는 enoder가 Sub layer로 가진 multi head self attention  layer 와 Feed Forward Neural Network 외에 하나의 layer를 더 가진다. 즉, encoder의 stack 출력에 대해 Multi head Attention을 수행한다. 마찬가지로 residual connection 뒤 layer normalization을 한다. 순차적인 결과를 위해 self attention을 변형하는 masking을 한다.

 

3.2 Attention

3.2.1 Scaled Dot-Product Attention

Q(Query) : 영향을 받는 vector /  K(Key) : 영향을 주는 vector /  V(Value) : 주는 영향의 가중치 vector

 

Transformer에서는 Attention value Scaled dot-product attention 방식으로 계산하며 이는 다음과 같다.

Output value의 가중합으로 계산된다. 가중합에 이용되는 가중치는 Query와 연관된 key의 호환성 함수에 의해 계산된다. 한마디로 Query Key를 비교해 Query의 값을 찾는 것으로 볼 수 있다.

 

계산과정 요약
1.
워드 임베딩에 가중치를 곱하여 Query, Key, Value를 계산한다.
2. Query * Key = attention score
이며 해당 값이 높을 수록 연관성이 높고, 낮을수록 연관성이 낮다.
3. key
차원수로 나누고 softmax를 적용한다.
softmax 결과 값은 key값에 해당하는 단어가 현재 단어에 어느정도 연관성이 있는지를 나타낸다.
4.
문장 속에서 지닌 입력 워드의 값 = (softmax 값과 value 값을 곱하여 다 더한다.)

 

3.2.2 Multi-Head Attention

위 식에서 알 수 있듯이 Attention을 여러 head에서 실행한 후, concat 함으로써 이들을 합치는 것이다.  한마디로 Attention을 한 번에 그치는 것이 아니라 여러 embedding space 상에서 수행하는 개념이라고 볼 수 있다.

Multi-Head Attention Head (논문에서는 8)를 두어 모델이 Head 개수만큼의 Scaled dot product Attention 연산을 수행할 수 있게 하여 다양한 관점의 Attention Map을 만들도록 한다.

 

각 head의 차원 수가 줄어들었으므로 전체 계산량은 single-head attention과 비슷하다.

 

3.2.3 Applications of Attention in our Model

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

 

(1)   Encoder-decoder attention 
   이전 decoder layer에서 오는 Query들과 encoder의 출력으로 나오는 memory key, value들과의 attention이며 decoder의 모든 위치에서 input sequence의 모든 위치를 참조할 수 있게 한다.

(2)   Self-attention in encoder 
   해당 Encoder의 각 위치들이 이전 layer의 모든 위치들을 참조할 수 있다.

(3)  Self-attention in decoder 
   decoder
의 각 위치들은 decoder 내의 다른 위치들을 참조할 수 있는데 이전부터 자신 위치까지만을 참조할 수 있다. 이는 auto-regressive 성질을 살리면서도 정보가 잘못 흐르는 것을 막기 위함이다.

 

3.3 Position-wise Feed-Forward Netrowks

Attention layer과 함께 fully connected feed-forward network가 사용되며 encoder 및 decoder의 각 계층에 따로 위치한다.

두 개의 선형 변환(linear transformation)으로 구성되는데 두 선형 변환 사이에는 ReLU 활성화가 있다.

 

3.4  Embeddings and Softmax

다른 sequence transduction 모델과 마찬가지로, input ouput 토큰 embedding layer를 거쳐서 사용한다. 이렇게 생성된 embedded vector semantic한 특성을 잘 나타낼 수 있다. 또한 input embedding output embedding에서 weight matrix를 서로 공유하여 사용한다.

 

3.5 Positional Encoding

TransformerRecurrent model을 사용하지 않고 오직 Attention mechanism만을 사용하여 만들기 때문에 Sequence 정보를 담아낼 수가 없다. 따라서 별도로 이러한 sequence 정보를 데이터에 추가해야 하는데 이 역할을 하는 것이 바로 positional encoding이다.

 

논문에서는 positional encoding과 관련하여 sin과 cos 함수, 즉 주기 함수를 이용한 방법을 소개하고 있다.

pos : position, i : dimension

모델(Encoder, Decoder)에 입력된 문장의 단어들은 Embedding을 거친 후, Positional Encoding을 통해 문장에서 자신의 위치가 어딘지 부여받게 된다. (고정된 offset k에 대해 PE_pos+k PE_pos의 선형 함수로 표현될 수 있기 때문에 모델이 쉽게 상대적인 위치를 참조할 수 있을 것이라 가정하고 있다.)

 

 

4. WHY SELF ATTENTION

논문에서는 기존의 RNN,CNNSelf-Attention layer을 비교한다. 비교를 위해 layer당 총 계산 복잡도, 요구되는 최소의 sequential operations을 통해 측정한 parallelized될 수 있는 연산의 양, 그리고 long-range dependency들간의 path 길이 등을 확인한다. 여기서 layerforward/backward가 가로지르는 경로의 길이는 학습 능력에 영향을 끼치게 된다. 경로의 길이가 짧을수록, long-range dependencies를 학습하기 쉬울 것이다.

Self-Attention layerlayer의 모든 위치에 상수 번의 계산을 통해 연결된다. 이는 기존의 recurrent layer의 시간 복잡도에 비해 빠르다. Input sequence의 길이가 representation 차원 d보다 확실하게 작은 경우 network가 더 빠른 것을 보장할 수 있다. 여기서 neighborhood 크기를 r로 제한하면 가장 긴 path 길이O(n/r)로 단축할 수 있다.(O : 시간 복잡도)

Kernel 폭이 k(<n) single convolutional layer의 경우 input layeroutput layer의 모든 position을 연결하진 않는다. 이 경우 시간복잡도가 O(k*n*d + n*d^2)로 감소하고 심지어 k=n인 상황에서도 이 연구에서 사용하는 구조인 self-attention layerpoint-wise feed-forward layer의 조합과 같다. 또한, 이 연구의 self-attention 모델이 더 해석에 용이하였다.

 

5. TRAINING

Training에 사용된 dataWMT 2014 영어-독일어 dataset이며, 4.5M 개의 문장들을 포함한다. 이들은 byte-pair encoding되어있고, 37k의 어휘 토큰을 이용한다. 영어-프랑스어 데이터는 36M개의 문장을 포함한다.

Optimizer로는 Adam optimizerbeta1 = 0.9, beta2 = 0.98, eps = 10^(-9)를 이용했다. learning rate은 다음과 같다.

learning rate 식

여기서 warmup_step = 4000으로 설정하여 그 이전에는 learning rate가 선형으로 상승하다 그 이후 inverse sqrt에 비례해 감소하도록 하였고, 이후 3가지 정규화를 실시했다. sub-layerinput이 들어가기 전에 dropout을 실시하고, encoderdecoder 모두에 positional encodingdroupout을 적용한다. 마지막으로, training 도중에 epx_{1s} = 0.1의 값을 label smoothing을 해준다.

 

6. RESULT

6.1 Machine Translation

영어-독일어 데이터에 연구진이 개발한 Transformer(big)을 적용했을 때, 앙상블 모형을 포함한 기존의 모형들보다 2.0 BLEU 높은, 28.4 BLEU를 기록하였다. 영어-프랑스어 데이터에는 훨씬 더 높은 41.0 BLEU를 기록하면서도 training cost가 기존에 비해 1/4로 낮아지는 성능을 보였다. Table 2는 여러 모델과 연구진의 Transformer 모델의 성능 차이를 보여준다.

 

 

Transformer의 두 모델 중 base 모델은 마지막 5개의 체크포인트를 평균내어 사용하였고, big 모델은 20개의 체크포인트를 평균 내어 사용하였다. Output의 길이가 Input보다 50을 초과해 길어질 때 모델의 작동이 종료되도록 설정했지만, 그 이전에도 종료가 가능하다.

 

6.2 Model Variations

Base 모델에 여러 변화를 주었을 때의 결과를 Table 3에 정리하였다.

 

 

(A)에서는 attention head의 수에 변화를, (B)에서는 attention key sized_k에 변화를 주었고, B의 경우에 d_k를 줄일 때 모델 성능이 감소하는 것을 확인할 수 있었다.

 

6.3 English Constituency Parsing

위 알고리즘이 다른 task에도 적용되는지 확인하기 위해 English constituency parsing에도 적용해보았다. taskoutput이 강한 구조적 제약이 있고, input에 비해 유의미하게 길다.

연구진은 d_model = 10244-layer transformerWall Street Journal40K개 문장으로 학습시키고, 또한 semi-supervised learning을 통해 BerkleyParser 말뭉치를 약 17M개 학습시켰다. 어휘 토큰은 각각 16천개, 32천개를 이용했다. Droupout을 선별하는데는 소수의 실험 수만이 이용되었다.

 

 

Table 4의 결과는, 이 알고리즘이 tasktuning을 거치지 않았음에도 불구하고 여러 task에 높은 성능을 보임을 알 수 있었다. , transformer 알고리즘은 task에 무관하게 높은 성능을 보였다.

 

 

7. CONCLUSION

이 논문에서는 attention 모델을 이용한 Transformer 알고리즘을 소개했다. 이 알고리즘은 RNN,CNN 기반 모델들에 비해 유의미하게 빠른 속도를 가지고 있으며, 기존의 앙상블 모형들에 비해서도 WMT 2014의 영어-독일어, 영어-프랑스어 번역 문제들에 높은 성능을 보였다.

관련글 더보기

댓글 영역