WMT 2014 영어-독일어 번역: 28.4 BLEU 기록
(기존 최고 성능(앙상블 포함)보다 2 BLEU 이상 개선)
WMT 2014 영어-프랑스어 번역: 단일 모델 최고 BLEU 점수 41.8 기록
(3.5일 동안 8개의 GPU로 훈련)
일반화 성능
영문 구문 분석(English constituency parsing) 작업에서우수한 성능
대규모 및 제한된 훈련 데이터 모두에서 성공적으로 적용
1. Introduction
시퀀스 모델링 및 변환 문제에서 RNN, LSTM, GRU의 한계
Recurrent 모델은 시퀀스의 위치에 따라 계산을 진행함.
순차적 특성으로 인해 병렬화가 어려움.
시퀀스 길이가 길어질수록 이 문제가 더 심각해짐.
(계산 효율성을 높이려는 시도) 팩터라이제이션과 조건부 계산 등
Attention Mechanisme
이전까지 이 한계를 극복하는 시퀀스 모델링에서 SoTA 역할.
거리와 상관없이 의존성을 모델링할 수 있음.
대부분의 경우 어텐션 메커니즘은 순환 네트워크와 결합하여 사용됨.
어텐션 메커니즘만을 사용한 Transformer 모델
RNN과 결합 없이 셀프 어텐션만으로 시퀀스를 처리할 수 있는 모델 제안
병렬화가 가능
8개의 P100 GPU로 12시간 훈련 후 최첨단 번역 품질을 달성함.
2. Background (배경)
reducing sequential computation을 줄이려는 노력
합성곱 신경망(CNN) 사용
Extended Neural GPU, ByteNet, ConvS2S 등등
모든 입력과 출력 위치: 모델에 들어오는 데이터의 모든 위치(예: 문장의 각 단어)에 대해
숨겨진 표현(hidden representations): 각 위치에 대해 모델이 계산한 내부적인 표현(예: 단어를 수치화한 벡터)
병렬로 계산: 이 계산을 하나씩 순차적으로 하는 것이 아니라, 여러 위치에서 동시에 처리함
한계: 인풋이든 아웃풋이든 두 단어 위치가 멀어지면 operation(계산)량이 늘어난다. 이로 인해, 멀리 떨어진 위치들 간의 관계(의존성)를 학습하는 것이 어려워진다. difficult to learn dependencies between distant positions.
Self-attention에서는 (RNN을 사용하지 않고 attention 만에 의존하는 트랜스포머)는 계산량이 늘어나는 문제가 해결된다.
RNN과 어텐션을 결합한 End-to-end memory networks도 좋은 성능을 보였는데 트랜스포머는 RNN을 사용하지 않아도 좋은 성능을 냈다.
3. Model Architecture (모델 아키텍처)
기본 구조: 인코더-디코더 구조
대부분의 최신 딥러닝 시퀀스 변환 모델들은 인코더-디코더 구조를 사용함.
인코더는 입력 시퀀스를 내부 표현(벡터)으로 변환하고, 디코더는 이 내부 표현을 바탕으로 출력 시퀀스를 한 번에 하나씩 생성함
자기 회귀(auto-regressive) 방식: 디코더가 이전에 생성된 심볼(단어)을 참고하여 다음 심볼을 생성함.
Transformer 모델도 인코더-디코더 구조를 따름.
- 셀프 어텐션(self-attention)과 fully-connected layer를 쌓아서 구성.
- 입력 데이터를 병렬로 처리 가능.
3.1 인코더와 디코더
인코더 : 입력 시퀀스를 연속적인 표현(z)으로 변환
동일한 6개의 레이어로 이루어진 스택.
각 레이어는 두 개의 서브 레이어로 구성:
- 멀티-헤드 셀프 어텐션(multi-head self-attention) 메커니즘.
- fully-connected 피드포워드 feed-forward network).
잔차 연결(residual connection)
레이어의 출력을 다음 레이어에 전달할 때, 이전 레이어의 입력을 그대로 더해주는 방식. 딥러닝 모델에서 주로 역전파 과정에서 신경망이 너무 깊어질 때 발생하는 기울기 소실(vanishing gradient) 문제를 해결하기 위해 도입.
레이어 정규화(layer normalization)
각 레이어의 출력을 정규화하여, 평균이 0이고 분산이 1이 되도록 조정. 이로 인해, 레이어의 출력 값들이 더 고르게 분포되며, 다음 레이어로 전달될 때 불안정한 값들이 발생하는 것을 방지. 빠른학습이 가능해지며, 기울기소실이나 폭발을 방지.
출력 벡터의 크기 dmodel=512
디코더 : 연속적인 표현(z)을 바탕으로 출력 시퀀스를 생성
인코더와 동일한 6개의 레이어로 이루어진 스택.
세 번째 서브 레이어: 인코더 출력에 대해 멀티-헤드 어텐션을 수행.
인코더와 마찬가지로 잔차 연결과 레이어 정규화를 동일하게 적용.
마스킹(masking)
디코더가 다음 단어를 생성할 때 이전 단어들만 참고하도록 함.
3.2 Attention
어텐션의 기본 요소
쿼리(Query): 찾고자 하는 정보 (예: 번역하려는 단어)
키(Key): 저장된 정보의 "이름표" 같은 것 (예: 문장 내 다른 단어들)
값(Value): 실제로 찾아내고자 하는 정보 (예: 번역에 필요한 의미)
(각각의 요소는 백터로 표현)
어텐션 메커니즘의 작동 방식
유사도 계산: 쿼리와 각 키 간의 유사도((compatibility function)를 계산함.
가중치 부여: 유사도에 따라 각 값에 가중치를 부여함.
가중합 계산: 가중치를 곱한 값들을 모두 더해 최종 출력을 생성함.
영어를 프랑스어로 번역하는 걸 예시로 들어보자.
쿼리(Query): "apple"이라는 단어를 프랑스어로 번역하려고 할 때, 이 단어가 무엇을 의미하는지 찾고자 함.
키(Key): 문장 내의 다른 단어들 ("fruit", "red", "eat" 등)
값(Value): 각 키에 연결된 의미 또는 번역 가능성
1) 유사도 계산: "apple"과 문장 내 다른 단어들("fruit", "red", "eat")의 유사도를 계산함.
예: "apple"과 "fruit"은 높은 유사도, "apple"과 "red"는 중간 정도의 유사도, "apple"과 "eat"은 낮은 유사도를 가짐.
2) 가중치 부여: 유사도에 따라 가중치를 부여함.
예: "fruit"에 높은 가중치, "red"에 중간 가중치, "eat"에 낮은 가중치 부여.
3) 가중합 계산: 각 값(의미)에 가중치를 곱한 후 더해서 최종 출력(번역된 단어)을 생성함.
예: "fruit"이 가장 관련이 크므로, "apple"은 프랑스어로 "pomme"로 번역됨.
3.2.1 Scaled Dot-Product Attention
스케일드 닷-프로덕트 어텐션은 다음과 같이 작동한다:
입력: 쿼리와 키는 차원이 dk이고, 값은 차원이 dv이다.
계산:
쿼리와 모든 키의 닷 프로덕트를 계산한다.
각 닷 프로덕트를 dk로 나눈다.
소프트맥스 함수를 적용하여 값에 대한 가중치를 얻는다.
행렬 연산:
쿼리, 키, 값은 각각 Q, K, V라는 행렬로 패킹된다.
출력 행렬은 다음과 같이 계산된다:
Attention(Q,K,V)=softmax(dkQKT)V
비교:
덧셈 어텐션은 피드포워드 네트워크를 사용하여 호환성 함수를 계산한다.
닷-프로덕트 어텐션은 덧셈 어텐션과 이론적으로 비슷하지만, 스케일링이 없을 경우 큰 dk 값에서 성능이 떨어질 수 있다.
닷-프로덕트 어텐션은 스케일링 덕분에 계산 속도가 빠르고 메모리 효율적이다.
문제 해결:
큰 dk 값에서 닷 프로덕트의 크기가 커지면 소프트맥스 함수의 기울기가 작아질 수 있다.
이를 해결하기 위해 닷 프로덕트를 dk로 스케일링한다.
기본 개념: '쿼리', '키', '값'을 입력으로 받아 출력 벡터를 생성
3.2.2 Multi-Head Attention
멀티-헤드 어텐션은 다음과 같이 작동한다:
프로젝션:
단일 어텐션 함수 대신, 쿼리, 키, 값을 각각 다른 학습된 선형 프로젝션을 사용하여 dk, dk, dv 차원으로 h 번 프로젝션한다.
병렬 어텐션:
각 프로젝션된 쿼리, 키, 값 버전에서 병렬로 어텐션 함수를 수행한다.
이렇게 얻어진 dv-차원의 출력 값들을 연결(concatenate)한다.
최종 프로젝션:
연결된 출력을 다시 프로젝션하여 최종 값을 얻는다.
멀티-헤드 어텐션 공식:
멀티-헤드 어텐션은 다음과 같이 정의된다:
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
헤드 계산:
각 헤드는 다음과 같이 계산된다:
headi=Attention(QWQi,KWKi,VWVi)
프로젝션 파라미터:
프로젝션은 다음의 파라미터 행렬을 사용한다:
WQi∈Rdmodel×dk
WKi∈Rdmodel×dk
WVi∈Rdmodel×dv
WO∈Rhdv×dmodel
실험 설정:
이 논문은 h=8개의 병렬 어텐션 헤드를 사용한다.
각 헤드에 대해 dk=dv=dmodel/h=64로 설정한다.
각 헤드의 차원이 줄어들기 때문에, 전체 계산 비용은 전체 차원을 가진 단일 헤드 어텐션과 유사하다.
3.2.3 Applications of Attention in our Model
트랜스포머 모델은 멀티-헤드 어텐션을 세 가지 방식으로 사용한다:
인코더-디코더 어텐션:
쿼리는 이전 디코더 레이어에서 오고, 메모리 키와 값은 인코더의 출력에서 온다.
이는 디코더의 각 위치가 입력 시퀀스의 모든 위치에 주의를 기울일 수 있게 한다.
이는 시퀀스-투-시퀀스 모델에서 전형적인 인코더-디코더 어텐션 메커니즘을 모방한다.
인코더의 셀프 어텐션:
셀프 어텐션 레이어에서는 모든 키, 값, 쿼리가 같은 곳에서 온다. 이 경우, 이전 인코더 레이어의 출력에서 온다.
인코더의 각 위치는 인코더의 이전 레이어의 모든 위치에 주의를 기울일 수 있다.
디코더의 셀프 어텐션:
셀프 어텐션 레이어에서는 디코더의 각 위치가 해당 위치까지의 모든 디코더 위치에 주의를 기울일 수 있게 한다.
왼쪽으로의 정보 흐름을 방지하여 자기 회귀 속성을 유지해야 한다.
이를 위해 스케일드 닷-프로덕트 어텐션 내부에서 소프트맥스 입력의 불법적인 연결에 해당하는 값을 −∞로 설정하여 마스킹을 구현한다. 이 과정은 그림 2에 설명되어 있다.
3.3 Position-wise Feed-Forward Networks
구성:
인코더와 디코더의 각 레이어에는 완전 연결 피드-포워드 네트워크가 포함된다.
이 네트워크는 각 위치에 대해 독립적이고 동일하게 적용된다.
네트워크는 두 개의 선형 변환과 그 사이에 ReLU 활성화 함수로 구성된다.
수식:
피드-포워드 네트워크의 수식은 다음과 같다:
FFN(x)=max(0,xW1+b1)W2+b2
변환:
선형 변환은 서로 다른 위치에서 동일하지만, 레이어 간에는 다른 파라미터를 사용한다.
이는 커널 크기 1의 두 개의 컨볼루션으로 설명할 수 있다.
차원:
입력과 출력의 차원은 dmodel=512이다.
내부 레이어의 차원은 dff=2048이다.
3.4 Embeddings and Softmax
임베딩:
학습된 임베딩을 사용하여 입력 토큰과 출력 토큰을 dmodel 차원의 벡터로 변환한다.
선형 변환과 소프트맥스:
디코더의 출력을 예측된 다음 토큰 확률로 변환하기 위해 학습된 선형 변환과 소프트맥스 함수를 사용한다.
가중치 공유:
두 임베딩 레이어와 사전 소프트맥스 선형 변환 사이에서 동일한 가중치 행렬을 공유한다.
임베딩 레이어에서는 이 가중치에 dmodel을 곱한다.
3.5 Positional Encoding
필요성:
모델에는 순환이나 컨볼루션이 없으므로, 시퀀스의 순서를 모델이 활용할 수 있도록 해야 한다.
이를 위해 시퀀스에서 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입해야 한다.
위치 인코딩:
인코더와 디코더 스택의 입력 임베딩에 "위치 인코딩"을 추가한다.
위치 인코딩은 임베딩과 같은 차원인 dmodel을 가지며, 두 벡터를 합산할 수 있다.
다양한 위치 인코딩 방법이 존재하며, 학습된 것과 고정된 것들이 있다.
수식:
본 연구에서는 서로 다른 주파수의 사인과 코사인 함수를 사용한다:
PE(pos,2i)=sin(100002i/dmodelpos)
PE(pos,2i+1)=cos(100002i/dmodelpos)
여기서 pos는 위치, i는 차원을 의미한다.
즉, 위치 인코딩의 각 차원은 사인 함수를 따른다.
파장은 2π에서 10000⋅2π까지 기하급수적으로 증가한다.
선택 이유:
이 함수를 선택한 이유는 모델이 상대적 위치를 쉽게 학습할 수 있도록 할 것이라고 가정했기 때문이다.
고정된 오프셋 k에 대해, PEpos+k는 PEpos의 선형 함수로 표현될 수 있다.
Comparison with Learned Positional Encoding
학습된 위치 인코딩:
학습된 위치 인코딩은 훈련 과정에서 위치 정보를 학습할 수 있는 매개변수를 가진 임베딩 벡터를 사용한다.
이는 모델이 각 위치에 대해 개별적으로 학습된 벡터를 통해 위치 정보를 인코딩하도록 한다.
실험 결과:
본 연구에서는 사인과 코사인 함수 기반의 고정된 위치 인코딩과 학습된 위치 인코딩 두 가지 방법을 비교했다.
실험 결과, 두 방법 모두 거의 동일한 성능을 보였다.
선택 이유:
사인과 코사인 함수 기반의 고정된 위치 인코딩을 선택한 이유는 모델이 훈련 중에 본 적 없는 시퀀스 길이에도 잘 일반화할 수 있도록 하기 위해서였다.
사인과 코사인 함수는 파장이 기하급수적으로 증가하므로, 상대적 위치를 효과적으로 학습할 수 있다.
이러한 고정된 함수는 학습된 임베딩보다 더 나은 일반화 성능을 제공할 수 있다고 예상했다.
4 Why Self-Attention
셀프 어텐션의 장점은 다음과 같다:
계산 복잡성:
셀프 어텐션: 계산이 빠르고 효율적이다. 모든 위치를 동시에 처리할 수 있다.
순환 레이어: 순차적 연산이 O(n)이므로 상대적으로 느리다.
병렬 처리:
셀프 어텐션: 연산을 병렬로 처리할 수 있다.
순환 레이어: 순차적으로 연산해야 하므로 병렬화가 제한적이다.
장기 의존성 학습:
셀프 어텐션: 입력과 출력 간의 경로가 짧아 장기 의존성 학습이 용이하다.
순환 레이어: 긴 경로로 인해 장기 의존성 학습이 어려울 수 있다.
성능 개선:
셀프 어텐션을 지역적으로 제한하여 최대 경로 길이를 줄일 수 있다.
해석 가능성:
셀프 어텐션은 모델의 해석 가능성을 높이고, 어텐션 헤드가 문장의 구문과 의미를 잘 학습한다.
7 Conclusion
이 연구에서는 Transformer를 제안했다. Transformer는 전체가 어텐션 기반인 첫 번째 시퀀스 변환 모델로, 인코더-디코더 아키텍처에서 자주 사용되는 순환 레이어를 다중 헤드 셀프 어텐션으로 대체했다.
번역 작업:
Transformer는 RNN, CNN 기반 아키텍처보다 훨씬 빠르게 훈련된다.
WMT 2014 영어-독일어 및 WMT 2014 영어-프랑스어 번역 작업에서 최첨단 성능을 달성.
영어-독일어 번역 작업에서는 기존의 모든 앙상블을 능가하는 성능을 보였다.
미래 계획:
어텐션 기반 모델의 미래에 대해 기대하고 있으며, 다른 작업에도 적용할 계획이다.
Transformer를 텍스트 외의 입력 및 출력 모달리티(예: 이미지, 오디오, 비디오) 문제에 확장할 예정이다.
생성 과정을 덜 순차적으로 만드는 것도 연구 목표 중 하나 라고 했는데 뭐 이 이후로 트랜스포머에 대한 연구는 무시무시하게 발전하고 이어지게 된다.