Transformer(2017): Attention Is All You Need

Dr.Pepper·2024년 10월 9일
0

1주차 스터디

목록 보기
3/3

2017년에 나온 Transformer에 관해 작성했습니다.


0. Abstract

전통적인 방식의 RNN 또는 LSTM과 같은 신경 망을 사용한 seq2seq 는 순차적 데이터를 처리할 수 있기 때문에 번역 또는 언어 모델링과 같은 작업에 사용되어 왔으나 이러한 모델은 입력 시퀀스가 길어질수록 Long-Term DependencyVanishing gradient 문제를 야기합니다.

트랜스포머는 RNN,LSTM 과 같은 신경망 대신 Self-Attention 메커니즘을 사용하여 모든 토큰을 시퀀스로 병렬 처리하여 학습 효율과 성능을 크게 향상시킬 수 있다고 합니다.


1. Introduction

기존의 순차적 처리 모델, 특히 RNN이나 LSTM을 사용한 seq2seq와 같은 아키텍쳐들은 시간적 순서에 따라 데이터를 처리하기 때문에 긴 문맥을 유지하기가 어려웠고(Vanishing gradient)이를 해결하기 위해 많은 연구가 이루어졌지만, 여전히 근본적인 문제로 인한 한계가 존재했습니다.

해당 논문은 이런 문제를 해결하기 위해 제안된 Transformer라는 새로운 모델을 소개합니다. 이 모델은 기존과 달리 순차적 처리에 의존하지 않고, Self-attention 메커니즘을사용하여 입력 시퀀스 전체를 한 번에 처리할 수 있습니다.


2. Background

기존에 제시된 모델의 문제점인 순차적 연산의 부담을 줄이기 위해 CNN을 활용한 Extended Neural GPU, ByteNet, ConvS2S 등을 활용하였지만 거리가 멀수록 연산횟수가 증가하는 문제가 존재 했습니다.

이를 해결 하기 위해서 Attention 메커니즘을 사용했습니다.

또한 트랜스포머의 경우 RNN 혹은 CNN과 같은 신경망 없이 셀프 어텐션에 의존하는 모델입니다.


3. Transformer 구조 (Transformer Architecture)

3.1 Encoder and Decoder Stacks

TransformerEncoder-Decoder 구조를 따르며, 각 레이어는 Multi-Head AttentionFeed-Forward Neural Networks로 구성됩니다. EncoderDecoder는 여러 층으로 이루어져 있으며(논문상에서는 6층), 각 층마다 self-attentionfeed-forward 구조를 가집니다.

Decoder의 경우 특정 시퀀스 이전의 값만을 기반으로 학습하기 위한 마스크가 존재합니다.

3.2 Positional Encoding

Transformer 에서 사용 되는 Attention 메커니즘의 경우 기존의 RNN과 달리 순차적 정보를 다룰수 없다. 그렇기에 Transformer는 Self Attention 이전에 추가적인 위치 정보를 입력에 더해주는 Positional Encoding을 사용합니다.

  • 1,2,3,과 같은 값을 사용하지 않는 것은 시퀀스의 크기가 커질수록 단어정보보다 위치정보가 커지는 문제가 발생할수 있기 때문

  • 그럼 0과 1사이 값을 나눠서 쓰면 안되나? → 시퀀스 (N)의 크기마다 위치마다의 값이 달라짐

  • 예시) 7개의 단어에서의 2번쨰와 5개의 문장에서의 2번째 값이 달라지는 문제 발생
    따라서 적절한 크기와 위치마다 동일한 위치서 동일한 값을 가지게 하기 위해
    사인 함수와 코사인 함수를 사용해 정의됩니다:

PE(pos, 2i)=sin(pos100002idmodel)PE(pos, 2i+1)=cos(pos100002idmodel)PE_{\text{(pos, 2i)}} = \sin\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{model}}}}}\right) \\PE_{\text{(pos, 2i+1)}} = \cos\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{model}}}}}\right)

여기서 pos는 임베딩벡터의 위치를, i는 차원 인덱스를 나타냅니다. (d_model: 차원의 크기 논문기준 512)

3.3 Attention

  • Scaled Dot-Product Attention: 주어진 쿼리 (Q), 키 (K), 값 (V)에 대해 Attention 스코어를 계산하는 방식은 다음과 같습니다:
Attention(Q,K,V)=softmax(QKT/dk)VAttention(Q,K,V) = softmax(QK^T/\sqrt{d_k})V

여기서 d_k는 키 벡터의 차원입니다. 이 메커니즘은 입력 벡터들 간의 관계를 파악하여 중요한 정보에 더 집중할 수 있게 합니다.(나누는 이유: 내적의 크기가 커질수 있다보니 안정화 시키기 위한 목적)

  • Multi-Head Attention: Attention 메커니즘을 여러 번 실행하여 서로 다른 공간에서 정보의 연관성을 학습할 수 있게 합니다. 이 과정은 다음과 같이 표현됩니다:
MultiHead(Q,K,V)=Concat(head1,,headh)WO\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

연구진들은 한번의 Attention을 하는것보다 병렬로 처리하는 것이 효과적이라고 판단 했고 이를 원래 차원의 크기를 나누어서 병렬로 처리했습니다 num_heads(논문기준:8)

하나의 벡터가 아닌 여러 벡터에서의 정보를 수집하고자 한 선택

각각의 어텐션 값 행렬을 어텐션 헤드라 칭함

어텐션 해드들을 연결(concat)→(seq_len,d_model)

연결된 행렬에 가중치 행렬 W^0(d_v*num_heads, d_model)곱하기

여기서 각 Head는 독립적으로 Attention을 계산합니다.

  • Applications of Attention in our Model
  1. encoder-decoder attention : Q=decoder K,V=encoder
  2. self-attention layers
  3. Masked self-attention layers

3.4 Add & Norm

Layer Normalization,Residual connection을 구성요소로 지님

  • Residual connection(잔차 연결)

    H(x)=x+F(x)H(x)=x+F(x)

    레이어를 기준으로 레이어를 통과한 출력과 통과하지 않은 입력값의 합
    -> 입력 데이터와 Self-Attention 과정을 수행한 데이터의 합

  • Layer Normalization
    잔차 연결을 수행한 결과의 정규화

    y=xE[x]Var[x]+ϵγ+β\mathbf{y} = \frac{\mathbf{x} - \mathbb{E}[\mathbf{x}]}{\sqrt{\operatorname{Var}[\mathbf{x}] + \epsilon}} \cdot \gamma + \beta

3.4 Position-wise FFNN

ReLU 활성화 함수

FFN(x)=ReLU(xW1+b1)W2+b2FFN(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2

3.5 Embeddings and Softmax

입력 토큰과 출력 토큰을 벡터로 변환(Embedding), Softmax함수로 디코더의 출력을 다음 토큰의 확률로 나타나게 합니다


4. Why Self-Attention

연구진은 다음과 같은 이유로 사용한다고 합니다.

  1. 계층 당 총 계산 복잡도
  • 대부분의 상황에서 토큰의 개수보다는 차원이 큼
  1. 병렬화의 가능성
  • RNN의 n개의 셀을 거쳐야함
  1. 장거리 의존성 학습
  • position상 멀리있는 단어들간의 의존성 문제에서 유리

5. Training

5.1 Training Data and Batching

  • 영어-독일어(English-German) 번역 작업에는 약 450만 개의 문장 쌍으로 구성된 WMT 2014 데이터셋
    • Byte-Pair Encoding (BPE)를 사용하여 약 37,000개의 토큰으로 된 공유 소스-타겟 어휘를 구성
  • 영어-프랑스어(English-French) 번역 작업에서는 더 큰 WMT 2014 English-French 데이터셋(3,600만 문장 쌍)이 사용되었고, 약 32,000개의 Word-Piece 어휘로 토큰을 분할했습니다.
  • 각 배치는 시퀀스 길이를 기준으로 유사한 문장 쌍들로 구성되었으며, 배치당 약 25,000개의 소스 토큰25,000개의 타겟 토큰이 포함되었습니다.

5.2 Hardware and Schedule

NVIDIA P100 GPU 8개

를 장착한 하나의 머신에서 모델을 훈련했습니다.

  • 기본(Base) 모델의 경우, 각 학습 단계는 약 0.4초가 소요되었고, 총 100,000 단계(12시간)에 걸쳐 학습되었습니다.
  • 빅(Big) 모델은 단계당 1초가 소요되었으며, 총 300,000 단계(약 3.5일) 동안 훈련되었습니다.


5.3 Optimizer, Regularization

  • Adam Optimizer를 사용하였으며, 하이퍼파라미터는 β1 = 0.9, β2 = 0.98, ε = 10^−9로 설정되었습니다.

  • 학습률은 훈련 진행 과정에서 점차 조정하였고 다음과 같은 결과를 가지게 되었습니다:

    lrate=dmodel0.5min(step_num0.5,step_numwarmup_steps1.5)lrate = d^{-0.5}_{model} \cdot \min(step\_num^{-0.5}, step\_num \cdot warmup\_steps^{-1.5})
  • 초기에는 학습률을 warmup_steps 단계까지 선형적으로 증가시키고, 그 이후에는 단계 수의 제곱근에 반비례하여 감소시켰습니다.

  • warmup_steps 값은 4000으로 설정되었습니다.

  • Residual Dropout: 각 서브 레이어 출력에 드롭아웃을 적용하여 과적합을 방지하고 성능을 안정화했습니다. 드롭아웃 비율은 Pdrop = 0.1로 설정되었습니다. 드롭아웃은 임베딩 합계와 포지셔널 인코딩에도 적용되었습니다.

  • Label Smoothing: 라벨 스무딩 기법을 사용하여 모델이 더 확실하지 않도록 학습했습니다. εls = 0.1로 설정되어 perplexity는 약간 증가했지만, 정확도와 BLEU 점수는 향상되었습니다.


6. Result

6.1 기계번역

트랜스포머 모델이 다른 모델과 비교하여 더 나은 번역 품질과 적은 훈련 비용을 가지고 있음을 보여줍니다. FLOP 수를 기반으로 훈련 비용을 추정했으며, 트랜스포머는 기존 모델보다 더 적은 연산 자원을 사용하면서도 더 높은 BLEU 점수를 기록했습니다.

6.2 모델 변형

  • A 열: 주의(attention) 헤드 수와 키/값 차원(dk, dv)을 변경했으며, 계산량은 동일하게 유지했습니다. 주의 헤드가 하나일 때 BLEU 점수가 0.9 낮아졌으며, 반대로 헤드 수가 너무 많을 때도 성능이 저하되었습니다.
  • B 열: 주의 키 차원(dk)을 줄이면 모델 성능이 저하되었습니다. 이는 호환성을 결정하는 것이 쉽지 않음을 나타내며, 더 복잡한 호환성 함수가 유용할 수 있음을 시사합니다.
  • C & D 열: 모델이 커질수록 성능이 더 좋아졌으며, 드롭아웃이 과적합 방지에 매우 유효함을 확인했습니다.
  • E 열: sinusoids 포지셔널 인코딩학습된 포지셔널 임베딩으로 대체했을 때, 기본 모델과 거의 동일한 결과를 얻었습니다.

6.3 구문 분석

기존의 대부분 모델 보다 좋은 결과를 도출


7. Conclusion

Transformer는 순차적 처리 없이 Self-attention 메커니즘만을 사용해 복잡한 시퀀스 처리 문제를 해결할 수 있음을 보였습니다. 이로 인해 기존 모델들에 비해 훨씬 더 효율적으로 병렬 처리가 가능해졌고, 번역 등 여러 자연어 처리 과제에서 새로운 성능의 기준을 세웠습니다. 또한, 더 적은 계산 자원으로도 빠른 학습이 가능하다는 점에서 다양한 응용 가능성을 가지고 있습니다. 이러한 성과는 Transformer가 이후 딥러닝 모델들의 중요한 기반이 될 것임을 시사합니다.

profile
GDG Gachon Ai 스터디입니다.

0개의 댓글