본 글은 Google Brain에서 2017 NIPS에 발표한 Attention is All You Need 논문에 대한 리뷰입니다.
RNN 모델의 장기 의존성 문제(long-term dependency)를 극복하기 위해 제안된 Transformer는 BERT나 GPT의 기반이 되는 모델입니다.
다시 읽으면서 제가 이해한대로 정리해보겠습니다.
초록(Abstract)
성능 좋은 시퀀스 변환 모델은 대체로 인코더와 디코더를 포함한 복잡한 RNN 또는 CNN 신경망에 기반을 두고 있음
해당 논문은 recurrence와 convolution 을 전부 제외하고 오직 attention mechanism에만 기반한 Transformer라는 간단한 모델을 제안하는데, 초록에서 제안한 모델의 특징은 아래와 같이 요약할 수 있음
" 순환 모델의 병렬처리 문제 "
RNN, LSTM, GRU(Gate Recurrent Unit) 등은 언어 모델링 및 기계 번역과 같은 sequence 모델링 및 변환 문제에서 뛰어난 성과를 보이는 Recurrent 모델
Recurrent 모델은 보통 입력과 출력의 symbol position에 따라 계산을 수행
계산 단계에서 위치를 정렬하고 이전 상태 ht-1과 위치 t의 함수인 은닉상태 ht를 생성
[ 기본적인 RNN 구조 ]
이는 시퀀스가 길수록 메모리 문제로 인해 병렬적 처리가 어렵게 하고, 최근 들어 모델의 성능 자체는 비약적으로 상승했지만 위의 문제는 해결되지 않음
" Attention mechanism 제시 "
Attention mechanism은 입력과 출력 시퀀스 거리와 관계없이 의존성을 모델링할 수 있으나 거의 대부분의 경우 순환 네트워크와 함께 사용되고 있어 효율적인 병렬화 불가능
👉🏻 따라서 이 논문에서 순환없이 입력값과 출력값 간 전역 의존성을 모델링할 수 있는 Attention mechanism만을 사용한 모델 구조인 Transformer 제안
Extended Neural GPU, ByteNet, ConvS2S 에서도 연속적 연산을 줄이기 위한 연구가 이루어졌는데, 모두 CNN을 기본 구성 요소로 사용
반면 Transformer에서는 Multi-Head Attention을 통해 상수 시간의 계산만으로 가능
(i) Self-attenion
(ii) End-to-end memory network
" 장거리 의존성(Long term dependency) 문제 "
대부분의 자연어처리는 Encoder-decoder 구조를 가지는 recurrent model인 RNN, CNN 등이 주로 사용됨
👉🏻 자연스럽게 문장의 순차적인 특성이 유지되지만 먼거리에 있는 의존성을 알기 취약하다는 단점이 존재
반면 Transformer🔍
" seq2seq 구조 "
경쟁력 있는 neural sequence transduction 모델은 대부분 인코더-디코더 구조(seq2seq) (아래, 이미지 출처)
이전에 생성된 출력을 다음 단계에서 사용
👉🏻 즉, 이전 단계가 완료되어야 다음 단계를 수행할 수 있음
👉🏻 병렬적 처리 불가
" Transformer 구조 "
인코더와 디코더 모두에 대해 Self-Attention과 point-wise FC layer를 쌓아올려 사용
(i) Scaled Dot-Product Attention
Q: 영향을 받는 벡터
K: 영향을 주는 벡터
V: 주는 영향의 가중치 벡터
다음과 같이 계산
Output : value의 가중합으로 계산
가중합에 이용되는 가중치 : query와 연관된 key의 호환성 함수에 의해 계산
< 계산 과정 요약 >
(1) 워드 임베딩에 가중치를 곱해서 Query, Key, Value를 계산
(2) Query * Key = attention score
: 값이 높을 수록 연관성이 높고, 낮을 수록 연관성이 낮다.
(3) key 차원수로 나누고 softmax 적용
softmax 결과 값은 key값에 해당하는 단어가 현재 단어에 어느정도 연관성이 있는지 나타냄
(4) 문장 속에서 지닌 입력 워드의 값 = softmax 값과 value 값을 곱하여 다 더함
👉🏻 문장에서 연관성이 반영된 값이기 때문에 문맥을 알 수 있도록 함
(ii) Multi-Head Attention
" 모델이 다양한 관점에서 문장을 해석할 수 있도록 하는 역할 "
아래 그림에서 문장에서 it이라는 단어의 attention이 The Animal일지, Tired일지 모델이 헷갈릴 수 있음
Multi-Head Attention은 Head (논문에서는 8개)를 두어 모델이 Head 개수만큼의 Scaled dot product Attention 연산을 수행할 수 있게 하여 모델이 다양한 관점의 Attention Map을 만들도록 함
각 헤드의 차원 수가 줄어들었으므로 전체 계산량은 single-head attention과 비슷한 수준
(iii) Applications of Attention in our Model
Transformer는 multi-head attention을 3가지 방법으로 사용하고 있음
사이에 ReLU 활성화가 있는 두 개의 선형 변환으로 구성
input과 output의 차원은 512, 은닉층의 차원은 2048
" 토큰의 상대적인 위치(또는 절대적인 위치)에 대한 정보를 제공하기 위한 역할 "
Transformer는 Recurrent model을 사용하지 않고 오직 Attention mechanism만을 사용하여 만들기 때문에 Sequence 정보를 담아낼 수가 없음
👉🏻 따라서 별도로 이러한 sequence 정보를 데이터에 추가해주어야 하는데 이 역할을 하는 것이 바로 "positional encoding"
**pos는 position, i는 dimension
👉🏻 고정된 오프셋 k에 대해 PEpos+k가 PEpos의 선형 함수로 표현될 수 있기 때문에 모델이 쉽게 상대적인 위치를 참조할 수 있을 것이라 가정했기 때문
recurrence, convolution과 비교했을 때 장점을 다음과 같이 정리할 수 있다.