본문 바로가기
DL/basic

[논문리뷰] Attention is all you need

by hits_gold 2022. 2. 15.
반응형

Abstract

 기존의 좋은 성능을 내는 모델들은 복잡한 recurrent나 convolutional neural network 구조에 인코더와 디코더로 구성된 모습이었다. 우리는 attention 메커니즘에만 베이스를 둔 Transformer라는 새로운 심플한 네트워크 아키테쳐를 제안한다. 두 개의 기계번역 task에서 이 모델은 더욱 병렬화가 가능하면서 더 적은 학습시간을 가지는 모습을 보여주었다.

Introduction

  RNN모델들은 기계번역이나 시계열 모델링과 같은 부분에서 가장 좋은 성능을 보여왔다. 하지만 이 모델들은 병렬화에 대한 부분을 본질적으로 배제해왔고 이것은 긴 길이의 시퀀스에 치명적이다. 

  attention 메커니즘은 input과 output의 거리에 상관없이 모델링할 수 있어 여러 task에서 설득력을 가지게 되었지만, 여전히 RNN계층에 의존적이다.

  이 논문에서 Transformer라는 새로운 모델을 통해 순환을 피하고 대신 전적으로 attention 메커니즘에 의존하여 input과 output의 global dependencies를 draw하게 한다. 이 모델을 통해 더욱 병렬화되고 더 적은 학습시간을 동시에 이루어내면서 번역의 퀄리티는 새로운 sota를 달성했다.

 

Background

 

 Self-attetion 메커니즘은 다른 위치의 단일 시퀀스를 연결시켜 시퀀스의 representation을 계산합니다.

 Transformer는 self-attention만을 사용해 input과 output의 reprensentation을 계산해내는 첫 transduction model입니다.

 

Model Architecture

 기존의 경쟁력있는 tranduction model들은 인코더-디코더 구조를 가지며 인코더의 output으로 나온 representation을 디코더에서  각 단계마다 이를 소비하며 새로운 input을 받아 auto-regressive하게 된다. 하지만 Transformer는 stacked self-attention과 point-wise한 fc layer들을 인코더와 디코더에 모두 사용한다.

1) Encoder and Decoder Stacks

  

  Encoder : 인코더는 6개의 동일한 층으로 구성되어 있고 각 층은 두 개의 sub-layer로 구성되어있다. 첫번째는 multi-head self-attention 메커니즘이고, 두번째는 position-wise fc feed-forward 네트워크이다. 또한 각 sub-layer에 residual connection을 도입했으며, 이는 각 sub-layer의 output이 Add&Norm계층을 통해 add와 norm과정을 거친 후 output으로 나오게 된다. residual connection이 가능하게 하기 위해 모든 sub-layer들의 output은 512차원을 갖게 한다.

 

  Decoder : 디코더는 인코더와 동일하게 6개의 같은 층으로, 각 sub-layer들은 residual connection이 되어있다. 인코더와 다른 점은 인코더의 output을 받은 Multi-Head Attention sub-layer가 추가되었다. 또한 output Embedding에서 받은 input 중 현재까지의 정보만을 이용하기 위해 미래의 정보를 masking하는 기능을 추가하기위해 첫 Multi-Head Attention sub-layer를 수정하였다.

 

2) Attention

  attention은 query, key, value를 매핑한 것으로 묘사할 수 있는데, 이는 value에 가중치 합을 계산한 것이며, 각 value에 할당된 가중치는 query와 이에 대응하는 key를 사용해 계산된다.

 

   Scaled Dot-Product Attention

 여기서는 query와 key가 같은 차원 d(k)를 가져 내적하고, 그 후 d(k)의 제곱근으로 나누어준다(scaling). 그 후 softmax함수를 거쳐 value에 적용할 가중치를 구한다. 이 과정에서 각 input들을 세트로 묶어 행렬로 만들어 동시에 여러 값들을 계산하고, 그 수식은 다음과 같다.

 기존의 attention function은 additive attention과 dot-product attention이 있는데, additive는 scaling없이 좋은 성능을 내지만 dot-product방식은 그렇지 않지만 빠르다. 그 이유는 dot-product 결과값이 매우 크면 softmax과정에서 오차역전파가 제대로 일어나지 않기 떄문이다. 따라서 d(k)를 사용한 scaling과정을 거치는 것이다.

 

  Multi Head Attention

 single attention계층을 거치는 것보다, 각 값들이 각기 다른 h번의 선형 투영을 하는 것이 더 좋은 것을 알아냈다. 각 선형 투영의 버전들은 병렬적으로 진행되고, d(v)차원의 output을 만들어낸다. 또한 각 버전들의 output은 concat된 후 다시 한 번 더 투영된다.

 Multi-Head Attention은 representation의 다른 부분공간들의 정보를 참조할 수 있게한다.

 위 수식의 각 Q, W, V에 적용되는 가중치들은 Linear project 과정을 의미한다.

 위 수식과 같이 각 head들의 차원을 줄인덕분에, 총 연산량은 full-차원의 single head attention을 사용한 것과 비숫해졌다.

 

Applications of Attention in our Model

  Transformer모델은 multi-head attention을 세가지 다른 방법으로 사용한다.

  •   인코더-디코더 attention 층에서 query는 이전 디코더에서, memory key와 value는 인코더의 ouput으로부터 온다. 이것은 모든 위치의 디코더가 모든 위치의 input sequence을 참조할 수 있게한다.
  •  인코더는 self-attention layer의 query, key, value는 인코더 이전 층이라는 같은 곳에서 온다. 각 위치의 인코더들은 이전 층들의 모든 위치를 참조할 수 있다.
  • 디코더의 self-attention layer들은 디코더의 각 위치에서 모든 위치의 디코더를 참조할 수 있게 한다. 이 과정에서 leftward flow를 예방해 auto-regressivbe property를 보존해야하고, 이것을 scaled dot-product attention에서 making out을 함으로써 구현한다.

3) Position-wise Feed-Forwrd Networks

   인코더와 디코더의 각 layer들은 fc feed-forward network를 포함하는데 이것은 각 위치마다 동일하게 적용된다. 이 층은 두 번의 선형 변환을 거치며 변환 사이에 RELU함수로 activate해준다. 각 포지션마다 같은 W와 B를 사용하고, 층이 달라지면 파라미터가 바뀐다. 이것은 kerner_size가 1인 두번의 합성곱연산을 거친 것으로 묘사할 수 있다.

 

4) Positional Encoding

  이 부분의 경우 https://pozalabs.github.io/transformer/를 참고

 Positional Encoding같은 경우는 RNN과 다르게 Input sequence가 matrix형태로 들어오기 때문에 순서에 대한 정보를 나타내기 위해 사용한다. 이 때 positional encoding vector와 embedding vector는 같은 차원(d_model)을 갖게 하여 둘을 합산하여 초기 input으로 사용한다.

 

 

왜 Self-Attention인가

  •  layer당 계산 복잡도
  • 병렬화가 가능한 계산의 총량
  • 먼 거리의 학습

 위 Table을 통해 self-attention이 위 세가지 부분을 다른 모델들과 비교한 것이다. self-attention이 효율적인 것을 알 수 있다.

 

학습과정

  standard WMT 2014 English-German dataset을 학습에 사용했고, optimizer로 다음과 같은 Adam Optimizer를 사용했다.

정규화는 residual connection, dropout, label smoothing, layer normalization을 사용함

 

Conclusion

 번역 task에서 Transformer는 기존의 recurrent나 convolutional layers에 기반한 모델들보다 더 빠른 학습시간을 보여준다. 계산량을 줄이고 더 많은 병렬화를 통해 학습시간을 줄여 기존의 모델보다 효율적이다. 이러한 성능에  state-of-the-art를 달성하기도 했고 입력-출력을 요구하는 다른 task에도 효과적으로 적용될 수 있을 것으로 보인다.

반응형