Attention Is All You Need ; Transformer ,2017

TEMP·2021년 11월 23일
0

Papers

목록 보기
8/9

Deep learning from scratch 2 와 wikidoc 보고 정리해본 내용이다.
https://velog.io/@jj770206/attention-in-seq-to-seq-transformer

https://arxiv.org/abs/1706.03762

CV 에서도 attention을 이용한 transformer가 우수한 성능을 보이고 있다.
이에 transformer의 첫번째 논문이 본 논문이다.
CNN기반의 model를 예를들어 VGG, ResNet, GoogLeNet, UNet, FCN, DenseNet은 convolution layer를 이용한 model이고 architecture의 변화만 이해해도 하나만 완벽하게 이해하면 나머지를 이해하는 데에는 크게 어려움이 없다. 또한 Pytoch를 이용한 code구현도 여러차례 해보다 보니 익숙해져 CNN 기반 model들은 필요 할때 다시 보기로 하고 이제는 transformer를 이용한 CV에 집중하기로 한다.

0. Abstract

Paper summary

대부분의 sequence transduction model은 encoder와 decoder를 포함한 복잡한 RNN(GRU, LSTM)이나, CNN으로 이루어져 있다.
(*여기서 transduction이란 한국어로 번역이 쉽지 않으며 분야마다 다르게 번역 되는데 그냥 text로 부터 text를 예측하는 model이라고 보면 된다.)
이중 Best model들은 encoder와 decoder사이를 attention으로 연결한 model들이다. 여기에서 convolution이나 recurrent layer가 들어가지 않고 오직 attention만으로 이루어져 있는 Transformer가 나온다.

Comment

위의 링크에서도 설명 해놨던거 같은데 attention에 대해 의미만 다시 생각해보자.
예를들어 seq to seq 를 이용한 translation model을 생각해 보자. 기존의 model은 단어를 입력 받고 그 다음 단어를 target으로 하여 parameter들이 이전의 단어들로 다음 단어를 예측하게 하는 방향으로 학습 되었다. 이에는 문제가 몇가지 있다.
Encoder에서 Decoder로 넘어가는 부분이 고정된 길이의 context vector로 정해져 input text의 길이에 무관하게 일정한 길이늬 vector로 표현된다.
또한 심지어 LSTM을 사용하더라도 Encoder의 time step 즉, input text가 길어지면 vanishing gradient의 문제가 생기며 Encoder의 마지막 time step의 정보가 많이 담길 수 밖에 없고, time series data 이므로 parallelization가 되지 않아 GPU의 장점을 살릴 수 없다는 한계점을 지니고 있다.
이를 해결?하고자 encoder와 decoder사이에 attention을 추가 하였다.
지금 말하는 attention은 Q 는 decoder의 t 시점의 hidden state이고 K, V는 Encoder의 모든 시점의 hidden state이다.
여기서 attention은 decoder에서 output을 출력 할때 다시 encoder의 모든 time의 hidden state를 둘러 보게 한다. 또한 더 중요한 역할을 하는데 이는 encoder의 어느 시점의 hidden state를 더 많이 참고 할까를 결정 해준다.
우리가 번역을 한다고 생각해보자.
우리는 word to word의 관계로 번역을 한다. (alignment) 즉, 단어를 보고 번역할 언어에서의 단어를 생각한다. attention은 이러한 역할을한다고 생각하면 왜 attention을 포함한 model의 성능이 더 좋은지 이해 할 수 있다.

1. Introduction

Paper summary

RNN계열의 layer (LSTM, GRU)를 이용한 model은 확실하게 NLP분야에서 SOTA이다. 하지만 이는 tt 시점의 hidden state를 계산하기 이전에 t1t-1 시점의 hidden state의 계산이 선행되어야 한다. 즉, 이러한 inherent 속성은 parallelization를 방해한다. 이에대한 개선이 있지만 여전히 문제로 남아있다.

Comment

GPU의 장점이 parallelization인데 이걸 사용하지 못하고 있다. 아 물론 mini batch학습은 한다. 하지만 하나의 mini batch의 관점에서 보면 time을 parallelization 하면 좋은데 불가능 하다.

Paper summary

따라서 본 논문에서는 Transformer를 제안한다. 이는 recurrent를 사용하지 않으며 대신에 attention에만 온전히 의존하는 model이다. 이때 attention은 input과 output의 전반적인 의존성을 이끌어 낸다.
또한 parallelization가 가능하여 GPU사용에 유리하며 새로운 SOTA가 된다.

2. Background

Paper summary

생략.
자세한 내용은 아래 architecture에서 같이 다룬다.

3. Model Architecture

Paper summary

sequence transduction의 경쟁력 있는 모델들은 encoder-decoder 구조를 가지고 있는 모델들이다.
Trasnformer도 전반적으로 encoder-decoder 구조를 사용한다.
적층된 self attention, point wise, fc를 encoder와 decoder에 모두 사용한다.

Comment


논문의 encoder decoder 구조는 위의 그래프를 말한다.
단 이때 train시에 decoder의 t 시점의 input은 t-1의 output이 아니고 실제 target data를 사용한다.

3.1 Encoder and Decoder Stacks

Paper summary


이 그림이 Transformer이다.

Encoder

여기서 Encoder는 총 6개가 적층되어 있다. 즉, N=6N=6이다. 각각의 encoder는 두개의 sub-layer가 있다. 첫번째는 multi-head self-attention이다. 자세한 내용은 논문 순서에 따라서 아래에서 설명. 두번째는 position wise fully connected feed-forward network 보통은 FFNN이라 한다. 또한 ResNet의 residual connection을 사용하였으며 이는 두개의 sub-layer에 모두 적용된다. 이후에는 layer normalization이 적용된다. 따라서 그림의 add $ norm을 한번에 표현하면 LayerNorm(x+Sublayer(x))LayerNorm(x + Sublayer(x))이다. 또한 residual connection이 잘되게 (편하게) 하기 위해 모델의 모든 sub-layer과 embedding은 output의 차원을 dmodel=512d_{model} = 512으로 통일 한다.

Decoder

Decoder역시 6개를 적층한다. (보통 같은 수 만큼 적층한다.) Encdoer의 sub-layer 2에 추가로 attention이 들어간다. 이는 encoder의 output에 관여를 한다. 이 부분 외에 residual connection과 layer normalization는 같다. 다만 encoder의 sub-layer가 그대로 들어 간다 했는데 여기서 attention layer에 mask가 추가 된다. 이는 decoder의 output이 이전의 정보만을 참고하도록 하는 역할을 한다.

Comment



같은 그림인데, encoder와 decoder가 적측 되어 있을때 조금 더 정확히 알기 위해 첨부한다.
논문의 그림에서 add라고 표현 된 부분이 residual connection이다. 굳이 add라고 표현한 이유는 정확히 저 부분에서 identity mapping과 residual mapping이 bit-wise addition이 일어나기 때문이다.

3.2 Attention

Paper summary


Attention은 위와 같이 표현된다.
output은 weight와 value의 weighted sum이고 weight는 key와 query를 이용하여 계산된다.

Comment

V, K, Q를 각각 독립 적으로 표현하기는 어렵다.
또한 V, K, Q는 완전히 같을 수 도 있으면 이때는 같은 vector이지만 역할이 다르다.
한문장으로 다시 정리 하자면 Q와 K를 이용하여 어디에 더 집중할지에 대한 정보를 만들어 이를 V에 곱하여 V에서 어떤 부분에 얼마나 집중할지를 계산해낸다.


근데 이게 맞으면 오히려 encoder-decoder attention은 value를 decoder의 hidden state를 사용해야 하는거 아닌가?

3.2.1 Scaled Dot-Product Attention

Paper summary

위 그림을 Scaled Dot-Product Attention이라고 부른다. additive attention도 있는데 dot product가 더 빠르다.
이를 식으로 표현하면 다음과 같다.
Attention(Q,K,V)Attention(Q,K,V) == softmax(QKTdk)softmax\bigg(\dfrac{QK^{T}}{\sqrt{d_{k}}} \bigg) 이다.

Comment

이때 dk\sqrt{d_{k}}는 softmax를 거치기 때문에 중간으로 다시 scale해주는 역할이다.

3.2.2 Multi-Head Attention

Paper summary

MultiHead(Q,K,V)MultiHead(Q, K, V ) == Concat(head1,...,headh)WOConcat(head1, ..., headh)WO
where headi=Attention(QWiQ,KWiK,VWiV)head_i = Attention(QW^Q_i, KW^K_i, V W^V_i)
여기서 head=8head=8, dk=dv=dmodel/h=64d_k=d_v= d_{model}/h = 64이다.
각각의 head에서늬 차원이 감소 하여서 전체 연산량은 single-head와 비슷하다.

Comment


Multi-Head Attention 을 잘 표현한 그림이다.
CNN에서의 channel과도 비슷한거 같다.

3.2.3 Applications of Attention in our Model

Paper summary

앞서 말했듯 3가지의 attention이 사용되었다.

encoder-decoder attention

Q는 decoder에서, K와 V는 encoder에서 온다. 이는 decoder의 각 position(시점)에서 전체 input sequence(encoder)에 집중하도록 한다. 이는 전형적인 encoder-decoder attention을 사용한 seq to seq 모델의 attention이다.

encoder self-attention

Q, K, V가 모두 encoder의 hidden state로 사실 같다.(다만 역할이 다르다.)

decoder self-attention (masked)

Q, K, V가 모두 decoder의 hidden state로 사실 같다. 위의 self attention과 역할이 같다. 다만 시간의 순서대로 단어가 생성되기 때문에 이전의 단어만 참고하로독 해야 하므로 mask를 추가 한다.

Comment


self attention의 역할을 가장 잘 나타낸 그림이다.

3.3 Position-wise Feed-Forward Networks

Paper summary

sub-layer에는 attention에 이어 FFN이 있다.
이를 식으로 표현하면 다음과 같다.
FFN(x)=max(0,xW1+b1)W2+b2FFN(x)=max(0,xW_1+b_1)W_2+b_2

Comment

이는 단순히 Linear를 두번하는데 중간의 non-linear인 ReLU를 추가한 것에 불과 하다.
즉, Trasnformer에서 학습되는 parameter는 모두 linear layer이다.
attention의 Q,K,V vector만들때 사용되는 Linear와 attention을 거친후 지나가는 두개의 linear가 ReLU로 이어진 FFN이 있다.

3.4 Embeddings and Softmax

3.5 Positional Encoding

Paper summary

Comment

Paper summary

Comment

4 Why Self-Attention

Paper summary

Comment

Paper summary

Comment

Paper summary

Comment

Paper summary

Comment

Paper summary

Comment

0개의 댓글