NLP에 혁신적인 바람을 일으킨 attention 및 transformer 논문입니다. 발간된 지는 시간이 꽤 됐지만, 자연어처리 과정에서 꼭 읽어보면 좋을 거 같아 정리했습니다.
Abstract
순환 및 합성곱 신경망을 대체할 새로운 네트워크 구조인 Transformer를 제안했습니다. 이 구조는 오로지 attention 메커니즘에 기반하며, 기계 번역 작업에서 우수한 품질, 높은 병렬 처리 능력, 그리고 짧은 훈련 시간을 제공합니다. Transformer는 WMT 2014 영어-독일어 번역에서 기존 최고 점수를 2 BLEU 이상 뛰어넘는 28.4 BLEU를, 영어-프랑스어 번역에서는 41.8 BLEU를 달성하며 새로운 기록을 세웠습니다. 또한, 이 모델은 영어 구문 분석 작업에도 성공적으로 적용되었습니다.
1. Introduction
순환 신경망, 특히 장단기 메모리(LSTM)와 게이트 순환 신경망(Gated RNN)은 시퀀스 모델링과 변환 문제에서 중요한 역할을 해왔습니다. 그러나 이러한 순환 모델은 순차적 계산의 한계를 가지고 있어, 특히 긴 시퀀스에서 병렬 처리와 메모리 효율성이 제한됩니다. 최근 연구는 계산 효율성을 높이기 위한 방법을 제시했지만, 기본적인 제약은 여전히 존재합니다. 이에 대응하여, 순환 구조를 완전히 배제하고 attention 메커니즘만을 사용하는 새로운 모델 구조인 Transformer를 제안합니다. Transformer는 더 높은 병렬 처리 능력을 통해 훈련 시간을 단축시키고, 짧은 훈련 후에도 높은 번역 품질을 달성할 수 있습니다.
3 Model Architecture
대부분의 경쟁력 있는 신경 시퀀스 변환 모델은 인코더-디코더 구조를 사용하며, 인코더는 입력 심볼 시퀀스 (x1, ..., xn) 를 연속된 표현의 시퀀스 z = (z1, ..., zn) 로 매핑하고, 디코더는 이를 바탕으로 하나씩 출력 심볼 시퀀스 (y1, ..., ym) 를 생성합니다. 이 과정에서 모델은 자기 회귀적 방식(auto-regressive)을 사용하여, 이전에 생성된 심볼을 다음 심볼 생성의 입력으로 사용합니다.
트랜스포머는 이 인코더-디코더 구조를 따르면서, 인코더와 디코더 모두에 적층된 self-attention과 point-wise, fully connected layers을 적용하여 구현됩니다.
3.1 Encoder and Decoder Stacks
Encoder(인코더): 트랜스포머의 인코더는 N = 6개의 동일한 레이어로 구성된 스택으로, 각 레이어는 두 개의 하위 레이어를 포함합니다. 첫 번째 하위 레이어는 multi-head self-attention 메커니즘, 두 번째는 position-wise fully connected feed-forward network입니다. 각 하위 레이어는 잔여 연결을 통해 이전 레이어와 연결되고, 이후 레이어 정규화(layer normalization)가 수행됩니다. 이 구조는 모든 하위 레이어와 임베딩 레이어가 dmodel = 512의 차원을 가진 출력을 생성하도록 합니다.
Decoder(디코더): 트랜스포머의 디코더는 N = 6개의 동일한 레이어로 구성되어 있으며, 각 레이어는 인코더 레이어와 비슷하게 두 개의 하위 레이어를 포함하고 추가로 세 번째 하위 레이어에서는 인코더 스택의 출력에 대한 multi-head attention을 수행합니다. 디코더는 각 하위 레이어 주위에 잔여 연결과 레이어 정규화를 적용하며, self-attention sub-layer을 수정하여 후속 위치가 이전 위치를 참조하지 못하게 합니다. 이러한 마스킹과 출력 임베딩의 오프셋은 위치 i의 예측이 i보다 작은 위치의 알려진 출력에만 의존하도록 보장합니다.
3.2 Attention
Attention 함수는 쿼리와 키-값 쌍의 집합을 출력으로 매핑하는 과정으로, 여기서 쿼리, 키, 값, 그리고 출력은 모두 벡터입니다. 출력은 각 값에 할당된 가중합으로 계산되며, 이 가중치는 쿼리와 해당 키의 호환성 함수를 통해 결정됩니다.
3.2.1 Scaled Dot-Product Attention
Transformer은 "Scaled Dot-Product Attention"이라는 특별한 attention 메커니즘을 사용합니다. 이 메커니즘은 입력으로 차원이 dk인 쿼리와 키, 그리고 차원이 dv인 값으로 이루어집니다. 각 쿼리와 모든 키의 내적을 계산하고, 이를 √dk로 나누고 소프트맥스 함수를 적용하여 값에 대한 가중치를 구합니다. 동시에, 쿼리 집합에 대한 attention 함수를 계산하며, 이는 행렬 Q로 함께 묶입니다. 키와 값도 행렬 K와 V로 함께 묶입니다. 최종 출력은 다음과 같이 계산됩니다:
Attention(Q, K, V) = softmax(QKT/√dk) V
가장 일반적으로 사용되는 attention 함수는 Additive Attention와 Dot-Product Attention입니다. Dot-Product Attention은 Transformer 알고리즘과 비슷하지만, 스케일링 요소가 1/√dk로 다릅니다. Additive Attention은 단일 은닉층을 가진 피드포워드 네트워크를 사용하여 호환성 함수를 계산합니다. 두 메커니즘은 이론적으로는 비슷하지만, Additive Attention이 최적화된 행렬 곱셈 코드를 사용하여 더 빠르고 공간 효율적으로 구현할 수 있습니다. dk 값이 작을 때는 두 메커니즘이 유사하게 동작하지만, dk 값이 클 때는 덧셈 주의가 더 우수한 성능을 보입니다. 이는 내적이 클 때 소프트맥스 함수가 극도로 작은 기울기가 있는 영역으로 밀어넣는 효과를 상쇄하기 위해 내적을 1/√dk로 스케일링하기 때문입니다.
3.2.2 Multi-Head Attention
dmodel 차원의 키, 값, 쿼리로 단일 주의 함수를 수행하는 대신, 각각 dk, dk, dv 차원으로 h번 서로 다른 학습된 선형 투영을 사용하여 선형적으로 투영하는 것이 유익하다는 것을 발견했습니다. 이러한 투영된 버전의 쿼리, 키, 값에 대해 주의 기능을 병렬로 수행한 후, dv 차원의 출력 값을 산출합니다. 이들은 연결되어 다시 투영되며, 최종 결과를 내놓습니다. multi-head attention은 다양한 표현 하위 공간에서 정보에 공동으로 주의를 기울일 수 있게 하므로 모델이 다른 위치에서 다양한 표현을 학습할 수 있습니다. 각 헤드의 차원이 감소되어 있기 때문에 전체 계산 비용은 전체 차원을 가진 단일-헤드 주의와 유사합니다.
MultiHead(Q, K, V) = Concat(head1, ..., headh)WO이며, 여기서 headi = Attention(QWiQ, KWiK, VWiV)입니다.
여기서는 h = 8개의 병렬 attention 레이어, 즉 헤드를 사용합니다.
3.3 Position-wise Feed-Forward Networks
인코더와 디코더의 각 레이어에는 완전 연결 피드포워드 네트워크가 포함되어 있습니다. 이 네트워크는 각 위치에 대해 별도로 적용되며, 두 개의 선형 변환과 ReLU 활성화 함수로 구성됩니다.
FFN(x) = max(0, xW1 + b1)W2 + b2 (2)
선형 변환은 레이어마다 다른 매개변수를 사용하며, 입력과 출력의 차원은 각각 512와 2048입니다. 이는 커널 크기가 1인 두 개의 컨볼루션과 유사합니다.
3.4 Embeddings and Softmax
Transformer 모델은 입력 토큰과 출력 토큰을 dmodel 차원의 벡터로 변환하기 위해 학습된 임베딩을 사용합니다. 또한, 디코더 출력을 다음 토큰의 확률로 변환하기 위해 선형 변환과 소프트맥스 함수를 사용합니다. 임베딩 레이어와 소프트맥스 이전의 선형 변환 사이에는 동일한 가중치 행렬을 공유하며, 이 때 가중치에는 √dmodel이 곱해집니다.

3.5 Positional Encoding
Transformer 모델은 순환 및 합성곱을 사용하지 않기 때문에 토큰의 상대적 또는 절대적인 위치에 대한 정보를 주입하기 위해 "위치 인코딩"을 추가합니다. 위치 인코딩은 임베딩과 동일한 차원을 가지며, 사인과 코사인 함수의 다양한 주파수를 사용하여 형성됩니다.
이를 통해 모델이 상대적 위치에 대한 정보를 쉽게 학습할 수 있습니다. 고정된 오프셋에 대해 위치 인코딩은 선형 함수로 표현될 수 있으며, 학습된 위치 임베딩과의 실험에서 유사한 결과를 얻었습니다. 따라서 사인파 버전을 선택하여 모델의 훈련 중에 접한 것보다 더 긴 시퀀스 길이로 확장할 수 있을 것으로 판단되었습니다.
5 Training
5.1 Training Data and Batching
Transformer 모델에서는 WMT 2014 영어-독일어 데이터 세트에서 약 4.5백만 개의 문장 쌍을 사용하여 훈련을 진행했습니다. 이 데이터는 바이트 페어 인코딩을 사용하여 인코딩되었으며, 약 37,000개의 공유 소스-타겟 어휘를 가지고 있습니다. 영어-프랑스어의 경우, 더 큰 WMT 2014 데이터 세트를 사용하여 훈련을 진행했습니다. 해당 데이터는 약 3600만 문장으로 구성되어 있으며, 32,000 개의 단어 조각 어휘로 토큰을 나누었습니다. 문장 쌍은 대략적인 시퀀스 길이에 따라 함께 배치되었으며, 각 훈련 배치에는 약 25,000개의 소스 토큰과 25,000개의 타겟 토큰을 포함하는 문장 쌍 세트가 포함되었습니다.
5.2 Hardware and Schedule
NVIDIA P100 GPU 8개가 장착된 기계에서 모델을 훈련시켰습니다. 기본 모델의 경우, 각 훈련 단계는 약 0.4초가 걸렸고, 총 100,000단계 또는 12시간 동안 훈련되었습니다. 큰 모델의 경우, 단계 시간은 1.0초였고, 300,000단계 또는 3.5일 동안 훈련되었습니다.
5.3 Optimizer
Adam 옵티마이저를 사용했으며, 학습률은 warmup 단계 동안 선형적으로 증가한 후 단계 수의 역 제곱근에 비례하여 감소했습니다. warmup_steps 수는 4000으로 설정되었습니다.
5.4 Regularization
Residual Dropout 각 하위 레이어의 출력에 드롭아웃을 적용하며, 이는 하위 레이어 입력에 더해지고 정규화되기 전에 수행됩니다. 또한, 인코더 및 디코더 스택의 임베딩과 위치 인코딩의 합에도 드롭아웃을 적용합니다. 기본 모델에서는 드롭아웃 비율을 Pdrop = 0.1로 사용합니다.
Label Smoothing 레이블 스무딩은 훈련 중에 사용되며, 값으로는 ϵls = 0.1이 사용됩니다. 이는 모델이 더 불확실해지도록 학습하면서 혼란도를 악화시키지만, 정확도와 BLEU 점수는 향상됩니다.
6. Results
6.1 Machine Translation
WMT 2014 영어-독일어 번역 작업에서, 큰 트랜스포머 모델은 이전 최고 모델들을 2.0 BLEU 이상 능가하여 28.4의 BLEU 점수를 기록했습니다. 이 모델은 8개의 P100 GPU에서 3.5일 동안 훈련되었습니다. 또한, WMT 2014 영어-프랑스어 번역 작업에서, 큰 모델은 41.0의 BLEU 점수를 달성하여 이전 최고 모델을 능가했습니다. 이러한 결과는 이전 모델의 1/4 미만의 훈련 비용으로 달성되었습니다. 기본 모델과 큰 모델은 각각 마지막 5개와 20개의 체크포인트를 평균화하여 단일 모델을 사용했습니다. 추론 중에는 빔 크기를 4로, 길이 패널티를 0.6으로 설정하고, 최대 출력 길이를 입력 길이 + 50으로 설정했으며, 가능한 경우 일찍 종료했습니다.
7 Conclusion
이 연구에서는 트랜스포머를 소개하여 완전히 attention 기반의 시퀀스 변환 모델을 제안했습니다. 이 모델은 인코더-디코더 구조에서 순환 레이어를 multi-head self-attention으로 대체하였습니다. 트랜스포머는 번역 작업에서 빠르게 훈련될 수 있어서 WMT 2014 영어-독일어 및 WMT 2014 영어-프랑스어 번역 작업에서 새로운 최고 수준의 성과를 달성했습니다. 미래에는 주의 기반 모델을 다른 작업에도 적용하고, 텍스트 이외의 입력 및 출력 방식을 다루며, 생성을 덜 순차적으로 만드는 것을 목표로 합니다. 해당 연구에 사용된 코드는 TensorFlow의 tensor2tensor 라이브러리에서 이용할 수 있습니다.
코드
GitHub - tensorflow/tensor2tensor: Library of deep learning models and datasets designed to make deep learning more accessible a
Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research. - tensorflow/tensor2tensor
github.com
https://paperswithcode.com/paper/attention-is-all-you-need
Papers with Code - Attention Is All You Need
#2 best model for Multimodal Machine Translation on Multi30K (BLUE (DE-EN) metric)
paperswithcode.com
'논문 요약' 카테고리의 다른 글
[AI 논문] RAFT: Adapting Language Model to Domain Specific RAG (0) | 2024.04.08 |
---|---|
[연구 논문] 연구 논문(research paper) 읽는 법 (0) | 2024.04.03 |
[리뷰 논문] 리뷰 논문(review paper) 읽는 법 (0) | 2024.04.02 |