본문 바로가기
카테고리 없음

Transformer 논문 리뷰

by seungwonsong2 2025. 4. 1.

https://arxiv.org/abs/1706.03762

Abstract

  • 시퀀스 모델 대부분은 인코더와 디코더를 포함한 CNN기반의 모델들이다. 가장 성능이 좋은 모델 역시 인코더와 디코더를 포함한 attention기반 방식이다.
  • 해당 논문에서는 RNN 및 CNN이 아닌 attention 기반의 Transformer라는 새로운 모델 구조를 소개한다.
  • 기계번역 분야에서 해당 모델은 품질이 우수하면서도 병렬화가 더 잘되고 학습 시간이 짧은 모습을 보여주었으며, WMT 2014 영어-프랑스어 번역 작업에서 8개의 GPU에서 3.5일 학습 후 41.8의 BLEU점수를 확립하였다.

1. Introduction

  • RNN, LSTM, GRU와 같은 모델들이 제안되었는데 이는 한번에 한 단어씩 넣는 방식처럼시퀀스에 포함된 각각의 토큰들에 대해 순서 정보를 먼저 정렬시킨 후 반복적으로 입력으로 넣어 hidden state 값을 갱신한다. 이는 토큰의 개수만큼 입력을 넣어야되기 때문에 병렬적인 처리가 어려워 메모리, 속도 측면에서 비효율적이다.
  • attention이 등장 후, 정보 중 중요한 정보에 가중치를 두어, 가중치가 곱해진 hidden state값을 이용해 출력 단어를 효과적으로 생성하지만 이 역시 RNN과 같이 사용됨
  • 이에 attention메커니즘에 전적으로 의존하는 transformer를 제안하며, 8개의 P100 GPU에서 12시간 학습 만에 좋은 성능을 보였다.

2 Background

  • Transformer는 기존의 ConvS2S등의 연산 문제를 해결하기위해 Self-attention을 사용하여 연산을 일정 횟수 이내에 수행하도록 한다.
  • Self-attention: 한 시퀀스 내에서 다른 시퀀스를 연결하는 방식으로 위치정보를 평균적으로 가중합하여 해상도를 낮추는 단점이 있지만, 해당 논문은 Multi-head Attention을 도입하였다.
  • Transformer는 기존 RNN,CNN없이 self-attention만으로 입력과 출력을 처리하는 최초의 변환 모델이다.

3 Model Architecture

  • 위의 사진은 Transformer의 기본 구조이다. 그림의 왼쪽이 인코더 오른쪽이 디코더의 역할을 수행한다.

3.1 Encoder and Decoder Stacks

인코더: 인코더는 6개의 스택으로 구성되어 있으며, 각각의 레이어는 두 개의 서브레이어로 이루어져 있다. 첫 번째 서브레이어는 멀티헤드(Self-Attention)이고, 두 번째 서브레이어는 fully-connectted feed-forward 네트워크이다. 각 서브레이어에는 잔차 연결이 적용되며, 이후 레이어 정규화를 수행한다. 모든 서브레이어와 임베딩 레이어의 출력 차원은 512로 동일하다.

 

디코더: 디코더는 인코더와 동일한 6개의 스택으로 구성되어 있으며, 두 개의 서브레이어 외에도 추가적인 서브레이어가 있다. 이 추가적인 서브레이어는 인코더 출력에 대한 멀티헤드 어텐션을 수행한다. 디코더에서도 잔차 연결과 레이어 정규화가 적용된다. 또한, 디코더의 자기 어텐션(Self-Attention) 서브레이어에서는 미래 시점의 정보를 참조하지 않도록 마스킹을 적용하여, 출력 시퀀스의 예측이 이전 시점의 정보에만 의존하도록 한다.

3.2 Attention

어텐션 함수는 쿼리(Query)와 키(Key)-값(Value) 쌍을 입력받아 출력을 생성하는 방식이다. 출력은 값들의 가중합으로 계산되며, 가중치는 쿼리와 키 간의 유사도를 기반으로 결정된다.

3.2.1 Scaled Dot-Product Attention

쿼리와 키의 차원이 dk, 값의 차원이 dv일 때, 쿼리와 키의 내적을 계산하고 이를 dk로 나눈 후, 소프트맥스를 적용하여 가중치를 얻는다. 이를 값과 곱해 최종 출력을 얻는다.

행렬 형태로 표현하면 다음과 같다.

어텐션 기법에는 애디티브 어텐션과 닷 프로덕트 어텐션이 있으며, 닷 프로덕트 어텐션이 더 빠르고 메모리 효율적이다. 그러나 dk 값이 클 경우, 닷 프로덕트 값이 너무 커져서 소프트맥스의 그래디언트가 작아지는 문제가 발생한다. 이를 해결하기 위해 스케일링을 적용하여 1/루트 dk만큼을 곱해준다.

3.2.2 Multi-Head Attention

기존 어텐션을 한 번 수행하는 대신, 여러 개의 어텐션을 병렬적으로 수행하는 방식이다. 쿼리, 키, 값을 각각 다른 가중 행렬을 사용하여 dk,dk,dv 차원으로 선형 변환한 후, 각 헤드에서 독립적으로 어텐션을 수행한다. 이후 모든 헤드의 출력을 연결(Concat)하고, 다시 선형 변환을 수행하여 최종 출력을 얻는다.

해당 논문에서는 8개의 어텐션 헤드를 사용하며, 각 헤드 차원은 64이다.

 

3.2.3 Applications of Attention in our Model

Transformer는 3가지 에텐션이 사용된다.

 

  • 인코더-디코더 어텐션: 디코더의 쿼리가 이전 디코더 레이어의 출력에서 생성되며, 키와 값은 인코더 출력에서 가져온다. 이를 통해 디코더가 전체 입력 시퀀스에서 중요한 정보를 집중적으로 학습할 수 있다.
  • 인코더의 셀프 어텐션: 쿼리, 키, 값이 모두 동일한 인코더 레이어에서 가져오며, 각 위치에서 전체 입력을 참고할 수 있다.
  • 디코더의 셀프 어텐션: 디코더의 이전 레이어에서 쿼리, 키, 값을 가져오지만, 마스킹을 적용하여 미래 정보를 참조하지 않도록 한다. 이는 오토리그레시브(autoregressive) 특성을 유지하기 위함이다.

 

3.3 Position-wise Feed-Forward Networks

인코더와 디코더의 각 레이어에는 어텐션 서브레이어 외에도 완전 연결된 피드포워드 네트워크(FFN)가 포함되어 있다. 이 네트워크는 입력 위치별로 동일하게 적용되며, 두 개의 선형 변환과 그 사이에 ReLU 활성화 함수를 포함한다.

각 위치에서 동일한 연산을 수행하지만, 레이어마다 다른 가중치를 사용한다. 이를 커널 크기가 1인 두 개의 합성곱(Convolution)으로 볼 수도 있다. 입력과 출력의 차원은 512, 내부 레이어 차원은 2048이다.

3.4 Embeddings and Softmax

입력 및 출력 토큰을 d mode 차원의 벡터로 변환하기 위해 학습된 임베딩을 사용한다. 또한 디코더의 출력을 확률 분포로 변환하기 위해 선형 변환과 소프트맥스를 적용한다.

이 모델에서는 입력 임베딩, 출력 임베딩, 그리고 소프트맥스 이전의 선형 변환에서 동일한 가중치 행렬을 공유한다. 임베딩 레이어에서 가중치를 루트 로 스케일링하여 모델 성능을 향상시킨다.

3.5 Positional Encoding

이 모델은 RNN이나 CNN을 사용하지 않기 때문에, 입력 시퀀스의 순서 정보를 추가로 제공해야 한다. 이를 위해 인코더와 디코더의 입력 임베딩에 위치 정보를 더해준다.

위치 인코딩의 차원은 d moe과 동일하며, 학습된 값이 아닌 고정된 사인(sin)과 코사인(cos) 함수로 생성된다.

여기서 pos는 단어의 위치, 는 차원의 인덱스를 의미한다. 각 차원에서 서로 다른 주파수의 사인 및 코사인 함수를 사용하여 위치 정보를 부호화하며, 이를 통해 모델이 상대적 위치 정보를 쉽게 학습할 수 있도록 한다.

학습된 위치 임베딩을 사용하는 방식도 실험했으나, 성능 차이가 거의 없었다. 따라서 학습 데이터보다 긴 시퀀스에도 일반화할 수 있는 사인-코사인 방식을 채택했다.

 

# 흐름 정리

  • Input을 임베딩하여 진행한다. 이때 임베딩은 단어개수 X 모델 차원(논문에서는 512)
  • 이 후 3.5의 공식을 따라 Positional Encoding을 진행한다. 이 계산은 합으로 진행되어 차원의 변화는 이루어지지 않는다.
  • 이 후 N개(논문에서는 6개)의 레이어를 거치는데 레이어 내에는 그림 왼쪽 부분과 같다.
  • 가장 먼저 멀티헤드 레이어를 거치는데 이때는 3.2.3의 첫번째인 인코더-디코더 셀프 어텐션을 진행하며, 자기 자신을 포함한 단어들의 연관성을 파악한다.
  • 이 결과와 동시에 residual learning을 합한 후, 정규화를 진행한다. 이 후 feed-forward 레이어를 거친후, 다시 이전 내용과 합친 후 정규화를 진행한다.
  • 4~5번째의 내용을 N번(6번) 반복한 후, 최종 출력 결과가 디코더 부분의 사이로 들어가게 된다.
  • 이 후 출력 역시 임베딩을 진행한 후, Positional Encoding을 진행하여 들어간다.
  • 이후 멀티헤드 에텐션을 진행하는데 이때 사용되는 것은 마스킹된 셀프 어텐션으로 이 후 정보에 대해서 적용하지 않도록 하는 방식으로 -무한대의 값을 넣어 연관도가 0에 가깝도록 한다.
  • 이 후 멀티헤드 어텐션에서는 인코더의 출력 값이 들어가는 어텐션을 진행한 후 피드포워드 레이어를 거친다.
  • 이 역시 N번을 거친 후 최종적인 output 확률이 결과로 나오게 된다.

4 Why Self-Attention

셀프 어텐션 레이어는 가변 길이 시퀀스를 변환하는 데 자주 사용되는 순환층(RNN) 및 합성곱층(CNN)과 비교된다. 셀프 어텐션을 사용할 이유는 크게 세 가지다.

  • 첫째, 레이어당 총 계산 복잡도다. 둘째, 병렬 연산이 가능한 정도로, 이는 최소한의 순차 연산 수로 측정된다. 셋째, 네트워크 내에서 장거리 의존성을 학습하는 데 필요한 경로 길이다. 입력과 출력 간 신호가 전파되는 경로가 짧을수록 장거리 의존성을 학습하기 쉬워진다.

  • 테이블 1에서 보듯이, 셀프 어텐션 레이어는 모든 위치를 일정한 수의 순차 연산만으로 연결하지만, 순환층은 O(n)의 순차 연산이 필요하다. 계산 복잡도 측면에서, 시퀀스 길이 n이 표현 차원 d보다 작을 때, 셀프 어텐션이 순환층보다 빠르다. 이는 현재 기계 번역에서 사용되는 단어 조각 및 바이트 쌍 표현을 기반으로 한 모델에서 일반적으로 해당하는 경우다.
  • 매우 긴 시퀀스를 처리할 때 계산 성능을 개선하기 위해, 셀프 어텐션을 제한하여 각 출력 위치 주변의 크기 r인 이웃만 고려하도록 할 수 있다. 이 경우 최대 경로 길이는 O(n/r)로 증가한다. 향후 연구에서는 이러한 접근 방식을 더 조사할 계획이다.
  • 커널 너비 k<인 단일 합성곱층은 모든 입력과 출력 위치 쌍을 직접 연결하지 않는다. 이를 해결하기 위해서는 인접한 커널을 사용하는 경우 O(n/k)개의 합성곱층을, 확장 합성곱을 사용하는 경우 O(log⁡k(n))개의 합성곱층을 쌓아야 한다. 이는 네트워크 내에서 가장 긴 경로의 길이를 증가시킨다. 합성곱층은 일반적으로 순환층보다 계산 비용이 더 크며, 계수는 이다. 그러나 분리 가능한 합성곱을 사용하면 계산 복잡도가 O(k⋅n⋅d+n⋅d제곱)으로 줄어든다.
  • k=n인 경우에도, 분리 가능한 합성곱의 계산 복잡도는 셀프 어텐션 레이어와 위치별 피드포워드 레이어를 합친 것과 동일하다. 따라서 본 모델에서는 이러한 접근 방식을 사용한다.
  • 또한, 셀프 어텐션은 모델의 해석 가능성을 높일 수도 있다. 모델의 어텐션 가중치를 분석한 결과, 개별 어텐션 헤드가 서로 다른 역할을 학습하는 것이 관찰되었다. 여러 헤드는 문장의 구문 및 의미 구조와 관련된 패턴을 보이는 경향이 있다.

5 Training

5.1 Training Data and Batching

  • WMT 2014 영어-독일어 데이터셋(약 450만 문장 쌍)을 사용하여 훈련하였으며, 

5.2 Hardware and Schedule

  • 8개의 NVIDIA P100 GPU에서 훈련하였으며, 12시간동안 훈련하였다. 큰 모델은 단계당 1초씩 3.5일간 훈련을 진행하였다.

5.3 Optimizer

  • Adam optimizer를 사용했으며, 학습률은 초기 선형적으로 증가한 후, 단계수의 역제곱근에 비례하여 감소하였다.

5.4 Regularization

  • 훈련 중 3가지 정규화 기법을 사용했다.
  • Residual Dropout: 각 서브-레이어의 출력에 드롭아웃을 적용하고, 입력에 더해지기 전에 정규화한다.  임베딩과 위치 인코딩의 합에 대해서도 드롭아웃을 적용한다.
  • Label Smoothing: 레이블 스무딩을 값 ϵₗₛ=0.1로 적용했다. 이는 모델이 불확실성을 더 많이 학습하도록 만들어 정확도와 BLEU 점수를 향상시킵니다

6 Results

6.1 Machine Translation

Transformer 모델은 WMT 2014 영어-독일어 및 영어-프랑스어 번역 테스트에서 이전의 최첨단 모델들을 능가하는 BLEU 점수를 달성했으며, 이 때의 훈련 비용은 이전 모델의 1/4정도가 사용되었다.

6.2 Model Variations

위치 인코딩을 학습된 임베딩으로 바꾸었을 때 성능은 거의 변화가 없었고, 이는 기존의 사인파 위치 인코딩과 유사한 결과를 나타냈습니다.

7 Conclusion

- Transfomer는 시퀀스 변환 모델로 attention기반으로 구성되었으며, 기계번역 작업에서 훈련 속도 및 성능에서 큰 개선을 보였으며, WMT 2014 영어-독일어 및 영어-프랑스어 번역에서 SOTA를 기록하였다.

 

Reference

https://www.youtube.com/watch?v=AA621UofTUA