[논문 리뷰] Attention Is All You Need

Seoyen·2025년 8월 7일

paper_review

목록 보기
4/10

1. Introduction

Sequence Modeling으로 Sota 성능을 내는 모델은 RNN, LSTM, GRU과 같은 recurrent model이다.
하지만 이른 recurrent model은 계산의 병렬화가 어렵다는 문제가 있다. 왜냐하면 recurrent model은 sequence를 순차적으로 처리한다. 이런 특성은 하나의 학습 예제 내에서 병렬 처리를 불가능하게 하며, 이는 시퀀스 길이가 길어질수록 중요한 문제가 되는데, 그 이유는 메모리 제약으로 인해 여러 예제를 동시에 배치(batch) 처리하는 데 한계가 있기 때문이다.

Attention 은 입력 길이와 상관없이 유연하게 의존성을 포착할 수 있어 매우 유용하지만 대부분의 경우 여전히 recurrent network와 함께 사용한다.

본 논문에서는 Transformer라는 recurrence를 없애고 attention mechanism만을 사용하여 input과 output간의 전체 관계를 파악할 수 있는 model architecture를 소개한다.

Transformer의 장점
1. parallelization
2. 적은 시간과 적은 GPU (eight P100 GPUs)로 SOTA 성능을 낼 수 있다.

2. Background

3. Model Architecture

Encoder-Decoder structure
Encoder: input sequence (x1,...,xnx_1, ... , x_n)을 어떤 연속적인 representation z = (z1,...,znz_1, ... , z_n)으로 변환
Decoder: 각 zz를 하나씩 순서대로 output sequence (y1,...,yny_1, ..., y_n)으로 변환

Overall Model Architecture

3.1 Encoder and Decoder Stacks

Encoder

  1. 총 6개의 동일한 encoder layer를 쌓음
  2. 각 layer는 2개의 sub-layer로 구성됨
    • multi-head self-attention mechanism
    • feed forward network (simple, position-wise fully connected)
  3. 각 (sub-layer + layer normalization)마다 residual connection을 추가함
    • output: x + Sublayer(x)
    • residual connection을 위해 모든 sub-layer들(embedding layer 포함)의 output의 차원은 512 차원이어야 함

Decoder

  1. 총 6개의 동일한 decoder layer를 쌓음
  2. 각 layer는 3개의 sub-layer로 구성됨
    • ** masked multi-head self-attention mechanism (i번째 token을 예측할 때 i 이전 위치들의 값만 참조할 수 있도록)
    • feed forward network (simple, position-wise fully connected)
    • ** multi-head attention over the output of the encoder stack
  3. 각 (sub-layer + layer normalization)마다 residual connection을 추가함
    • output: x + Sublayer(x)
    • residual connection을 위해 모든 sub-layer들(embedding layer 포함)의 output의 차원은 512 차원이어야 함

3.2 Attention

  • Attention function이란 하나의 query와 key-value 쌍의 집합과 output 간의 mapping이다.
  • Attention의 output은 value의 가중합으로 계산되고 이때 각 가중치는 query와 이에 대응하는 key로 compatibility function을 계산해 구할 수 있다.

3.2.1 Scaled Dot-Product Attention

  1. Input dimension
    • query, key dim: dkd_k
    • value dim: dvd_v
  2. 각 query를 모든 key들과 내적 연산 후, dk\sqrt{d_k}로 나누어 준다.
    • dk\sqrt{d_k}로 scaling 해주는 것
    • 이유: dkd_k가 커질수록 내적값이 커지고, softmax function의 입력값도 커지게 되어 gradient가 0이 된다. 이걸 방지하기 위해 dk\sqrt{d_k}로 나누어준다.
  3. 이 값에 softmax를 취해 value에 대한 가중치를 구할 수 있다.


(모든 query들의 집합은 matrix Q로, key는 matrix K로, value는 matrix V로 표기)

  1. Additive or Dot product Attention
    • 여기서는 내적을 사용해 attention을 계산했지만 자주 사용하는 또 다른 방법은 additive attention이 있다. Compatability function으로 single hidden layer로 구성된 feed-forward network를 사용한다. 이는 이론적으로 내적을 사용한 attention과 계산 복잡도는 같지만 실제 사용에서는 내적했을 때 더 계산이 빠르고 공간을 더 효율적으로 사용할 수 있어 내적 attention을 사용한다.

3.2.2 Multi-Head Attention

하나의 attention function만을 사용하지 않고 총 h개의 attention head를 사용해 효과를 극대화할 수 있다.

  1. 각 queries, keys, values를 h번의 다른 dkd_k, dkd_k, dvd_v 차원으로 linear projection 해주면 된다.
    • 선형 변환 행렬 WQW^Q, WKW^K, WVW^V를 통해 dq,dk,dvd_q, d_k, d_v 차원으로 투영(projection)한다.
  2. Query, key, value의 투영된 버전 각각에 대해, 어텐션 함수(attention function)를 병렬적으로 수행한다.
    • 이 과정에서 출력값들은 dvd_v 차원을 가지게 됩니다.
  3. 이렇게 얻은 출력값들을 하나로 이어붙인(concatenate) 후, 한 번 더 linear projection을 거쳐 최종 출력값(final values)을 생성한다.

장점:
각 어텐션 헤드가 입력을 서로 다른 방식으로 바라보는 관점이 다르다. 각 헤드는 입력에 대해 서로 다른 투영(Projection)을 하기 때문에, 다양한 특성을 추출할 수 있다는 장점이 있다.

(+multi-head일 때 dkd_k, dvd_v의 차원을 줄여 전체 연산량이 너무 커지는 것을 방지했다.)

3.2.3 Applications of Attention in our Model

Transformer의 3가지 multi-head attention:
1. 🔄 Encoder-Decoder Attention

  • 쿼리(Query)는 디코더의 이전 레이어에서 온다
  • 키(Key)와 값(Value)는 인코더의 출력에서 온다
    즉, 디코더의 각 위치가 입력 전체(인코더 출력)를 참조할 수 있게 해준다. 이는 기존의 sequence-to-sequence 모델의 인코더-디코더 attention과 유사하다.
  1. 🔁 Self-Attention in the Encoder
  • 쿼리, 키, 값이 모두 인코더 내의 같은 레이어 출력에서 나옵니다.
  • 따라서 인코더의 각 위치는 전체 입력 시퀀스의 모든 위치에 주의를 기울일 수 있음.
  1. 🔁 Self-Attention in the Decoder
  • 디코더에서도 마찬가지로 self-attention 사용.
  • 하지만! 오른쪽(미래 위치) 정보를 보지 않도록 제한해야 함 → auto-regressive 특성 유지.
  • 이를 위해 softmax 전에 마스킹(masking)을 적용해서, 자기보다 뒤의 위치는 볼 수 없도록 처리. 이렇게 하면 디코더는 이전 토큰들만 보고 다음 토큰을 생성할 수 있음.

3.3 Position-wise Feed-Forward Networks

  1. 각 인코더 및 디코더 레이어는 어텐션 서브레이어 외에 하나의 피드포워드 신경망(FFN) 서브레이어를 포함함
  2. 이 FFN은 입력 시퀀스의 각 위치에 독립적으로(position-wise) 동일하게 적용됨

3.4 Embeddings and Softmax

개념
1. Transformer 모델은 입력과 출력을 벡터로 바꾸기 위해 학습된 임베딩(embedding) 레이어를 사용함
2. 디코더의 출력은 학습된 선형 변환 + softmax 함수를 거쳐 다음 토큰에 대한 확률로 변환됨

구성 요소설명
입력 임베딩입력 토큰을 d_model 차원의 벡터로 변환
출력 임베딩출력 토큰(디코더 입력)을 d_model 차원의 벡터로 변환
softmax 이전 선형 변환디코더의 출력 벡터를 어휘(vocab) 차원으로 투영
softmax다음에 나올 토큰의 확률 분포 계산

가중치 공유 (Weight Sharing)
1. 입력 임베딩, 출력 임베딩, softmax 이전의 선형 변환 → 이 세 곳에서 동일한 weight matrix를 공유함.
2. 즉, 하나의 weight matrix를 재사용해서 파라미터 수를 줄이고 성능을 향상시킴.

🧮 보정 스케일링:
임베딩을 사용할 때, 가중치에 dmodel\sqrt{d_{model}}을 곱해줌.

  • 이유: 초기화된 임베딩의 분산이 너무 작거나 커지는 걸 방지해서 학습을 안정화시킴.

Positional Encoding

왜 필요한가?
Transformer는 순환(RNN)도 없고 합성곱(CNN)도 없기 때문에, 토큰의 순서 정보(sequence order)를 자연스럽게 인식하지 못함.

따라서 입력에 위치 정보를 인위적으로 주입해야 함 → Positional Encoding 사용

어떻게 주입하는가?
각 입력 임베딩 벡터에 위치 인코딩 벡터(positional encoding)를 더함(summed)

위치 인코딩은 임베딩과 같은 차원(d_model)을 가지므로 덧셈이 가능

위치 인코딩 방식
고정된(sinusoidal) 위치 인코딩 사용 (학습 없이 계산)

여기서:

  • pos: 시퀀스 내 위치 (0, 1, 2, ...)
  • i: 벡터 차원 인덱스 (0, 1, 2, ...)

즉, 위치에 따라 각 차원이 다른 주기의 사인/코사인 값을 가짐

왜 사인/코사인인가?

  • 상대적 위치 정보를 표현하기 쉽기 때문

학습 기반 인코딩과의 비교

  • 논문에서는 학습된 위치 임베딩(learned positional embeddings)도 실험했음
  • 결과적으로는 사인/코사인 방식과 거의 비슷한 성능을 보임
  • 하지만 사인/코사인 방식은:
    - 훈련 중 보지 못한 길이의 시퀀스에도 일반화(extrapolate)할 수 있음
    - 그래서 최종적으로는 고정된 사인/코사인 위치 인코딩을 채택함

→ 이로 인해 모델이 상대적 위치 기반으로 어텐션을 학습하는 데 유리함

Why Self-Attention

Recurrent/Convolution layer과 self-attention layer를 세가지 과점에서 비교했다.

  1. layer별 전체 계산 복잡도
  2. 병렬화할 수 있는 연산량 (필요한 최소한의 순차 연산 횟수로 측정)
  3. long range dependencies를 처리하는 path의 길이
    - long range dependencies를 학습하는 능력에 주요한 역할을 하는 요소는 network를 횡단하는 forward/backward path의 길이이다
    - 이 path의 길이가 짧을수록 (input과 output의 어떤 position 조합으로든), long range dependencies를 배우기 쉽다
    → 두 layer type의 input과 output의 모든 position과의 길이 중 maximum끼리 비교하겠다.

📕결론적으로 본 논문에서 제안한 Transformer라는 새로운 구조를 통해 attention mechanism만을 사용해 input과 output간의 전체 관계를 파악할 수 있게 되었다.

논문 출처: https://doi.org/10.48550/arXiv.1706.03762

profile
알잘딱깔센 논문리뷰

0개의 댓글