RNN, LSTM 과 gated RNN은 언어 모델링이나 기계 번역과 같은 시퀀스 모델링 및 변환 문제에 대한 최첨단 접근 방식으로 확고하게 확립되었다. 그 이후로 recurrent language model과 encoder-decoder 아키텍처 사이의 경계를 허물기 위한 노력이 이어지고 있다.
Recurrent model은 일반적으로 입력과 출력의 symbol위치에 따라 계산을 고려한다. 계산 시간의 단계에 맞게 정렬하여, hidden state $h_t$를 만들어내고 ㄴ이는 이전 hidden state인 $h_{t-1}$과 position t 에 대한 함수이다. 이런 순차적인 특성은 메모리의 제약으로 더 긴 시퀀스에서 중요한 training examples 사이의 병렬화를 막는다. 최근 연구는 factoriczation trick과 conditional computation을 통해 계산 효율성에서 큰 발전을 이루었는데, 후자의 경우는 모델 성능의 향상에도 영향을 끼쳤다. 하지만 근본적인 sequential computation의 제약은 남아있다.
Attention machanism은 sequential modeling과 transduction model의 필수적인 부분이 되었으며, 입력 또는 출력 sequence의 거리에 관계없이 종속성을 모델링 할 수 있게 되었다. 하지만 몇몇 경우에 대해서 attention mechanism은 recurrent network와 함께 사용된다.
해당 연구에서 우리는 Transformer에 대해 제안하고, 이는 recurrence를 피하고, 대신에 input과 output 사이의 전체적인 의존성을 만들기 위해 attention mechanism에 의존한다. Transformer는 더 많은 병렬 처리가 가능하고, P100 GPU 8대로 12시간 학습하면 번역에서 최고 수준에 도달할 수 있다.
Sequential computation을 줄이려는 목표는 Extended Neural GPU, ByteNet, ConvS2S의 기초를 만들고, 이는 모든 입출력에 대해 hidden representation을 병렬로 계산하는 CNN에서 기본 빌딩 블럭으로 사용한다. 해당 모델에서, 임의의 두 개의 입력 또는 출력 위치를 연관시키는 데 필요한 operation의 수는 위치 간의 관계에 따라 증가하고, ConvS2S 에서는 선형적으로, ByteNet에서는 대수적으로 증가한다. 이는 멀리 떨어진 위치 간의 종속성을 학습하는 것을 어렵게 했다. Transformer에서는 operation 횟수를 작은 상수로 줄였으며, 평균 attention-weighted position으로 인해 효과적인 해상도가 감소하는 대가를 치렀지만, Multi-Head Attention으로 대응하는 효과이다.
간혹 intra-attention으로 불리기도 하는 Self-attention은 서로 다른 위치의 single sequence를 연결시키는 attention mechanism으로, representation of sequence를 계산하기 위한 메커니즘이다. Self-attention은 읽기 이해, 추상적 요약, 텍스트 수반 및 학습 과제 -독립 문장 표현과 같은 분야에 성공적으로 사용되었다.
End-to end memory network는 sequence-aligned recurrence 대신에 recurrent attention mechanism을 기반으로 하고, 간단한 언어의 질문에 대한 응답과, 언어 모델 task에서 좋은 성능을 보인다.
하지만 우리가 아는 한, Transformer는 입력과 출력의 representation을 계산하기 위해 sequence aligned RNN이나 convolution을 사용하지 않고, self-attnetion에만 의존한 첫번째 transduction model이다. 이어지는 section에서 우리는 Transformer에 대해 설명하고, self-attention을 유도하고, 해당 모델에 대한 장점에 대해 논의할 예정이다.
💡ByteNet : CNN 기반의 모델. CNN을 사용하여 Encoder 위에 Decoder가 스택처럼 쌓이는 네트워크 구조를 만들고 Dynamic Unfolding 기법을 통해 가변 길이 sequence를 생성해낸다. Time step과 step간의 정보 기억이 필요 없어짐. 멀리 떨어진 단위 정보 사이의 관계 특성을 더 잘 찾아냄.
가장 경쟁력 있는 neural sequence transduction model은 encoder-decoder 구조를 가진다. 여기서, encoder map은 입력된 symbol 표현 $(x_1,..,x_n)$을 연속적인 표현인 $\bold z = (z_1, ... ,z_n)$에 매핑한다. $\bold z$가 주어지면, decoder는 한 번에 하나의 요소로 구성된 심볼의 output sequence인 $(y_1,...,y_n)$를 생성한다. 각 step마다 모델은 auto-regression을 한다. 다음 출력을 만들어낼 때, 이전의 출력을 추가적인 input으로 사용한다.
💡 Auto-regression : 자기 자신을 입력 데이터로 하여 스스로를 예측하는 모델, 현재 시점까지의 output을 사용하여 다음 시점의 output 에측

Transformer는 위와 같은 전체적인 구조를 갖고, 위 그림의 왼쪽과 오른쪽 절반에 각각 표시된 인코더와 디코더 모두에 대해 stacked self-attention과 point wise FC layer를 사용한다.
Encoder : encoder는 6개의 동일한 layer로 구성되어 있다. 각 layer는 2개의 sub-layer를 갖는다. 첫번째는 multi-head self-attention mechanism이고, 두번째 layer는 position-wise fully connected feed-forward network이다. 두 sub-layer는 residual connection을 사용하고, layer normalization을 한다. 즉, 각 sub-layer의 출력은 $LayeNorm(x+Sublayer(x))$이고, $Sublayer(x)$는 sub-layer 자체적으로 구현된 함수이다. 이러한 residual connection을 사용하기 위해, embedding layer를 포함한 모델의 모든 sub-laye의 출력 차원은 512이다.