[NIPS2017] Attention Is All You Need

논문: Attention Is All You Need

Facebook AI Research에서 DETR: End-to-End Object Detection with Transformers 논문[1], 블로그[2], 코드[3]를 동시에 공개하면서 attention 혹은 Transformer라는 방법에 대해 개념을 이해하기 위해 2017년 NIPS에서 발표된 Google Brain(현, Google AI)의 Attention is all you need라는 논문을 살펴보려고 합니다.

자연어 처리(NLP)는 단어라는 말뭉치(corpus) 단위를 순서대로 나열한 문장, 문단 등에서 정보를 추출하여 필요한 작업을 처리하게 됩니다. 기존의 방법들은 sequence to sequence(RNN) 또는 CNN[4]에서 부수적으로 attention 방법을 적용하였다면, 이 논문은 Transformer라고 불리는 attention 기법만을 사용하여 연산량을 매우 줄이는 동시에 높은 성능도 달성한 매우 이상적인 방법으로 이 후 NLP 연구에서 빠지지 않고 계속 사용하는 계기가 되었습니다.

그림 1. Transformer 모델 구조

그림 1과 같이 Transformer는 다른 sequence 모델과 마찬가지로 (1)encoder(그림 1, 왼쪽)와 (2)decoder(그림 1, 오른쪽)로 나눌 수 있습니다.

Encoder는 동일한 layer를 N=6번 쌓은 형태이며, 총 2개의 sub-layer로 구성되어 있습니다. 각 sub-layer는 multi-head self-attention, point-wise fully connected layer로 구성됩니다. Sub-layer에 residual connection을 사용하기 위해 모든 layer의 차원은 512로 맞춰주고 있습니다.

Decoder는 encoder와 마찬가지로 동일한 layer를 N=6번 쌓은 형태이며, 총 3개의 sub-layer로 구성되어 있습니다. 2개는 encoder의 sub-layer와 동일하고, 나머지 sub-layer는 encoder의 output에 대해 multi-head attention을 계산을 담당하게 됩니다.

그림 2. (왼쪽) Scaled Dot-Product Attention (오른쪽) Multi-Head Attention

Attention 방법은 그림 2와 같이 총 2가지를 사용했습니다. (1)Scaled dot-product attention은 이전의 additive attention 방법에 비해 행렬곱에 대해 최적화를 적용하였기 때문에 빠른 연산 속도를 보여줍니다. (2) Multi-head attention은 기존 방법이 전체 차원에 대해 하나의 attention만 적용시켰다면, 이 논문에서는 전체 차원을 h로 나눠서 attention을 h번 적용시켜 주게 되는데 각 head의 차원이 줄었기 때문에 h번 적용해도 전체 연산량은 비슷합니다.

그림 3. Attention visualizations

이 논문의 구성 중 가장 특이하다고 생각한 것은 self-attention을 왜 사용하게 되었는지에 대한 설명 부분입니다. Self-attention을 사용하는 이유는 (1)layer당 전체 연산량이 줄어들고, (2)parallelized 가능한 연산이 늘어나며, (3) 그림 3과 같이 long-distance denpendency를 잘 학습할 수 있기 때문이라고 설명합니다.

표 1. 정량적 평가
식 1. BLUE Score[6]

표 1은 BLUE(Bilingual Evaluation Understudy)[5] score와 연산량을 비교한 것입니다. BLUE에 대해 간략하게 설명[6]하자면 (1)n-gram을 통한 순서쌍들이 얼마나 겹치는지 측정하고, (2) 문장 길이에 대한 과적합 보정을 해준 후 (3) 같은 단어가 연속적으로 나올 때 과적합 되는 것을 보정해주어 식 1과 같이 계산됩니다. 표 1의 내용으로 돌아가면, Transformer는 BLEU 지표에서 기존의 다른 방법들과 비슷하거나 더 좋은 성능을 보여주는 동시에 연산량은 기존 연구들 보다 현저히 낮은 것을 확인할 수 있습니다.

Transformer는 NLP 연구에서 빠지지 않고 쓰는 기법이 되었으며 이제는 Computer Vision 분야까지 확장되어 사용할 수 있게 되었습니다. Attention 방법에 대해 자세히 알고 싶다면, Jay Alammar의 블로그 The Illustrated Transformer[7]는 친절한 그림 설명과 함께 매우 자세하게 설명되어 있어 꼭 한 번 읽어보는 것을 추천드리고, Cloud service 업체 FloydHub의 블로그 Attention Mechanism[8]는 PyTorch 코드와 함께 설명을 함으로써 실제 구현된 것과 비교하여 살펴볼 수 있습니다.

참고:
[1] Paper: End-to-End Object Detection with Transformers
[2] Blog: End-to-End Object Detection with Transformers
[3] https://github.com/facebookresearch/detr
[4] Very Deep Convolutional Networks for Text Classification
[5] Widipedia: BLUE
[6] Blog: BLEU Score
[7] Blog: The Illustrated Transformer
[8] Blog: Attention Mechanism

Author: rcvlab

RCV연구실 홈페이지 관리자 입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다