[주저자] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017)
[기록] 22.02.26 ~ 22.03.08
[옮김] 22.03.15
RNN (Recurrent Neural Network), LSTM (Long Short-Term Memory), GRU (Gated Recurrent Neural network)는 시퀀스/언어 모델링 및 기계 번역 등과 같은 transduction 문제에 대한 최첨단 접근법이다.
Recurrent model에서는 input과 output의 sequence를 토큰화해 계산을 진행한다. 각 step에 따라서 position을 정렬시켜서 번째 step의 input과 이전 단계 hidden state인 를 input으로 받아 를 생성해낸다. 이렇게 ‘단계적’인 특성은 훈련과정에서의 parallelization을 배제시키는데, 이는 시퀀스 길이가 길어지면 길어질수록 배치화를 제한해버린다는 큰 문제를 야기한다.
어텐션 메커니즘은 input과 output 시퀀스 간의 거리와 관계없이 dependency 모델링을 가능하게 해준다. 대체로 몇 가지 경우를 제외하고는 거의 recurrent network와 함께 사용된다.
이 논문에서는 recurrence를 피하고 전적으로 attention에만 의존하는 Transformer를 제안한다.
CNN (Convolutional Neural Networks) 모델들, 예를 들어 ConvS2S, ByteNet과 같은 모델들에서는 두 임의의 input과 output position에서의 신호를 연결시키기 위해 필요한 계산 수가 position 간 거리에 따라 CovS2S는 linearly, ByteNet에서는 logarithmically하게 증가한다. 따라서 이 distance가 커질수록 dependency를 학습하기 어려워지게 된다.
그러나 Transformer에서는 거리에 따라 계산 횟수가 증가하는 CNN과는 달리, 상수 번의 계산만이 필요하다.
Self-attention (or intra-attention)은 한 시퀀스의 representation을 계산하기 위해 단일 시퀀스 내의 서로 다른 position을 관련시킨다. 이 메커니즘은 reading comprehension, sentence representation 등에서 사용된다.
End-to-end memory network는 recurrent attention mechanism을 기반으로 하며, 간단한 문장형 질문에 답하는 문제에 사용된다.
그러나 Transformer는 앞서 언급되었듯, RNN,CNN을 사용하지 않고 전적으로 self-attention에만 의존한다.
신경망 기반 시퀀스 변형 모델(Neural Sequence Transduction Model)들은 대체로 encoder-decoder 구조를 가진다. encoder는, input sequence 을 을 output으로 mapping하고, decoder는 을 받아 을 output으로 생성한다. 그리고 매 단계 auto-regressive하다. “auto-regressive하다”는 것은 이전에 생성된 symbol을 additional input으로 삼아, 다음 symbol을 생성할 때에 사용하는 것을 의미한다.
Transformer는 전반적으로 이런 구조를 따르되, self-attention layer를 encoder에, fully connected layers를 decoder에 각각 쌓아 사용한다.
Attention 함수는 query와 key-value 쌍 집합을 output으로 mapping하는 함수이다. (query, key, value, output 모두 벡터).
Scaled Dot-Product Attention의 input은 차원의 query와 key, 차원의 value 벡터이다.
attention function으로 주로 쓰이는 2가지가 additive attention, dot-product attention이다.
scaling factor로 작용하는 의 영향으로, 차원 가 작은 값일수록 두 attention function이 유사해지지만, 큰 값일수록 dot product 값이 커지기에 해당 scaling factor를 곱해 스케일을 조정한다.
-dimensional keys, values, queries로 단일 attention function 수행하는 것보다, 차원에 대해 학습된 keys, values, queries를 번 수행하는 것이 효율적이다. 각각의 keys, values, queries를 개로 나눈 값들의 attention을 구한 후, concatenate한다. 그리고 한 번 더 linear projection(선형 사영)을 하여 결과벡터를 얻는다.
Transformer는 multi-head attention을 3가지 방식으로 사용한다.
encoder-decoder attention layer in decoder
: 쿼리 = 이전 decoder layer의 output,
key, value = encoder의 최종 output으로부터 옴
⇒ decoder의 모든 position에서 input 시퀀스의 모든 position에 접근 가능해짐.
self-attention layer in encoder
: value, key, query 모두 이전 encoder의 output으로부터 옴.
⇒ 각 인코딩 층의 position이 이전 인코딩 층의 모든 position에 접근 가능해짐.
self-attention layer in decoder
⇒ 모든 디코딩 층의 position이 이전 디코딩 층 이전의 모든 position에 접근 가능해짐.
따라서, auto-regressive property를 보존하기 위해 오른쪽에서의 information flow를 막아야할 필요가 있음.
encoder와 decoder의 각 layer들은 각 position별로 각각, 동일하게 적용되는 fully connected feed-forward network가 있다. 이는 2개의 linear transformation과 ReLU를 포함한다. (linear transformation → ReLU → linear transformation)
서로 다른 position에 대해 선형 변환이 동일하게 적용되지만, 층간에 서로 다른 패러미터를 사용한다.
learned embeddings
: input tokens, output tokens들을 차원의 벡터로 변환시킨다.
learned linear transformation, softmax function
: decoder output을 predicted next-token probabilities로 변환시킨다.
두 임베딩 층과 softmax 이전의 선형 변환에서 동일한 가중치 행렬을 공유하고, 임베딩 층에서는 그 가중치에 별도로 을 곱한다.
이 모델은 recurrence나 convolution이 없다. 따라서, 이 sequence에서 token들의 상대적/절대적 position에 대한 정보가 필요하다. 그리하여, encoder, decoder의 마지막에 있는 input embedding에 positional encoding을 추가한다. embedding과 마찬가지로, positional encoding도 차원이다.
이 연구에서는 서로 다른 주기의 sin, cos함수들을 사용한다.
이 연구에서는 모델이 훈련 동안 보았던 최대 길이보다도 더 긴 시퀀스에 대해서도 추론할 수 있기에 sinusoidal version을 채택한다.
3가지 요소에 따라서 셀프 어텐션을 고려해본다.
(input, output 시퀀스에서의 position 조합 간의 경로가 짧을수록 long-range dependencies를 학습하기가 쉬워진다.)
= 시퀀스 길이, 임베딩 차원이라고 할 때에,
if :
시퀀스 길이가 임베딩 차원보다 작은 경우가 대부분이기 때문에 3가지 요소를 모두 확인하더라도, self-attention의 효율이 좋음을 확인할 수 있게 된다.
매우 긴 시퀀스에 대해서는, 즉, 이 커질 때에는 중심 단어 기준으로 주변 개 단어만 확인하는 self-attention restricted를 활용해준다. 이 경우, path length의 최대 길이는 로 증가하게 된다.
이 연구에서는 전적으로 attention에 의존해 multi-headed self-attention layer를 사용한 Transformer 모델을 제안한다. 번역과 같은 업무에서 해당 모델이 기존 recurrent나 convolutional 층을 사용한 구조들보다 성능이 좋음을 확인했다.
[ Q. Transformer모델의 단점은 뭘까? ] ⇒ 읽어보면 좋은 논문 “Relational inductive biases, deep learning, and graph networks”
[ 다음 논문 ] BERT