본문 바로가기

Deep Learning

[논문] Attention Is All You Need (Feat. 동빈나 유튜브)

* 이 글은 유튜브 채널 <동빈나>의 영상을 보고 필기한 내용입니다.

https://www.youtube.com/watch?v=AA621UofTUA 
 

 

개요

이 논문은 현대 자연어처리 딥러닝 기반의 핵심 아키텍처인 transformer의 시작을 알렸다. transformer는 attention이라는 매커니즘을 활용하는 아키텍처.

딥러닝 기반의 기계 번역 발전 과정 

2021년 기준 최신 고성능 모델들은 transformer 아키텍처를 기반으로 하고 있다. 대표적으로 GPT는 transformer의 decoder를, BERT는 encoder를 활용하고 있다. 

attention 매커니즘은 2015년 처음 제안되었다. 2년 후 RNN을 전혀 사용하지 않고 attention에만 의존한 transformer가 등장했다. transformer는 이전 모델들에 비해 비약적으로 발전한 성능을 보여주었다.  

 


ATTENTION

기존 Seq2Seq 모델에는 한계점이 있었다. context vector에 소스 문장의 모든 정보를 압축하기에 병목현상이 발생하는 것이었다. 이는 성능 하락의 원인이 된다.

 

attention은 이 문제를 해결하기 위해 등장했다. 최신 GPU는 많은 메모리와 빠른 병렬처리를 지원하기에 모든 소스 문장의 정보를 벡터로 압축하지 않고 별도의 배열에 그대로 입력하여 이용하는 것이다.

attention의 디코더는 매번 인코더의 모든 출력 중 어떤 정보가 중요한지를 계산한다. 이때 에너지와 자중치를 구한다. 이전에 출력했던 단어를 만들기위해 사용했던 정보와 인코더의 모든 정보를 이용해 현재에 이용할 에너지값을 구하는 것이다. 그리고 이러한 에너지값에 소프트맥스 함수를 적용해 정보들 각각 가중치를 구한다. 이를 통해 중요한 정보와 중요하지 않은 정보를 구분해내는 것이다.  

 

TRANSFORMER

rnn을 전혀 이용하지 않기 때문에 문장 내 각 단어에 대한 순서 정보를 파악하지 못한다. 그래서 positional encoding을 따로 이용해 단어 순서를 기억한다.

rnn을 이용하지 않지만 인코더와 디코더로 구성된다. 또한 attention 과정을 여러 레이어에서 반복한다. 


인코더

단어 임베딩 후 positional encoding값도 추가한다. 그 후 어텐션을 진행한다. 

특히 인코더 파트의 어텐션은 self attention으로 각각의 단어가 서로에게 어떤 연관성을 가지고 있는지 측정하기 위해서 실행한다. 문맥을 파악하기 위해서 실행되는 것.

여기에 추가적으로 성능향상을 위해 residual learning을 사용한다. 특정 레이어를 건너뛰어 그대로 값을 입력하여 학습하는 과정. 전체 네트워크는 기존 정보를 입력받아 잔여부분에 대해서만 학습을 진행한다.

위의 과정들은 한번만 하는 것이 아니다. 여러번 진행된다. 그러니까 하나의 레어어는 attention + residual/Normalize + feedforward + residual/Normalize로 이루어져 있고, 이것들이 여러번 쌓여 인코더를 이룬다. 

맨 마지막 인코더에서 나온 값이 디코더의 입력값이 된다.

 

디코더

입력값은 매 단어를 생성할 때마다 입력된다. 위 그림의 왼쪽은 인코더, 오른쪽은 디코더다. 디코더도 여러가지 레이어로 이루어져있지만 위 그림에서는 하나의 레이어만 나타나 있다. 

하나의 디코더 레이어는 attention + residual/Normalize + attention + residual/Normalize + feedforward + residual/Normalize로 이루어져있다.

임베딩+positional encoding을 거친 값은 attention과  residual/Normalize를 거친다. 이 첫번째 attention에서는 인코더 때와 마찬가지로 self attention으로 출력되고 있는 문장에 대해 각각의 단어가 서로에게 갖는 가중치를 계산한다.   

마지막으로 feedforward + residual/Normalize를 거치고 나면 결과를 반환한다. 이는 모델의 최종 결과다. 

일반적으로 인코더와 디코더의 레이어 갯수는 같다. 


BLEU Score

BLEU 스코어는 기계 번역의 성능을 측정하기 위해 널리 사용되는 평가 지표 중 하나로 이 논문에서 채택한 모델 평가지표다. 

BLEU 스코어는 기계 번역된 문장의 n-gram이 참조 번역 문장의 n-gram과 얼마나 일치하는지를 평가한다. 일치하는 n-gram의 개수를 세고, 기계 번역된 문장의 n-gram 개수를 세어서 정밀도를 계산한다. 정밀도는 일치하는 n-gram 개수를 기계 번역된 문장의 n-gram 개수로 나눈 값이다. 이러한 계산을 모든 n-gram에 대해 수행한 후, n-gram의 순서에 따라 가중치를 부여하여 평균 정밀도를 계산한다. 마지막으로, 번역된 문장과 가장 일치하는 참조 번역 문장의 평균 정밀도를 BLEU 스코어로 산출한다.