[논문 리뷰] Attention is all you need

fla1512·2022년 7월 14일
0

NLP Study

목록 보기
2/23

Abstract

  • sequence transduction models
    • 주요한 sequence transduction 모델들은 인코더와 디코더를 포함하는 복잡한 recurrent나 convolutional neural networks를 기반으로 한다.
    • 더 나아가 가장 뛰어난 성능의 모델들은 attention 통해 인코더와 디코더를 연결하기도 한다.

(해당 논문에서는)

  • Transformer를 제시한다.
    1. attention 메커니즘을 기반으로 하여 → recurrence와 convolutions를 완전히 없앴다
    2. machine translation tasks 두 실험 결과, 질적으로 성능 우수
      1. 병렬화 가능 + 훈련 시 적은 시간 필요
      2. 실험 결과
        1. 28.4 BLEU(WMT 2014 English to-German translation task)
        2. 새로운 single-model state-of-the-art BLEU score가 41.0(WMT 2014 English-to-French translation task), 훈련 비용도 적었음.

Introduction

  1. (과거의 노력들)

    • RNN, LSTM, GRU는 language modeling과 machine translation 같은 sequence modeling과 transduction문제에서 state of the art 접근법으로서 기여했다.
    • recurrent language models와 encoder-decoder architecture에 대한 영역을 확장하고자 여러 노력들이 지속되었다.
  2. Recurrent models

    • 일반적으로 입력과 출력 시퀀스의 symbol positions(토큰 위치)에 따라 계산을 고려한다.
      • computation time에 따라 positions를 steps에 맞게 배열(aligning)하는 과정에서
      • position t를 위한 sequence of hidden state ht, previous hidden state ht-1 그리고 input이 생성된다(즉, 모든 데이터를 한꺼번에 처리하지 못하고 sequence position t에 따라 순차적으로 입력에 넣어야 한다)
      • 이런 sequential한 특징은 자연스럽게 training examples에서 parallexation을 배제하게 한다
        • 해당 문제는, longer sequence lengths에서 메모리 제약이 examples 간의 batching을 제한하기 때문에 더 중요하다
    • 최근 연구들은 factorization tricks와 conditional computation을 통해 computational efficiency에서 성능을 향상하였다.
      • 더 나아가 latter에 대한 모델 성능도 향상하였다.

        → 그러나 sequential computation에 대한 본질적인 제약은 여전히 존재!한다.

  3. Attention mechanisms

    • sequence modeling과 transduction models(변환 모델)에서 중요한 부분으로 → 이로 인해 input과 output에서 sequences distance에 무관하게 서로 간의 dependencies를 모델링 하는 것이 가능해졌다.
      • sequence modeling : 어떠한 Sequence를 가지는 데이터로부터 또 다른 Sequence를 가지는 데이터를 생성하는 task(예. machinge translation, chatbot)
    • 하지만 이는 가끔 recurrent network에서 conjunction(접속사)로 쓰이기도 한다.

💡 어텐션 메커니즘

  • 등장 배경: 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주고자
  • 기본 아이디어: 디코더에서 출력 단어를 예측하는 매 시점마다 인코더에서의 전체 입력 문장을 다시 한 번 참고하자! (단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야할 단어와 연관이 있는 단어를 좀 더 집중(attention)해서 보자!)
    https://wikidocs.net/22893
  1. (그래서 해당 연구에서) Transformer 제시한다

    • recurrence를 eschewing(피함).
    • (그 대신) 전적으로 attention 메커니즘에 의존해서 인풋과 아웃풋 간의 global한 dependencies를 추출하고자 한다.

    (이점으로는)

    • parallelization이 더 가능해졌다.
    • translation quality에서 적은 시간 훈련 하고도 new state of art에 도달하는 것이 가능해졌다.
  1. sequential computation을 감소하고자 하는 목표는 Extended Neural GPU, ByteNet, ConvS2S 같은 여러 foundation을 form하였다.
    • 세 foundation은 CNN을 basic building block으로서 사용한다(모든 input과 output positions에 대해 hidden representations를 병렬화하여 계산하면서)
    • input과 output의 임의의 두 위치로부터 signal를 realate하기 위해 필요한 계산 수가 위치들간의 거리에 따라 증가한다(ConvS2S는 linearly하게 ByteNet는 logarithmically하게)
    • 이는 먼 위치 간의 dependencies를 학습하기 어렵다는 문제점이 있다
    → 그러나 transformer의 경우, 해당 문제가 constant number of operations에 의해 줄어든다(이때 attention-weighted positions을 averaging해 resolution이 감소한다는 문제가 있있지만 이는 Multi-Head Attention으로 해결이 가능하다)
  2. Self-attention
    • = intra(내부)-attention
    • 단일 시퀀스 내에서 다른 위치에 있는 요소들을 관련시켜준다 → 왜? 한 시퀀스의 representation을 계산하기 위해서.
    • 여러 분야에서 쓰임: reading comprehension, abstractive summarization, textual entailment and learning task-independent sentence representations.
  3. End-to-end memory network
    • recurrent attention mechanism에 기반을 둔다
    • simple-language question answering, language modeling tasks에서 좋은 성과
  4. Transformer
    • self-attention에 전적으로 의존하는 첫 transduction(변환) 모델
    • input과 output의 representations를 계산하는데 RNNs나 convolution을 사용하지 않음.

Methodology

1. Model Architecture

  • (기존의) neural sequence transduction 모델
    • 인코더-디코더 구조
      • 인코더: symbol representations의 인풋 시퀀스 (x1, ..., xn)를 연속적인 representations z = (z1, ..., zn) 시퀀스에 매핑한다.
      • 디코더: z를 받아서 한 element에 대한 아웃풋 시퀀스 (y1, ..., ym)의 symbols를 동시에 생성한다.
    • 각 단계에서 모델은 auto-regressive하다.
      • 다음 것을 generating 할 때, 이전에 생성된 symbols를 additional input으로서 사용한다.
  • transformer
    • 쌓인 self-attention와 point-wise를 활용해 이 구조를 따른다.
    • 인코더, 디코더 모두 fully connected layers

1.1 Encoder and Decoder Stacks

  1. Encoder
  • 구성: N = 6 개의 동일한 layers를 쌓음.
  • 각 레이어는 two sub-layers 가진다.
    1. multi-head self-attention mechanism
    2. simple, position wise fully connected feed-forward network
  • 각 sub-layers 주위에 residual connection을 employ함, 그 다음에 layer normalization을 함. → 각 sub-layer의 output이 LayerNorm(x + Sublayer(x))가 됨 (Sublayer(x): sub-layer 그 자체에 의해 시행되는 함수) → residual connections를 시행하고자 모델의 모든 sub-layers와 embedding layers는 dmodel = 512로 설정했다.
  1. Decoder
  • 구성: N = 6 개의 동일한 layers를 쌓음.
  • 인코더의 두 sub-layer 사이에 추가적으로 third sub-layer를 쌓음
    1. third sub-layer: encoder stack의 output에 대해 multi-head attention을 수행한다
  • (인코더와 유사하게) 각 sub-layers 주위에 residual connection employ함, 그 다음에 layer normalization을 함.
  • decoder stack에 있는 self-attention sub-layer 수정 → 왜? positions들이 그 다음(subsequent) positions에 attend(나타나는)하는 것을 막고자 → Masking: position i에 대한 prediction이 i보다 작은 positions에 대해서만 하는 것을 가능하게!함 (output embeddings는 한 position에 대해서만 offset된다는 사실을 같이 결합함)

1.2 Attention

  • query와 key-value 쌍의 집합을 output에 mapping하는 것 (query, keys, values, output은 모두 vectors)
  • output은 weighted sum of the values로 계산된다. (각 value에 할당된 weight는 해당 키와 쿼리의 연관성(compatibility)함수에 의해 계산)

1.2.1 Scaled Dot-Product Attention

  • input은 dk차원의 query와 key, dv차원의 value로 구성
  • query에 대해 모든 key를 내적(dot products) 한 후 각각을 √dk로 나누고, values에 대한 weights를 얻고자 softmax function 시행

→ In practice

  1. 모든 쿼리가 attention 함수에서 동시에 계산된 후 matrix Q에 pack됨
  2. keys와 values 또한 matrices K와 V에 pack됨 .
  3. matrix of output은 (1)로 계산됨.
  • 가장 잘 쓰이는 attention functions
    • additive attention: 단일 hidden layer의 feed-forward network로 연관성(compatibility) function를 계산.

    • dot-product (multi-plicative) attention: scaling factor로의 1/√dk만 제외하면 논문에서 제시하는 알고리즘과 동일.

      → 두 방법은 theoretical complexity에서는 유사하다.

      → 그러나 실무에서는 고도로 최적화된 행렬곱 code 구현이 가능한 dot-product attention이 더 빠르고 공간효율적이다.

      → dk의 value가 작을 때는 두 mechanisms의 성능은 유사하지만

      → 반면 dk의 values가 클 때는 scaling을 하지 않으면 additive attention 성능이 더 좋다

      → dk의 values 값이 커질 수록 dot products의 결과도 커지는 경향이 있어, softmax 함수를 매우 작은 gradients를 갖는 영역으로 밀어넣는 것 같다고 생각해서 본 연구에서는 dot products를 1/√dk로 scale했다

1.2.2 Multi-Head Attention

  • dmodel차원의 key, value, query들로 single attention을 수행하는 것보다 queries, keys, values를 각각 dk, dk, dv 차원으로 변환하는 서로 다른 h개의 학습 가능한 사영(linear projections)을 진행 하는 것이 더 효율적일 것임을 발견하였다.
  • 각각의 queries, keys, values가 projected된 versions에 대해서 attention function을 parallel하게 시행하여 dv차원의 output values를 얻었다.
  • output values가 concatenated 되고 다시 projected 된 후, final values!(Figure2)를 얻는다.
  • Multi-head attention을 통해 모델은 서로 다른 position의 서로 다른 representation 부분 공간(subpsace)들로부터 결합적으로(jointly) 정보에 접근하는 것이 가능해짐
  • single attention head에서는 averaging 때문에 이것이 억제된다.
  • 본 연구에서는
    • h=8 parallel attention layers or heads
    • 각 헤드마다 dk = dv = dmodel/h = 64(512/8)의 차원을 설정.
    • each head의 dimension이 감소했기에 최종 계산 cost는 full dimensionality인 single-head attention과 유사.

1.2.3 Applications of Attention in our Model

  • Transformer는 세 방법으로 multi-head attention 사용하였다.
  1. encoder-decoder attention

    • 쿼리는 이전 디코더 레이어에서 키와 벨류는 인코더의 아웃풋에서 온다.

    → 디코더에 있는 모든 position이 인풋 시컨스에 잇는 모든 position에 접근(attend)하는 것이 가능해짐.

    → 이는 sequence-to-sequence 모델에 있는 전형적인 encoder-decoder attention 메커니즘을 모방한 것이다

    (쿼리가 디코더, 키와 벨류는 인코더에 있는 상황, 각각의 출력 단어들이 인코더의 어떠한 부분에 더 많은 가중치를 두는지 확인하는 과정)

  2. encoder self-attention

    • self-attention 레이어에서 keys, values, queries는 모두 같은 장소(여기서는 인코더에 있는 이전 레이어의 아웃풋)에서 온다. 인코더에 있는 각각의 position은 이전 레이어의 인코더의 모든 position에 접근할 수 있다.

    (각각의 단어가 서로에게 어떠한 영향성을 가지는지, 전체 문장에 대한 representation이 가능하도록)

  1. masked decoder self-attention

    • (2번과 유사하게) 디코더에 있는 self-attention layer는 디코더에 있는 각각의 postion이 그 position까지 포함하는 디코더의 모든 position에 attend하는 것을 허용한다. 이때 디코더에서의 auto-regressive 속성을 유지하고자 leftward information flow를 막아야 한다. 이는 scaled dot-product attention 내부에서 시행된다.
      • 어떻게? 인풋에 있는 모든 value들을 masking out해서-inf와 가깝게 설정해서

    (앞쪽에 등장했던 단어들만 참고할 수 있도록, 뒤쪽에 나오는 단어가 무엇인지 참고하면 베끼는 것이 되어서! → 정상적인 모델의 학습을 유도)

1.3 Position-wise Feed-Forward Networks

인코더와 디코더에 있는 각 레이어는 attention sub-layers 외에도 fully connected feed-forward 네트워크를 포함한다.

  • fully connected feed-forward 네트워크
    • 각 위치에 대해서 separately하고 identically하게 적용된다.
    • ReLU activation을 사이에 둔 채로 두 번의 선형 변환으로 구성되어 있다.
    • linear transformation이 different positions에 대해 동일하게 적용되는 반면 층간(layer to layer)에는 다른 파라미터가 적용된다. 이는 커널사이즈가 1인 컨볼루션을 두 번 진행하는 것과 동일한 뜻이다. 인풋과 아웃풋의 차원은 dmodel=512이고 inner-layer는 dff=2048 차원을 가진다.

1.4 Embeddings and Softmax

다른 sequence transduction models와 유사하게 learned embeddings를 사용해 인풋 토큰과 아웃풋 토큰을 dimension dmodel의 벡터로 변환했다.

또한 usual learned linear transformation과 softmax function을 사용해 디코더 아웃풋을 predicted next-token probabilities로 변환했다.

Transformer에서 두 임베딩 레이어와 pre-softmax linear transformation 사이에 같은 weight matrix를 공유했다.

임베딩 레이어에서 weights에 √model을 곱했다.

1.5 Positional Encoding

  • Transformer에는 recurrence와 convolution이 없다.

    → (그래서) 모델이 시퀀스의 순서를 사용하게 만들기 위해서 시퀀스에서 토큰에 대한 상대적 또는 절대적인 위치에 대한 정보를 주입해야 한다.

  • 인코더와 디코더 스택의 바닥에 인풋 임베딩에 positional encodings를 더했다.

    • positional encodings는 dmodel과 같은 차원을 임베딩으로서 가져 합할 수 있다.
    • 이에 대한 다양한 선택지가 있는데 해당 연구에서는 sine and cosine functions of different frequencies 사용했다.
    • 여기서 pos는 position, i는 dimension이다.
    • positional encoding에 대한 각 차원은 sinusoid에 상응한다.
    • 파장은 2π 에서 10000 · 2π까지 geometric progression을 형성한다.
    • 해당 함수를 쓴 이유는 다음을 가정했기 때문이다. → 모델이 relative positions에 대해 더 쉽게 접근하는 것을 허용할 것이다. fixed offset k에 대해서 PEpos+k는 PEpos의 선형함수로 나타내질 수 있기 때문이다.
  • learned positional embeddings를 사용한 실험 결과
    • 두 버전의 결과는 거의 동일했다(Table3 row(E))
    • sinusoidal(사인파) version을 선택했다. → 모델이 훈련 중에 발생한 것보다 긴 시퀀스 길이로 추정할 수 있기 때문이다.

2. Why Self-Attention

  • 다음 세 가지 이유로 self-attention을 사용하였다.
  1. 레이어 당 총 계산 복잡도(total computational complexity per layer)
  2. 병렬화 가능한 계산의 양(the amount of computation that can be parallelized)
    • 이는 sequentail operations의 최소한의 수로 계산된다.
  3. 네트워크에서 long-range dependencies 사이의 path length(the path length between long-range dependencies in the network)
    1. 많은 sequence transduction tasks에서 주요한 논제임.
    2. dependencies를 학습하는 능력에 영향을 미치는 한 가지 핵심 요소는 네트워크에서 순방향 및 역방향 신호가 traverse해야 하는 경로의 길이이다.
      1. 길이가 짧아질 수록, long-range dependencies를 학습하는 것이 더 쉬워진다.
    3. 따라서 다른 layer 유형으로 구성된 네트워크에서 두 입력 및 출력 위치 사이의 최대 경로 길이(maximun path length)도 비교했다.
  • (Table 1에서 볼 수 있듯이) self-attention layer는 모든 positions들을 constant numbers of sequentially excuted operation과 함께 연결한다.

    • (이에 반해) recurrent layer는 O(n) sequential operation을 필요로 한다.
  • 계산복잡도 측면에서 self-attention layer는 sequence length n이 representation dimensionality d보다 작을 때 recurrent layers보다 더 빠르다.

    • 해당 경우는 sentence representation에서 일반적인 경우다
  • (computational performance를 상승하고자) self-attention은 각 출력 위치를 중심으로 한 입력 시퀀스에서 크기 r의 이웃만을 고려하는 것으로 제한될 수 있다.

    • 이는 maximum path length를 O(n/r)로 increase할 수 있다(이는 후속연구에서 더 연구해보겠다)
  • 커널 너비가 k<n인 single convolution 레이어의 경우, 모든 인풋과 아웃풋의 위치의 짝을 연결하지 않는다.

    • 그렇게 하는 것이 연속(contiguous) 커널의 경우 a stack of O(n/k) convolutional layers를 dilated convolutions의 경우 O(logk(n))을 필요로 하기 때문이다. → 그렇게 되면 네트워크에서 두 위치 사이의 longest paths를 increasing하게 한다.
  • 일반적으로 convolution 레이어가 k의 요인에 의해 recurrent 레이어보다 비싸다.

    • 하지만 separavle convolution의 경우, 복잡도를 O(k · n · d + n · d2)로 낮춘다.
    • k=n일 때도, 복잡도는 self-attention layer와 point-wise feed-forward later를 합친 것의 접근법(연구에서 채택한 방법)과 같다.
  • (부수적으로) self-attention은 더 interprtable한 모델을 yield할 수 있다.

  • 우리는 우리 모델로부터 attention distribution을 조사하고 부록에서 예시를 제시하며 논했다. individual attention heads는 다양한 작업을 수행하는 방법을 명확하게 배울 뿐만 아니라, 문장의 구문 및 의미 구조와 관련된 행동을 하는 것으로 보인다.

Experiments

1. Training

1.1 Training Data and Batching

  1. English-German
    • 데이터셋: standard WMT 2014 English-German
      • 4.5 million 문장 pair로 구성
    • 문장은 byte-pair encoding으로 인코딩.
      • 약 37000 토큰의 shared source-target vocabulary를 가짐.
  2. English-French
    • 데이터셋: WMT 2014 English-French
      • 36M 문장으로 구성
      • 32000 word-piece vocabulary에 따라 토큰을 나눔.
    • sentence pairs는 적절한 시퀀스 길이에 따라 같이 배치되었음.
    • 각 훈련 배치는 25000 source token과 25000 target tokens를 포함하는 sentence pairs.

1.2 Hardware and Schedule

  • 모델은 8 NVIDIA P100 GPUs로 훈련
  • 베이스 모델의 경우 (명시된 하이퍼파라미터 대로 실행 결과)
    • 각 훈련은 약 0.4초 걸림
    • 총 100,000 번을 12시간 동안 훈련하였음
  • big 모델의 경우(table3의 하단에 명시)
    • 훈련 시간은 1.0초
    • 총 300,000번을 3.5일 동안 훈련

1.3 Optimizer

  • adam optimizer
    • β1 = 0.9, β2 = 0.98 and = 10−9
    • learning rate의 경우 공식에 맞게 훈련에 따라 바꾸었음 (* lrate = d−0.5model · min(step_num−0.5, step_num · warmup_steps−1.5) )
    • 이는 첫번째 warmup_steps 훈련 단계에서는 learning rate를 선형적으로 올리고 그 후에 step number의 역제곱근(inverse square root)에 비례하여 감소하는 것이다.
    • warmup_steps = 4000 으로 설정했다.

1.4 Regularization

  • 훈련할 때 3가지 정칙화를 도입했다.
  1. Residual Dropout
    • 각 서브 레이어의 output에 적용했다(sub-layer 인풋에 더해져 정규화되기 전에).
    • 인코더, 디코더 스택에 있는 sums of the embeddings와 positional encodings에도 해주었다.
    • base model의 경우 Pdrop = 0.1로 설정했다.
  2. Label Smoothing
    • value ls = 0.1 → 모델이 더 불확실한 것을 학습하면 혼란을 야기하지만 정확도와 BLEU 점수를 향상시킨다.

2. Results

2.1 Machine Translation

  1. WMT 2014 English-to-German 번역 태스크

    • Transformer (big)의 성능이 가장 좋다.
      • BLEU score 28.4라는 new state-of-the-art를 달성했다.
      • 훈련은 8 P100 GPUs로 3.5일이 걸렸다.
    • 그 외에 기본 모델들도 이전 발표의 성능을 능가했다.
  2. WMT 2014 English-to-French 번역 태스크

    • Transformer (big)의 성능이 가장 좋다.
      • BLEU score 41.0
      • 훈련 비용이 이전의 1/4보다 적다.
      • 해당 부분의 경우 dropout rate Pdrop = 0.1로 설정했다.
  3. hyperparameters

    • base models의 경우 마지막 5 checkpoints(10분 간격으로 쓰여짐)에서 averaging하는 single model.
    • big odels의 경우 마지막 20 checkpoints를 averaging해서.
    • beam search: beam size는 4, ength penalty α = 0.6으로 설정
    • maximum output length는 input length + 50을 하도록 하였고 가능한한 빨리 끝내려 했다.

2.2 Model Variations

  • 트랜스포머의 여러 구성요소들의 중요성을 평가하고자 base 모델을 여러 방법으로 varied했다.
  1. row (A)
    • attention heads, attention key와 value dimensions의 수를 다양화했다. (computation 양은 동일하게 둔 채로) → single-head attention은 0.9 BLEU로 안좋다. 또한 heads가 너무 많아도 quality가 떨어진다.
  2. row (B)
    • attention key size dk를 줄이는 것은 모델 질이 안좋아진다. → compatibility를 설정하는 것은 쉬운 일이 아니며 dot product보다 더 정교한 방법이 있다면 더 좋을 것임을 암시한다.
  3. row (C), (D)
    • bigger models가 더 좋다.
    • 드롭아웃은 오버피팅을 피하는데 도움이 된다.
  4. row(E)
    • sinusoidal positional encoding을 learned positional embeddings로 대체했다. → base model과 거의 동일한 결과가 나온다.

Conclusion

  • Transformer

    • 어텐션에만 의존하는 첫 시퀀스 transduction 모델.
    • recurrent layers를 multi-headed self-attention를 가진 인코더-디코더 구조로 바꿈.
  • 번역 태스크

    • Transformer가 더 빨리 훈련될 수 있다.
    • WMT 2014 English-to-German와 WMT 2014 English-to-French 태스크 모두에서 new state of the art를 달성했다.

0개의 댓글