본문 바로가기
NLP/논문리뷰

[논문 Review] 02. Attention is All you need

by ㅣlㅣl 2023. 3. 26.

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

 


 

Abstract

여태껏 진행해왔던 시퀀스 변환 모델 (sequence transduction model) 들은 인코더와 디코더를 포함하는 복잡한 CNN이나 RNN 아키텍처 기반이었다. 본 논문에서는 RNN, CNN 구조를 완전히 배제하고 어텐션 메커니즘 (Attention Mechanism)만을 기반으로 하는 새로운 단순 네트워크 아키텍처, "트랜스포머 (Transformer)"를 소개하고자 한다.

 

두 가지 기계번역 작업 (영어 → 독일어, 영어 → 프랑스어) 실험 결과 트랜스포머는 품질이 우수하면서도 병렬화가 가능했고, 학습시간도 기존 모델들보다 짧았다.

 

 

1. Introduction

RNN, 특히 LSTM과 gated RNN은 언어 모델링 및 기계 번역과 같은 시퀀스 모델링 및 변환 문제에서 최첨단 접근 방식이었다. 그 이후에도 RNN과 인코더-디코더 아키텍처의 경계를 확장하기 위한 수많은 노력이 계속되고 있다.

 

순환 모델은 일반적으로 입력 및 출력 시퀀스의 심볼 위치에 따라 계산을 수행한다.

 

계산 단계에 맞추어 은닉층의 시퀀스 \(h_t\)를 생성하는데, 이는 이전 은닉층 \(h_{t-1}\)의 function이자 포지션 t의 입력값이다. 메모리 제약으로 인해 배치 예제 학습이 불가능하며, 순차적인 특성을 가졌기에 병렬화도 힘들다. 특히 시퀀스 길이가 길어질수록 문제점이 크게 두드러진다. 최근 연구에서는 factorization 기법과 conditional computation을 통해 계산효율과 모델 성능을 개선했지만, 여전히 근본적인 제약은 남아있는 상태이다.

 

한편 어텐션 메커니즘은 다양한 작업에서 시퀀스 모델링 및 변환 모델의 필수적인 부분이 되었으며 입출력 시퀀스 거리에 상관없이 종속성을 모델링할 수 있게 해준다. 그러나 현재까지 이뤄진 대부분의 연구에서는 RNN과 함께 사용되었다.

 

이에 우리는 근본적인 제약을 극복하고 길이가 긴 시퀀스에서도 종속성을 모델링할 수 있게끔 RNN을 제거하고 완전히 어텐션 메커니즘에만 의존하여 입출력간의 전역적 종속성을 도출하는 아키텍처, "트랜스포머"를 제안하고자 한다.

 

 

2. Background

순차적 연산을 줄이고자 하는 목표를 기초로 모든 입력 및 출력 위치에 대해 hidden representations를 병렬로 계산한다.

이전 연구인 확장 신경 Extended Neural GPU, ByteNet, ConvS2S에서 적용되었으며 모두 CNN을 기본 구성 요소로 사용한다.

 

하지만 두 개의 임의 입력 또는 출력 위치의 신호를 연관시키는 데 필요한 작업 수가 ConvS2S의 경우 선형으로,ByteNet의 경우 로그 단위로 위치 사이의 거리에 따라 증가하기 때문에 장거리 종속성을 학습하기 어려워진다.

 

트랜스포머에서는 연산 횟수를 상수 번으로 줄였고, Average attention-weighted positions로 인해 effective resolution이 감소하더라도 Multi-head attention을 통해 이를 상쇄했다.

 

  • 셀프 어텐션 (Self-attention, intra-attention) : 시퀀스 표현 계산을 위해 단일 시퀀스의 서로 다른 위치를 연관시키는 어텐션 메커니즘
  • 엔드 투 엔드 메모리 네트워크 (end-to-end memory network) : 시퀀스 정렬 반복 대신 순환 어텐션 메커니즘에 기반을 두고 있고, 간단한 언어 질문 답변 및 언어 모델링 작업에서 우수한 성능 발휘

 

 

3. Model Architecture

대부분의 경쟁력 있는 시퀀스 변환 모델들은 인코더-디코더 구조를 가지고 있다.

 

  • 인코더 (Encoder) : 입력 심볼 시퀀스를 연속 표현 시퀀스로 매핑  (\(x_1,...x_n → z=(z_1,...z_n)\))
  • 디코더 (Decoder) : 주어진 z에 대해 한 번에 한 요소씩 심볼의 출력 시퀀스 생성 (\(z → (y_1,...y_m)\))

 

각 단계에서 모델은 auto-regressive하며, 이전에 생성된 심볼을 다음 심볼을 생성할 때 추가 입력으로 활용한다.

 

 

auto-regressive?

더보기

자기 자신을 입력으로 하여 자신을 예측하는 모델

= 다음 토큰의 예측을 이전 토큰들에 의존하여 한다

 

참고자료 : https://yngie-c.github.io/nlp/2020/05/22/nlp_ngram/

 

 

 

트랜스포머는 전체 구조에 거쳐 스택된 셀프 어텐션과 포인트 와이즈(point-wise) 연산을 사용하며, 인코더와 디코더 모두에 Fully connected layer가 사용된다.

 

 

point-wise?

더보기

point-wise = 점별 (요소별) 연산

 

 

참고자료 : https://en.wikipedia.org/wiki/Pointwise

 

 

[그림 1] 트랜스포머 전체 구조

 

 

3.1 Encoder and Decoder Stacks

전체적인 구성 요소에 대해서 다룬다. 세부적인 연산과 구조는 아래 섹션에서 보다 자세히 살펴볼 것이다.

 

 

 

Encoder

 

동일한 6개의 레이어 (N=6) 를 쌓았다. 각 레이어는 2개의 서브 레이어를 가진다.

  • multi-head self-attention mechanism
  • simple position-wise fully connected feed-forward network

 

각 서브 레이어에 잔차 연결(residual connection)레이어 정규화(layer normalization)를 적용했다.

따라서 각 서브 레이어의 출력 값은 \(LayerNorm(x+Sublayer(x))\) 이다.

 

잔차 연결을 용이하게 하기 위해 모델의 모든 서브 레이어와 임베딩 레이어는 512차원의 출력 (\(d_{model} = 512\) 을 생성한다.

 

 

 

 

 

 

Decoder

 

동일한 6개의 레이어 (N=6) 를 쌓았다. 각 레이어는 3개의 서브 레이어를 가진다.

  • multi-head self-attention mechanism
  • simple position-wise fully connected feed-forward network
  • multi-head attention over the output of the encoder stack

인코더와 마찬가지로 잔차 연결(residual connection)과 레이어 정규화(layer normalization)를 적용했다.

 

 

또한 디코더 스택의 셀프 어텐션 서브 레이어를 수정해서 이전 포지션에 영향을 미치지 않도록 한다. 

즉, i 위치에 대한 예측이 i보다 작은 위치에서 알려진 출력에만 의존할 수 있도록 한다.

 

 

 

 

 

3.2 Attention

어텐션 함수는 쿼리(Query)와 키(Key)-밸류(Value) 쌍을 출력으로 맵핑해주는 것이라고 할 수 있다.

(이 때 쿼리, 키, 밸류 및 출력은 모두 벡터 형태이다.)

 

출력 값은 밸류들의 가중치 합으로 계산되며, 각 밸류에 할당되는 가중치는 상응하는 키에 따른 compatibility function에 의해 계산된다.

 

 

3.2.1 Scaled Dot-Product Attention

입력 값으로 쿼리, 키 (차원 \(d_k\)), 밸류 (차원 \(d_v\)) 가 주어진다.

쿼리의 모든 키에 대해 닷프로덕트(dot product)를 수행하고, \(sqrt{d_k}\)로 나눠준 후 softmax를 적용해 각 밸류의 가중치를 얻는다.

 

[그림 2] Scaled dot-product attention 동작 과정

scale은 \(sqrt{d_k}\)로 나눠주는 과정을 의미하며 마스킹은 decoder에서 적용된다.

 

실제 적용 시에는 쿼리 집합에 대한 어텐션 함수를 동시에 계산하여 행렬 Q로 묶고, 키와 밸류도 각각 행렬 K와 V로 묶었다. 최종 출력 행렬식은 다음과 같다.

 

$$Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V$$

 

 

현재 가장 많이 사용되는 어텐션 함수는 additive attention, dot-product(multiplicative) attention이다. 

 

  • dot-product attention은 앞서 설명한 scaled-dot attention과 기본적인 알고리즘이 동일하나, \(\sqrt{d_k}\) 로 나눠준다는 차이점이 존재한다.
  • additive attention은 1개의 은닉층을 가진 feed forward network를 이용해 compatibility function을 계산한다.

 

 

 

dot-product attention 방식을 채택한 이유

 

두 가지 방법은 이론적인 복잡도는 비슷하지만, dot-product attention이 실전에서 시간/공간 효율이 더 좋기 때문에 고도로 최적화된 행렬 곱셈 코드에 사용되기 적절하다.

 

 

 

왜 dot-product attention의 시간/공간 효율이 더 좋지?

 

더보기

실제 구현 시 계산항은 다음과 같다.

  • additive attention

$$e_{ij} = V_a^T \tanh \left(W_a s_{i-1} + U_a h_j\right) = V_a^T \tanh \left(Q + K\right)$$

  • dot-product attention

$$e_{ij} = W_Q s_{i-1} \left(W_K h_j\right)^T = Q K^T$$

 

이 때 dot-product에서는 오직 2개의 가중치 행렬만 가지고, 행렬 곱만을 필요로 하므로 계산상의 이점이 존재한다.

 

https://ai.stackexchange.com/questions/11866/why-is-dot-product-attention-faster-than-additive-attention

 

 

 

 

기존 방식에서 스케일링을 적용한 이유?

 

더보기

\(d_k\)가 작은 값일 때에는 두 방법이 비슷하게 동작하지만, \(d_k\)가 커질수록 dot products의 규모가 커지며 softmax 함수의 값을 엄청 작은 gradients로 바꾼다. 이 효과를 상쇄시키기 위해 \(1/sqrt(d_k)\) 로 스케일링 하는 것이다.

 

 

 

3.2.2 Multi-Head Attention

\(d_{model}\) 차원의 쿼리, 키, 밸류를 single attention function으로 계산하는 대신 학습된 서로 다른 선형 투영 차원을 사용해  쿼리, 키, 밸류를 각각 \(d_k, d_k, d_v\) 차원에 선형 투영하는 것이 유용하다는 것을 발견했다.

 

 

선형 투영된 쿼리, 키, 밸류 각각에 대해 어텐션 함수를 병렬로 수행해 \(d_v\) 차원의 출력 값을 얻어낸다. 이 값들을 연결하고 다시 투영해 그림 2에 표시된 것처럼 최종 값을 얻어낸다.

 

이와 같은 멀티 헤드 어텐션은 모델이 서로 다른 위치에 있는 서로 다른 표현 하위 공간에 있는 정보를 공동으로 처리할 수 있게 하며, 싱글 헤드 어텐션은 평균화로 이 효과를 억제한다.

 

 

$$MultiHead(Q,K,V) = Concat(head_1, ... head_h)W^O$$

 

여기서 head는 \(head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)\)

 

 

투영은 다음과 같은 파라미터 행렬이다.

 

  • \(W_i^Q \in R^{d_{model} \times d_k}\)
  • \(W_i^K \in R^{d_{model} \times d_k}\)
  • \(W_i^V \in R^{d_{model} \times d_v}\)
  • \(W_i^O \in R^{hd_v \times d_{model}}\)

 

여기서는 8개의 어텐션 헤드 (h=8) 를 병렬로 사용했다.

 

따라서 각 차원은 \(d_k = d_v = d_{model} / h = 64\) 와 같다. 각 헤드의 크기가 줄어들어서 (병렬 처리로 인해) 총 계산 비용은 전체 싱글 어텐션과 비슷하다.

 

 

 

 

3.2.3 Applications of Attention in our Model

트랜스포머는 멀티 헤드 어텐션을 세 가지 층에서 사용한다.

 

 

Encoder - Decoder Attention

 

쿼리는 이전 디코더 레이어에서, 키-밸류 쌍은 인코더의 출력 값에서 나온다. 따라서 디코더의 모든 위치에서 입력 시퀀스의 모든 위치에 참여 가능하도록 한다.

 

이는 이전에 연구되었던 전형적인 인코더-디코더 어텐션 모델을 모방한 것이다.

 

 

 

Encoder

인코더 자체에도 셀프 어텐션 레이어를 포함하고 있다. 셀프 어텐션 레이어에서 모든 키, 밸류, 쿼리는 같은 곳에서 오는데, 위에서 나온 레이어와는 다르게, 인코더 층에서의 셀프 어텐션 레이어 입력 값은 인코더 이전 층의 출력이다.

 

마찬가지로 인코더의 각 위치에서 이전 인코더 층의 모든 위치에 참여 가능하다.

 

 

 

Decoder

 

디코더의 셀프 어텐션 레이어는 디코더의 각 위치가 해당 위치까지 디코더의 모든 위치에 참여 가능하도록 한다.

 

인코더 층과 다른 점은 Auto-regressive 속성 유지를 위해서 이전 토큰의 참조를 방지해야 한다는 것이다.

구현 시 스케일드 닷프로덕트 수행 과정 중 마스킹을 적용해 방지해야 할 부분의 입력을 -inf로 설정한 후 softmax 레이어의 입력값으로 추가한다.

 

 

 

3.3 Position-wise Feed-Forward Networks

어텐션 서브 레이어 외에도 인코더와 디코더 각 계층에는 Fully connected FFNN (완전 연결 피드포워드 네트워크) 가 포함되어 있으며, 이는 각 위치에서 개별적이고 동일하게 적용된다. 층은 두 개의 선형 변환과 그 사이 ReLU activation function으로 구성된다.

 

$$ FFN(x) = max(0, xW_1 + b_1) W_2 + b_2 $$

 

다른 위치에서도 같은 선형변환을 사용하지만, 레이어마다 서로 다른 파라미터를 사용한다.

입력과 출력의 차원은 \(d_model\) = 512 이며 내부 레이어는 차원 \(d_ff = 2048\)을 가진다.

 

 

 

3.4 Embeddings and Softmax

 

다른 시퀀스 변환 모델과 마찬가지로 입력 토큰과 출력 토큰을 \(d_model\) 차원의 벡터로 변환하기 위해 학습된 임베딩층을 사용한다. 또한 디코더 출력을 다음 토큰 확률로 변환하기 위해 통상적으로 학습된 선형 변환과 softmax를 이용한다.

 

이번 연구에 사용된 모델에서 두 개의 임베딩 레이어 사이에는 같은 가중치 매트릭스를 공유하고 24연구와 마찬가지로 softmax 이전 선형 변환을 사용한다.

 

임베딩 레이어 안에서 가중치에 \(sqrt(d_model)\)을 곱해준다.

 

 

 

 

3.5 Positional Encoding

모델이 recurrence와 convolution을 포함하지 않고 있기 때문에, 순차적인 입력이 아니라 한꺼번에 입력을 받아서 위치 정보가 소실된다.

 

시퀀스의 순서를 모델이 사용할 수 있게 만들기 위해서 시퀀스 내에서 상대적/절대적인 토큰의 위치에 대한 정보를 삽입해야 한다.

 

이를 위해서 인코더 및 디코더 스택 하단에 있는 입력 임베딩에 “위치 인코딩(Positional Encoding)”을 추가한다.

위치 인코딩은 임베딩층과 마찬가지로 \(d_model\) 차원이기에 더해질 수 있다.

 

 

이번 연구에서는 서로 다른 frequency의 sin,cos를 이용해서 두 함수를 만들었다.

 

$$PE_{(pos, 2i)} = sin(pos/10000^{2i/d_{model}})$$

$$PE_{(pos, 2i+1)} = cos(pos/10000^{2i/d_{model}})$$

 

  • pos : 위치
  • i : 차원

이 함수를 선택한 이유는 고정된 offset k에 대해 \(PE_{pos+k}\) 를 \(PE_{pos}\)의 선형 함수로 표현할 수 있기 때문에 모델이 상대적인 위치를 쉽게 학습할 수 있을 것이라는 가설을 세웠기 때문이다.

 

또한 학습된 위치 임베딩을 사용해 실험한 결과, 두 버전이 거의 동일한 결과를 생성한다는 사실을 발견했다.

뒤의 BERT, GPT와 같은 모델에서는 학습된 위치 임베딩을 사용했다.

 

여기서 학습 임베딩 대신 위와 같은 함수를 사용한 이유는 모델이 학습 중 마주친 것보다 더 긴 시퀀스를 마주쳤을 때 외삽(extrapolate)이 가능하기 때문이다.

 

학습된 임베딩에서는 학습된 최대 길이까지만 positional encoding이 가능하지만, 수식은 대입만 하면 길이가 더 긴 시퀀스를 처리 가능하다.

 

 

 

왜 다음과 같은 수식을 고안했을까?

 

더보기

논문을 읽으면서 가장 궁금했던 부분이라 추가적으로 찾아봤다.

 

 

 

단어의 위치를 나타내는 다른 방식을 생각해보자.

 

1. 각 단어(타임스텝)에 선형적으로 숫자 붙이기 

이렇게 하면 시퀀스가 길어질수록 값이 상당히 커질 수 있고, 모델을 실제 적용했을 때 학습 중 마주친 문장보다 더 길이가 긴 문장에 대응할 수 없다는 것이다. 또한 학습 샘플에서 해당 길이가 주어지지 않을 경우 모델의 일반화 성능을 저하시킬 수 있다.

 

2. [0, 1] 사이 숫자 붙이기

문장 내에 몇 개의 단어가 있는지 알 수 없다. 따라서 타임 스텝 변화량이 다른 문장에서 동일한 의미를 지니지 못한다.

 

 

정리하자면 positional encoding 기법은 다음과 같은 조건을 만족해야한다.

 

  • 각 단어 위치에 대해 고유한 인코딩을 출력해야 함
  • 두 타임스텝 변화량은 길이가 다른 문장에서 일관성을 가져야 함
  • 학습 중 마주친 문장보다 더 긴 문장에도 적용될 수 있어야 함
  • 결정론적이어야 함

 

https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

 

Transformer Architecture: The Positional Encoding - Amirhossein Kazemnejad's Blog

Transformer architecture was introduced as a novel pure attention-only sequence-to-sequence architecture by Vaswani et al. Its ability for parallelizable training and its general performance improvement made it a popular option among NLP (and recently CV)

kazemnejad.com

 

 

 

 

 

4. Why Self-Attention

이번 섹션에서는 셀프 어텐션 층의 다양한 측면을 전형적인 시퀀스 변환 인코더-디코더 구조에서 쓰이는 recurrent & convlolution 층과 비교해볼 것이다.

 

셀프 어텐션 층이 꼭 필요한 이유 3가지를 알아보자.

 

1. 레이어 당 총 계산 복잡도

NLP에서는 입력되는 시퀀스 길이 n이 임베딩 차원 d보다 작은 경우가 대부분이므로 RNN, CNN보다 층당 계산 복잡도 측면에서 유리하다.

 

2. 필요한 최소 순차 작업수로 측정되는 병렬 계산될 수 있는 계산의 양

표 1에서 볼 수 있듯 셀프 어텐션 층에서는 모든 위치를 상수 연산으로 연결하는 반면 RNN 층은 O(n)의 순차적인 연산이 필요하다. 

 

3. 네트워크에서 장거리 종속성 사이의 경로 길이

장거리 종속성 의존성 문제 (long-term dependencies, long-range dependencies)는 많은 시퀀스 변환 태스크에서 큰 도전과제가 된다. 종속성을 학습하는 능력에 영향을 주는 핵심 요소 중 하나는 네트워크에서 forward, backward 신호가 통과해야 하는 경로의 길이이다. 입출력 시퀀스의 모든 위치 조합 사이 경로가 짧을수록 장거리 종속성을 더 쉽게 학습할 수 있다.

 

따라서 두 입출력 위치 사이 최대 경로 길이를 비교하면, 어떤 레이어 유형의 네트워크에서 의존성 문제를 더 잘 해결할 수 있는지 확인할 수 있을 것이다. 

 

[표 1] 레이어 유형에 대한 최대 경로 길이

n = 시퀀스 길이, d = 표현 차원, k = 컨볼루션 커널 크기, r = restricted 셀프 어텐션에서 이웃 크기

 

셀프 어텐션의 경우 단어의 모든 위치에 한번에 접근 가능해 최대 경로 길이가 상수 복잡도를 가지지만, 다른 모델들은 그렇지 못하다.

 

또한 굉장히 긴 시퀀스를 포함한 태스크에서의 계산 성능을 높이기 위해서 셀프 어텐션은 각 출력 위치를 중심으로 하는 입력 시퀀스에서 크기 r의 이웃만 고려하게끔 제한을 둘 수 있으며 이는 최대 경로 길이를 O(n/r)로 증가시킬 수 있다. 추후 연구에서 이 접근법을 조사해보려고 계획중이다. 

 

추가적으로 셀프 어텐션은 좀 더 해석 가능한 모델을 만들 수 있다. 이는 부록에서 다루도록 한다.

 

 

 

 

5. Training

5.1 Training Data and Batching

<WMT 2014 English-German dataset>

  • 약 450만개의 문장쌍
  • Byte-pair Encoding
  • 37,000개의 토큰

 

<WMT 2014 English-French dataset>

  • 약 3600만 개의 문장쌍
  • 32,000개의 word-piece vocabulary

문장 쌍은 비슷한 시퀀스 길이로 짝지어졌으며 각 배치 데이터에는 약 25,000개의 소스 토큰과 25,000개의 대상 토큰이 포함된 문장 쌍 세트가 포함되어 있었다.

 

 

5.2 Hardware and Schedule

  • 한 개의 기기에 8개의 NVIDIA P100 GPU 사용
  • 기본 모델의 경우, 각 훈련 단계에 0.4초 소요
    • 기본 모델을 총 10만 단계 (12시간) 동안 학습
  • 큰 모델(표 3의 맨 아래 줄에 설명)의 경우 각 훈련 단계는 1초 소요
    • 대형 모델들은 30만 단계{(3.5일) 동안 학습

 

5.3 Optimizer

  • Adam optimizer (\(beta_1 = 0.9, \beta_2 = 0.98, \epsilon = 10^{-9}\))
  • 학습률은 다음 수식에 따라 스케줄링

$$lrate = d_{model}^{-0.5} \dot min(step\_num^{-0.5}, step\_num \dot warmup\_steps^{-1.5}) $$

  • 'warmup_steps' = 4000

 

이는 첫 번째 ‘warmup_steps' 훈련 단계에 대해 학습률을 선형적으로 증가시킨 후 step의 역제곱근에 비례하여 감소시키는 것에 해당한다. 

 

 

5.4 Regularization

총 3가지 유형의 규제를 사용했다.

 

1. Residual Dropout

 

   서브 레이어 입력에 더해지고 정규화 되기 이전 각 서브 레이어의 출력에 드롭아웃을 적용했다.

 

2. Residual Dropout (2)

 

   인코더, 디코더 스택 모두에서 임베딩과 포지셔널 인코딩 합에 드롭아웃을 적용했다. 

 

3. Label smoothing

 

   학습 중 \(\epsilon_{ls} = 0.1\)의 레이블 스무딩을 적용했다. 이는 모델이 더 불확실한 것을 학습해 perplexity가 올라가지 만 정확도와 BLEU score는 향상된다.

 

 

 

 

6. Results

6.1 Machine Translation

[표 2] 번역 작업에서의 성능

 

영어-독일어 번역 작업에서 큰 모델 (big으로 기재되어있는 모델) 이 SOTA (앙상블 포함) 를 2.0 BLEU 이상 능가했으며 기본 모델도 이전에 발표된 모델들을 능가하였다.

 

또한 영어-프랑스어 번역작업에서는 큰 모델이 1/4도 안되는 훈련 비용으로 이전의 모든 단일 모델을 능가하였다.

 

  • 기본 모델의 경우 10분 간격으로 기록된 마지막 5개의 체크포인트를 평균내 얻은 단일 모델을 사용
  • 큰 모델은 마지막 20개의 체크포인트 평균을 사용
  • 빔 크기 = 4, 패널티 = 0.6인 빔서치를 사용
  • 최대 출력 길이를 입력 길이 + 50으로 설정했지만, 가능한 경우 빨리 종료함

 

6.2 Model Variations

트랜스포머의 다양한 구성 요소 중요성을 평가하기 위해 기본 모델을 다양한 방식으로 변형하여 영어-독일어 번역 성능 변화를 측정했다. 위 성능 평가와는 다르게 체크포인트 평균은 사용하지 않았다.

 

 

[표 3] 모델 파라미터 변화에 따른 성능 변화

  • A행 : 어텐션 헤드 개수로 테스트 해봤는데, 싱글 헤드는 가장 좋은 결과(h=16)보다 0.9 BLEU 저하됐지만 너무 많은 헤드 개수 역시 성능을 저하시켰다
  • B행 : 어텐션 키의 차원 수 \(d_k\) 를 줄이면 성능 저하를 관찰
    • dot product보다 좀 더 정교한 compatibility function이 성능을 올릴 수 있음을 시사
  • C,D행 : 예상했듯 큰 모델이 더 낫고, dropout이 과적합 방지에 큰 도움을 주었다.
  • E행 : 포지셔널 인코딩을 학습된 위치 임베딩으로 대체 = 기본 모델과 거의 동일한 결과

 

 

 

 

7. Conclusion

본 논문에서는 시퀀스 변환 모델에서 일반적으로 사용되는 인코더-디코더 아키텍처에서 기존의 RNN을 멀티 헤드 셀프 어텐션으로 대체해 전적으로 '어텐션'에만 기반한 최초의 시퀀스 변환 모델 "Transformer"를 발표했다.

 

기존 모델보다 훨씬 빠른 학습 속도와 높은 성능을 보여줬으며, 특히 독일어 번역 작업에서는 앙상블 모델조차 능가하는 성능을 보였다. 

 

이후 연구에서 트랜스포머를 텍스트 이외의 입출력 양식으로 확장하고 이미지, 오디오, 비디오와 같은 대용량 입출력을 효율적으로 처리하기 위한 restricted attention mechanism에 대해서도 연구할 계획이다.