본문 바로가기

AI/Paper - Theory

[Transformer 논문 리뷰] - Attention is All You Need (2017)

반응형

*Transformer 논문 리뷰를 위한 글이고, 질문이 있으시다면 언제든지 댓글로 남겨주세요!

 

Transformer paper: https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org

 

Attention paper: https://arxiv.org/abs/1409.0473

 

Neural Machine Translation by Jointly Learning to Align and Translate

Neural machine translation is a recently proposed approach to machine translation. Unlike the traditional statistical machine translation, the neural machine translation aims at building a single neural network that can be jointly tuned to maximize the tra

arxiv.org

 

Public Transformer github: https://github.com/huggingface/transformers

 

GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. - GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, a...

github.com


Contents

1. Simple Introduction

2. Background Knowledg: Attention

    - Query, Key, Value

    - Q * KT and Divided by dimension

    - Apply softmax and Dot-product V

    - Summary

3. Multi-Head-Attention

4. Positional encoding

5. Encoder

6. Decoder

7. Furthermore


Simple Introduction

NLP using RNN

기존의 NLP 분야, 즉 자연어 처리 분야는 RNN을 많이 이용하였다.

그러다 보니 단점이 여러 생겼는데,

일단 가장 큰 문제점으로, RNN의 대표적인 문제, long-term dependecy problems이 있었다.

즉, 앞에 있는 객체의 영향력이 뒤에까지 온전히 전달되지 못한다는 것이다.

 

그 다음으로 큰 문제점은, sequence라는 것은 단어 간의 연관성이 있는데, RNN은 각 단어에 대한 전파력이 앞으로만 전달되니까 모든 단어들 간의 관계성을 파악하기 쉽지 않다는 문제점이 있다.

 

그래서 RNN을 이용하는 것만으로 한계점이 있었다.

Attention result

그래서 기존 RNN 모델들은 Attention 기법을 같이 엮어서 활용하는 것이 Transformer 등장 이전의 트렌드였다.

 

그러나 Transformer는 RNN을 이용하지 않고, 오직 Attention만을 이용해서 NLP task를 수행하였고, 그 성능이 기존의 모델을 뛰어넘는 SOTA 모델급의 성능을 보여서, 오늘날 NLP, Computer vision, graphics 등등 분야에 빠짐없이 등장하는 엄청난 모델이 되었다.

 

위의 사진을 보면, 단어를 번역할 때, 단어들 간의 연관성을 잘 파악한다고 볼 수 있다..!!

이제 Transformer 모델 구조를 천천히 알아보자.


Background Knowledge: Attention

Transformer는 앞에서 언급한 것처럼, 오직 Attention 만을 이용하어 NLP task를 수행한다.

그러면 Attention은 무엇일까?

이제부터 알아보자.

*이 논문 리뷰는 어느정도 word embedding에 대한 개념이 갖춰져 있다는 가정하에 얘기가 진행됩니다. 만약 embedding 개념과 단어가 어떻게 vector로 표현되는지 모른다면 이해하기 힘들 것입니다. (Transformer를 읽기 전의 필수지식)

Scaled Dot Product Attention

Attention은 단어를 embedding 해주는 개념이라고 생각하면 편하다. 

근데 특이한 점은, 단어를 개별적으로 input을 하는 것이 아니라, senetence 단위로 input을 한다.

 

또한 Q(query), K(key), V(value)라는 값을 통해서, sentence를 구성하는 단어들 간의 연관성을 파악을 합니다.

좀 더 자세히 가봅시다!


1. Query, Key, Value

Q,K,V

Attention에 Query, Key, Value라는 Matrix가 들어가게 됩니다.

각자의 역할을 간단히 소개하면

  • Q: Word matrix (단어 행렬)
  • K: Similariy matrix (유사도 행렬)
  • V: Weight matrix (가중치 행렬)

이렇게 구분할 수 있습니다.

또한 Q, K, V 전부 단어에 대한 vector를 가지고 있는 matrix 입니다.


Attention

+) 그리고 Q, K, V는 들어가기 전에 각자의 가중치를 곱해줍니다.

+) Q, K, V에 Positional encoding이 더해진 형태로 Transformer에 들어갑니다. (그 다음 가중치 곱; 밑에서 다시 언급)

+) 실질적으로 Q, K, V의 input matrix 값은 동일합니다. W를 통해서 서서히 변화를 한다고 보면 됩니다.


2. Q * KT and Divided by dimension

Calculate attention

첫번째 단계로, Q와 KT 간의 내적 계산(dot-product)를 수행해줍니다.

위의 사진으로 보면 Q와 KT의 내적 계산이 이루어지고 있는데,

실질적으로 나온 output이 단어 간의 벡터 계산이기 때문에 Similarity(유사도)로 표현이 가능합니다.

그래서 첫번째 단계에서는 단어의 유사도를 서로 계산해줍니다.

 

두번째 단계로 단어 matrix의 dimension을 similarity matrix에 나눠줍니다!

즉 scaling 과정인데, scaling을 적용하지 않으면 추후에 softmax와 같은 활성화 함수를 적용했을 때, 쉽게 0에 가까워진다는 단점이 있습니다.

(1, 0.1) 그리고 (10, 100)이 있을 때 같은 10배의 차이지만, softmax에 적용하면 값이 극단화 될 것입니다.

논문에서는 이러한 점을 고려해서 scaling을 해줍니다.


3. Apply softmax and Dot-product V

Calculate attention

세번째 단계는 위에서 언급한 softmax를 적용합니다.

그래서 위의 사진처럼, 행에 있는 단어가 열에 있는 단어와 얼마나 잘 매핑되었는지 알려줄 수 있는 지표로 활용합니다.

 

마지막 단계 V matrix, 즉 weights matrix를 곱해줍니다.

이 과정은 softmax로 부터 나온 matrix의 값이 서로 비슷할 때, V를 활용해서 특정 단어에게 가중치를 줄 수 있고, 또한 softmax로 나온 단어간의 관계성을 확실하게 잡아주는 역할도 해줍니다.


4. Summary

Attention equation

최종적인 식은 위와 같이 표현이 가능합니다. 

Attnention을 통해서 나온 단어들은 sentence안에서 자신을 잘 표현할 수 있는 word embedding 형태로 만들어져서 나오게 됩니다.

 

Transformer 논문에서는 Attention을 그냥 이용하지 않습니다.

Multi로 Attention을 구성해서 모델을 만드는데, 밑에서 계속 알아봅시다!


Multi-Head-Attention (MHA)

Multi-Head-Attention

 

Multi-Head-AttentionAttention을 parallel하게 구성해서 여러번 계산하는 구조입니다.

위의 사진을 보면, V, K, Q가 Attention에 총 h번 들어가고

나중에 concat을 통해서 하나로 합친 후에 linear를 통해서 word embedding을 만들어 줍니다.

 

Concat은 axis=-1 기준으로, 즉 column으로 각각의 attention matrix를 이어 붙여줍니다.

그리고 linear를 붙인 이유는 최종 output dimension이 dv(V의 dimension)여야 하기 때문에 이것을 조절해줍니다. (linear하기 전에는 h*dv)

 


Detail description

+) 논문에서는 h=8이라고 설정하였습니다.

+) 논문에 차원에 대한 자세한 설명이 있는데, dk, dv dmodel의 차원은 512로 설정하였습니다. 그래서 WO의 dimension은 8*512 x 512가 됩니다. 


Positional encoding

sinusoid equation
Visualization - positional encoding

Transformer의 어려운 부분을 다 넘겼다!!

잠시 쉬는 시간으로(?) positional encoding을 설명하면, sin-cos 함수로 구성된 값을 Q, K, V에 각각 더해준 다음에 Transformer에 input하게 된다.

 

Positional encoding을 해주는 이유는, Transformer가 단어의 연관성을 잘 파악할 수 있다는 장점이 있지만,

RNN처럼 순차적으로 넣어주는 구조가 아니기 때문에, 단어에 대한 위치정보가 담길 수 없다.

 

따라서 각 단어의 위치정보를 알려주기 위해, 순서를 알려주기 위해서 positional encoding을 진행하는 것이다.


Transformer

마지막으로, Transformer의 구조에 대해서 살펴보자.

Transformer는 Encoder와 Decoder가 구성된 모델인데, encoder와 decoder가 각각 무슨 역할을 하는지 살펴보자..!


Encoder

Encoder

Encoder는 다음과 같은 스텝으로 이루어진다.

1. 단어의 embedding이 들어갔을 때, positional encoding을 적용해서 더해준다.

2. 더해준 형태의 Matrix를 Multi-Head-Attention에 적용한다.

3. Residual network의 형태로, 그 전의 값을 더해준 후 normalization을 적용한다.

4. Feed Forward network(밑에 사진에 있음)에 적용한 후 Add&Norm을 수행한다.

5. 위의 과정을 N번 수행해서 encoder에 대한 embedding을 만든다.

 


Feed forward network

+) 논문에서 N=6이다.

+) Feed forward network는 2개의 linear와 ReLU가 적용된 형태이다.


Decoder

Decoder

Decoder는 다음과 같은 스텝으로 구성된다.

*Transformer가 번역 task를 수행한다 했을 때, Decoder에 들어가는 값은 번역에 대한 결과라고 생각하면 편하다.

1. Output으로 들어갈 word embedding을 넣어준 후 positional embedding을 수행한다.

2. (Masked) Multi-Head-Attention을 수행한다. (밑에 언급하도록 하겠습니다.)

3. Add&Norm을 수행한다.

4. Encoder에서 나온 embedding을 V, K로 이용하고, 그 전 layer에서 얻은 decoder embedding을 Q로 MHA에 넣는다.

5. Add&Norm을 수행한 후, FFN에 입력한 다음에 다시 Add&Norm을 수행한다.

6. 위의 과정을 총 N번 반복한다.

7. Linear와 softmax를 적용해서 각 단어들에 대한 확률값을 얻는다.


Masked-Multi-Head-Attention
Masking method

+) N=6이다.

+) Masked-Multi-head-attention의 역할은 단어의 순서를 고려해서 그 다음 단어를 예측하지 못하도록 막는 역할이다.


Furthermore

Vision Transformer
Swin Transformer

Transformer는 NLP 분야에서만 머무는 것이 아니라, 위의 사진에서 보이는 Vision Transformer의 등장으로 Computer vision에서도 적용이 가능해졌고, 현재는 Transformer가 CV 분야에서 매우 대표적이고 강력한 모델로 자리를 잡았다..!!

 

Vision Transformer(ViT)가 궁금하다면 밑에 링크를 통해서 공부해보시길 바란다..!

Vision Transformer 논문 리뷰: https://kyujinpy.tistory.com/3

 

[Vision Transformer 논문 리뷰] - AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE(2021)

Vision Transformer paper: https://arxiv.org/abs/2010.11929 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale While the Transformer architecture has become the de-facto standard for natural language processing tasks, its application

kyujinpy.tistory.com

Computer vision 분야에 적용되는 Transformer 기법은 ViT에서 많이 파생되었다. 반드시 공부해야한다!!


 

- 2022.12.29 kyujinpy 작성

반응형