새소식

Machine Learning&Deep Learning

논문 리뷰 - Attention is All You Need 리뷰

  • -

원문 : Vaswani, Ashish, et al. “Attention is all you need.” Advances in neural information processing systems. 2017.

 

초록

[기존]

성능이 좋은 시퀀스 변환 모델은 encoder와 decoder를 포함한 RNN, CNN 모델을 활용

가장 훌륭한 성능은 attention mechanism을 통해 encoder와 decoder를 연결했음

 

[논문이 제안하는 바]

Transformer - RNN과 CNN을 제거한 Attention 메커니즘만을 이용한 network architecture를 제안

2가지 기계 번역 태스크에서 RNN, CNN 보다 성능이 우수하고 학습 속도가 빠른 실험을 진행 


 

Introduction

 

RNN, LSTM, GRU와 같은 recurrent 모델은 좋은 성능을 보여주었으나, seq2seq 모델의 근본적인 문제를 해결하지 못함

 

문제

병렬 처리 불가 -> 성능 하락

- 매번 단어가 입력될 때마다 hidden state 값을 갱신하고, 순차적으로 처리해 마지막 단어의 hidden state 값은 소스 문장 전체를 대표하는 하나의 context vector로 사용할 수 있는 형태
- 이 context vector는 사이즈가 고정되어 있기에 소스 문장 (입력 시퀀스)이 길어질 경우 성능이 하락하는 문제가 발생함

 

 

RNN 구조

 

이를 해결할 수 있는 방법으로 Attention Mechanism이 제안됨

-> hidden state를 순차적으로 갱신하는 것이 아닌, 각각의 단어에 대한 출력값 전부를 특정 행렬에 기록해두었다가, 소스 문장에 대한 전반적인 내용들을 출력할 때 마다 반영해보자. 
-> Attention Mechanism 은 순환없이 input sequence, outpue sequence 거리에 상관없이 의존성을 모델링할 수 있도록 함

 

 

Background

CNN을 기본 요소로 사용하는 등 여전히 Attention mechanism을 recurrent model과 함께 사용하는 사례가 많았음 (연속 연산 줄이려고) -> RNN, CNN 사용X Attention만 사용하는 Transformer 모델 제안 (Multi-head attention으로 해결)

 

 

Model Architecture

 

경쟁력 있는 neural sequence transduction 모델은 대부분 인코더-디코더 구조(=seq2seq)를 취함, Transformer도 역시 인코더-디코더 구조를 취함

 

 

3.1. Encoder and Decoder Stacks

 

인코더와 디코더 모두에 대해 Self-Attention과 point-wise FC layer를 쌓아올려 사용, 여러개의 동일 레이어로 이루어져 있으나 서로 parameter 다르며 입력 dim=출력 dim

 

  • 인코더 : 6개의 동일한 레이어로 이루어져 있으며 하나의 인코더는 Self-Attention layer와 Feed Forward Neural Network라는 두 개의 Sub Layer로 구성됨. 각 Sub Layer는 residual connection 사용, normalization 수행
  • 디코더 : 6개의 동일한 레이어, 각 레이어는 인코더가 Sub layer로 가진 Self-Attention layer (각 단어간 관계)와 Feed Forward Neural Network, 인코더의 출력을 입력으로 사용되는 Multi-Head Attention Layer(안코더 출력 정보/소스 와 출력하는 단어 간 관계) 존재
    • 디코더의 self-attention layer에서는 앞쪽 단어에 대해서만 참고할 수 있도록 하는 masking 수행

 

encoder의 self-attention은 각각 단어가 서로 어떤 연관성이 있는지 문맥에 대한 정보를 잘 학습시키는 과정이다. 

 

3.2 Attention

1. Multi-head attention

모델이 다양한 관점에서 문장을 해석할 수 있게 하며, 여러개의 scaled dot-product attention을 concat 하며 구성된다. 이를 이해하기 위해 scaled dot-product attention이 무엇인지 살펴보자. scaled dot-product attention은 최종적으로 attention 값을 도출하는 과정이며, 다음과 같은 방법으로 구할 수 있다. 

 

Query 물어보는 주체 (영향 받는 벡터)
Key 물어보는 대상 (영향 주는 벡터)
Value 주는 영향의 가중치 벡터

QxK 로 Score를 구하고, 숫자로 나온 값을 확률 개념으로 바꾸기 위해 softmax 연산을 해준다. key 벡터 차원수가 증가할 수록 score가 증대되는 문제를 보완하기 위해 이에 key 차원값의 루트값을 나누어주고, 이를 Value와 곱해 이 값을 모두 더해준다. 이를 통해 key 값 단어가 현재 단어에 얼마나 연관성이 있는지를 나타내는 최종 벡터를 구할 수 있다. 

 

예를 들어, 단어 I의 쿼리 벡터에 대해서 I, am, a, student 각 단어의 key 벡터를 곱하고 일련의 연산 과정을 거쳐, 해당 단어 I 가 단순한 단어 I가 아닌, I가 지닌 전체적인 의미를 가진 벡터로 거듭나게 만드는 과정인 것이다. 

 

 

-> Multi-head=여러개의 관점=여러 h

3.3 Applications of Attention in our Model


Transformer는 multi-head attention을 3가지 방법으로 사용하고 있다. 

1) Encoder-decoder attention :
Query는 이전 decoder / Key, Value는 encoder의 출력이 되는 어텐션 - decoder가 모든 위치에서 input sequence 모든 위치 참조

2) Self-attention in encoder :
각 단어가 서로에게 어떤 연관을 가지는지, 각 위치들은 이전 레이어의 모든 위치들을 참조할 수 있음

 

3) Masked Self-attention in decoder :
decoder 내 자신 뒤쪽 내용은 참조할 수 없게 함 (앞쪽만 참조할 수 있도록)

 

 

3.3 Position-wise Feed-Forward Networks


Transformer는 Recurrent model을 사용하지 않고 오직 Attention mechanism만을 사용하여 만들기 때문에 Sequence 정보 (위치, 단어 순서) 를 담아낼 수가 없기에 positional encoding으로 이를 해결하고자 함. 

-> 상대적인 위치를 나타내기 위해, 논문에서는 sine/cosine 함수를 사용함 


Why Self-attention

1) 연산 복잡도 감소

 

2) Long term dependency 문제점 해결 

-> 긴 길이의 sequence도 잘 해결

 

3) 각 head들이 어느 부분에 집중하고 있는지 볼 수 있음

-> 모델을 해석할 수 있음

'Machine Learning&Deep Learning' 카테고리의 다른 글

Wk 5 머신러닝  (0) 2023.05.16
Wk4 - Entropy  (0) 2023.05.13
Deep Learning - Wk3 Näive Bayes  (0) 2023.04.08
Deep Learning - Wk2 (1) Linear Statistical Model  (0) 2023.04.01
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.