링크: https://arxiv.org/abs/1706.03762
저널|학회: NIPS 2017
연구목적: 장거리 의존성 해결, 병목해결
데이터셋: N/A
주요결과: 병렬 처리 가능하게함, 장거리 의존성 해결, 신경망의 작동 시각화
저자: Ashish Vaswani et al.
1. Introduction
2014년에 처음 소개된 Seq2Seq 모델은 인코더와 디코더 구조를 가진 모델로, 둘 다 RNN 기반 네트워크를 사용한다. 이 모델은 번역 작업을 수행할 때, 인코더를 통해 요약된 컨텍스트 벡터로 변환하고, 디코더가 이 벡터를 사용하여 원래의 정보를 잃지 않고 복원한다. RNN 기반 네트워크는 문장이 연속적인 특성을 가지고 있기 때문에 중요하다. 즉, 단어의 순서와 위치가 문장의 의미를 형성하는 데 중요하다. RNN은 텍스트의 정보를 잘 포착할 수 있지만, Seq2Seq 모델은 고정된 크기의 컨텍스트 벡터를 사용하기 때문에 긴 문장에서는 정보를 완전히 포착하기 어렵다는 한계가 있다. 이러한 한계를 극복하기 위해 제안된 것이 바로 Attention 메커니즘이다. 이 메커니즘은 Seq2Seq 모델에 적용되어 디코더가 인코더의 모든 출력에 접근할 수 있도록 해, 고정된 길이의 벡터의 제한을 넘어서서 긴 문장의 번역 성능을 크게 향상시켰다. 이는 획기적인 발전이었지만, RNN 네트워크가 여전히 단어를 순차적으로 처리해야 하므로 시간과 컴퓨팅 파워의 많은 소모라는 한계가 남아있다.
이러한 한계를 극복하기 위한 구글 리서치팀의 혁신적인 접근법이 바로 RNN을 전혀 사용하지 않는 Transformer 모델이다. Transformer는 인코더-디코더 구조를 유지하면서, RNN 대신 Attention 메커니즘만을 사용하여 소스 언어의 문장에서 중요한 정보를 추출한다.
2. Transformer 아키텍처
기본적으로 Seq2Seq와 같이 인코더-디코더 구조의 모델이다. 인코더는 두개의 서브 레이어를, 디코더는 세개의 서브 레이어로 구성되어 있다. 여기서 중요한 점은 RNN이나 CNN을 사용하는 대신 Attention을 사용한다는 것이다.
Fig. 1: Transformer 아키텍처
Fig. 1은 Transformer의 모델 구조를 나타낸 것인데, 인코더와 디코더 모두에 적층된 Self-attention 및 Point-wise, 완전 연결층을 사용한다. 이는 Fig. 1에서 왼쪽, 오른쪽에 각각 나타낸다.
2.1 Encoder
인코더는 N = 6개의 동일한 층으로 구성되어 있고 각 층은 두개의 하위 층을 가지고 있다. 첫번째는 Self-attention 메커니즘, 두번째는 위치별 완전 연결 feed-forward 네트워크이다. 각 하위 층에는 Residual 연결을 적용하고 Layer 정규화를 따른다. 각 하위 층의 출력은 LayerNorm(x\ +\ Sublayer(x))이며, 여기서 Sublayer(x)는 하위 층 자체에 의해 구현된 기능이다.
2.2 Decoder
디코더 부분은 인코더와 마찬가지로 6개의 동일한 층으로 이루어져 있다. 인코더의 두 개의 하위 층 외에도, 디코더는 추가적인 세 번째 하위 층을 포함하는데, 이는 인코더의 출력에 대해 다중 헤드 어텐션을 실행하는 역할을 한다. 인코더와 마찬가지로, 각 하위 층에는 잔여 연결이 적용되며 층 정규화가 이루어진다. 또한, 디코더 스택의 자체 주의(self-attention) 하위 층은 후속 위치에 대한 주의를 방지하도록 조정되었다. 이러한 마스킹과 출력 임베딩이 한 칸씩 옮겨진 것은, 위치 i에서의 예측이 i보다 앞선 위치의 알려진 출력에만 의존하게 만드는데, 이는 중요한 설계 요소이다.
3. Attention
Attention은 Q (Query), K (Key)-V (Value)쌍 집합을 출력에 매핑하는 것으로 설명할 수 있다. 여기서 출력은 값의 가중합으로 계산되며 각 값에 할당된 가중치는 대응되는 K의 Q의 compatibility함수에 의해 계산된다. Q는 물어보는 주체, K는 Q와 비교가 되는 대상이다.
Multi-Head Attention 내부는 Scaled Dot-Product Attention으로 구성되어 있으며, 여기서 각 query는 key와 value에 대해 attention을 수행한다. Query와 Key의 행렬곱을 진행한 뒤, softmax를 적용하기 전에 각각을 \sqrt{d_k}로 나눈 다음 Softmax함수를 적용하여 값에 대한 가중치를 얻는다. Multi-Head Attention에서는 value, key, query를 복제하여 사용하고, 임베딩 차원 (d_{model})을 V, K, Q의 차원으로 바꿔주기 위해 linear layer를 거친다. 임베딩 차원이 512라 하고, # of head가 8이면 linear layer는 64차원으로 만들어 주는 것이다. 다만 실제 implementation에서는 차원을 나누지 않고, 512*512의 병렬적 형태로 계산한 뒤 그 결과값을 나누어 사용하기도 한다. 그리고 각 Head에서 Scaled Dot-Product Attention을 수행하고 이를 합쳐서 linear layer를 거친다.
4. Transformer에서 Attention의 종류
- Encoder-decoder attention. Query를 decoder, key와 value를 encoder 파트에서 가져온다. 이것은 입력 시퀀스의 모든 위치에서 디코더를 거쳐 메모리 키와 값에 주의를 기울일 수 있게 해주며, 시퀀스-투-시퀀스 모델에서 흔히 볼 수 있는 전형적인 인코더-디코더 주의 메커니즘을 모방한다.
- 인코더는 자기 주의 레이어를 포함한다. 자기 주의 레이어에서 모든 키, 값, 쿼리는 같은 장소, 이 경우 인코더의 이전 레이어의 출력에서 온다. 인코더의 각 위치는 이전 레이어의 모든 위치에 주의를 기울일 수 있다.
- 디코더의 자기 주의 레이어는 디코더의 모든 위치가 해당 위치를 포함하여 주의 를 기울일 수 있게 한다.
5. Embeddings and Softmax
주의 하위 층에 추가하여, 우리의 인코더와 디코더의 각 층은 각 위치에 개별적으로 동일하게 적용되는 완전 연결 feed-forward 네트워크를 포함한다. 이것은 ReLU 활성화 함수를 사이에 둔 두 개의 선형 변환으로 구성된다.
선형 변환은 다른 위치에 걸쳐 동일하지만, 층마다 다른 매개변수를 사용한다. 이것을 설 명하는 또 다른 방법은 커널 크기가 1인 두 개의 합성곱으로 보는 것이다. 입력과 출력의 차원은 d_{model} = 512이고, 내부 층은 d_{ff}= 2048의 차원을 가진다.
6. Positional Encoding
우리 모델에는 순환도 없고, 합성곱도 없기 때문에, 모델이 시퀀스의 순서나 토큰들의 상대적 또는 절대적 위치에 대한 정보를 사용할 수 있도록 일부 정보를 주입해야 한다.
이 작업에서, 다양한 선택지 중에, 다양한 주파수의 사인 함수와 코사인 함수를 사용합니다. 여기서 pos는 위치이고 i는 차원이다. 즉, 위치 인코딩의 각 차원은 사인 곡선에 해당한다.
7. 결론
Transformer 모델은 순환 과정을 제거함으로써 병렬 처리를 가능하게 하고 장거리 의존성을 효과적으로 다룰 수 있으며, Attention 메커니즘은 신경망의 작동을 시각적으로 나타내어 어떤 단어가 소스 문장에서 가장 영향력 있는지 보여준다.