1. Introduction
- 기존의 Recurrent Neural Network(RNN, e.g.m Lstm, GRU)은 보통 input과 output sequence의 위치에 따른 symbol에 따라 계산을 수행해 왔다.
- 이는 training에서 병렬화(parallelization)을 배제하는 방법으로, 만약 sequence의 length가 길 경우, memory의 한계상 batch를 제한할 수 없기 때문에 치명적인 단점이었다.
- 이를 해결하기 위해 최근에는 factorization tricks과 conditional computation기법 등을 이용하여 계산의 효율성을 높일 수 있었지만, 여전히 근본적인 문제인 sequential computation은 남아 있었다.
- Attention mechanisms은 input과 output sequence의 거리에 상관 없이 종속적인 모델링을 허용하였기에 필수적인 부분이 되었지만, 그러나 이런 attention mechanisms은 recurrent network과 통합해서 써야 하는 단점이 있었다.
- 이에 이 논문은 Transformer를 제안하는데, 이 모델은 reccurence를 이용하지 않고, 전적으로 attention mechanism만을 이용한다.
- 또한 Transformer은 paralleization할 수 있는 기회를 제공하고 translation 영역에서 new state of the art (SOTA)를 달성하였다.
2.Background
- 생략
3. Model Architecture
- 가장 경쟁력 있는 neural sequence transduction(형질 변환) model은 encoder-decoder 구조를 가지고 있다.
<Encoder>
- symbol representation의 input sequence를 continuous representation으로 mapping한다
(x1,..,xn) --> (z1,...,zn)
<Decoder>
- Encoder한 z가 주어졌을때, Decoder는 한 번에 한 요소씩 기호의 출력 시퀀스를 생성한다.
(y1,...,ym)
* Transformer은 이러한 전체적인 architecture(encoder-decoder 구조)를 이용하는데, encoder과 decoder에는 겹겹히 쌓인 self-attention과 point-wise된 fully-connected layer를 이용한다.
3.1 Encoder and Decoder Stacks
<Encoder>
- 독립적인 6개의 겹겹히 쌓인 layer들로 이루어져 있다.
- 각각의 layer은 두개의 sub-layer가 존재한다.
-> 첫번째 layer은 Multi-Head self-attention mechanism이고, 두번째 layer은 fully connect된 feed-forward network이다.
- 각각 두개의 sub-layer에 residual connection을 도입하고, 그 이후에 layer normalization을 진행한다.
- residual connection을 이용하기 위해, 모든 sub-layers과 embedded layers은 같은 output dimension을 나타내야 하는데, 해당 모델의 dimension은 dmodel = 512로 정한다.
<Decoder>
- 디코더 또한 독립적인 6개의 layer로 이루어져 있다.
- 두개의 sub-layer 뿐만 아니라, 3번째 layer가 존재하는데, 이는 encoder stack의 output을 attention해주는 multi- head attention이 존재한다.
- encoder과 비슷하게, 각각의 sub-layer에 residual connection을 도입하고, 그 후에 layer normalization을 진행해 준다.
- 또한 self-attention sub-layer를 수정한 Masked-Multi-Head Attention을 도입하는데, 이는 위치 i에 대한 예측이 i보다 작은 위치에서 알려진 출력에만 의존할 수 있도록 한다.
3.2 Attention
- Key, Query, Values : key와 value로 이뤄진 set를 query와 mapping한다. 이 모든 값들은 vector이다.
3.2.1 Scaled Dot-Product Attention
- 여기서 dk는 key와 qury의 dimension이다. (cf dv : value dimension)
- queries, keys, values는 matrics Q,K,V로 packed된다.
* Additive attention Vs Dot-prodct attention
- 이론적인 복잡도는 비슷하나, 고도로 최적화된 matrix multiplication code로 인해 훨씬 빠르고 공간적으로 효율적이다.
- 만약 dk의 값이 작다면, 두개의 mechanism은 비슷하게 수행하고, 큰 값으로(larege dk) scaling 해 주지 않는 상황에서는 additive attention이 dot-product attention보다 훨씬 좋은 성능을 내게 된다.
- 만약 dk의 값이 크다면, dot products의 값이 큰 척도가 되고, 이는 softmax function을 매우 작은 gradients 값이 되게 된다.
--> 이러한 이유 때문에, dot products는 큰 dimension의 역의 값으로 Scaling을 해 주어야 한다.
3.2.2 Multi-Head Attention
- 본 논문에서는 단일한 attention function을 이용하는 것보다, queries, keys, values의 값을 h배 나누어 선형으로 project하는 것이 더 성능이 좋다고 말한다.
- 이는 h개로 나뉘고 다른 position을 담고 있는 subspace가 서로 다른 정보를 담고 있고, 이를 통해 더욱 많은 정보를 얻을 수 있기 때문이라고 말한다.
-MultiHead attention은 각각의 attention 정보를 concat하고, 거기에 weight값을 곱하게 되어 얻게 된다.
-본 논문에서는 h는 8, 즉 8개의 평행한 attention layers로 나누고 전체 dmodel이 514개 이므로 dk, dv의 값은 64가 되게 된다.
3.2.3 Applications of Attention in our Model
1) Encoder self-attention
- keys, queires, values가 같은 공간에서 나온다
- Encoder의 각 위치는 Encoder의 이전 레이어에 있는 모든 Encoder를 관리할 수 있다.
2) Encoder-Decoder attention
- queries는 이전 decoder layer에서 오게 되고, keys와 values는 encoder의 output에서 오게 된다.
- 이는 decoder의 모든 위치에서 input sequence의 전체 position을 attend 할 수 있게 된다.
3) Masked Decoder self-attention
- illegal connections(즉, 위치 i 이후의 정보들)을 masking out해 준다.
- 각각의 decoder의 위치에서, 해당 decoder의 position까지 attend 할 수 있게 된다.
3.3 Position-wise Feed-Forward Networks
- 각각의 position에서 별도로 그리고 독립적으로 적용된다.
- 두개의 선형 변환으로 이루어져 있는데, 그 사이에 ReLU activation을 가지고 있다.
- layer마다 다른 parameter를 이용한다. 전체 모델의 dimension은 512개 이고,FFN의 parameter은 4이기 때문에 내부 layer의 차원(inner-layer dimensionality, dff)은 512*4가 되어 총 2048이 된다.
3.4 Embeddings and Softmax
- 기존의 embedding을 이용하는데, 이를 통해 input token과 output token(문자를 단어로 자른 것을 token이라고 함)을 차원이 dmodel, 즉 514d인 vectors로 변환한다.
- 선형 변환 (linear transformation)과 softmax function을 이용하여 decoder의 output에 적용하여 다음 decoder에 들어갈 token 확률을 계산한다.
3.5 Positional Encoding
- 본 모델은 sequence의 순서를 이용하는 recurrence과 convolution을 포함하지 않으므로, 즉 위치에 대한 정보가 존재하지 않으므로, 본 모델은 sequence의 token에 상대적이거나 절대적인 위치에 대한 정보를 주입하여야 한다.
- 이를 위해, "positional encodings"을 encoder과 decoder 스택의 맨 아래에 있는 input embedding에 더해 준다.
- dmodel의 차원과 같고, sine과 cosine으로 이루어진 function을 이용한다.
- 이를 이용하는 이유는 주기함수의 특성 때문인데, 만약 PE(pos,2i)의 값을 안다면 PE(pos, 2i+1)의 값 또한 쉽게 찾을 수 있기 때문이다.
* Positional Embedding vs Positional Encoding
- 본 논문에서는 둘을 비교하여 positional encoding의 효과를 나타낸다.
4. Why Self-Attention
1) total computational complexity per layer
2) amount of computation that can be parallelized, as measured by the minimum number of sequential operations required
3) path length between long-range dependencies in the network
- long-range dependencies를 배우는 것은 많은 sequence transduction tasks에서 중요한 challenge 였다.
- 그러한 dependencies를 학습하는 능력에 영향을 미치는 한 가지 주요 요인은 네트워크에서 forward 및 backward signal가 횡단(traverse)해야 하는 경로의 길이이다.
- input과 output sequence의 모든 위치 조합 사이에 이러한 경로가 짧을수록 장거리 종속성을 학습하기 쉬워진다.
5. Training
-생략 ( 본 목표가 모델 위주의 구조 설명을 위한 것이므로)
6. Results