Paper link : https://arxiv.org/pdf/1706.03762

1. Introduction

기존에 NLP에 사용되던 모델인 RNN(Recureent neural networks)은 병렬 연산이 불가능하다는 단점을 가지고 있었다. 이 논문에서는 입력 데이터 길이 혹은 출력 데이터의 길이가 길어도 상관없다는 장점을 가지고 있는 Attention만을 사용한 모델인 Transformer를 제안한다.

2. Background

예를 들어, ConvS2S와 ByteNet에는 입력 문장 혹은 출력 문장에서 단어 간의 관계를 나타내는 신호를 만들어내는 연산의 횟수는 단어 간의 거리가 길어질 수록 많아진다는 문제점이 있었다. 이로 인해 거리가 먼 단어 간의 관계를 배우는 데에 어려움이 존재하였다. Transformer는 Multi-Head Attention를 통해 이 문제를 해결한다.

3. Model Architecture

3.1 Encoder and Decoder Stacks

Transformer architecture
좌측 블럭이 Encoder, 우측 블럭이 Decoder이다.

Transformer architecture 좌측 블럭이 Encoder, 우측 블럭이 Decoder이다.

Encoder

Encoder는 2개의 sub-layer를 가진 레이어 6개로 구성된다. sub-layer는 multi-head self-attention과 position wise fully connected feed-forward network로 나뉜다.

각 sub-layer의 출력에 normalization을 적용함으로써, 최종 출력은 LayerNorm(x+Sublayer(x))가 된다.

이때, 모든 sub-layer 출력의 차원 $d_{model}$은 512이다.

Decoder

Decoder는 3개의 sub-layer를 가진 레이어 6개로 구성된다. sub-layer는 masked multi-head attention, multi-head attention, feed-forward network로 나뉜다.

Encoder와 동일하게 Decoder에서도 각 sub-layer의 출력에 normalization을 적용한다.

masked multi-head attention은 예를 들어, 출력 문장에서 i번째 이전의 단어만이 i번째 단어 예측에 사용되게 하는 역할을 한다.


$$ LayerNorm(x+Sublayer(x)) $$

위 식을 통해 transformer 모델은 residual connection을 사용했음을 알 수 있다.

3.2 Attention

Attention 함수는 query와 key-value 쌍을 ouput에 mapping한다.

3.2.1 Scaled Dot-Product Attention

Untitled

$$ Attention(Q,K,V) = softmax({QK^T \above{1pt} \sqrt{d_k}})V $$

$Q$ : set of queries

$K$ : set of keys

$V$ : set of values

$d_k$ : query와 key의 차원

$d_v$ : value의 차원

Scaled Dot-Product Attention은 dot-product attention을 $\sqrt{d_k}$로 나누어 스케일링한 것이다.


흔히 사용되는 attention 함수로는 additive attention 함수와 dot-product attention 함수가 있다. 단, dot-product attention 계산이 additive attention 계산보다 빠를 뿐만 아니라, 메모리를 효율적으로 사용한다.

$d_k$의 값이 작을 경우 additive attention과 dot-product attention의 성능이 비슷하지만, $d_k$의 값이 클 경우 addictive attention의 성능이 dot-product attention의 성능을 능가한다.

$q$와 $k$의 성분이 평균이 0, 분산이 1인 독립 랜덤 변수라고 가정하자. 이때 $q$와 $k$의 내적, 즉 $q⋅k= \sum^{d_k}_{i=1}q_ik_i$의 평균은 0, 분산은 $d_k$가 된다. 그러므로 $d_k$의 값이 커지면 $QK^T$가 큰 값을 가질 확률 또한 커진다.

$QK^T$의 값이 커지면 softmax를 통과하는 과정에서 Gradient Vanishing이 발생한다. 이 문제를 해결하기 위해 이 논문에서는 dot-product attention을 $\sqrt{d_k}$로 나누어 스케일링한다. (dot-product attention을 $\sqrt{d_k}$로 나누어 줌으로써 분산을 다시 1로 만들 수 있다.)

3.2.2 Multi-Head Attention

Untitled

$$ MultiHead(Q,K,V) = Concat(head_1,...,head_h)W^O $$

$$ ⁍ $$

Multi-Head Attention에서는 $Q$, $K$, $V$를 $h$회 선형 사영한다. 단, 매회 다른 행렬이 선형 사영하는 데에 사용된다. 그러므로 head는 $Q$, $K$, $V$를 $i$번째 행렬을 통해 선형 사영한 다음, Scaled Dot-Product Attention을 적용한 결과를 가리킨다. 이를 통해 모델은 하나의 $Q$, $K$, $V$에서 다양한 특징을 추출할 수 있다.

3.2.3 Applications of Attention in our Model

Transformer architecture
좌측 블럭이 Encoder, 우측 블럭이 Decoder이다.

Transformer architecture 좌측 블럭이 Encoder, 우측 블럭이 Decoder이다.

Transformer는 Multi-Head Attention을 세 가지 용도로 사용한다.

  1. Decoder의 Multi-head attention

Decoder의 Multi-head attention은 query로는 이전 레이어의 출력을 사용하고, key와 value로는 encoder의 출력을 사용한다. 이를 통해 decoder는 모든 입력을 고려할 수 있다.

  1. Encoder의 Multi-head attention

Encoder의 Multi-head attention은 Decoder의 Multi-head attention과는 다르게 query, key, value를 모두 동일한 공간에서 가져온다.

  1. Decoder의 Masked Multi-head attention

Decoder의 Masked Multi-head attention은 leftward information flow를 막기 위해서, 즉, i번째 이전의 단어만이 i번째 단어 예측에 사용되게 하기 위해서 i번째 이후의 단어를 mask한다.