Attention Is All You Need

홍지원·2021년 11월 28일
0

NLP Study

목록 보기
1/3

논문 PDF
https://arxiv.org/abs/1706.03762


1 Introduction

  1. RNN 기반의 모델

    • NLP 내에서 주류
    • LSTM, GRU 모델의 등장
      • sequence modeling, launguage modeling, machine translation 등 변환 관련 문제에서 SOTA(State-of-the-art)✨ 달성
  2. RNN 모델

    • 장점 input과 output sequence의 position계산에 뛰어남
    • 단점
      • 계산 복잡도 상승
      • 병렬처리 불가능
      • long-range dependency 때문에 문장이 길어질수록 처리가 어려움
      • 구조적으로 고정된 크기의 벡터에 모든 정보를 압축하다보니, 정보손실 발생
  3. Attention

    Attention Mechanism
    ⇒ 어떠한 해당 시점에서 예측해야 할 단어와 관련이 있는 input word를 중점적으로 본다.

    • input, output sequence의 길이에 상관없이 dependency를 모델링 ⇒ sequence modeling이나 transduction model에서 중요한 요소
    • 그러나, 이러한 방법은 아직 RNN과 결합되는 형태로 사용되고 있음



2 Background

  1. CNN 기반의 모델

    • Sequential 연산을 줄이기 위해 Extended Neural GPU, ByteNet, ConvS2S 등 다양한 모델이 제안
  2. CNN 모델

    • 장점 병렬화 가능
      • input, output 위치에 대한 hidden representation을 병렬로 계산
    • 단점 서로 먼 위치에 있을 때 dependency 학습 힘듬
      • input, output을 연결하는데에 많은 연산이 필요하기 때문
  3. Transformer

    • 다음에 올 단어를 효율적으로 예측 → 계산 복잡도 down

    • 장점

    • 병렬화 : Sentence에 대한 Sequential Computation을 사용하지 않음

    • Input-Output에 대한 Global dependency를 상수 시간에 계산 가능



3 Model Architecture

💡 neural sequence model 구조 (encoder-decoder)

  • Encoder는 input sequence (x1, ... , xn)이 있을 때, 이에 대해 다른 표현인 (z1, ... , zn)으로 바꿔준다.
  • Decoder는 z를 받아 output sequence인 y1, ... , yn을 하나씩 만들어낸다.
  • 각 단계에서 다음 출력을 만들 때 이전에 만들어진 output을 이용한다. ⇒ auto regeressive 특성
  • Transformer 모델 : encoder와 decoder 모두에 stacked self-attention, point-wise, fully connected 레이어를 적용

3.1 Encoder and Decoder Stacks

Encoder

  • N개의 동일한 레이어로 구성, 각 레이어마다 두 개의 서브 레이어
  • 서브 레이어 구성요소
    • multi-head self-attention machanism : input으로 들어온 데이터에 대해서만 주의 매커니즘 적용
    • position-wise fully connected fedd-forward network : position-wise ⇒ 위치마다(개별 단어마다) 적용됨
  • 각 서브레이어에 residual connection 후 차원을 맞춰주기 위해 layer normalization 적용

    residual connection

    • 신경망 학습이 초반에 비해 후반에 가서는 성능이 저하되는 문제를 해결하기 위해 고안
    • 레이어의 입력값을 그대로 레이어의 출력값에 더하므로 추가 파라미터가 없어 가중치가 그대로 적용된다.
    • 건너뛰어 학습을 하기 때문에 사리지는 혹은 폭발하는 경사 문제를 효과적으로 해결할 수 있다.

Decoder

  • Encoder와 비슷하게 N개의 동일한 레이어로 구성, encoder의 결과에 multi-head attention을 수행할 서브레이어 추가
  • 서브 레이어 구성요소
    • Masked Multi-Head Attention : 출력 데이터에 주의 매커니즘 적용

      Masked?
      Decoder에서는 encoder와 달리 순차적으로 결과를 만들어내야 하기 때문에, 특정 위치 i가 있을 때 그보다 이후에 있는 위치에 attention을 줄 수 없도록 self-attention을 변형 = Masking을 적용

    • Multi-Head Attention : encoder로부터 전달된 데이터에 주의 매커니즘 적용
    • Position-wise fully connected feed-forward network
  • Encoder에서처럼 각 서브레이어에 residual connection 후 차원을 맞춰주기 위해 layer normalization 적용

3.2 Attention

Attention 함수는 각 Query에 대해 key-value가 한 쌍인 집합이 출력되는 구조이고 Query(Q), Key(K), Value(V), 최종 출력값 모두 벡터 형태로 출력된다. Attention의 최종 출력값은 Attention 함수에서 각 Value의 가중합을 구한 값이다.

💬 Query-Key-Value

  • 위치정보를 인코딩한 후 주의 매커니즘으로 들어가기 전에 데이터를 Query, Key, Value로 변환한다.
  • Query : 질의, 검색어에 해당한다.
  • Query와 Key 사이에 점곱(dot-product)을 통해 유사도가 높은 Key의 Value를 찾는다.
    • 같은 방향이 강한 벡터일수록, 즉 유사한 벡터일수록 점곱이 크기 때문에 해당 Key를 가지는 Value에 높은 주의를 부여하고, Value를 가져온다.

3.2.1 Scaled Dot-Product Attention

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V)=softmax(\frac {QK^{T}}{\sqrt{d_{k}}})V
  • 가장 널리 쓰이는 attention 함수는 additive attentiondot-product attention 함수 두 가지가 있는데, 해당 논문의 attention 함수는 root d(k)로 나눈다는 점만 빼면 기존의 dot-product 함수와 동일
  • 두 함수 모두 이론적 복잡도는 비슷해 보이지만,
    • Dot-product attention은 additive attention보다 훨씬 빠르고 효과적으로 학습
    • 그러나 위 함수를 구현하기 위해 QKQKdkd_{k}로만 나누는 경우
      • additive attention : dkd_{k}가 큰 경우에도 효과적으로 작동
      • dot-product attention : dkd_{k} 값이 커지면 softmax 함수를 통과하면서 결과값이 급격하게 상승 ⇒ 사라지는 경사
    • 따라서 점곱이 너무 커지지 않도록 dkd_{k}에 루트를 씌워 나눠주는데, 이 과정이 scaling (dkd_{k}QQKK의 차원)
  • 따라서 Scaled Dot-Product Attention의 과정을 정리해 보자면,
    1. QQKK를 전치한 행렬을 점곱한다.(QKTQK^{T})
    2. 점곱이 너무 커지지 않도록 dk\sqrt{d_{k}}로 나누어준다.
    3. softmaxsoftmax 함수를 통과하여 0~1의 사이의 주의 가중치로 변환한다.
    4. 주의 가중치를 VV에 곱하여 QQ와 비슷한 KKVV를 결과에 가장 많이 반영한다.

3.2.2 Multi-Head Attention

MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhereheadi=Attention(QWiQ,KWiK,VWiV)MultiHead(Q,K,V)=Concat(head_{1},...,head_{h})W^{O}\\ where\: head_{i}=Attention(QW_{i}^{Q},KW_{i}^{K},VW_{i}^{V})
  • 논문에서는 Q,K,VQ, K, V를 각각의 attention을 사용하는 대신에 이들을 h번 선형 투영하는 것이 각 벡터들의 크기들을 줄이고 병렬처리가 가능하기에 더 좋음
  • 각각의 head에서 attention을 구하고 이들을 concat
  • 논문에서 Multi-head attention은 다양한 위치의 다양한 표상 하위공간에서 오는 정보에 주의를 기울일 수 있다고 함

    Multi-head attention allows the model to jointly attend to information from different representation subspaces positions.

    • 다양한 표상 하위공간 = 여러 개의 head
    • 문장에서 여러 가지 방식으로 여러 위치에 주의를 줄 수 있음
  • 본 논문에서는 h=8 parallel attention layers를 사용하고, key 개수 = value 개수 = 64로 설정했지만, 이 둘이 꼭 같을 필요는 없다.

3.2.3 Applications of Attention in our Model

  1. Encoder-decoder attention layer
    • Query들은 이전의 decoder 레이어에서 오고 key와 value는 encoder의 output에서 온다. 그래서 decoder의 모든 위치가 입력 시퀀스의 모든 위치에 attention을 줄 수 있게 된다.
  2. Encoder self-attention layer
    • 모든 Query, key, value들이 encoder의 이전 레이어의 output에서 온다. 이전 레이어의 모든 위치에 attention을 주는 것이 가능해진다.
  3. Decoder self-attention layer
    • i번째 output을 i+1번째 input으로 사용하면서 auto regressive 특성을 유지하기 위해, i번째 이후의 모든 위치에서 attention 함수의 softmax 입력값으로 마이너스 무한대로 설정하여(=masking) 이후의 위치에 attention을 주지 않도록 한다.

3.3 Position-wise Feed-Forward Networks

  • Transformer의 encoder와 decoder 둘 다 multi-head attention 이후에 fully connected feed-forward network 서브레이어를 적용
  • 각 위치마다, 즉 개별 단어마다 적용되기 때문에 position-wise, network는 두 번의 linear transformation과 활성화함수 ReLU로 구성
  • 위치마다 같은 가중치 파라미터를 사용하지만, 레이어가 달라지면 파라미터도 달라진다.
  • 이 과정은 kernel size = 1, channel이 레이어인 convolution을 두 번 수행한 것으로 이해할 수도 있다.

3.4 Embeddings and Softmax

  • Embadding 값을 고정시키지 않고, 다른 sequence transduction 모델처럼 학습된 embedding을 사용하여 input token과 output token을 벡터 형태로 변환한다.
  • 학습된 선형 transformation과 softmax 함수를 사용하여 decoder의 결과를 다음 토큰의 확률 예측으로 변환한다.
  • 선형 transformation을 사용할 때 decoder의 결과에 가중치 행렬 WW를 곱해주는데, 이때 WW가 과정을 거치며 학습된다.

3.5 Positional Encoding

  • 순환 신경망 : 처리 과정이 순서대로 이루어지므로 단어의 순서가 반영

  • Transformer는 sequence를 다루는 구조가 없고 관련된 정보이기만 하면 위치를 신경쓰지 않는다. ⇒ 단어의 sequence를 이용하기 위해서는 단어의 위치에 대한 정보를 추가할 필요가 있다.

  • Encoder와 decoder의 input embedding과 같은 차원을 갖게 되는 positional encoding을 서로 더해 준다.

  • Positional Encoding

    • 단어 임베딩처럼 one-hot encoding의 방식으로 학습
    • 정현파(Sinusoid)를 이용

      💡 정현파 : sin 함수 또는 cos함수의 파형

  • -1에서 1 사이의 값을 가지고 서로 겹치지 않기 때문에 이를 홀수와 짝수로 나누어 연산한 후에 기존의 embedding에 합산 → 서로 겹치지 않고, 상대적인 위치 정보를 가진 결과 생성 가능

  • 장점 모델이 학습한 내용보다 더 긴 sequence가 들어와도 학습된 embedding보다 더 많은 계산이 가능하기 때문에 본 논문에서는 이 방법을 채택



4 Why Self-Attention

"I arrived at the bank after crossing the ..."

“bank”의 의미는 문장이 “road” 및 “river” 중 무엇으로 끝나는 지에 따라서 달라짐.

🔹 Recurrent : 순차적으로 처리하는 과정에서 멀리 떨어져 있을수록, 요구되는 time step의 수와 정보 결합의 단계가 늘어나서 결정의 어려움 문제가 있음.

🔸 Transformer : 훨씬 작은 상수의 step을 가지며, 각각의 step에서는 self-attention 매커니즘을 활용하여 문장의 모든 단어에 대해서 직접적인 관계를 모델링


  1. Self-Attention
    • 입력한 문장 내의 각 단어를 처리해 나가면서 , 문장 내의 다른 위치에 있는 단어들을 보고 힌트를 받아 현재 타겟 위치의 단어를 더 잘 인코딩할 수 있게 하는 과정
    • Attention
    • Self attention
    • 각 단어의 vector들끼리 서로 간의 관계가 얼마나 중요한지 점수화
  1. Three Desiderata

    • Computational Complexity per Layer (계산 복잡도) : Layer 당 계산 복잡도 감소 (= computing cost의 감소)
      • 길이 n이 차원 d의 크기보다 작은 경우 더 빠름
      • 길이 n이 더 길다면, restricted self-attention을 통해 현재 단어에서 r 만큼 떨어진 단어들만 attention 수행
    • Amount of Computation (계산량) : 병렬로 처리할 수 있는 계산 증가
    • Path Length between long-range dependencies : 더 먼 거리에 있어도 잘 학습
      • If short, more easier to learn long-range dependencies
      • 최대 길이(maximum path lengths) 중심으로 검토
  2. Sequential Operations

    • 병렬화가 힘든 연산의 개수; self-attention은 한 번에 병렬적 처리가 가능
  3. Maximum Path Length

    • 의존성을 학습하기 위해 거쳐야 하는 connection이 최대 몇 단계가 필요한가를 나타내는 수치 (path의 길이가 짧을 수록 임의의 position 간의 의존성을 학습하기 쉬움)
      • RNN : 현재 position은 바로 이전 position에만 의존 → 의존성 체크는 sequence의 길이 n 만큼
  4. 결론

    • Self-Attention이 장거리 의존성 학습 속도에서도 가장 좋고, 의미/구문 해석(interpretable)에 있어서도 유용한 모델 (+ 시각화 가능)





5 Training

5.1 Training Data and Batching

  1. WMT 2014 영어-독일어 데이터 셋

    • 약 37,000개의 토큰을 공유하는 source-target 어휘를 가진 byte-pair 인코딩을 사용
  2. WMT 2014 영어-프랑스어 데이터 셋

    • 문장 쌍은 대략적인 시퀀스 길이와 함께 배치
    • 각 training 배치 : 약 25,000개의 source 토큰 & 25,000개 target 토큰을 포함한 문장 쌍 세트 포함

5.2 Hardware and Schedule

  • 8개의 NVIDIA P100 GPU가 있는 하나의 기계
  • Base Models (using Hyperparameters)
    • 총 10만 개의 steps (각 학습 단계는 0.4초 소요) / 12시간 동안 훈련 진행
  • Big Models
    - 총 30만 개의 steps (각 학습 단계는 1초 소요) / 3.5일 동안 훈련 진행

5.3 Optimizer

  • Adam optimizer : β1=0.9,β2=0.98,ϵ=109\beta_1=0.9, \beta_2=0.98, \epsilon=10^{-9} 사용
  • Learning rate : 학습과정에 따라 변화시킴
    ⇒ 첫 번째 warmup_steps 까지는 학습 속도를 선형적으로 증가 시키고, 그 이후의 step-num의 역제곱근에 비례하여 감소시킴
    lrate=dmodel0.5min(step_num0.5,step_numwarmup_steps1.5)lrate=d_{model}^{-0.5}\cdot min(step\_num^{-0.5},step\_num\cdot warmup\_steps^{-1.5})
  • warmup_steps : 4,000 사용

5.4 Regularization

  1. Residual Dropout

    • residual connection을 수행하기 전, sub-layer의 결과에 droupout을 적용
    • encoder 및 decoder 스택에서 임베딩 및 위치 인코딩의 합에 dropout을 적용
    • Base Models : Pdrop=0.1P_{drop}=0.1 사용
  2. Label Smoothing

    • 레이블 평활화 값 : ϵls=0.1\epsilon_{ls}=0.1 사용
    • 모델이 더 불확실한 것을 학습함에 따라 혼란(perplexity) 야기
    • 정확도(accuracy) & BLEU 점수 향상



6 Results

6.1 Machine Translation

  1. WMT 2014 영어-독일어 번역 task

    • big transformer model이 이전에 보고된 최선의 모델(앙상블이 포함된)보다 2.0 높은 28.4점의 새로운 BLEU score를 수립했다. 8개의 P100 GPU로 3.5일동안 학습. 훈련 비용 또한 경쟁력 있었다.
  2. WMT 2014 영어-프랑스어 번역 task

    • big model이 41.0의 높은 BLEU score를 수립하며 이전에 발표된 모든 단일 모델보다 우수한 성능 보임. 게다가 훈련 비용은 이전 최첨단 모델의 훈련비용의 1/4보다 적음.
  3. Model

    • dropout rate Pdrop = 0.1
    • 기본 모델의 경우, 5개의 체크 포인트의 평균 사용 (10분 간격)
    • 대형 모델의 경우, 20개의 체크 포인트의 평균 사용
    • beam size = 4, length penalty α = 0.6
    • input length + 50 으로 최대 출력 길이로 설정, 단 가능하면 일찍 종료한다.
    • 문학에서 다른 모델과 번역 퀄리티와 훈련 비용을 비교한 테이블

6.2 Model Variations

  • (A) 행에서 계산의 양은 일정히 유지하면서 attention head, attention key, value demensions 의 수를 조절한 결과, single head는 best setting 보다 BLEU score가 0.9 낮으며 head가 많다고 무조건 좋은 것은 아님.
  • (B) 행에서는 attention key 의 크기를 줄이면 모델 품질이 저하되는 것을 발견. 이는 호환성 결정이 쉽지 않으며 정교한 호환 방식보다 dot-product가 이익임을 의미.
  • (C)와 (D) 행을 통해 모델이 클수록 좋고, dropout이 오버피팅을 피하는 데 효과적
  • (E) 행에서, sinusoidal (정현파) positional encoding 을 학습된 위치 임베딩으로 대체하니 기본 모델과 거의 동일한 결과를 발견.

6.3 English Constituency Parsing

  • transformer를 다른 task에 적용 : english constituency parsing에서도 높은 성능을 보였으나 output이 input보다 길다는 구조적 제약 존재.
  • 성능 : task specific tuning이 부족했음에도 RNN Grammar 모델을 제외한 이전 모델들보다 나은 결과를 보임.



7 Conclusion

  • 논문의 저자는 기존 RNN with attention 을 대체하는 오직 attention만을 사용하는 모델 transformer를 제안한다.
  • 모델은 WMT 2014 영어-독일, 영어-프랑스어 번역 작업에서 이전 존재하는 모든 앙상블 모델보다 최고의 성능을 보여줬다.
  • 이 모델은 계산량을 줄이고 병렬화를 적용해 학습 속도가 훨씬 빠를 뿐만 아니라 그 성능 또한 state-of-the-art를 달성하는 수준에 이르렀다.
  • 또한 이러한 attention에 기반한 모델은 다른 task들에 적용할 수도 있다. 텍스트뿐만 아니라 이미지, 오디오나 비디오 등의 상대적으로 큰 입력-출력을 요하는 task들에도 효과적으로 사용할 수 있을 것이다.




📖 References
https://machinereads.wordpress.com/2018/09/26/attention-is-all-you-need/
https://pozalabs.github.io/transformer/

profile
문과인듯 이과아닌 문과같은 사람

0개의 댓글