[논문 리뷰] Attention is all you need

Seyi·2024년 8월 16일
0

논문 리뷰 스터디

목록 보기
1/3

Transformer는 2017년에 Google Brain 팀이 발표한 모델로, 자연어 처리(NLP) 및 시퀀스 변환 작업에서 큰 혁신을 가져온 모델이며 NLP뿐만 아니라 컴퓨터 비전, 음성 처리 등 다양한 분야로 확장되고 있다.

오늘은 Transformer를 처음 제안한 논문인 "Attention is all you need"를 리뷰해보려고 한다.


Background Knowledge

  • sequence modeling
  • attention mechanism

1. Abstract

  • 기존의 지배적인 시퀀스 변환 모델들은 인코더와 디코더를 포함하는 복잡한 순환 신경망(RNN)이나 합성곱 신경망(CNN)을 기반으로 하고 있으며 가장 성능이 좋은 모델들은 인코더와 디코더를 어텐션 메커니즘을 통해 연결한다.
  • 이 논문에서는 순환(RNN)과 합성곱(CNN)을 완전히 없애고, 오직 어텐션 메커니즘만을 기반으로 한 새로운 간단한 네트워크 아키텍처인 Transformer를 제안한다.
  • 두 개의 기계 번역 작업에 대한 실험에서 transformer 모델이 더 우수한 품질을 보이면서도 병렬 처리가 더 용이하고 학습 시간이 크게 단축된다는 것을 보여준다.
  • transformer 모델은 기존 문헌의 최고 성능 모델 대비 훨씬 적은 학습 비용을 소모하며, 큰 데이터셋과 제한된 데이터셋 모두에서 영어 구분 분석에 성공적인 결과물을 보이며 다른 작업에도 잘 일반화 될 수 있다.
    - 이 모델은 WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU 점수를 기록하며, 기존의 최고 성능 모델, 특히 앙상블 모델들보다 2 BLEU 이상 개선된 성능을 보여준다.
    - 또한 WMT 2014 영어-프랑스어 번역 작업에서는 8개의 GPU로 3.5일 동안 학습한 후, 단일 모델 기준으로 새로운 최첨단 BLEU 점수인 41.8을 달성했다.


2. Introduction & Background

  • 순환 모델은 일반적으로 입력 및 출력 시퀀스의 기호 위치를 따라 계산을 분할하기 때문에, 이런 순차적 특성은 훈련 내에서의 병렬화를 방해하고 시퀀스 길이가 길어짐에 따라 메모리 제약으로 인해 배치가 제한된다는 제약이 있다.
  • 본 연구에서는 순환을 배제하고 입력과 출력 간의 전역 종속성을 어텐션 메커니즘에 완전히 의존하는 모델 아키텍처인 Transformer를 제안한다. Transformer는 병렬화를 크게 향상시킬 수 있으며, 8개의 P100 GPU에서 12시간만 훈련해도 번역 품질에서 새로운 최첨단 성과를 달성할 수 있다.
  • Extended Neural GPU, ByteNet, ConvS2S 등의 모델은 CNN을 사용하여 입출력 위치의 표현을 병렬 계산하며 이 모델들에서는 입출력 위치 간 거리에 따라 필요한 연산 수가 증가한다.
  • Transformer는 이 연산 수를 일정하게 줄였지만, 어텐션 가중치의 평균화로 인해 유효 해상도가 감소하는 단점이 있다. 이를 보완하기 위해 Transformer는 Multi-Head Attention을 사용한다.


3. Model Architecture

  • 좋은 성능을 보이는 신경망 시퀀스 변환 모델(Neural sequence transduction model)들은 대부분 encoder-decoder 구조를 가지고 있다. transformer 또한 이 구조를 따라가고 있고, 그 내부는 self-attention과 포인트-와이즈(point-wise), 완전 연결층(fully connected layer)만으로 구성되어 있다.

3-1. Encoder and Decoder Stacks

1. Encoder:

  • 6개의 동일한 레이어로 구성
  • 각 레이어는 multi-head self-attention과 positionwise
    fully connected feed-forward network로 구성
  • 잔차 연결(residual connection)과 레이어 정규화(layer normalization) 사용
  • 모든 서브레이어와 임베딩 레이어는 512 차원의 출력 생성

2. Decoder:

  • 6개의 동일한 레이어로 구성
  • 인코더와 유사하나 추가로 인코더 출력에 대한 multi-head attention 레이어 포함
  • 잔차 연결과 레이어 정규화 사용
  • Self-Attention에서 미래 위치 정보를 볼 수 없도록 마스킹 적용
  • 현재까지의 출력에만 의존하여 다음 위치 예측

3-2. Attention

1) Scaled Dot-Product Attention

  • 먼저 input으로 Query(Q), Key(K), Value(V) 총 3개가 들어온다. 여기서 Query는 물어보는 주체, Key는 반대로 Query에 의해 물어봄을 당하는 주체, Values는 데이터의 값들을 의미한다.

  • 쿼리와 모든 키 사이의 내적(dot product)을 계산한 후, 각 내적을 dk\sqrt{d_k} 로 나누고, 소프트맥스(softmax) 함수를 적용하여 값들에 대한 가중치를 얻는다.

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

    이미지 출처 : https://aistudy9314.tistory.com/63
  • 닷-프로덕트 어텐션(dot-product attention)은 고도로 최적화된 행렬 곱셈 코드를 사용하여 구현할 수 있기 때문에 공간 효율적이며 본 논문에서는 닷-프로덕트 어텐션을 사용한다.

2) Multi-Head Attention

  • Query, Key, Value 값을 한 번에 계산하지 않고 head 수만큼 나눠 계산 후 나중에 Attention Value들을 합치는 메커니즘
    출처 : https://codingopera.tistory.com/44

3) Applications of Attention in our Model

Transformer는 multi-head attention을 세 가지 방식으로 사용한다.

  • encoder-decoder attention:
    - 쿼리: 이전 디코더 레이어에서 생성
    - 키와 값: 인코더의 출력에서 생성
    - 디코더가 입력 시퀀스의 모든 위치에 주목 가능

  • 인코더의 셀프 어텐션:
    - 키, 값, 쿼리: 모두 이전 인코더 레이어의 출력에서 생성
    - 각 위치가 이전 레이어의 모든 위치에 주목 가능

  • 디코더의 셀프 어텐션:
    - 각 위치가 현재 위치까지의 모든 위치에 주목 가능
    - 자동 회귀적 속성 유지를 위해 미래 정보 차단
    - 불법적 연결을 마스킹하여 왼쪽으로의 정보 흐름 방지
    * Transformer 모델의 디코더에서 자동 회귀적 속성을 유지하기 위해 사용되는 마스킹 기법으로, 여기서 "불법적인 연결"이란 현재 위치보다 미래의 위치에 대한 정보를 참조하는 것을 의미

3-3.Position-wise Feed-Forward Networks

  • attention layer와 함께 fully connected feed-forawrd network가 사용된다. 이 네트워크는 두 개의 선형 변환과 그 사이에 있는 ReLU 활성화 함수로 구성된다.
  • 입력과 출력의 차원은 dmodel=512d_{model} = 512이고, 내부 레이어의 차원은 dff=2048d_{ff} = 2048

3-4.Embeddings and Softmax

  • 입출력 토큰 처리: 학습된 임베딩을 사용하여 토큰을 dmodeld_{model} 차원의 벡터로 변환
  • 디코더 출력 처리: 학습된 선형 변환과 소프트맥스 함수를 사용하여 다음 토큰 확률 예측
  • 가중치 공유: 두 임베딩 레이어와 소프트맥스 이전 선형 변환 간 가중치 행렬 공유. 임베딩 레이어에서 가중치에 dmodel\sqrt{d_{model}} 을 곱함

3-5.Positional Encoding

이미지 출처 : https://nlpinkorean.github.io/illustrated-transformer/
  • transforemr는 순환이나 합성곱을 포함하지 않기 때문에 sequence의 순서를 모델이 이해할 수 있도록 sequence 내 토큰의 상대적 또는 절대적 위치 정보를 주입해야한다. 이러한 기능을 하는 것이 positional encoding 이다.
  • positional encoding은 sine과 cosine 함수를 사용한다.
PE(pos,2i)=sin(pos100002idmodel)PE(pos,2i+1)=cos(pos100002idmodel)\begin{aligned} \text{PE}(\text{pos}, 2i) &= \sin\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{model}}}}}\right) \\ \text{PE}(\text{pos}, 2i+1) &= \cos\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{model}}}}}\right) \end{aligned}
  • 위 수식에서 pos 는 위치를, i는 차원을 나타낸다. 위치 인코딩의 각 차원은 사인 함수에 대응한다.


4. Why Self-Attention

n: Sequence length, d: representation dimension, k: kernel size

self-attention이 RNN 이나 CNN보다 우수한 이유에 대해서 3가지 근거로 설명할 수 있다.

1) total computational complexity per layer

  • n < d 인 경우: Self-Attention 의 시간 복잡도가 RNN 보다 높다.
  • n > d 인 경우: RNN의 시간복잡도가 Self-Attention 보다 높다.
  • 영어를 예로 들면, token이 되는 단어의 개수는 8000이 넘고 이 단어들을 representation dimension으로 표현하려면 256,512 등의 높은 차원이 주어져야 continuous하게 표현된다. 보통 문장의 길이가 256,512를 넘어가는 경우가 없기 때문에 self-attenstion의 시간 복잡도가 더 작다.

2) the amount of computation that can be parallelized

  • RNN의 경우 input을 순차적으로 입력 받아 총 n번 RNN cell을 거치게 되는 반면, self-attention layer는 input의 모든 position 값들을 연결하여 한번에 처리 할 수 있다. 따라서 sequential operation이 O(1)을 가지고, 이는 parallel system에서 유리하게 사용된다.

3) path length between long-range dependencies in the network

  • long-range dependencies : 멀리 떨어져 있는 단어들 간의 dependency를 말하며 이를 학습하는 것은 sequence transduction task에서 key challenge 이다.
  • 이러한 의존성을 학습하는데 영향을 미치는 핵심요소는 forward, backward signals 간의 path length 이다.
  • maximum path length의 경우, RNN은 한 토큰에 하나씩 layer가 붙어 총 O(n)의 길이이고, self-attention은 하나의 layer에서 각 토큰들이 모든 토큰들과 참조하여 연관성을 구하기 때문에 O(1)이다.

+ 추가적인 장점

  • 해석 가능한 모델 제공 가능
  • attention head 가 다양한 작업 수행 및 문장 구조 반영



5. Conclusion

  • 본 논문은 최초로 전체 구조를 attention으로 구성한 시퀀스 변환 모델인 transformer를 소개한다. encoder-decoder 아키텍처에서 일반적으로 사용되는 순환 레이어를 multi-head self attention으로 대체한 것이 특징적이다.


추가 학습

profile
머신러닝 딥러닝 학습기록

0개의 댓글