Abstract
dominant sequence transduction model은 encoder와 decoder가 포함된 복잡한 rnn이나 cnn에 기반됐다.
가장 성능이 좋은 model은 attention mechanism 을 통해 encoder와 decoder를 연결한 것이다.
이것이 새롭고 간단한 network 구조인 Transformer이다.
두가지 machine translation task에서 실험은 더 많이 병렬화가능하고 학습에 훨씬 적은 시간이 소요되는 실질적으로 우월한 transformer를 보여준다.
transformer는 다른 task에도 잘 일반화된다는 것을 보여준다.
Introduction
특히 long short term memory인 RNN과 gated RNN은 sequence modeling과 변환 문제에서 sota 방법으로 인정받았다.
재귀 model은 input과 output sequence의 symbol position에 따라 계산을 수행한다.
연산 시간 단계에 맞게 position를 조절할 때, 이전 hidden state $h_{t-1}$과 t position에 있는 input의 기능으로써 hidden state $h_t$의 sequence를 생성한다.
본래 sequential 특성은 memory 제약이 예제 간 batch를 제한하므로 더 긴 sequence 길이에서 중요한 병렬화가 학습 예제에서 불가능하다.
최근 연구는 인수분해 요령과 조건부 연산을 통해서 게산 효율에 상당한 증가를 보인다.
그러나 sequential 연산의 근본적인 억제는 남아있다.
attention mechanism은 input이나 output sequence에서 거리에 상관없이 modeling dependency를 허용하는 다양한 task에서 sequence modeling과 transduction model을 불러오는 것의 필수적인 부분이 된다.
그러나 attention과 같은 몇몇 case를 제외한 모든 case는 recurrent network와 함께 사용된다.
input과 output 사이에 있는 global dependency를 draw하는 attention에 완전히 의존하는 것 대신 recurrence를 피하는 Transformer를 제안한다.
Transformer는 훨씬 더 많은 병렬화를 허용하고 translation quality에 새로운 sota로 달성할 수 있다.
Background
sequential 연산을 줄이는 것의 목표는 모든 input과 output position에 대해 병렬적으로 hidden representation을 연산하는 기본 구성 block을 만들 때 cnn을 사용하는 확장된 Neural GPU ByteNet과 ConvS2S의 기반으로 형성한다.
Transformer에서 연산의 상수를 줄였고, 비록 감소된 효율적인 해상도의 cost일지라도 weight된 position에 attention 평균 효과때문에 Multi Head Attention으로 대응한다.
intra attention이라고 불리는 Self attention은 sequence의 representation을 연산하기 위해 단일 sequence의 다른 position에 연관시키는 attention mechanism이다.
End to end memory network는 정렬된 recurrence인 sequence 대신에 recurrent attention mechanism에 기반되고 간단한 language question answering과 language modeling task에서 좋은 성능을 보인다.
그러나 transformer는 정렬된 RNN이나 convolution인 sequence 사용없이 input과 output의 representation을 계산하기 위해 self attention에 완전히 의존하는 첫번째 변환 model이다.
Model Architecture
대부분 경쟁력이 있는 neural sequence transduction model은 encoder-decoder 구조를 가진다.
encoder는 연속적인 representation의 sequence (z = ($z_1, ..., z_n$)) 에 symbol representation의 input sequence($x_1, ..., x_n$)를 mapping한다.
주어진 z에서 decoder는 한번에 한 요소인 symbol의 output sequence($y_1, ..., y_m$)를 생성한다.
각 단계에서 model은 다음에 생성될 때, 추가적인 input으로 이전에 생성된 symbol을 사로잡는 auto-regressive이다.
Transformer는 쌓인 self attention과 encoder와 decoder 둘 다 point wise인 fc layer를 사용하는 종합적인 구조를 따른다.
* Encoder and Decoder Stacks
Encoder
encoder는 N이 6인 동일한 layer의 stack으로 구성되어있다.
각 layer는 두개의 sub layer(multi head self attention mechanism, position wise fc feed forward network)를 가진다.
layer normalization 뒤에 있는 두 개의 sub layer 각각에 residual connection을 한다.
즉, 각 sub layer의 output은 Sublayer(x)이 sub layer 자체에서 구현된 함수인 LayerNorm(x+Sublayer(x))이다.
residual connection을 가능하게 하기 위해, embedding layer뿐만 아니라 model에 있는 모든 sub layer는 $d_{model}$ =512인 차원의 output을 만든다.
Decoder
decoder도 N이 6인 동일한 stack으로 구성되어 있다.
각 encoder layer에서 두개의 sub layer에 더해서, decoder는 encoder stack의 output에 대한 multi head attention을 실행하는 3번째 sub layer를 추가한다.
encoder와 비슷하게 layer normalization 뒤에 있는 각 sub layer에 residual connection을 한다.
position이 다음 position에 주의를 기울이는 것을 막기 위해 decoder stack에서 self attention sub layer를 수정한다.
output embedding이 하나의 position에 상쇄하는 사실과 결합되는 masking은 position i에 대한 예측이 i보다 작은 position 의 알려진 output에만 의존할 수 있도록 합니다.
* Attention
attention function은 query, key, value, output이 모든 vector에 있는 output에서 query와 key-value pair의 set을 mapping해서 묘사한다.
output은 각 value에 할당된 weight가 해당하는 key를 가진 query의 compatibility function에 의해 계산되는 value의 가중치된 합으로 계산된다
- Scaled Dot-Product Attention
input은 query와 dimension $d_k$, dimension $d_v$의 value로 구성된다.
모든 key를 가진 query의 내적을 계산하고, $\sqrt d_k$로 각각 나누고 value에 있는 weight를 얻기 위해서 softmax function을 적용한다.
실제로는, 행렬 Q에 같이 pack된 동시에 query의 set에서 attention function을 계산한다.
key와 value는 행렬 K, V에 같이 pack된다.
attention function을 사용된 가장 일반적인 두가지는 부가적인 attention과 dot product attention이다.
Dot product attention은 $\frac{1}{\sqrt d_k}$의 계수인자를 제외한 알고리즘과 동일하다.
attention function은 single hidden layer를 가진 feed forward network를 사용하는 compatibility function을 계산한다.
두가지 attention function이 이론적 복잡성에 있어서 유사하지만 dot product attention은 훨씬 빠르고 효율적인 공간을 가진다.
$d_k$의 작은 value에 대한 두 mechanism은 비슷하게 성능을 나타내지만 additive attention은 더 큰 value의 $d_k$에 대해 크기 조정 없이 dot product attention을 능가한다.
큰 value의 $d_k$에 대한 dot product는 극심하게 작은 gradient를 가지는 region에 softmax function을 하는 큰 규모로 증가한다.
이 효과를 대응하기 위해 $\frac{1}{\sqrt d_k}$에 의해 dot product를 조정한다.
* Multi - Head Attention
$d_{model}$ 차원의 key, value, query를 가지는 single attention function을 쓰는 대신에, key, value, query를 각각 다르게 학습된 선형 투영법을 사용하여 각각 $d_k$, $d_v$ 차원으로 $d_k$를 선형 투영하는 것이 유용하다는 것을 알았다.
query, key, value의 각각 투영된 version에서 차원의 output value인 $d_v$를 만드는 병렬적으로 attetion function을 수행한다.
attetion function을 연결하고 다시 한 번 투영하여 최종 값을 산출한다.
Multi head attention은 다른 position에서 다른 representation subspace로부터 정보를 같이 처리하는 model을 허용한다.
single attention head를 가지는 평균이 투영이 parameter matrice인 것을 억제한다.
h가 8인 병렬 attention layer나 head를 사용한다.
각 병렬 attention layer나 head에 대해 $d_k$=$d_v$=$d_{model}$/h=64를 사용한다.
각 head의 감소된 차원때문에 전체 연산 cost가 전체 차원을 가지는 single head attention과 비슷하다.
* Applications of Attention in out Model
- Transformer가 multi head attention을 사용하는 3가지 방법
1. encoder-decoder attention layer에서, query는 이전의 decoder layer로부터 오고, memory ket와 value는 encoder의 output으로부터 온다.
input sequence에서 모든 position에 주의를 기울이기 위해 decoder에 있는 모든 position을 허용한다.
2. encoder는 self attention layer를 포함한다.
self attention layer에서 모든 key, value, query는 encoder에 있는 이전의 layer의 output인 경우에서는 같은 곳에서 온다.
3. decoder에 있는 self attention layer는 decoder의 각 position이 해당 position을 포함한 decoder의 모든 position에 주의를 기울인다.
auto-regressive property을 보존하기 위해 decoder에 있는 왼쪽 정보를 막아야한다.
illegal connection에 해당하는 softmax의 input에서 모든 value를 mask out함으로써 scaled dot product attention의 안에서 구현된다.
* Position-wise Feed-Forward Networks
attention sub layer에 추가해서, encoder와 decoder에 있는 각 layer는 별도로 동일하게 각 position에 적용되는 fc feed-forward network를 포함하고 중간에 ReLU activation을 가진 두 선형 변환으로 구성된다.
선형 변환은 다른 position에서 같지만 layer에서 layer로 다른 parameter를 사용한다.
다른 방법은 kernel size가 1인 두 convolution을 쓰는 것이다.
input과 output의 차원($d_{model}$)은 512이고 inner layer($d_{ff}$)는 차원이 2048이다.
* Embeddings and Softmax
다른 sequence transduction model과 비슷하게 차원의 vector에 input token과 output token을 변환하는 학습된 embedding을 사용한다.
예측된 다음 token 확률에서 decoder output을 변환하기 위해 학습된 선형 변환과 softmax function을 사용한다.
model에서, 두 개의 embedding layer와 이전의 softmax 선형 변환 간에 같은 weight matrix를 공유한다.
embedding layer에서, $\sqrt d_{model}$로 weight를 곱한다.
* Positional Encoding
model은 sequence 순서의 활용하기 위해 recurrence와 convolution을 포함하지 않기 때문에, sequence에서 token의 상대적이거나 절대적인 position에 대한 정보를 추가해야만 한다.
그래서 encoder와 decoder stack의 밑에 있는 input embedding에 positional encoding을 더한다.
positional encoding은 두가지가 더해지기 위해 embedding과 같은 차원인 $d_{model}$을 가진다.
pos가 position이고 i가 차원인 다른 frequency의 sine과 cosine 함수를 사용한다.
즉, positional encoding은 sinusoid에 해당한다.
고정된 offset k에 대한, $PE_{pos}$+k가 $PE_{pos}$의 선형 함수로서 나타내기 때문에 상대적인 position에 주의를 기울이는 학습을 쉽게하는 model을 허용하는 가설을 세웠기 때문에 sinusoid를 골랐다.
Why Self-Attention
- self attention을 사용하는 동기 3가지
1. layer당 전체 연산 복잡성
2. 요구된 순차적인 연산의 최소 양으로 병렬화할 수 있는 연산량
3. network에서 long range dependency 간에 path 길이(model 길이)
long range dependency는 많은 sequence transduction task에서 주요 challenge이다.
dependency같은 학습하는 능력에 영향을 미치는 한가지 주요 요인은 signal이 network에 지나는 forward와 backward path 길이이다.
연산 복잡성에 관해서는, self attention layer는 sequence length n이 representation 차원 d보다 더 작을 때, recurrent layer보다 더 빠르다.
너무 긴 sequence를 포함하는 task에 대해 연산 성능을 향상하기 위해서, self attention은 각 output position 근처 중심에 있는 input sequence에서 size R의 이웃만 고려하는 것을 제한한다.
k<n인 kernel width를 가진 single convolutional layer는 input과 output position의 모든 pair를 연결하지 못한다.
network에서 두가지 position 사이에서 가장 긴 path의 길이를 증가시키기 위해, 인접한 kernel의 경우에서 O(n/k) convolutional layer와 확장된 convolution의 경우에서 O($log_k$(n))의 stack을 필요한다.
convolutional layer는 k의 인자에 의해 recurrent layer보다 더 비싸다.
그러나 separable convolution은 O(k*n*d+n*$d^2$)로 복잡성을 줄였다.
그러나 k=n이면, separable convolution의 복잡성이 self attention과 point wise feed forward layer의 결합과 동일하다.
Results
Conclusion
우리는 attention에 완전히 기반된 첫번째 sequence transduction model인 Transformer를 제시했다.
translation task에 대해 Transformer는 recurrent나 convolutional layer에 기반된 architecture보다 훨씬 빨리 학습되어졌다.
'transformer' 카테고리의 다른 글
Training data-efficient image transformers& distillation through attention (1) | 2024.02.01 |
---|---|
AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE (0) | 2024.01.22 |