논문

Attention Is All You Need

Frog Photo Developer 2021. 3. 17. 17:24

Abstract

 

  • sequence transduction modelsencoder, decorder를 포함하는 복잡한 recurrent or convolution neural networks 에 기초한다.
  • attention 메커니즘을 통해 encodedecoder를 연결한다.
  • 본논문에서는 recurrent convolution 를 제거한 attention메커니즘에 기반한 간단한 network architecture model(Transformer) 제안한다.
  • 실험을 통해 우수한 품질과 병렬처리가 용이하며 학습시간도 적게 소요되는 것을 확인 하였음.

 

Introduction

 

  • RNN LSTM GRUsequence modeling and transduction problems such as language modeling and machine translation의 방법으로 확고히 자리 잡아왔다.
  • 많은 연구로 인코더와 디코더의 아키텍처에 사용되어저 왔다.
  • RNN LSTM GRU 는 이전결과를 입력으로 받는 순차적 특성때문에 병렬처리는 불가하다. 이는 길이가 긴 sequence에서는 치명적이다.
  • Recurrent의 제약사항을 억제하고 입력과 출력사이의 전역 의존성을 끌어내기 위해 Attention 메커니즘에 기반한 Transformer 아키텍처 제안

 

Model Architecture

 

Transformer 구조

 

Encoder:

인코더의 구조

  • 입력 시퀀스 (x1 …… xn)을 입력으로하여 sequence의 연속적인 표현 z(z1 ….. zn)를 얻음
  • N=6개의 동일한 층으로 구성, 처음 input이 첫번째 층에 들어가고 그 다음층은 이전층의 결과값이 들어감
  • 각층에는 2개의 sub-layer가 존재( multi-head self-attention , fully connected feed forward )
  • 2개의 sub-layer에 대해 Residual connectionlayer normalization 수행
  • sub-layer의 출력은 LayerNorm(x + Sublayer(x))
  • 모델의 모든 레이어는 512차원으로 임베딩(dmodel = 512)

Decoder:

디코더의 구조

  • 인코더와 동일한 N=6 개의 동일한 층으로 구성, residual connection을 수행한 후 layer normalization 수행하는 것도 동일
  • 각층에는 2개의 sub-layer외에도 Encoder의 출력을 통해 multi-head self-attention을 수행하는 3번째 layer 존재
  • 디코더는 순차적으로 결과를 만들어야 하므로, masking을 통해 현재 position i보다 작은(=이전 출력 output)들에 대해서만 의존을 하게 한다.

 

 

Attention

 

  • Q,K.V 벡터

Q : 입력 문장의 모든 단어 벡터들 ( hidden layer output state )
K
: 입력 문장의 모든 단어 벡터들 ( hidden layer output state )
V
: 입력 문장의 모든 단어 벡터들 ( hidden layer output state )

 

  • dk 차원을 가짐

dk = dv = dmodel / h = 64(dmodel=512, h = 논문에서는 8을 사용)

 

Scaled Dot-Product Attection

Scaled Dot-Product Attention

  • attention의 스코어 (QK-dot product) 한 것에서 scale한다 하여서 Scaled Dot-Product Attention이라고 부름
  • dot products 읙 값이 커지면  softmax 함수에 doc products를 넣으면 기울기가 극도로 작아지는 것으로 의심하여, scale하여 준다
  • Q=K=V 인코더의 output state

MultiHead Attention

MultiHead Attention

  • 단일 Attention을 dmodel차원의 keys, values, queries와 같이 수행하는 것 대신, h번의 dk, dk, dv 차원의 keys, queries, values 를 학습하는게 더 이점이 있다고 발견하였다.
  • 각각의 queries, keys, values 의 버전으로 attention 함수를 실행하면 병렬적으로 수행가능하고, dv 차원의 output을 얻을수 있다. 이러한 값들을 concatenated 하고 다시 가중치와 곱하면 최종값을 얻을수 있다.
  • dk = dv = dmodel(512) / h(논문에서 사용한 값 8)

 

Positional Encoding

Positional Encoding

  • transformerrecurrent convolution이 아니므로 트랜스포머에서 sequence 순서를 사용할수 있게 sequence 토큰의 상대적 이거나 절대적 위치에 대한 정보를 주입하여 준다.
  • colum이 짝수일때는 sin, 홀수일때는 cos함수 사용
  • pos: sequence의 위치, i: index
  • 구한 positional Encodingembedding vector를 더하여 입력으로 사용

Why Self-Attention

  • 레이어당 계산비용이 효율적이다
  • 병렬적으로 계산이 가능하다
  • 거리가 먼 시퀀스간의 학습도 잘이루어진다 (rnn 대비)

Training

Optimizer

Transformer 의 Learning Rate  계산식

Adam optimizer 사용

  • beta1 = 0.9, beta2 = 0:98 and epsilon = 1e-9
  • 처음에는 warmup_step으로 training step 그리고 그이후 부터는 Learning Rate가 감소한다 step_num의 inverse square root에 비래해.
  • 처음에는 학습이 제대로 대지 않았으므로 learning rate를 빠르게 증가시켜 변화를 크게 주다가, 학습이 어느정도 되었을때 learning rate를 천천히 감소시켜 변화를 작게 주기 위함

 

Residual Dropout

  • 각레이어에서는 Dropout을 수행함 P(drop)=0.1

 

Result

Transformer 의 BLEU 스코어 비교