Abstract
- RNN을 제거하고 Attention만 사용하는 모델, Transformer에 대해 소개한다.
- 기계 번역 작업에 대한 실험 결과, 해당 모델은 병렬 처리가 가능하고 학습 속도가 상당히 단축되었다.
- 번역 대회에서 SOTA를 달성하였다.
Introduction
- RNN, 특히 LSTM, GRU는 시퀀스 모델링이나 기계 번역 문제 등에서 SOTA를 달성하였다.
- 하지만 RNN의 순차적 계산 방법으로 병렬화를 제한하며 길이가 긴 시퀀스에 대해서 메모리 제약으로 배치를 제한시킨다.
- Factorization tricks 나 conditional computation을 사용한 최근 연구는 계산 효율성을 상당히 높였지만 여전히 본질적인 문제는 남아있다.
- Attention mechanism은 input, output 시퀀스의 길이와 관계없이 의존성을 모델링함으로써 sequence modeling과 transduction model에 중요한 요소로 자리잡았다. 하지만 대부분은 RNN과 결합되어 사용된다.
- 해당 논문에서는 Transformer를 제안한다. Transformer는 recurrence를 회피하고 input과 output 사이의 global dependency를 찾는데 전적으로 attention mechanism에 의존한다.
- Transformer는 더 많은 병렬화가 가능하며 SOTA를 달성하였다.
Model Architecture
아래 그림과 같이 Encoder와 decoder 각각에 stacked self-attention과 point-wise fully connected layers가 존재한다.
Encoder and Decoder Stacks
Encoder:
- 6개의 layer로 구성된다.
- 각 layer는 두개의 sub-layer를 가지고 있는데, 첫번째는 multi-head self-attention mechanism이며, 두번째는 간단한 position-wise fully connected feed-forward이다.
- 각각의 sub-layer에 residual connection이 있고, 뒤이어 LayerNorm(x + Sublyer(x))인 layer normalization이 존재한다.
- Residual connections을 용이하게 하기 위해 임베딩 레이어를 포함한 모든 sub-layer는 512 dimension의 output을 갖는다.
Decoder:
- 동일하게 6개의 layer로 구성된다.
- Encoder의 2개의 sub-layer에 더하여 encoder stack의 출력을 통해 multi-head attention을 수행하는 세번째 sub-layer가 존재한다.
- Encoder와 동일하게 residual connection과 layer normalization이 존재한다.
- Decoder의 self-attention sub-layer에 masking을 추가하여 현재 position보다 뒤에 있는 요소에 attention을 적용하지 못하도록 해준다. position i 이전에 있는 정보들만 사용하여 i에 대한 예측을 하는 것이다.
Attention
- Attention function은 query와 key-value 쌍을 output에 매핑하는 것이며, query, keys, values, ouput은 모두 vector이다.
- Output은 values의 가중치합으로 계산되며, 각 value에 할당된 weight은 key와 query의 compatibility function으로 계산된다.
Scaled Dot-Product Attention
- Input으로는 dk 차원의 query와 key, dv차원의 values를 가진다.
- query와 key의 dot product후 sqrt(dk)로 나눈다. 그 후 values에 대한 weight을 얻기 위해 softmax function을 적용한다.
- Dot products가 너무 크면 softmax의 gradient가 작아지기 때문에 1/sqrt(dk)로 scaling한다.
Multi-Head Attention
- dmodel-dimensional keys, values, queries를 사용하여 단일 attention function을 수행하는 것보다 query, key, value에 대해서 서로 다르게 학습된 dk, dv, dv 차원의 linearly project를 h번 계산하는 것이 더 좋다.
- 왜냐하면 각 벡터의 크기를 줄여주고 병렬 처리가 가능하기 때문이다.
Position-wise Feed-Forward Networks
- attention sub-layer 말고도 encoder와 decoder의 각 layer는 fully connected feed-forward network를 포함한다.
- 해당 네트워크는 ReLU를 사이에 두고 두개의 선형변환으로 구성되어 있다.
- 선형 변환은 position마다 같은 parameter를 공유하지만 layer가 바뀔 때 parameter가 달라진다.
- Input과 output의 차원은 dmodel = 512 이며, inner-layer의 차원은 dff=2048 이다.
Embedding and Softmax
- 다른 sequence transduction model과 비슷하게 input과 output 토큰을 dmodel 차원의 벡터로 변환하여 embedding을 학습한다.
- 일반적으로 학습된 linear transformation과 softmax 함수를 사용하여 decoder의 output을 다음 token을 예측하기 위한 확률로 변환시킨다.
- 해당 모델에서는 두개의 임베딩 레이어와 pre-softmax 선형 변환에서 동일한 weight 행렬을 공유한다.
- Embedding layer에서는 sqrt(dmodel)을 weight에 곱한다.
Positional Encoding
- 해당 모델에는 recurrence나 convolution이 존재하지 않기 때문에 sequence의 순서를 주입하기 위해 encoder와 decoder의 스택 하단에 positional encoding을 추가한다.
- Positional encoding은 임베딩의 dmodel과 같은 차원을 가지므로 둘은 더해질 수 있다.
- 해당 논문에서는 sin과 cos 함수를 사용하여 positional encoding을 하였다.
Why Self-Attention
- Layer당 계산 복잡도가 줄어든다.
- 병렬처리를 더 많이 할 수 있다.
- 장거리 dependency를 잘 학습할 수 있다.
- (추가) Self-attention은 더 해석이 가능한 모델을 만들어낸다.
'paper review' 카테고리의 다른 글
[논문 리뷰/컴퓨터비전] Vision Transformer(ViT) (0) | 2022.03.07 |
---|---|
[논문 리뷰/컴퓨터비전] FaceNet (0) | 2022.03.07 |
[논문 리뷰/강화학습] Playing Atari with Deep Reinforcement Learning (0) | 2021.09.28 |
[논문 리뷰/추천시스템] NCF(Neural Collaborative Filtering) (0) | 2021.09.28 |