본문 바로가기
프로젝트+스터디

[논문리뷰] Attention Is All You Need

by 코낄2 2024. 4. 4.

https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org


들어가기 전에, 제목에 Attention 메커니즘이 나오는만큼, Attention 메커니즘에 대해 알고 시작하면 도움이 될 것 같다.
https://junyealim.tistory.com/113

 

[논문 리뷰]attention 매커니즘

[논문] NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE introduce 최근에 제안된 신경 기계 번역 모델들은 대부분 인코더-디코더 방식을 사용합니다. 이 방식은 소스 문장을 고정 길이 벡터로

junyealim.tistory.com


Abstract

논문에서는 단순하고 새로운 네트워크 아키텍처를 제안합니다. 이 아키텍처는 순환(recurrent)과 합성곱(convolutional)을 완전히 배제하고 오직 어텐션 메커니즘만을 기반으로 합니다. 인코더와 디코더를 연결하는 최고의 성능을 내는 모델들 또한 어텐션 메커니즘을 통해 인코더와 디코더를 연결합니다. 두 가지의 기계 번역 작업 실험 결과, 논문에서 제시한 메커니즘이 품질면에서 더 뛰어나며 병렬화를 통해 훈련에 필요한 시간이 짧아졌습니다. 논문의 모델은 WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU를 달성하여 기존의 최고 성과를 크게 개선하였으며, 이는 앙상블을 포함한 기존의 최상의 결과보다 2 BLEU 이상 높습니다. 또한, 논문의 모델은 8개의 GPU에서 3.5일간 훈련한 후 WMT 2014 영어-프랑스어 번역 작업에서 41.8 BLEU의 단일 모델 최고 성과를 달성했습니다. 이는 문헌에서의 최고 모델들과 비교하여 훈련 비용의 작은 부분만을 요구합니다. 또한, Transformer가 다른 작업에 대해 일반화가 잘 된다는 것을 보여주었습니다.

WMT는 "Workshop on Machine Translation"의 약어로, 기계 번역에 대한 워크샵이나 대회
BLEU는 "Bilingual Evaluation Understudy"의 약어로, 기계 번역의 품질을 측정하기 위한 평가 지표

Introduction

순환 신경망, 특히 장단기 메모리( LSTM )와 게이트 순환 신경망( GRNN )은 언어 모델링과 기계 번역과 같은 순차적 모델링 및 변환 문제에서 최신 기술로 확립되어 왔습니다. 이후에도 많은 노력들이 순환 언어 모델과 인코더-디코더 아키텍처의 한계를 끊임없이 넓히고 있습니다.

순환 모델들은 일반적으로 계산 시 입력 및 출력 시퀀스의 기호 위치를 고려합니다. 이전 숨겨진 상태 ht−1과 t번째 위치의 입력을 기반으로 숨겨진 상태 ht를 생성합니다. 이 순차적인 특성은 병렬화를 불가능하게 하며, 특히 시퀀스 길이가 길어질수록 메모리 제약으로 인해 치명적입니다. 최근에는 계산 효율성이 크게 향상되어 모델 성능도 향상되었지만 순차적 계산의 기본 제약은 여전합니다.

논문에서는 입력과 출력 간의 전체적인 의존성을 완전히 어텐션 메커니즘만으로 모델링하는 아키텍처인 Transformer를 제안합니다.

트랜스포머는 순환 신경망 대신에 어텐션 메커니즘을 중심으로 구성된 모델 구조로,
어텐션만을 이용하여 시퀀스 데이터를 처리합니다.

 


Background

논문에서는 컨볼루션 신경망을 기반으로 한 시퀀스 투 시퀀스 (sequence-to-sequence) 모델 ByteNet과 ConvS2S의 병렬 계산의 문제에 대해서 설명합니다. 두 모델들에서,  입력 또는 출력 위치의 거리에 따라 필요한 연산수가 증가합니다. 따라서 먼 위치 사이의 종속성과 관계를 학습하기가 더 어려워집니다.

(RNN은 각 단어에 대한 전파력이 앞으로만 전달되니까 모든 단어들 간의 관계성을 파악하기 쉽지 않다는 문제점이 있습니다.)

셀프 어텐션(Self-Attention) : 트랜스포머에서는 입력 시퀀스의 각 단어가 자신과 다른 모든 단어 간의 상호작용을 계산할 수 있는 셀프 어텐션 메커니즘이 사용됩니다. 이를 통해 문장 내 단어들 간의 의미적인 관계를 모델링할 수 있습니다. 셀프 어텐션은 읽기 이해, 요약, 텍스트 함의 및 작업 독립적인 문장 표현 학습을 포함한 다양한 작업에 성공적으로 사용되었습니다. 


셀프 어텐션(Self-Attention)은 입력 시퀀스의 각 단어가 서로 어떤 관련이 있는지를 계산하는 메커니즘입니다. 이를 통해 모델은 문장 내의 각 단어 간의 연관성을 파악할 수 있습니다. 각 단어 간의 연관성은 어텐션 가중치(Attention Weight)를 통해 결정됩니다.
셀프 어텐션에서 단어 간의 연관성을 계산하는 방법은 다음과 같습니다:
쿼리(Query), 키(Key), 밸류(Value) 생성: 먼저 각 단어에 대해 쿼리(Query), 키(Key), 밸류(Value) 벡터를 생성합니다. 일반적으로 이는 해당 단어의 임베딩 벡터를 사용합니다.점수 계산: 쿼리와 키 간의 유사도를 계산하여 어텐션 점수를 얻습니다. 일반적으로는 내적(dot product)이나 다른 유사도 함수를 사용합니다.어텐션 가중치 계산: 어텐션 점수를 소프트맥스 함수를 사용하여 정규화하여 어텐션 가중치를 얻습니다. 이 가중치는 각 단어와 다른 단어 간의 관련성을 나타냅니다.가중합 계산: 어텐션 가중치를 사용하여 각 단어의 밸류(Value) 벡터를 가중합하여 셀프 어텐션 결과를 얻습니다.
셀프 어텐션을 통해 얻은 결과는 각 단어의 임베딩 벡터와 비슷한 차원의 출력 벡터로, 이는 해당 단어가 문장 내의 다른 단어들과 어떤 관련성을 가지고 있는지를 나타냅니다. 이렇게 얻은 정보는 다양한 자연어 처리 작업에 활용될 수 있습니다.

Model Architecture

Transformer는 stacked self-attention과 point-wise fully connected layer로 구성된 단순한 구조를 사용한다. Transformer의 encoder심볼 표현 (x1, ..., xn)의 입력 시퀀스를 연속적인 표현의 시퀀스 z = (z1, ..., zn)로 매핑합니다. Decoder에서는 한 번에 한 토큰씩 생성하는데, 이전 timestep에서 생성한 결과를 입력으로 사용해서 현재 timestep의 결과 토큰을 생성합니다. 결과적으로 디코더에서도 출력 시퀀스 (y1, ..., ym)를 한 번에 한 요소씩 생성합니다.

  • Encoder : 인코더는 총 N = 6 개의 층으로 구성되어 있습니다. 각 층은 2개의 sublayer로 구성되어 있습다. 첫 번째 sublayer는 multihead self-attention layer입니다. 두 번째 sublayer는 position-wise fully connected feed-forward network 입니다. 각 sublayer의 입력을 결과에 더해주는 residual connection을 수행하고, 그 결과에 대해서 layer normalization을 수행합니다. 연결을 용이하게 하기 위해 모델의 모든 서브 레이어 및 임베딩 레이어는 dmodel = 512의 차원을 가진 출력을 생성합니다.  (디코더도 마찬가지)
  • Decoder : 디코더도 동일하게 총 N = 6 개의 층으로 구성됩니다. 인코더와 거의 동일한 구조지만 마지막에 세 번째 sublayer가 추가되었습다. 세번째 sublayer는 인코더의 출력 결과  에 대해서 multi-head attention을 수행합니다. 인코더와 동일하게 sublayer의 결과에 residual connection과 layer normalization을 수행합니다. 인코더와 또 다른 차이점 하나는 self-attention을 수행할 때, 미래의 내용에 대해 attention을 수행하지 못하도록 masking을 하여 다음 위치에만 관심을 가지도록 합니다. 즉, 마스킹을 통해 출력 임베딩이 한 위치씩 오프셋되므로 위치 i에 대한 예측이 i보다 작은 위치의 알려진 출력에만 의존하도록 보장합니다.

▶️ scaled dot-product attention :

  1. 쿼리(Query): 주어진 입력에 대해 관심을 가지는 정보입니다. 예를 들어, 번역 작업에서 원문의 단어를 번역하는 데 사용될 수 있습니다.
  2. 키(Key): 쿼리와 관련된 정보를 나타냅니다. 예를 들어, 번역 작업에서는 번역할 단어와 유사한 의미를 가진 원문의 단어를 키로 사용할 수 있습니다.
  3. 값(Value): 각 키와 연관된 출력값입니다. 이것은 어텐션 메커니즘이 각 입력에 부여하는 중요도를 결정하는 데 사용됩니다.

스케일된 닷 프로덕트 어텐션은 다음과 같은 단계로 작동합니다.

  1. 닷 프로덕트 계산: 쿼리와 각 키 간의 내적을 계산합니다. 이렇게 하면 쿼리와 키 간의 유사성이 반영됩니다.
  2. 스케일링: 내적 값을 키의 차원 크기의 제곱근으로 나누어줍니다. 이것은 내적 결과의 크기를 조절하여 안정성과 수렴을 높입니다.
  3. 소프트맥스 적용: 스케일된 내적 값을 소프트맥스 함수에 적용하여 가중치를 얻습니다. 이러한 가중치는 각 값에 부여됩니다.
  4. 가중치 적용: 소프트맥스 가중치를 값에 곱하여 최종 출력을 얻습니다. 이렇게 하면 주어진 쿼리에 대한 관련 정보가 강조됩니다.

트랜스포머 모델에서는 이러한 어텐션 메커니즘이 여러 쌍의 쿼리, 키 및 값에 대해 병렬로 수행되며, 효율적인 행렬 연산을 통해 구현됩니다. 이를 통해 모델은 입력 시퀀스의 관련 정보를 효과적으로 추출하고 문제를 해결할 수 있습니다.

 

▶️ Multi-Head Attention :

멀티 헤드 어텐션은 단일 어텐션 함수 대신에 여러 개의 어텐션 함수를 병렬로 사용하여 모델이 다양한 표현 공간에서 다양한 위치의 정보를 동시에 고려할 수 있도록 하는 메커니즘입니다.

우선, 입력된 쿼리, 키, 값에 대해 선형 변환을 수행합니다. 이 때, 각각의 쿼리, 키, 값에 대해 서로 다른 학습 가능한 선형 변환을 h번 수행합니다. 이때 각 선형 변환은 각각 dk, dk, dv 차원으로 변환됩니다. 이렇게 변환된 쿼리, 키, 값에 대해 병렬로 어텐션 함수를 수행합니다. 그 결과로 나온 각 어텐션 함수의 출력값들은 dv 차원을 가지게 됩니다.

이렇게 얻어진 각 어텐션 함수의 출력값들을 모두 연결(concatenate)하여 하나의 행렬로 만듭니다. 그리고 이 행렬에 한 번 더 선형 변환을 수행하여 최종 출력값을 얻습니다.

멀티 헤드 어텐션은 각 헤드가 서로 다른 표현 공간에서 독립적으로 어텐션을 수행하기 때문에 모델이 다양한 특징을 동시에 학습할 수 있습니다. 이를 통해 효과적으로 다양한 정보를 학습하고 복잡한 패턴을 인식할 수 있습니다.

Why Self-Attention

  1. 각 층에서 발생하는 computational complexity 감소: Self-Attention은 입력의 길이에 따른 계산 복잡도를 줄일 수 있는 장점을 가집니다. 대부분의 데이터셋에서 문장은 모델의 차원 크기인 dmodel보다 짧기 때문에 입력의 길이 n이 dmodel보다 작을 때 Self-Attention의 연산 속도가 빨라집니다. 또한, 만약 더 긴 입력이 제공된다면, restricted self-attention을 통해 현재 단어에서 일정한 거리 r 이내에 있는 단어들에 대해서만 attention을 수행하여 연산을 병렬로 수행할 수 있습니다.
  2. 멀리 떨어진 원소들 사이의 path length 감소: Self-Attention은 멀리 떨어진 원소들 간의 경로 길이를 상당히 감소시킵니다. 이는 시퀀스 데이터에서 멀리 떨어진 요소들 사이의 장기 의존성을 학습하는 데 큰 도전 중 하나였습니다. Self-Attention을 사용하면 두 원소 간의 경로 길이가 상수배로 매우 작아지므로 장기 의존성을 효과적으로 학습할 수 있습니다.

Results

 

WMT 2014 English-German translation task(EN-DE) 와 WMT 2014 English-Frensh translation task(EN-FR) 의 결과입니다. SOTA를 뛰어넘는 것을 알 수 있습니다.

위에서 제안한 Transformer의 구조에서 몇 가지 요소들을 변경한 후 English-German translation task에 적용한 실험 결과입니다.

  • (A) : head의 개수, 값을 변경한 경우 : head가 너무 많으면 오히려 성능이 떨어집니다.
  • (B) : 만 변경
  • (C) : 모델의 크기를 키운 경우 : 모델이 커지면 성능이 더 좋아집니다.
  • (D) : dropout 의 영향 : dropout 도 성능에 영향을 미칩니다.
  • (E) : positional embedding의 중요성 : learned positional embedding을 사용해도 성능에 큰 변화는 없습니다. 

다른 task에 대한 실험 : 다른 task에 대해서도 사용이 가능할지 실험하기 위해, English Constituency Parsing task에 transformer를 적용해본 결과입니다. 최고의 성능을 제공하지는 못하지만, 의외로 상당히 좋은 성능을 제공한다는 것을 확인할 수 있습니다.

 

  1. 번역 성능: 논문에서 제안된 Transformer 모델은 기존의 기계 번역 모델보다 우수한 성능을 보였습니다. 특히, 복잡한 구조를 가진 신경망 모델보다 훨씬 간단한 구조를 가진 Transformer가 번역 작업에서 뛰어난 결과를 얻을 수 있었습니다.
  2. 병렬화와 확장성: Transformer 모델은 Self-Attention 메커니즘을 사용하여 병렬화가 용이하며, 따라서 훈련 속도를 빠르게 할 수 있습니다. 또한, 모델의 크기를 증가시키거나 다양한 작업에 적용할 때 확장성이 좋습니다.
  3. 다양한 자연어 처리 작업에 적용 가능: Transformer 모델은 기계 번역 뿐만 아니라 문장 생성, 질문 응답, 요약 등 다양한 자연어 처리 작업에 효과적으로 적용될 수 있습니다. 이 모델은 각 작업에 대해 특정한 구조나 모듈을 추가하지 않고도 좋은 성능을 보입니다.