Abstract
- sequence transduction models은 encoder, decorder를 포함하는 복잡한 recurrent or convolution neural networks 에 기초한다.
- attention 메커니즘을 통해 encode와 decoder를 연결한다.
- 본논문에서는 recurrent와 convolution 를 제거한 attention메커니즘에 기반한 간단한 network architecture model(Transformer)를 제안한다.
- 실험을 통해 우수한 품질과 병렬처리가 용이하며 학습시간도 적게 소요되는 것을 확인 하였음.
Introduction
- RNN LSTM GRU는 sequence modeling and transduction problems such as language modeling and machine translation의 방법으로 확고히 자리 잡아왔다.
- 많은 연구로 인코더와 디코더의 아키텍처에 사용되어저 왔다.
- RNN LSTM GRU 는 이전결과를 입력으로 받는 순차적 특성때문에 병렬처리는 불가하다. 이는 길이가 긴 sequence에서는 치명적이다.
- Recurrent의 제약사항을 억제하고 입력과 출력사이의 전역 의존성을 끌어내기 위해 Attention 메커니즘에 기반한 Transformer 아키텍처 제안
Model Architecture
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 connection과 layer 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
- attention의 스코어 (Q∙K-dot product) 한 것에서 scale한다 하여서 Scaled Dot-Product Attention이라고 부름
- dot products 읙 값이 커지면 softmax 함수에 doc products를 넣으면 기울기가 극도로 작아지는 것으로 의심하여, scale하여 준다
- Q=K=V 인코더의 output state
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
- transformer는 recurrent 와 convolution이 아니므로 트랜스포머에서 sequence 순서를 사용할수 있게 sequence 토큰의 상대적 이거나 절대적 위치에 대한 정보를 주입하여 준다.
- colum이 짝수일때는 sin, 홀수일때는 cos함수 사용
- pos: sequence의 위치, i: index
- 구한 positional Encoding와 embedding vector를 더하여 입력으로 사용
Why Self-Attention
- 레이어당 계산비용이 효율적이다
- 병렬적으로 계산이 가능하다
- 거리가 먼 시퀀스간의 학습도 잘이루어진다 (rnn 대비)
Training
Optimizer
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
'논문' 카테고리의 다른 글
LLaMA (5) | 2023.05.17 |
---|---|
ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS (0) | 2021.12.21 |
NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE (0) | 2021.05.13 |
RoBERTa: A Robustly Optimized Bert Pretraining Approach (1) | 2021.03.29 |