티스토리 뷰

Abstract

논문이 나오기 전까지 대부분의 sequence transduction models  RNN이나 CNN 기반이었다. 이전 최고 성능의 모델은  encoder와 decorder를 연결하여 attention mechanism을 통하는 방식이었다. 논문은 CNN 또는 RNN을 이용하지 않고 어텐션만을 이용한 Transformer를 소개한다. 실험을 통해 기계 번역 task에서 성능이 뛰어나고 병렬화가 가능해 학습 시간이 더 짧아졌음을 확인했다.

 

1 Introduction

RNN, LSTM, GRN은시퀀스 모델링 또는 transduction problems에서 SOTA로 자리 잡았다. Recurrent model들은 input position $t$와 이전 hidden state  $h_{t-1}$ 현재 hidden state$h_t$의 시퀀스를 생성한다. 이러한 순차적인 구조로 인해서 학습에서 병렬화가 어렵고, 메모리의 제약이 되어 더 긴 시퀀스에서 더 큰 문제가 된다. 

어텐션 메커니즘은 input과 output의 시퀀스의 거리에 관계없이 dependecies를 모델링할 수 있다. 다만 이전의 연구는 대부분 RNN과 같이 사용되었다.

논문에서는 RNN에서 탈피해 어텐션 메커니즘만 사용하여 input과 output의 global dependencies를 이끄는 Transformer를 제시한다. 

트랜스포머는 더 많은 병렬화가 지원되며, 기계번역 taks에서 8개의 GPU에서 12시간 동안 훈련된 후 SOTA를 달성했다.

 

2 Background

 

3 Model Architecture

대부분의  neural sequence transduction models은 인코더-디코더의 구조이다. 

인코더에 input으로 symbol 시퀀스 $(x_1,...,x_n)$가 주어지면 시퀀스 $z = (z_1,... z_n)$와 매핑된다. 

$z$는 ouput 시퀀스 $(y_1, ..., y_m)$를 생성한다. 각 step에서 auto-regressive이며, 다음 step을 생성할 때 이전 생성된 symbol을 입력으로 사용한다.

 

3.1 Encoder and Decoder Stacks

Encoder

  • layer stack: $N=6$
  • 각 layer는 두 개의 sub-layer로 구성
    • multi-head self-attention 
    • positionwise fully connected feed-forward network
  • 두 개의 sub-layer에 각각 residual connection 적용 후 layer normalization
    • LayerNorm(x + Sublayer(x))
  • 모델의 모든 sub-layers와 embedding layers는 residual connection을 위해 output dimension을 통일
    • outputs of dimension: $d_{model} = 512$

Decoder

  • layer stack: $N=6$
  • 각 layer는 세 개의 sub-layer로 구성
    • masked multi-head self-attention 
    • multi-head self-attention 
    • positionwise fully connected feed-forward network
  • sub-layer에 각각 residual connection 적용 후 layer normalization
    • LayerNorm(x + Sublayer(x))
  • masking으로 input position보다 미래 시점에 있는 정보를 확인하지 못하게 한다.
    • i번째가 input으로 들어왔을 때, i 이전의 정보만 확인하고,  i 이후의 정보가 들어오지 못하게 한다.

 

3.2 Attention

어텐션은 query, key, value를 output에 매핑하는 함수이다.  query, key, value의 output은 모두 벡터이다.

어텐션의 output은 query와 key를 compatibility function으로 연산 후 value와 weighted sum한 값이다.

 

3.2.1 Scaled Dot-Product Attention

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

 

  • Scaled Dot-Product Attention input : query, key( dimension= $d_k$),  value(dimension = $d_v$)
  • $\sqrt{d_k}$로 나누어 스케일링한다.
    • $d_k$가 작을 때는 스케일링을 하지 않을 때와 할 때 유사하다.
    • $d_k$가 클 때는 dot product의 값이 커지기 때문에 softmax의 기울기를 매우 작은 영역으로 밀어 넣는다.
      • softmax 값이 커지는 이유 관련 링크 
      • $d_k$가 커질 때 dot product의 값이 커지는 이유는 variance가 커지기 때문 관련 링크

 

3.2.2 Multi-Head Attention

논문은 $d_{model}$ dimension의 key, query, value를 한 번의 어텐션을 수행하는 것보다 각각 다르게 $h$ 번 병렬적으로 $d_k$ 차원의 query, $d_k$ 차원의 key, $d_v$ 차원의 value를 linear projection 하는 것이 효과적임을 확인했다. output들을 concatenate 하여 다시 한번 projected 한다.

 

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

where $head_i = Attention(QW^Q_ i , KW^ K_ i , VW^V_ i )$

 

  • $ W^Q_i \in \mathbb{R}^{d_{model}×d_k}$
  • $ W^K_i \in \mathbb{R}^{d_{model}×d_k}$
  • $ W^V_i \in \mathbb{R}^{d_{model}×d_v}$
  • $h = 8$ parallel attention layers
  • $d_k = d_v = d_{model}/h = 64$

3.2.3 Applications of Attention in our Model

  • encoder-decoder attention layer에서 query는 이전의 decoder layer에서 가져오고 key와 value는 encorder의 output에서 가져온다.
  • encoder의 self-attention은 key, query, value를 이전 인코더의 이전 layer의 output으로 가져온다. 이전 layer의 입력의 모든 position의 정보를 확인할 수 있다.
  • decoder의 self-attention 또한 모든 position의 정보를 확인할 수 있다. 대신 auto-regressive 속성을 유지하기 위해서 미래시점의 정보(leftward)가 흘러오는 것을 막아야 한다. 논문은 scaled dot-product attention에서 softmax의 입력값을 $-\infty$로 masking 하여 잘못된 연결을 막는다.

 

3.3 Position-wise Feed-Forward Networks

인코더와 디코더에는 fully connected feed-forward network를 포함하고 있다.

 

$FFN(x) = max(0, xW_1 + b_1)W_2 + b_2$

  • input과 output dimension:$ d_{model} = 512$
  • inner-layer dimension : $d_{ff} = 2048.$

3.4 Embeddings and Softmax

학습된 embedding을 입력 토큰과 출력 토큰을 $d_{model}$ 차원의 벡터로 변환하는 데 사용한다. linear transformation과 softmax를 이용하여 decoder의 output을예측된 다음 토큰 확률로 변환한다. 두 개의 임베딩 레이어와 pre-softmax linear transformation의 weight는 공유된다. 임베딩 레이어에는 $\sqrt{d_{model}}$를 곱해준다.

 

3.5 Positional Encoding

recurrence 와 convolution 없이 sequence를 만들어야 한다. 논문은 인코더와 디코더의 input embedding에 sine과 cosine을 이용한 positional encodings을 추가했다. $pos$는 position $i$는 dimension을 의미한다. 단순히 position에 sin, cos 값을 더해주면 같은 값을 더해줄 수도 있다. dimension i에 따라서 값을 바꿔준다. 논문은 sinusoidal version을 이용하여 더 긴 시퀀스를 외삽할 수 있게 했다.

4 Why Self-Attention

세 가지 측면에서 CNN, RNN과 self-attention을 비교한다.

 

    • total computational complexity per layer
    • 병렬화했을 때 연산량(amount of computation)
    • long-range dependencies path length 

self-attention layer는 모든 포지션에 상수의 복잡도(Complextiy)로 접근 가능한다. 반면 RNN은 $O(n)$의 Sequential Operation이다. self-attention은 모든 타임 스텝의 토큰에 독립적으로 접근하지만, RNN은 이전 타임스텝의 토큰을 거쳐야 n번째 토큰에 접근할 수 있다. 따라서 computational complexity는 n의 길이가 dimension $d$보다 작을 때, 어텐션이 $O(n^2*d)$로 RNN의 $O(n*d^2)$보다 빠르다.  한편 long sequence에서 출력 포지션을 중심으로 근접한 $r$의 시퀀스까지 입력을 제한하는 방법으로 성능을 개선할 수 있다.  일반 Self-Attention은 모든 포지션의 정보에 바로 접근할 수 있어 maximum path length가 $O(1)이지만, restricted Self-Attention은 접근하는 정보가 r로 제한되어 $O(n/r)$로 복잡도가 늘어난다.

 

Conclusion

트랜스포머는  처음으로 RNN을 attention으로 대체 encoder-decoder 아키텍처이다. 번역 task에서 RNN, CNN보다 빠르고 우수한 성능을 확인했다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함