[논문리뷰]Attention Is All You Need

dgmon79·2021년 5월 2일
0

논문리뷰

목록 보기
1/1

1) Introduction

기존 Language Model들은 context를 반영하기 위해서 Recurrent Neural Network(RNN) 기반으로 이전의 레이어의 state를 현재 state에 반영하는 방법을 사용해왔다.

이러한 순서에 의존적인 학습 방법은 parallelization을 불가능하게 하고 긴 문장에 대해서 큰 distance에 대해서 sequence가 반영이 잘 되지 않는 문제점이 있었다.

distance에 관계없이 context를 반영하기 위해 Attention이라는 개념을 도입하긴 했지만 RNN에 결합된 형태로 parallelization이 불가능하다는 문제점은 여전히 남아있었다.

이 논문에서는 Transformer라는 모델을 새롭게 제안한다.

Transformer는 RNN에서 벗어난 새로운 구조이며 sequence에 independent하고 Attention을 사용하여 distance에 관계없이 context를 반영할 수 있는 방법이다.

2) Background

Sequential computation을 줄이고자 Extended Neural GPU, ByteNet, ConvS2S와 같은 RNN 대신 CNN을 사용하는 모델들이 연구되었지만 input과 output을 연관 짓기 위해서 signal을 계산하는데 distance가 멀어질수록 많은 computation을 필요로 한다.

결과적으로 Long-term dependency를 명확하게 해결하지 못했다.

Transformer에서는 Attention을 position에 대한 weight로 사용하여 고정적인 연산으로도 context를 효과적으로 반영할 수 있게 되었다.

3) Model Architecture

일반적으로 sequence transduction model에서는 encoder-decoder 구조를 사용한다.

Transformer 또한 encoder-decoder를 가진다.

Input Sequence에 위치정보를 부여하기 위해서 Embedding vector와 동일한 차원(=dmodel)(=d_{model})인 Positional Encoding을 Input Embedding에 더해준다.

이렇게 Positional Information이 첨가된 Vector를 입력으로 받는다.

Encoder


두 종류의 Sub-layer로 구성되어 있다.


nn은 Input Token의 개수이다.
따라서, Sub-layer의 Input Sequence는 X=[x1,... ,xn]X=[x_1,...~,x_n]로 표현될 수 있고
Ouput Sequence 또한 Input에 1대1 대응하므로 Z=[z1,... ,zn]Z=[z_1,...~,z_n]로 나타낼 수 있다.

xi, zix_i,~z_idm(=512)d_m(=512) 차원의 벡터이다.

Sub-layer의 결과값에 residual connection을 적용하여 x+zx+z에 대해서 Layer Normalization을 적용한다.

  • Multi-Head Attention

    • h개의 Attention Layer로 구성
    • 각각의 Attention Layer는 parallel하게 Self-Attention을 연산
    • MultiHead(Q, K, V) = h개의 Attention Head의 concatnation  (N×hdv) ~(N \times hd_v )~
    • MultiHead(Q, K, V)와 WOW^O (Weight matrix in Multi-Head Attention)을 곱하여 결과를 출력
      • WOW^O는 Linear Layer의 weight matrix
      • WO R hn×dmodelW^O\in~\mathbb{R}^{~hn\times d_{model}}
    • 결과값인 ZZ N×dv ~ N \times d_v ~으로 Self-Attention의 결과와 동일한 차원과 개수의 벡터이다.

  • Feed Forward

    • 2개의 Fully Connected Layer와 두 Layer사이의 ReLU activation function으로 구성

      FFN(x)=max(0,xW1+b1)W2+b2FFN(x)=max(0,xW_1+b_1 )W_2+ b_2

    • dm(=512)d_m(=512)차원의 벡터를 입력으로 받아 df(=2048)d_f(=2048)차원의 벡터로 확장한다.
    • ReLU를 적용 후 다시 dm(=512)d_m(=512)차원의 벡터로 축소한다.

      torch.nn.Linear(512, 2048)
      torch.nn.ReLU()
      torch.nn.Linear(2048, 512)

Decoder


세 종류의 Sub-layer로 구성되어 있다.

Feed Forward Layer는 Encoder와 동일하다.


nn은 Input Token의 개수이다.
따라서, Sub-layer의 Input Sequence는 X=[x1,... ,xn]X=[x_1,...~,x_n]로 표현될 수 있고
Ouput Sequence 또한 Input에 1대1 대응하므로 Z=[z1,... ,zn]Z=[z_1,...~,z_n]로 나타낼 수 있다.

xi, zix_i,~z_idm(=512)d_m(=512) 차원의 벡터이다.

Sub-layer의 결과값에 residual connection을 적용하여 x+zx+z에 대해서 Layer Normalization을 적용한다.

  • Masked Multi-Head Attention

    • h개의 Attention Layer로 구성
    • 각각의 Attention Layer는 parallel하게 Self-Attention을 연산
    • MultiHead(Q, K, V) = h개의 Attention Head의 concatnation  (N×hdv) ~(N \times hd_v )~
    • MultiHead(Q, K, V)와 WOW^O (Weight matrix in Multi-Head Attention)을 곱하여 결과를 출력
      • WOW^O는 Linear Layer의 weight matrix
      • WO R hn×dmodelW^O\in~\mathbb{R}^{~hn\times d_{model}}
    • 결과값인 ZZ N×dv ~ N \times d_v ~

  • Feed Forward

    • 2개의 Fully Connected Layer와 두 Layer사이의 ReLU activation function으로 구성

      FFN(x)=max(0,xW1+b1)W2+b2FFN(x)=max(0,xW_1+b_1 )W_2+ b_2

    • dm(=512)d_m(=512)차원의 벡터를 입력으로 받아 df(=2048)d_f(=2048)차원의 벡터로 확장한다.
    • ReLU를 적용 후 다시 dm(=512)d_m(=512)차원의 벡터로 축소한다.

      torch.nn.Linear(512, 2048)
      torch.nn.ReLU()
      torch.nn.Linear(2048, 512)

profile
Software engineer who specialized in NLP

0개의 댓글