Encoder에서처럼 각 서브레이어에 residual connection 후 차원을 맞춰주기 위해 layer normalization 적용
3.2 Attention
Attention 함수는 각 Query에 대해 key-value가 한 쌍인 집합이 출력되는 구조이고 Query(Q), Key(K), Value(V), 최종 출력값 모두 벡터 형태로 출력된다. Attention의 최종 출력값은 Attention 함수에서 각 Value의 가중합을 구한 값이다.
💬 Query-Key-Value
위치정보를 인코딩한 후 주의 매커니즘으로 들어가기 전에 데이터를 Query, Key, Value로 변환한다.
Query : 질의, 검색어에 해당한다.
Query와 Key 사이에 점곱(dot-product)을 통해 유사도가 높은 Key의 Value를 찾는다.
같은 방향이 강한 벡터일수록, 즉 유사한 벡터일수록 점곱이 크기 때문에 해당 Key를 가지는 Value에 높은 주의를 부여하고, Value를 가져온다.
3.2.1 Scaled Dot-Product Attention
Attention(Q,K,V)=softmax(dkQKT)V
가장 널리 쓰이는 attention 함수는 additive attention과 dot-product attention 함수 두 가지가 있는데, 해당 논문의 attention 함수는 root d(k)로 나눈다는 점만 빼면 기존의 dot-product 함수와 동일
두 함수 모두 이론적 복잡도는 비슷해 보이지만,
Dot-product attention은 additive attention보다 훨씬 빠르고 효과적으로 학습
그러나 위 함수를 구현하기 위해 QK를 dk로만 나누는 경우
additive attention : dk가 큰 경우에도 효과적으로 작동
dot-product attention : dk 값이 커지면 softmax 함수를 통과하면서 결과값이 급격하게 상승 ⇒ 사라지는 경사
따라서 점곱이 너무 커지지 않도록 dk에 루트를 씌워 나눠주는데, 이 과정이 scaling (dk는 Q와 K의 차원)
논문에서는 Q,K,V를 각각의 attention을 사용하는 대신에 이들을 h번 선형 투영하는 것이 각 벡터들의 크기들을 줄이고 병렬처리가 가능하기에 더 좋음
각각의 head에서 attention을 구하고 이들을 concat
논문에서 Multi-head attention은 다양한 위치의 다양한 표상 하위공간에서 오는 정보에 주의를 기울일 수 있다고 함
Multi-head attention allows the model to jointly attend to information from different representation subspaces positions.
다양한 표상 하위공간 = 여러 개의 head
문장에서 여러 가지 방식으로 여러 위치에 주의를 줄 수 있음
본 논문에서는 h=8 parallel attention layers를 사용하고, key 개수 = value 개수 = 64로 설정했지만, 이 둘이 꼭 같을 필요는 없다.
3.2.3 Applications of Attention in our Model
Encoder-decoder attention layer
Query들은 이전의 decoder 레이어에서 오고 key와 value는 encoder의 output에서 온다. 그래서 decoder의 모든 위치가 입력 시퀀스의 모든 위치에 attention을 줄 수 있게 된다.
Encoder self-attention layer
모든 Query, key, value들이 encoder의 이전 레이어의 output에서 온다. 이전 레이어의 모든 위치에 attention을 주는 것이 가능해진다.
Decoder self-attention layer
i번째 output을 i+1번째 input으로 사용하면서 auto regressive 특성을 유지하기 위해, i번째 이후의 모든 위치에서 attention 함수의 softmax 입력값으로 마이너스 무한대로 설정하여(=masking) 이후의 위치에 attention을 주지 않도록 한다.
3.3 Position-wise Feed-Forward Networks
Transformer의 encoder와 decoder 둘 다 multi-head attention 이후에 fully connected feed-forward network 서브레이어를 적용
각 위치마다, 즉 개별 단어마다 적용되기 때문에 position-wise, network는 두 번의 linear transformation과 활성화함수 ReLU로 구성
위치마다 같은 가중치 파라미터를 사용하지만, 레이어가 달라지면 파라미터도 달라진다.
이 과정은 kernel size = 1, channel이 레이어인 convolution을 두 번 수행한 것으로 이해할 수도 있다.
3.4 Embeddings and Softmax
Embadding 값을 고정시키지 않고, 다른 sequence transduction 모델처럼 학습된 embedding을 사용하여 input token과 output token을 벡터 형태로 변환한다.
학습된 선형 transformation과 softmax 함수를 사용하여 decoder의 결과를 다음 토큰의 확률 예측으로 변환한다.
선형 transformation을 사용할 때 decoder의 결과에 가중치 행렬 W를 곱해주는데, 이때 W가 과정을 거치며 학습된다.
3.5 Positional Encoding
순환 신경망 : 처리 과정이 순서대로 이루어지므로 단어의 순서가 반영
Transformer는 sequence를 다루는 구조가 없고 관련된 정보이기만 하면 위치를 신경쓰지 않는다. ⇒ 단어의 sequence를 이용하기 위해서는 단어의 위치에 대한 정보를 추가할 필요가 있다.
Encoder와 decoder의 input embedding과 같은 차원을 갖게 되는 positional encoding을 서로 더해 준다.
Positional Encoding
단어 임베딩처럼 one-hot encoding의 방식으로 학습
정현파(Sinusoid)를 이용
💡 정현파 : sin 함수 또는 cos함수의 파형
-1에서 1 사이의 값을 가지고 서로 겹치지 않기 때문에 이를 홀수와 짝수로 나누어 연산한 후에 기존의 embedding에 합산 → 서로 겹치지 않고, 상대적인 위치 정보를 가진 결과 생성 가능
장점 모델이 학습한 내용보다 더 긴 sequence가 들어와도 학습된 embedding보다 더 많은 계산이 가능하기 때문에 본 논문에서는 이 방법을 채택
4 Why Self-Attention
"I arrived at the bank after crossing the ..."
“bank”의 의미는 문장이 “road” 및 “river” 중 무엇으로 끝나는 지에 따라서 달라짐.
🔹 Recurrent : 순차적으로 처리하는 과정에서 멀리 떨어져 있을수록, 요구되는 time step의 수와 정보 결합의 단계가 늘어나서 결정의 어려움 문제가 있음.
🔸 Transformer : 훨씬 작은 상수의 step을 가지며, 각각의 step에서는 self-attention 매커니즘을 활용하여 문장의 모든 단어에 대해서 직접적인 관계를 모델링
Self-Attention
입력한 문장 내의 각 단어를 처리해 나가면서 , 문장 내의 다른 위치에 있는 단어들을 보고 힌트를 받아 현재 타겟 위치의 단어를 더 잘 인코딩할 수 있게 하는 과정
Attention
Self attention
각 단어의 vector들끼리 서로 간의 관계가 얼마나 중요한지 점수화
Three Desiderata
Computational Complexity per Layer (계산 복잡도) : Layer 당 계산 복잡도 감소 (= computing cost의 감소)
길이 n이 차원 d의 크기보다 작은 경우 더 빠름
길이 n이 더 길다면, restricted self-attention을 통해 현재 단어에서 r 만큼 떨어진 단어들만 attention 수행
Amount of Computation (계산량) : 병렬로 처리할 수 있는 계산 증가
Path Length between long-range dependencies : 더 먼 거리에 있어도 잘 학습
If short, more easier to learn long-range dependencies
최대 길이(maximum path lengths) 중심으로 검토
Sequential Operations
병렬화가 힘든 연산의 개수; self-attention은 한 번에 병렬적 처리가 가능
Maximum Path Length
의존성을 학습하기 위해 거쳐야 하는 connection이 최대 몇 단계가 필요한가를 나타내는 수치 (path의 길이가 짧을 수록 임의의 position 간의 의존성을 학습하기 쉬움)
RNN : 현재 position은 바로 이전 position에만 의존 → 의존성 체크는 sequence의 길이 n 만큼
결론
Self-Attention이 장거리 의존성 학습 속도에서도 가장 좋고, 의미/구문 해석(interpretable)에 있어서도 유용한 모델 (+ 시각화 가능)
5 Training
5.1 Training Data and Batching
WMT 2014 영어-독일어 데이터 셋
약 37,000개의 토큰을 공유하는 source-target 어휘를 가진 byte-pair 인코딩을 사용
WMT 2014 영어-프랑스어 데이터 셋
문장 쌍은 대략적인 시퀀스 길이와 함께 배치
각 training 배치 : 약 25,000개의 source 토큰 & 25,000개 target 토큰을 포함한 문장 쌍 세트 포함
5.2 Hardware and Schedule
8개의 NVIDIA P100 GPU가 있는 하나의 기계
Base Models (using Hyperparameters)
총 10만 개의 steps (각 학습 단계는 0.4초 소요) / 12시간 동안 훈련 진행
Big Models
- 총 30만 개의 steps (각 학습 단계는 1초 소요) / 3.5일 동안 훈련 진행
5.3 Optimizer
Adam optimizer : β1=0.9,β2=0.98,ϵ=10−9 사용
Learning rate : 학습과정에 따라 변화시킴
⇒ 첫 번째 warmup_steps 까지는 학습 속도를 선형적으로 증가 시키고, 그 이후의 step-num의 역제곱근에 비례하여 감소시킴
residual connection을 수행하기 전, sub-layer의 결과에 droupout을 적용
encoder 및 decoder 스택에서 임베딩 및 위치 인코딩의 합에 dropout을 적용
Base Models : Pdrop=0.1 사용
Label Smoothing
레이블 평활화 값 : ϵls=0.1 사용
모델이 더 불확실한 것을 학습함에 따라 혼란(perplexity) 야기
정확도(accuracy) & BLEU 점수 향상
6 Results
6.1 Machine Translation
WMT 2014 영어-독일어 번역 task
big transformer model이 이전에 보고된 최선의 모델(앙상블이 포함된)보다 2.0 높은 28.4점의 새로운 BLEU score를 수립했다. 8개의 P100 GPU로 3.5일동안 학습. 훈련 비용 또한 경쟁력 있었다.
WMT 2014 영어-프랑스어 번역 task
big model이 41.0의 높은 BLEU score를 수립하며 이전에 발표된 모든 단일 모델보다 우수한 성능 보임. 게다가 훈련 비용은 이전 최첨단 모델의 훈련비용의 1/4보다 적음.
Model
dropout rate Pdrop = 0.1
기본 모델의 경우, 5개의 체크 포인트의 평균 사용 (10분 간격)
대형 모델의 경우, 20개의 체크 포인트의 평균 사용
beam size = 4, length penalty α = 0.6
input length + 50 으로 최대 출력 길이로 설정, 단 가능하면 일찍 종료한다.
문학에서 다른 모델과 번역 퀄리티와 훈련 비용을 비교한 테이블
6.2 Model Variations
(A) 행에서 계산의 양은 일정히 유지하면서 attention head, attention key, value demensions 의 수를 조절한 결과, single head는 best setting 보다 BLEU score가 0.9 낮으며 head가 많다고 무조건 좋은 것은 아님.
(B) 행에서는 attention key 의 크기를 줄이면 모델 품질이 저하되는 것을 발견. 이는 호환성 결정이 쉽지 않으며 정교한 호환 방식보다 dot-product가 이익임을 의미.
(C)와 (D) 행을 통해 모델이 클수록 좋고, dropout이 오버피팅을 피하는 데 효과적
(E) 행에서, sinusoidal (정현파) positional encoding 을 학습된 위치 임베딩으로 대체하니 기본 모델과 거의 동일한 결과를 발견.
6.3 English Constituency Parsing
transformer를 다른 task에 적용 : english constituency parsing에서도 높은 성능을 보였으나 output이 input보다 길다는 구조적 제약 존재.
성능 : task specific tuning이 부족했음에도 RNN Grammar 모델을 제외한 이전 모델들보다 나은 결과를 보임.
7 Conclusion
논문의 저자는 기존 RNN with attention 을 대체하는 오직 attention만을 사용하는 모델 transformer를 제안한다.
모델은 WMT 2014 영어-독일, 영어-프랑스어 번역 작업에서 이전 존재하는 모든 앙상블 모델보다 최고의 성능을 보여줬다.
이 모델은 계산량을 줄이고 병렬화를 적용해 학습 속도가 훨씬 빠를 뿐만 아니라 그 성능 또한 state-of-the-art를 달성하는 수준에 이르렀다.
또한 이러한 attention에 기반한 모델은 다른 task들에 적용할 수도 있다. 텍스트뿐만 아니라 이미지, 오디오나 비디오 등의 상대적으로 큰 입력-출력을 요하는 task들에도 효과적으로 사용할 수 있을 것이다.