논문 출처: https://arxiv.org/abs/1706.03762

0. Abstract

  • 오늘날 대부분의 시퀀스 변환 모델(sequence transduction models)은 인코더와 디코더를 포함하는 복잡한 RNN 또는 CNN 기법에 기반함
  • 본 논문은 attention 메커니즘에만 기반한 새로운 간단한 네트워크 아키텍쳐, Transformer를 제시함
  • 2가지 기계 번역 업무 실험 결과, 이 모델은 (1) 품질이 우수하고 (2) 병렬화 가능하여 훈련에 적은 시간 소요
    • WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU 달성 (over 2 BLEU)
    • WMT 2014 영어-프랑스어 번역 과제에서 8개의 GPU에서 3.5일간 훈련한 후 SOTA 달성(기존에 비해 모델 훈련 비용 절감)
  • Transformer는 다른 작업에도 잘 일반화되었음 - 대규모 훈련 데이터 및 제한된 훈련 데이터에서 영어 구문 분석(constituency parsing) 시행

1. Introduction

  • 기존에 언어 모델링, 기계 번역과 같은 시퀀스 모델링 및 변환(transduction) 문제에서 RNN, LSTM, GRU는 뛰어난 성능을 보임
  • 순환 모델(recurrent model)은 입력과 출력 시퀀스의 symbol position을 따라 계산 고려
    • 계산 시간 순서에 따라 위치를 정렬하면, 이전의 hidden state $h_{t-1}$과 위치 $t$에 대한 입력 함수로서 hidden state $h_t$ 시퀀스 생성
    • 이러한 순차적 특성은 (1) 병렬화를 불가능하게 하고 (2) 저장공간(memory) 제약으로 예제간 일괄처리가 제한되므로 시퀀스 길이가 길어지면 문제가 심각해짐
  • Attention mechanism은 입력 및 출력 시퀀스의 거리에 관계 없이 의존성(dependency)의 모델링을 가능하게 해주어 시퀀스 모델링 및 변환 모델의 중요한 부분이 됨
  • 해당 논문에서는 반복을 피하고, attention mechanism에 전적으로 의존하여 입력-출력간 global dependency를 도출하는 아키텍쳐 Transformer 제안 → 8개의 P100 GPU에서 12시간훈련하는 것만으로 새로운 수준의 번역에 도달할 수 있음

2. Background

  • 순차 연산을 줄이려는 여러가지 시도들 - GPU, ByteNET, ConvS2S: 임의의 두 입력 또는 출력 위치에서 신호를 연관(relate)시키는데 필요한 연산 횟수가, 위치 사이의 거리에 따라 증가 → 멀리 떨어진 위치 사이의 종속성을 학습하기 어려워짐
    • 유효 해상도(effective resolution)
    • 모델이 입력에서 실제로 구별할 수 있는 정보의 정밀도
  • ↔ Transformer에서는 Multi-Head Attention으로 이를 상쇄 - attention 가중치가 적용된 위치를 평균하여 유효 해상도(effective resolution)가 감소하는 대신 연산 횟수가 일정하게 줄어듦
  • Self attention: 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 서로 다른 위치를 연관 시키는 기법
    • 독해, 추상적 요약, 텍스트 entailment, 학습 과제 독립적 문장 표현 등
  • End-to-end memory networks는 시퀀스 정렬 반복(sequence alignment recurrence) 대신 recurrent attention mechanism을 기반으로 함
    • 용어 정리
      • 시퀀스 정렬(sequence alignmnet): 원래 문장에서 등장한 순서를 유지하면서 모델이 학습하는 방식
      • recurrent attention mechanism: 어텐션을 여러 번 반복하면서 더 정교한 정보를 추출하는 방식
    • 간단한 언어 질문 답변, 언어 모델링
  • Transformer는 시퀀스 정렬 RNN이나 합성곱을 이용하지 않고 입력과 출력의 표현을 계산하기 위해 전적으로 self-attention에 의존하는 최초의 변환 모델

3. Model Architecture

스크린샷 2025-02-16 오후 4.41.30.png

  • 인코더는 symbol representation의 입력 시퀀스(x_1 ~ x_n)를 연속 표현 시퀀스 z=(z_1 ~ z_n)에 매핑
  • z가 주어지면 디코더는 한 번에 한 성분(element)씩 심볼의 출력 시퀀스(y_1 ~ y_m) 생성
  • 각 단계에서 모델은 auto-regressive: 이전에 생성된 심볼을 다음 생성 시 추가적인 입력으로 사용
  • 인코더와 디코더 모두에 대해 stacked self-attention 및 point wise, fully connected layers를 사용
    • symbol representation: 심볼 표현은 입력 단어(또는 토큰)를 벡터로 변환한 것
    • auto-regressive: 이전 단계의 출력을 기반으로 다음 출력을 생성하는 방식
    • point-wise: 각 토큰별로 독립적으로 연산이 수행되는
    • fully connected layers: 각 단어 벡터에 대해 완전 연결 신경망(Feed-Forward Neural Network, FFN)을 적용; ffn은 각 단어 벡터를 독립적으로 변환하여 더 정교한 정보로 가공

3.1 Encoder and Decoder Stacks

인코더

  • N=6개의 동일한 layer stack으로 구성
  • 각 레이어에는 두 개의 하위 레이어가 있음
    • Multi-head self-attention network
    • Feed forward network
  • 두 개의 하위 레이어 각각에 잔차연결(residual connection)을 사용한 후 정규화(normalization)
    • 잔차연결: 각 층을 지나도 정보가 손실되지 않도록 원본 입력을 더해줌
    • 정규화: 정규화를 수행하여 값의 분포 조정
  • 각 하위레이어의 output은 LayerNorm(x + Sublayer(x))
  • 잔차연결을 위해 모든 하위 레이어, 임베딩 레이어는 dimension = 512

디코더

  • N=6개의 동일한 layer stack으로 구성
  • 인코더의 두 개 하위 레이어 외에도 Multi-head attention을 수행하는 3번째 하위 레이어 삽입
  • 잔차연결 + 레이어 정규화
  • 디코더 스택의 Self-Attention 하위 레이어를 수정하여 각 위치가 이후 위치(미래 단어)로 어텐션하는 것을 방지
    • 이러한 마스킹(masking)은 출력 임베딩이 한 위치만큼 상쇄되는 것과 결합되어, 위치 i에서의 예측이 오직 i보다 작은 위치의 이미 알려진 출력에만 의존하도록 보장

3.2 Attention

스크린샷 2025-02-16 오후 8.33.49.png

  • Attention 함수는 query와 key-value 쌍을 출력으로 매핑하는 것
  • Q, K, V, 출력 값은 모두 벡터
  • 출력은 값(values)의 가중합으로 계산됨
  • 각 값에 할당된 가중치는 대응하는 key와 query의 호환성 함수로 연산됨

3.2.1 Scaled Dot-Product Attention

  • 해당 논문에서 이러한 attention을 ‘Scaled dot-product attention’이라고 부름
  • 입력값: d_k차원의 query, key, d_v차원의 value로 구성됨
  • 식 연산: key 벡터 차원 d_k의 제곱근으로 나눔 → softmax 함수로 value의 가중치 구함

스크린샷 2025-02-16 오후 8.41.22.png

  • Attention 함수에서 가장 일반적으로 사용되는 덧셈 attention 2가지: Additive, Dot-product(Multiplicative) attention
    • Dot-product attention은 해당 논문에서 제안한 알고리즘과 동일, 스케일링 요인 1/루트d_k 추가한 점만 다름
  • Additive attention은 호환성 함수(compatibility function)를, 하나의 은닉층(hidden layer)을 가진 Feed-Forward Network(FFN)를 사용하여 계산
  • 이 두 가지 방식은 이론적으로 비슷한 계산 복잡도를 가지지만, dot-product attention은 고도로 최적화된 행렬 연산 코드로 구현할 수 있어, 실질적으로 훨씬 빠르고 메모리 효율적
  • 작은 d_k값에서는 두 가지 attention 방식이 비슷하나, d_k이 커질수록 스케일링 없이 점곱 어텐션을 사용하면 덧셈 어텐션보다 성능 저하
    • d_k 값이 커질수록 내적 값이 매우 큰 크기로 증가하기 때문일 것으로 추측
    • softmax 함수에 큰 값이 입력되면, 극단적으로 0, 1에 가까운 수로 수렴, 기울기(gradient)가 너무 작아져 학습이 어려워짐
    • → 이 문제를 해결하기 위해 dot-product 값을 $1/\sqrt{d_k}$으로 스케일링

3.2.2 Multi-Head Attention

  • d_model 차원의 QKV single attention function 대신, 학습된 서로 다른 선형 투영을 통해 Q, L, V를 d_k, d_k, d_v 차원으로 선형투영하는 것이 유리함을 발견
  • 각 어텐션 헤드(attention head)는 독립적인 파라미터를 가진 쿼리, 키, 값 행렬을 학습하며, 각각의 어텐션 연산이 서로 다른 정보에 집중할 수 있도록 함
  • 이 Q, K, V 각각에 대해 attention 함수를 병렬로 수행하여 d_v 차원의 출력 value 산출
  • → 각각 독립적인 Scaled Dot-Product Attention을 수행
  • 각 헤드에서 생성된 출력을 하나의 벡터로 결합(concatenate)하고 다시 한 번 투영하여 final value 구함(그림 2)
    스크린샷 2025-02-16 오후 9.00.25.png
    • 해당 논문에서는 h=8개의 병렬 attention layer(attention head) 사용
    • 각 head에서 d_k = d_v = d_model(512)/h = 64차원 사용
  • → Multi-head attention은 모델이 서로 다른 위치에서 서로 다른 표현의 subspace 정보에 공동으로 주의를 기울일 수 있도록 함. (↔ single attention head는 평균화가 이것을 막음)

3.2.3. Applications of Attention in our Model

Transformer는 multi-head attention을 세 가지 다른 방식으로 활용

  • Encoder-Decoder attention
    • Q는 이전 디코더 레이어(previous decoder layer) 에서 가져오고
    • K와 V는 인코더의 출력(output of the encoder) 에서 가져옴
    • 이를 통해, 디코더의 모든 위치는 입력 시퀀스의 모든 위치를 참고할 수 있음
    • 이러한 메커니즘은 기존의 seq2seq모델에서 사용되는 encoder-decoder attention 모방한 것
  • Self-Attention in the encoder
    • 인코더에는 self-attention layer가 포함되어 있음
    • 이 self-attention layer에서는 Q, K, V가 모두 같은 곳(output of the previous encoder layer)에서 나옴
    • 따라서 인코더의 각 위치는 이전 인코더 레이어의 모든 위치를 참고할 수 있음
  • Self-Attention in the decoder
    • 디코더에서도 self-attention layer 포함
    • 디코더의 각 위치는 디코더 내부에서 해당 위치까지의 모든 단어를 참고할 수 있음
    • 그러나 auto-regressive 특성을 유지하기 위해 디코더에서는 왼쪽(미래 정보)으로 정보가 흐르는 것을 방지해야 함
    • 이를 위해, Scaled Dot-Product Attention 내부에서 Softmax 입력의 불법적인 연결(illegal connections)에 해당하는 값을 -∞(마스킹)로 설정하여 마스킹(Masking)을 적용(figure 2)

3.3 Position-wse Feed-Forward Networks

  • 인코더와 디코더의 각 레이어에는 sub-layer 외에도 fully connected feed-forward network 포함
  • 이 network는 각 위치에 개별적이고, 동일하게 적용됨
  • 이 network는 두 개의 선형변환과, 그 사이 ReLU 활성화로 구성됨

스크린샷 2025-02-16 오후 9.06.47.png

  • 선형 변환은 서로 다른 위치에서 동일하지만, 레이어마다 다른 매개 변수 사용
  • 입력과 출력의 차원: d_model = 512, 내부 레이어의 차원: d_fg = 2048

3.4 Embeddings and Softmax

  • 입력 토큰(token)과 출력 토큰은 차원이 d_model인 고정된 크기의 벡터로 임베딩(변환)됨. 또한 최종적인 출력을 생성하는 소프트맥스(Softmax) 계층 이전에도 동일한 차원의 벡터를 사용
  • Transformer 모델에서는 학습된 단어 임베딩 행렬과 최종 출력에 적용되는 가중치 행렬을 공유할 수 있음 = 입력 임베딩과 출력 임베딩을 동일한 행렬을 사용하여 처리할 수 있음
  • 이러한 공유 방식은 언어 모델에서 일반적으로 사용되며, 모델의 매개변수 수를 감소시킬 수 있음
  • 그러나, 임베딩 벡터의 크기를 일정하게 유지하여 학습의 안정성을 보장하기 위해 \sqrt{d_model}로 scale 해야 함
    • cf) 일반적으로 입력 단어를 벡터로 변환하는 과정(임베딩)과, 마지막 Softmax에서 확률을 계산하는 과정에서 별도의 가중치 행렬을 사용. 해당 논문에서는 입력 단어 임베딩을 학습할 때 사용한 행렬을, 출력 Softmax의 가중치 행렬로도 공유할 수 있음.

3.5 Positional Encoding

  • 해당 모델은 재귀(recurrence)나 합성곱(convolution)을 사용하지 않으므로 입력 토큰 간의 순서 정보를 모델이 학습할 수 있도록 해야 함 → 위치 인코딩(Positional Encoding, PE)을 입력 임베딩에 추가
  • 위치 인코딩은 단어의 순서를 반영하는 고유한 벡터 표현이며, 모델이 각 단어의 상대적인 위치를 알 수 있도록 도움
  • 위치 인코딩은 입력 임베딩과 동일한 차원인 d_model을 가지며, 이를 입력 임베딩과 더하기 연산하여 모델이 순서 정보를 쉽게 학습할 수 있도록 모델에 제공
  • 고정된 사인(sine)과 코사인(cosine) 함수 기반의 방식 사용:

스크린샷 2025-02-16 오후 9.23.52.png

  • 식 설명
    • pos 는 토큰의 위치(position in sequence)
    • i 는 차원의 인덱스(dimension index)
    • d_model 은 모델의 전체 차원
  • 특징
    • 이러한 방식은위치 정보가 연속된 패턴으로 나타나도록 보장
    • 여러 개의 층(layer)을 거치더라도 순서 정보가 유지될 수 있도록 설계
    • 학습 과정에서 위치 인코딩을 학습 가능한(learnable) 파라미터로 설정하지 않고 위의 사인/코사인 함수를 사용하여 고정된 값(fixed representation) 으로 사용
    • 이 방식이 모델이 실제로 새로운 문장에서도 잘 일반화(generalize)할 수 있도록 도움

4. Why Self-Attention

  • Attention 레이어는 입력 시퀀스의 모든 위치에서 각 위치로 매핑되는 가중합(weighted sum)을 생성
  • Attention은 단순히 RNN과 CNN과 같은 기존 시퀀스 변환(sequence transduction) 모델을 대체하는 것이 아니라, 이 모델들이 해결하는 여러 문제를 해결하면서도 더욱 효율적인 방식으로 동작

1) 연산 복잡도 및 병렬화 가능성(Complexity per Layer & Parallelization)

  • 재귀형 구조(recurrent layer)의 연산 복잡도보다 낮으므로, 빠름
  • Self-Attention은 모든 입력 단어를 병렬로 처리할 수 있으므로 GPU 연산에 최적화될 수 있음
    • 반면, RNN 기반 모델은 순차적 처리(sequential processing) 방식이므로 병렬화가 어려움

2) 장거리 의존성(Long-Range Dependencies)

  • RNN의 경우, 멀리 떨어진 단어 사이의 관계를 학습하기 위해서는 여러 단계의 계산이 필요
    • 특정 단어가 문장에서 멀리 떨어져 있을수록 정보 전달이 어려워짐
  • Self-Attention은 O(1) 단계만에 모든 단어 간의 관계를 학습할 수 있음
    • 문장에서 멀리 떨어진 단어들도 한 번의 연산으로 서로 연결될 수 있음

3) 경로 길이(Path Length)

  • 시퀀스 변환 모델에서 입력의 한 위치에서 다른 위치로 정보를 전달하는데 필요한 경로가 짧을수록 학습이 쉬워짐
  • Self-Attention은 RNN, CNN보다 짧은 경로만에 모든 단어가 서로 연결될 수 있음

5. Training

5.1 데이터셋 및 배치 크기 (Training Data and Batching)

  • WMT 2014 영어-독일어(English-German) 및 영어-프랑스어(English-French) 기계 번역 데이터셋을 사용하여 학습
    • 영어-독일어(En-De) 데이터셋: 450만 개의 문장
    • 영어-프랑스어(En-Fr) 데이터셋: 3600만 개의 문장
  • 문장 길이(sequence length) 가 유사한 샘플끼리 배치(Batch) 를 구성하도록 정렬하여 학습 진행
    • 이렇게 하면 불필요한 패딩을 줄이고 연산 효율성을 높일 수 있
    • 각 배치는 최대 25,000개의 토큰(Token) 단위로 구성되며, GPU의 메모리 효율을 고려하여 동적으로 조정

5.2 하이퍼파라미터 및 학습 환경 (Hyperparameters and Training Setup)

  • 기본 모델(Base Model)과 확장된 모델(Large Model)의 두 가지 설정을 사용
  • 모든 모델에서 Adam 옵티마이저를 사용하며, 학습률(Learning Rate)은 특별한 방식으로 조정
  • 스크린샷 2025-02-16 오후 9.42.35.png

5.3 학습률 스케줄링 (Learning Rate Schedule)

  • 학습 초기에 학습률을 점진적으로 증가시켰다 이후에는 감소시키는 방법 사용
    • 이 방식은 워밍업(Warm-up) 이후 점진적으로 학습률을 줄여서 안정적으로 학습할 수 있도록 함

스크린샷 2025-02-16 오후 9.43.34.png

  • 학습 과정
    • 초기 학습 단계에서는 학습률을 선형적으로 증가(warm-up 단계)
    • 이후에는 학습률을 점진적으로 감소
    • 워밍업 스텝(Warm-up Steps)은 4000으로 설정됨
  • 이 방법은 Adam 옵티마이저와 함께 사용되었으며, 가중치 행렬의 L2 정규화(L2 Regularization)를 적용하지 않았음

6. Results

6.1 기계 번역 성능 평가 (Machine Translation Performance)

  • 연산 품질
    • Transformer는 기존의 SOTA(최신 기술) 모델보다 BLEU 점수가 높으며, 특히 En-Fr 데이터셋에서 탁월한 성능을 보임
    • 특히 "Transformer Big" 모델은 En-De에서 28.4 BLEU, En-Fr에서 41.8 BLEU를 기록하여, 이전 최고 성능 모델보다 높은 점수를 보임
    • 스크린샷 2025-02-16 오후 9.29.02.png
  • 연산 비용
    • Transformer는 연산 비용(FLOPs)이 기존 모델보다 훨씬 낮음
    • 동일한 성능을 얻기 위해 LSTM은 3배 더 많은 연산량이 필요하지만, Transformer는 병렬 연산 덕분에 더 빠르게 학습 가능
    • Transformer는 GPU 8개에서 12시간 이내에 학습 완료
    • 기존 LSTM 기반 Seq2Seq 모델보다 4배 빠르게 수렴

6.2 Model Variations

  • 헤드 수(Attention Heads) 증가
    • 어텐션 헤드를 1개에서 8개로 늘릴수록 BLEU 점수가 향상됨
  • 모델 크기 확장(더 깊은 모델)
    • d_model = 21024, d_ff = 4096으로 증가시켰을 때 점수가 가장 높음
  • 포지셔널 임베딩 방식 변경
    • 기존 사인/코사인 방식 대신 학습 가능한 임베딩을 사용해도 큰 성능 변화 없음
    • 스크린샷 2025-02-16 오후 9.29.27.png

6.3 English Constituency Parsing

  • 기계 번역뿐만 아니라 구문 분석(Constituency Parsing) 작업에서도 우수한 성능을 보임
  • Table 4에서 Transformer (4-layer 모델)는 WSJ 데이터셋의 Section 23에서 91.3 F1 점수를 기록하여, 동일한 학습 데이터로 훈련된 기존 모델과 비슷한 성능을 보임
  • Semi-Supervised 학습에서는 92.7 F1을 기록하여, 기존 모델보다 높은 점수를 기록하며 Transformer가 문법 구조 분석에서도 강력한 모델임을 입증
  • 이는 Transformer가 단순한 벡터 연산을 넘어, 문법 및 문맥 정보를 효과적으로 학습함을 시사

스크린샷 2025-02-16 오후 9.29.43.png

← Back to blog