Attention Is All You Need

김태원·2025년 4월 1일

논문

목록 보기
1/6

Abstract

Transformer 가 나타나기 전, 주요 시퀀스 변환 모델로는 RNN 또는 CNN 이 Attention 기법을 활용하여 많이 사용되었다.
이때, Attention 기법을 최대한 사용하여 Recurrent 와 Convolution 기법을 모두 제외한 Transformer 을 고안하게 되었다.

  • 독창성 : 전적으로 Attention 기법만을 사용하여 새로운 아키텍처인 Transformer 모델의 생성
  • 결과(성과)
    • Recurrent, Convolution 에 비해 병렬화가 가능해져 훈련시간을 단축 할 수 있음
    • WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU를 달성했으며, 앙상블하여 기존 최고 결과보다 2 BLEU 이상 개선하였다

1. Introduction

Recurrent 모델은 보통 입력과 출력의 symbol position에 따라 계산을 수행하게 된다. 이때 symbol position 이란 input 과 output sequence 의 순서대로, 즉 단어의 순서에 기반한다는 것을 뜻하는 것 같다.

즉, 이전 hidden state 의 ht1h_{t-1} 과, input position tt 에 대해서 현재 hidden state 인 hth_t 를 생성해낸다.

이러한 본질적인 순차성, 즉 Recurrent 모델의 순차적인 계산방식인 이전 단계의 계산 결과에 의존하는 방식은, 여러 단계를 동시에 처리하지 못하여 병렬적인 처리가 불가능한 문제점이 있다. 특히, 시퀀스의 길이가 길어지면 길어질 수록, 이러한 병렬화가 불가능하다. 긴 시퀀스를 처리하기 위해서는 충분한 메모리가 필요한데, 이러한 메모리의 한계 때문에 자연스럽게 batch 사이즈를 줄이게 되고, batch 사이즈를 줄이면 훈련의 효율성이 낮아지게 된다.

"Attention mechanism 제시"

Attention mechanism은 입력과 출력 시퀀스 거리와 관계없이 의존성을 모델링할 수 있으나 거의 대부분의 경우 순환 네트워크와 함께 사용되고 있어 효율적인 병렬화 불가능

즉, 이 논문에서 순환없이 입력값과 출력값 간 전역 의존성을 모델링할 수 있는 Attention mechanism만을 사용한 모델 구조인 Transformer 제안

2. Background

Extended Neural GPU, ByteNet, ConvS2S 에서도 연속적 연산을 줄이기 위한 연구가 이루어졌는데, 모두 CNN을 기본 구성 요소로 사용

  • 이러한 모델들은 입출력 간 관련성을 파악하기 위해 거리에 따라(선형 또는 로그 비례) 계산량이 증가
  • 따라서 입력값과 출력 값의 거리가 멀수록 의존성을 알기 어려움

Transformer의 장점

  • Transformer 에서는 이러한 연산 횟수가 일정한 상수 값으로 줄어든다. 즉, 입력 또는 출력 위치 간의 거리에 상관없이 필요한 연산량이 동일하다
  • 하지만 이는 attention 가중치가 적용된 위치들의 평균을 계산하는 방식으로, effective resolution이 감소하는 단점이 있다.
  • effective resolution은 모델이 입력 시퀀스의 각 위치에 대해 얼마나 많은 정보를 유지하고 활용할 수 있는지를 의미한다. Transformer는 Self-Attention은 주어진 시퀀스 내에서 서로 다른 위치들 간의 관계를 얻기 위해 사용되는 주의 메커니즘으로, 단일 시퀀스의 다양한 위치 간의 의존성을 모델링할 수 있다. 하지만 attention 가중치를 평균내는 과정에서 일부 정보가 희석될 수 있으며, 이로 인해 effective resolution이 감소할 수 있다.
  • 이를 해결하기 위한 방법으로 Multi-Head Attention 이 사용된다.

Self-attenion

  • 말 그대로 자신에게 수행하는 어텐션 기법으로 단일 시퀀스 안에서 서로 다른 위치에 있는 요소들의 의존성을 찾아냄
  • 메커니즘 독해, 추상적 요약, 텍스트 포함, 학습 과제, 독립적인 문장 표현을 포함한 다양한 task에서 성공적으로 사용됨

3. Model Architecture

Introduction 에서 설명했듯이, seq2seq 의 구조는 입력 시퀀스 (x1,x2,...xn)(x_1, x_2, ... x_n) 을 연속적인 시퀀스인 (z1,z2,...zn)(z_1,z_2, ... z_n) 으로 매핑한다. 그리고 인코더에서 전달된 (z1,z2,...zn)(z_1,z_2, ... z_n) 를 사용하여 출력 시퀀스인 (y1,y2,...ym)(y_1,y_2, ... y_m) 을 생성하게 된다. 즉, 다음을 생성할 때 이미 생성된 symbol (이 경우 이전 상태 hidden state)를 추가 입력으로 사용한다.

3.1 Encoder and Decoder Stacks


Encoder : 인코더는 N=6N = 6 으로 하는 동일한 Layer 를 쌓아서 만든다. 이때 각각의 Layer 에 두개의 하위 Layer 이 존재하는데, 이는 각각 multi-head self-attention mechanism, position-wise fully connected feed-forward network 이다. 이때 각각의 sublayer 를 실행한 이후 residual connection과, normalization 을 각각 실행한다. 즉, 각각의 sub-layer 의 출력값은 LayerNorm(x+Sublayer(x))LayerNorm(x+Sublayer(x)) 이다. 이때 LayerNormLayerNorm 의 경우 Layer Normalization, x+x+ 의 경우 residual connection 을 각각 의미한다. 논문의 경우 Sub-layer의 입력과 출력의 차원이 동일해야 안정적인 학습이 가능하기 때문에, dmodeld_{model} 의 출력 차원을 512 로 고정했다.

Decoder : 디코더 역시 N=6N = 6 으로 하는 동일한 Layer 를 쌓아서 만든다. 인코더의 두개의 sublayer (multi-head self-attention mechanism, position-wise fully connected feed-forward network) 이외의 세번째 서브 레이어를 삽입한다. 이 세번째 서브 레이어는, 현재 위치가 뒤의 문장의 값의 Attention을 기울이지 않도록 디코더 스택의 self-attention 레이어를 수정한다. 이 마스킹은 출력 임베딩이 하나의 위치만큼 오프셋된 사실과 결합되어, 위치 ii에 대한 예측은 ii보다 작은 위치의 알려진 출력에만 의존할 수 있음을 보장하게 만든다. (Masked Multi-Head Attention)

3.2 Attention

쿼리와 키-값 쌍의 집합을 출력으로 매핑하는 것으로 설명될 수 있으며, 쿼리, 키, 값 및 출력은 모두 벡터로 이루어져 있다. 이때 쿼리가 key-value 로 이루어져있는 hash table 를 접근하는 것으로 이해될 수 있다.

3.2.1 Scaled Dot-Product Attention


이때 쿼리는 키와 결합 (이 경우 Matrix Multiplication) 하고, Scaled (devided by dk\sqrt{d_k} 하고, Softmax 연산을 취한 후에 키 값과 매칭되는 Value 값을 Matrix Multiply 하여 Attention 값을 얻어낸다.

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

Additive attention 에 비해서, dkd_k 값이 커지면 커질 수록 Scaled dot attention 이 더 강력하다. 그 이유로는, 쿼리와 키의 길이가 커질 수록, 내적값의 softmax 연산값의 기울기는 0에 수렴한다.즉, softmax 연산값의 기울기가 0에 수렴하지 못하도록, Scaling 하는 것이다.

3.2.2 Multi-Head Attention



Multi-Head Attention 의 경우, 모델이 다양한 관점에서 문장을 해석할 수 있도록 하는 역할을 한다. Single-Head Attention 의 경우, 평균을 내기 때문에 이러한 관점의 해석이 옅어지기 때문에, 논문에서는 h=8h=8 로 split 하여 Multi-Head Attention 을 구현했다.

3.2.3 Applications of Attention in our Model

Transformer는 multi-head attention을 3가지 방법으로 사용하고 있음

  • Encoder-decoder attention(decoder 의 2번째 sublayer) :
    • 이전 decoder 레이어에서 오는 query들과 encoder의 출력으로 나오는 memory key, value들과의 attention
    • 이는 decoder의 모든 위치에서 input sequence의 모든 위치를 참조할 수 있도록 함
  • Self-attention in encoder :
    • Encoder의 각 위치들은 이전 레이어의 모든 위치들을 참조할 수 있음
  • Self-attention in decoder :
    • decoder의 각 위치들은 decoder 내의 다른 위치들을 참조할 수 있는데, 이전부터 자신 위치까지만을 참조할 수 있음
    • auto-regressive 성질을 살리면서도 정보가 잘못 흐르는 것(미래의 정보를 참조하는 것)을 막기 위해서

3.3 Position-wise Feed-Forward Networks

Attention layer과 함께 fully connected feed-forward network가 사용된다. 인코더 및 디코더의 각 계층에 개별적으로 위치하게 된다(마지막 sublayer)
FFN(x)=max(0,xW1+b1)+b2FFN(x) = max(0,xW_1 + b_1) + b_2
input과 output의 차원은 512, 은닉층의 차원은 2048로 하였다.

3.4 Embeddings and Softmax

  • 다른 sequence transduction 모델과 마찬가지로, input과 ouput token을 embedding layer를 거쳐서 사용
  • 이렇게 생성된 embedded vector는 semantic한 특성을 잘 나타내게 됨
  • 또한 input embedding 과 output embedding에서 weight matrix를 서로 share하여 사용
  • 이때 embedding layer 을 dmodel\sqrt{d_{model}} 로 곱하게 되는데, 이러한 스케일링은 embedding 값이 너무 작으면 gradient 소실의 문제점이 발생하게 되는데, embedding 벡터의 초기 분산을 조정하여 학습을 안정화시키는 데 도움을 준다.

3.5 Positional Encoding

Transformer는 Recurrent model을 사용하지 않고 오직 Attention mechanism만을 사용하여 만들기 때문에 Sequence 정보를 담아낼 수가 없다.

따라서 별도로 이러한 sequence 정보를 데이터에 추가해주어야 하는데 이 역할을 하는 것이 바로 "positional encoding"이다.

이때 pos는 위치, i 는 차원이다. 위치 인코딩의 각 차원은 sin, cos 함수에 의해서 주기가 2π2\pi 에서 100002π10000 * 2\pi 로 늘어나게 된다. 즉, 일정한 간격 kk 에 대해PEpos+kPE_{pos+k}PEposPE_{pos}의 선형 함수로 표현될 수 있다고 보았다.
자세한 설명은
https://tigris-data-science.tistory.com/entry/%EC%B0%A8%EA%B7%BC%EC%B0%A8%EA%B7%BC-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-Transformer5-Positional-Encoding?category=1005740
에서 참고하면 좋을 것 같다.

0개의 댓글