본문 바로가기
Paper Review/Natural Language Processing

[Paper Review] Attention Is All You Need

by BangGeuk 2023. 12. 15.

본 글은 https://arxiv.org/abs/1706.03762 내용을 기반으로 합니다.

본 논문의 Architecture을 시각적으로 쉽게 표현한 https://jalammar.github.io/illustrated-transformer 글을 참고합니다.

혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다.


본 논문은 attention 메커니즘을 이용하여 encoder와 decoder를 연결하여 새롭고 간단한 네트워크 아키텍처인 Transformer를 제안한다. Transformer는 WMT 2014 번역 작업에서 좋은 성능을 보여준다. 그리고 GPT, BERT 모델 등 엄청난 영향을 미치게 된다..

1. Introduction

RNN, LSTM, Gated RNN는 시퀀스 모델링과 번역 문제에서 SOTA 성능을 보여주었다. 하지만, Recurrent model은 training example들을 병렬화하여 처리할 수 없고 긴 sequence를 처리하기에는 적합하지 않다. Attention mechanism은 input, output sequence 거리와 상관없이 모델링을 할 수 있다.(sequence의 길이와 상관없이 각 단계에서 중요한 정보를 선택적으로 고려할 수 있게 해줌) 하지만, 여전히 RNN과 같이 사용한다. 따라서, 본 논문은 RNN을 사용하지 않고 Attention mechanism만 사용한 모델 Transformer를 제안한다. Transformer는 더 많은 병렬화 처리가 가능하며 SOTA 성능을 달성하였다.

2. Background

sequential computation을 줄이는 것은 GPU, ByteNet 및 ConvS2S에서도 다뤄졌으며 모두 CNN을 기반으로 한다. 본 논문은 Multi-Head Attention을 통해 계산을 효율적으로 한다.

 

Self-attention은 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 다양한 위치와 관련된 attention mechanism이다. Self-attention은 독해, 추상적 요약, 텍스트 수반을 포함한 다양한 작업에서 성공적으로 사용되었다.


Transformer는 RNN 또는 convolution을 사용하지 않고 입력 및 출력 표현을 계산하기 위해 전적으로 self-attention에만 의존하는 모델이다.

 

3. Model Architecture

 

위 그림과 같이 Encoder, Decoder는 모두 self-attention과 point-wise, fully connected layer를 쌓아올린 것으로 구성된다. 

 

3.1 Encoder and Decoder Stacks

Encoder : Encoder은 N = 6개의 동일한 layer로 구성된다. 각 layer에는 두 개의 하위 layer가 있다. 첫 번째는 multi-head self-attention 메커니즘이고, 두 번째는 position-wise fully connected feed-forward network이다. 각 하위 layer에 residual connection을 사용하고 layer normalization을 수행한다. 즉, 각 하위 계층의 출력은 LayerNorm(x + Sublayer(x))이며, 여기서 Sublayer(x)는 하위 계층 자체에서 구현되는 함수이다. 이러한 residual connection을 용이하게 하기 위해 모델의 모든 하위 계층과 임베딩 계층은 차원 dmodel = 512의 출력을 생성한다.

Decoder : Decoder도 N = 6개의 동일한 layer로 구성된다. 각 encoder layer의 두 하위 layer 외에도 decoder는 encoder의 출력에 대해 multi-head attention을 수행하는 세 번째 하위 layer를 삽입한다. Encoder와 같이 각 하위 계층에 residual connection을 사용하고 이어서 layer normalization을 수행한다.

3.2 Attention

 

3.2.1 Scaled Dot-Product Attention 

Q : Word matrix (단어 행렬)

K : Similarity matrix (유사도 행렬)

V : Weight matrix (가중치 행렬)

Q(Query), K(Key), V(Value) 벡터를 이용하여 Attention을 계산한다. Input은 setence 단위로 구성하여 단어들 간의 연관성을 파악한다.

 Attention 계산은 다음과 같다.

 

Attention 과정 요약

1) 각 단어에 대한 임베딩 벡터에 가중치를 곱하여 Q, K, V를 계산 (훈련할 때, 임베딩 벡터에 곱한 가중치를 업데이트한다.)

2) Query * Key를 통해 attention score를 계산 (값이 높을수록 연관성이 높고 값이 낮을수록 연관성이 낮다.)

3) key 차원수로 나누고 softmax 적용 (softmax 결과 값을 통해 어느정도 연관성이 있는지 나타낸다.)

4) Softmax 값 * Value

이미지 출처 : https://jalammar.github.io/illustrated-transformer/

 

3.2.2 Multi-Head Attention

 

Multi-Head Attention은 모델이 head 개수만큼의 Scaled dot product Attention 연산을 수행할 수 있게 하여 모델이 다양한 관점의 Attention Map을 만들도록 하였다. Attention 결과값들을 연결한 후 W에 linear project를 수행한다. 본 논문은 8개의 head를 이용하였으며 수식은 다음과 같다.

 

Multi-Head Attention 구현 방식을 시각화하면 아래 그림과 같다.

이미지 출처 : https://jalammar.github.io/illustrated-transformer/

 

3.3 Position-wise Feed-Forward Networks

Encoder와 Decoder의 각 layer에는 각 위치에 개별적으로 동일하게 적용되는 fully connected feed-forward network를 포함한다. 이는 ReLU activation를 포함한 두 개의 선형 변환으로 구성된다. 수식은 다음과 같다.

 

3.4 Embeddings and Softmax

다른 시퀀스 변환 모델과 같이 학습된 임베딩을 사용하여 input 토큰과 output 토큰을 dmodel 차원의 벡터로 변환한다. 그리고 input embedding 과 output embedding에서 동일한 weight matrix를 공유한다.

 

3.5 Positional Encoding

Transformer은 recurrent나 convolution이 없기 때문에 시퀀스의 순서를 활용하기 위해 시퀀스에서 토큰의 상대적 또는 절대 위치에 대한 정보를 활용한다. 수식은 다음과 같이 sine, cosine 함수를 사용한다.