1. Introduction
Transformer는 기존의 반복적(recurrent) 모델의 한계를 극복하기 위해 개발된 모델로, 여러 자연어 처리 작업에서 혁신적인 성능을 보여줍니다.
1. **반복 모델의 한계**: 전통적인 순환 신경망(RNN)과 같은 반복 모델들은 입력 및 출력 시퀀스의 기호 위치에 따라 계산을 순차적으로 진행합니다. 이러한 순차적 계산의 본질 때문에, 트레이닝 예시 내에서의 병렬화가 어렵고, 더 긴 시퀀스 길이에서는 메모리 제약으로 인해 배치 처리가 제한됩니다. 이는 효율성과 성능에 제약을 주는 요소입니다.
2. **주의(Attention) 메커니즘**: Transformer는 Attention 메커니즘을 사용하여 모델링의 핵심 요소로 삼습니다. 이 메커니즘은 입력 또는 출력 시퀀스 내의 요소들 사이의 의존성을 모델링할 때, 그 요소들의 거리에 관계없이 글로벌 의존성을 포착할 수 있게 합니다. 이는 특히 시퀀스 내 먼 위치에 있는 요소들 사이의 관계를 이해하는 데 유용합니다.
3. **재귀 회피와 전적인 주의 메커니즘 의존**: Transformer는 기존의 반복 모델과 다르게 재귀적 계산을 사용하지 않고, 전적으로 주의 메커니즘에 의존하여 입력과 출력 사이의 글로벌 의존성을 도출합니다. 이 접근 방식은 모델 내에서의 계산을 더욱 효율적으로 만들며, 높은 수준의 병렬 처리를 가능하게 합니다.
4. **효율성과 성능**: Transformer의 이러한 구조는 훨씬 더 많은 병렬 처리를 가능하게 하여, 훈련 시간을 대폭 줄이면서도 번역 품질과 같은 자연어 처리 작업에서 최첨단 성능을 달성할 수 있게 합니다. 예를 들어, 8개의 P100 GPU를 사용하여 단 12시간 동안 훈련시킨 후에 새로운 번역 품질의 기준을 세울 수 있습니다.
Transformer 모델은 이러한 특징 덕분에 자연어 처리(NLP) 분야에서 큰 진보를 이루었으며, 현재 다양한 NLP 작업과 관련 모델에서 기본 구조로 널리 사용되고 있습니다.
2.Background
이 문단은 Transformer 모델과 그것이 기존의 모델들과 어떻게 다른지를 설명합니다.
Transformer의 핵심 목표 중 하나는 순차적 계산의 필요성을 줄이는 것입니다. 이러한 목표는 Extended Neural GPU, ByteNet, ConvS2S 등과 같은 다른 모델들의 기반도 형성하며, 이 모델들은 모두 기본 빌딩 블록으로 합성곱 신경망(Convolutional Neural Networks, CNNs)을 사용하고, 모든 입력 및 출력 위치에 대해 숨겨진 표현을 병렬로 계산합니다. 이러한 모델에서, 두 임의의 입력 또는 출력 위치 사이의 신호를 관련시키는 데 필요한 연산 수는 위치 간 거리에 따라 증가합니다. ConvS2S의 경우 선형적(비슷하게 증가/더 많은 계산으로 먼 위치 연결)으로, ByteNet의 경우 로그함수적(비교적 적은 비율로 증가/ 더 적은 계산으로 먼 위치 간의 의존성을 효과적으로 연결)으로 증가합니다. 이는 먼 위치 사이의 의존성을 학습하기 더 어렵게 만듭니다.
Transformer 모델은 이 문제를 해결하여, 두 위치 사이의 관계 설정에 필요한 연산 수를 상수로 줄였습니다. 그러나 이는 평균화된 주의 가중치 위치로 인해 실제 해상도가 감소하는 비용이 발생하는데, 이는 3.2절에서 설명된 멀티 헤드 주의(Multi-Head Attention)로 상쇄됩니다.
Transformer 모델은 위치 간 거리에 관계없이 두 위치 사이의 관계를 설정하는 데 필요한 연산의 수를 상수로 유지함으로써, 이전 모델들이 직면했던 계산 복잡성 문제를 해결합니다. 그러나 이 방식은 정보의 평균화로 인한 해상도 감소를 초래할 수 있는데, 이는 멀티 헤드 주의(Multi-Head Attention) 메커니즘을 통해 해결됩니다. 멀티 헤드 주의는 여러 '머리'를 사용하여 정보를 다양한 방식으로 집중시키고 통합함으로써, 모델이 다양한 위치의 정보를 효과적으로 학습하고 해상도 손실 없이 세부 사항을 포착할 수 있게 합니다.
자기 주의(Self-attention)는 때때로 내부 주의(Intra-attention)라고도 불리며, 단일 시퀀스의 다양한 위치를 관련시켜 시퀀스의 표현을 계산하는 주의 메커니즘입니다. 자기 주의는 독해, 추상적 요약, 텍스트적 함축, 그리고 작업 독립적인 문장 표현 학습과 같은 다양한 작업에서 성공적으로 사용되었습니다.
자기 주의(Self-attention) 메커니즘은 한 시퀀스 내의 다른 위치들 사이의 관계를 이해하고, 이를 통해 해당 시퀀스의 더 풍부하고 연관성 높은 표현을 생성하는 데 사용됩니다. 이 과정에서 모델은 시퀀스 내의 각 위치에서 다른 모든 위치의 정보를 참조하여, 각 위치에 가장 관련성이 높은 정보를 집중적으로 활용합니다. 이러한 방식으로, 모델은 전체 시퀀스를 통틀어 각 요소가 서로 어떻게 관련되어 있는지를 파악할 수 있습니다.
(end-to-end memory networks)는 시퀀스에 맞춰진 순환 대신에 반복적인 주의 메커니즘에 기반을 두고 있으며, 간단한 언어 질문 응답 및 언어 모델링 작업에서 잘 수행됨을 보여주었습니다.
끝에서 끝까지(end-to-end) 메모리 네트워크는 순환 신경망(RNN)이나 다른 시퀀스 기반 모델 대신에, 반복적인 주의 메커니즘을 사용하는 인공 신경망 구조입니다. 이 구조는 특히 언어 질문 응답과 언어 모델링과 같은 작업에서 우수한 성능을 보여줍니다. 여기서 반복적인 주의 메커니즘은 모델이 중요한 정보에 집중하고, 불필요한 정보는 무시하도록 도와줍니다. 이를 통해, 메모리 네트워크는 주어진 문제에 관련된 핵심 사실이나 개념을 효과적으로 추출하고 활용하여 답변을 생성할 수 있습니다.
그러나 우리가 알기로, Transformer는 시퀀스에 맞춰진 RNNs나 합성곱을 사용하지 않고 전적으로 자기 주의(self-attention)에 의존하여 입력과 출력의 표현을 계산하는 첫 번째 변환(transduction) 모델입니다.
즉, Transformer는 입력 시퀀스에서 출력 시퀀스로의 변환을 위해, 시퀀스의 각 요소 간의 관계를 파악하는데 자기 주의 메커니즘만을 사용합니다. 이는 Transformer가 시퀀스 데이터를 처리하는 새롭고 혁신적인 방식을 제시한 것을 의미하며, 이 방식은 특히 자연어 처리(NLP) 분야에서 뛰어난 성능을 보여주었습니다.
다음 절에서는 Transformer를 자세히 설명하고, 자기 주의를 동기화하며, [14, 15], [8]과 같은 모델들에 비해 그 장점을 논의할 것입니다.
3.Model Architecture
대부분의 경쟁력 있는 신경 시퀀스 변환 모델은 인코더-디코더 구조를 가지고 있습니다.
인코더에 인풋이 문장 순서에 맞춰서 순차적으로 입력되고 그 입력 값들을 사용하여 아웃풋도 순차적으로 출력되는 구조로 이루어져 있습니다.그렇기 때문에 앞에서 설명했던 것처럼 병렬학습이 불가능합니다.
Transformer는 이러한 전체 구조를 따르며, 인코더와 디코더 모두에 대해 쌓인 자기 주의(self-attention)와 점별(point-wise), 완전 연결된 레이어를 사용합니다. 이 구조는 그림 1의 왼쪽과 오른쪽 절반에서 각각 보여집니다.
3.1 Encoder & Decoder
<Encoder> N = 6개의 동일한 층으로 구성
- 하위 층 1:Multi-Head attention.
- 하위 층 2: Feed Forward (위치별 완전 연결 피드포워드 네트워크)
- 잔여 연결과 층 정규화: 각 하위 층의 출력에(LayerNorm(x + Sublayer(x))) 적용되며, 모든 하위 층과 임베딩 층의 출력 차원은 d_model=512(잔여 연결을 용이하게 하기 위해)입니다.
<Decoder> N = 6개의 동일한 층으로 구성
- 하위 층 1: Multi-Head Attention (입력 시퀀스의 관련 부분에 주의를 기울이면서 출력 시퀀스를 생성/인코더의 출력과 디코더의 현재까지의 출력 사이의 관계를 학습하는 데 중점)
- 하위 층 2: 위치별 완전 연결 피드포워드 네트워크.
- 하위 층 3(추가): Masked Multi-Head Attention(인코더 스택의 출력에 대해 다중 헤드 주의를 수행,"masking" 기법을 사용하여 현재 단계 이후의 위치에서의 정보가 현재 단계의 예측에 영향을 미치지 않도록 함/디코더 내부에서 자기 정보에만 주의를 기울이며 미래 정보의 유출을 방지).
- 잔여 연결과 층 정규화: 각 하위 층 주변에 적용되며, 출력 임베딩이 한 위치씩 오프셋되어 위치 i의 예측이 i보다 작은 위치의 알려진 출력에만 의존하도록 보장(시퀀스를 생성할 때 각 시점에서의 예측이 오직 그 시점 이전에 생성된 정보에만 의존).
3.2 Attention
주의(Attention) 함수는 쿼리와 key-value 쌍의 집합을 출력으로 매핑하는 것으로 설명될 수 있으며, 여기서 쿼리, 키, 값, 그리고 출력은 모두 벡터입니다. 출력은 값들의 가중 합으로 계산되며, 각 값에 할당된 가중치는 쿼리와 해당 키의 호환성 함수에 의해 계산됩니다.
3.2.1 Scaled Dot-Product Attention
"스케일된 내적 주의(Scaled Dot-Product Attention)"는 특정한 주의 메커니즘을 의미합니다. 이 메커니즘의 입력은 쿼리(queries)와 키(keys)가 dk 차원, 값(values)이 dv 차원을 가집니다. 쿼리와 모든 키의 내적(dot product)을 계산하고, dk의 제곱근으로 나눈 후, 소프트맥스 함수를 적용하여 값들에 대한 가중치를 얻습니다.
실제로는 쿼리, 키, 값 집합을 각각 Q, K, V 행렬로 함께 묶어서 주의 함수를 계산합니다. 출력 행렬은 다음과 같이 계산됩니다:
덧셈 주의(additive attention)는 쿼리와 키 사이의 호환성을 평가하기 위해 단일 숨겨진 계층을 가진 피드포워드 네트워크를 사용합니다. 반면, 내적 주의(dot-product attention)는 쿼리와 모든 키의 내적을 계산하여 사용합니다. 스케일드닷-프로덕트 어텐션은 내적 주의의 한 변형인데, 내적 결과를 키의 차원의 제곱근으로 나누어 스케일링합니다. 이 스케일링은 큰 차원에서 내적 값의 범위를 조절하여 소프트맥스 함수의 그래디언트가 너무 작아는 문제를 방지합니다.
3.2.2 Multi-Head Attention
멀티-헤드 어텐션(Multi-Head Attention)는 단일 어텐션 함수 대신, 쿼리(Query), 키(Key), 밸류(Value)를 h번 다른 학습된 선형 프로젝션으로 변환하여 여러 어텐션 함수를 병렬로 수행하는 방식입니다. 각각의 어텐션 함수는 dk, dk, dv 차원의 키, 쿼리, 밸류에 대해 수행되며, 이 결과들은 연결된 후 최종적으로 다시 한 번의 선형 변환을 거쳐 출력됩니다. 멀티-헤드 어텐션을 통해 모델이 다양한 표현 공간에서 정보를 종합적으로 학습할 수 있게 되며, 단일 어텐션 헤드를 사용할 때보다 더 다양한 정보를 얻을 수 있습니다.
3.2.3 Applications of Attention in our model
우리 모델에서 어텐션을 사용하는 세 가지 다른 방법을 설명
1. **인코더-디코더 어텐션(Encoder-Decoder Attention) 레이어**: 쿼리는 이전 디코더 레이어에서 오고, 메모리 키와 값은 인코더의 출력에서 옵니다. 이 구조는 디코더의 모든 위치가 입력 시퀀스의 모든 위치에 주목할 수 있게 하여, 시퀀스-시퀀스 모델에서 흔히 볼 수 있는 전형적인 인코더-디코더 어텐션 메커니즘을 모방합니다.
2. **인코더 내의 셀프-어텐션 레이어(Self-Attention Layers in the Encoder)**: 셀프-어텐션 레이어에서는 모든 키, 값, 쿼리가 같은 위치, 이 경우 인코더의 이전 레이어의 출력에서 옵니다. 인코더의 각 위치가 인코더의 이전 레이어의 모든 위치에 주목할 수 있습니다.
3. **디코더 내의 셀프-어텐션 레이어(Self-Attention Layers in the Decoder)**: 비슷하게, 디코더 내의 셀프-어텐션 레이어는 디코더의 각 위치가 그 위치를 포함하여 디코더 내의 모든 위치에 주목할 수 있게 합니다. 디코더에서 왼쪽으로의 정보 흐름을 방지하여 자동 회귀(auto-regressive) 속성을 보존하기 위해, 우리는 스케일된 점-곱 어텐션 내에서 불법 연결에 해당하는 입력의 모든 값을 마스킹(−∞로 설정)하여 구현합니다.
이러한 방식으로 어텐션을 다양하게 적용함으로써, 트랜스포머 모델은 입력과 출력 사이의 복잡한 관계를 효과적으로 학습할 수 있습니다.
3.3 위치별 피드포워드 네트워크 (Position-wise Feed-Forward Networks)
인코더와 디코더의 각 레이어에는 어텐션 서브레이어 외에도 위치별로 적용되는 완전 연결 피드포워드 네트워크가 포함됩니다. 이 네트워크는 두 개의 선형 변환과 그 사이의 ReLU 활성화 함수로 구성됩니다. 선형 변환은 서로 다른 위치에서는 동일하지만 레이어마다 다른 파라미터를 사용합니다. 이를 크기가 1인 커널을 가진 두 개의 합성곱으로 설명할 수 있습니다. 입력과 출력의 차원은 d_model=512이며, 내부 레이어의 차원은 d_ff=2048입니다.
3.4 임베딩과 소프트맥스 (Embeddings and Softmax)
다른 시퀀스 변환 모델과 마찬가지로, 입력 토큰과 출력 토큰을 d_model차원의 벡터로 변환하기 위해 학습된 임베딩을 사용합니다. 또한 디코더 출력을 예측된 다음 토큰 확률로 변환하기 위해 일반적으로 사용되는 학습된 선형 변환과 소프트맥스 함수를 사용합니다. 우리 모델에서는 두 임베딩 레이어와 소프트맥스 이전의 선형 변환 사이에 동일한 가중치 행렬을 공유합니다. 임베딩 레이어에서는 이 가중치에 √d_model을 곱합니다.
3.5 위치 인코딩 (Positional Encoding)
우리 모델에는 재귀나 합성곱이 포함되어 있지 않기 때문에, 시퀀스의 순서를 활용하기 위해 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입할 필요가 있습니다. 이를 위해 입력 임베딩에 "위치 인코딩"을 더합니다. 위치 인코딩의 차원은 임베딩과 같아서 두 값을 더할 수 있습니다. 이 작업에서는 다양한 주파수를 가진 사인과 코사인 함수를 사용하는 위치 인코딩을 사용합니다. 위치 pos와 차원 i에 대해, 위치 인코딩은 다음과 같이 계산됩니다
이는 모델이 상대적 위치를 통해 주목하기 쉽게 하기 위함입니다. 우리는 이 함수를 선택했기 때문에, 어떤 고정된 오프셋 k에 대해, PE_pos+k는 PE_pos의 선형 함수로 표현될 수 있습니다.
4. Why Self-Attention
### 자가 주의(Self-Attention) 계층의 특징과 분석
1. **계산 복잡도**:
- 자가 주의 계층은 모든 위치를 일정한 수의 연산으로 연결합니다. 이는 순환 레이어가 요구하는 O(n)의 순차적인 연산보다 효율적입니다.
- 시퀀스 길이 n이 표현 차원 d보다 작은 경우, 자가 주의 계층이 순환 레이어보다 계산적으로 유리합니다.
2. **병렬화와 최소 연속 연산**:
- 자가 주의는 병렬 처리에 유리하며, 장거리 의존성에 대해 더 짧은 경로를 제공합니다.
- 매우 긴 시퀀스를 처리할 때는 자가 주의를 입력 시퀀스 내 관련 위치의 크기 r만 고려하여 제한할 수 있어, 최대 경로 길이를 \O(n/r)로 줄일 수 있습니다.
3. **장거리 의존성 학습**:
- 순환 레이어와 달리, 자가 주의 계층은 모든 입력과 출력 위치 쌍 사이의 장거리 의존성을 더 짧은 경로로 학습할 수 있습니다.
- 합성곱 레이어는 커널 폭에 따라 모든 위치 쌍을 연결하지 않으며, 더 많은 레이어가 필요할 수 있습니다.
4. **합성곱과의 비교**:
- 단일 합성곱 레이어는 제한된 커널 폭으로 인해 모든 입력 및 출력 위치를 연결하지 못합니다.
- 분리 가능한 합성곱은 복잡도를 줄이지만, 자가 주의 레이어와 비교할 때 여전히 더 많은 계산이 필요할 수 있습니다.
5. **해석 가능성**:
- 자가 주의는 모델의 해석 가능성을 높여줍니다. 모델에서 주의 분포를 조사할 수 있으며, 개별 주의 헤드가 다양한 작업을 수행하는 것을 명확하게 학습합니다.
이는 자가 주의 계층이 순환 및 합성곱 계층에 비해 가지는 여러 가지 이점을 분석한 내용입니다. 자가 주의 계층은 특히 병렬 처리와 장거리 의존성 학습에 있어 유리한 특성을 가지며, 모델의 해석 가능성을 높이는 장점도 있습니다.
5. Training
5.1 Training Data and Batching
- **학습 데이터**: WMT 2014 영어-독일어 데이터셋(약 450만 문장 쌍)과 WMT 2014 영어-프랑스어 데이터셋(3600만 문장 쌍)을 사용했습니다. 문장은 바이트 페어 인코딩(BPE)을 사용하여 인코딩되었으며, 소스와 타겟 어휘집은 약 37000개의 토큰을 공유했습니다.
- **배치 처리**: 문장 쌍은 대략적인 시퀀스 길이에 따라 배치 처리되었습니다. 각 학습 배치는 대략 25000개의 소스 토큰과 25000개의 타겟 토큰을 포함했습니다.
5.2 Hardware and Schedule
- **하드웨어**: 8개의 NVIDIA P100 GPU가 탑재된 단일 머신에서 모델을 학습시켰습니다.
- **스케줄**: 기본 모델은 논문에 설명된 하이퍼파라미터를 사용하여 각 학습 단계에 대해 약 0.4초가 걸렸으며, 총 100,000단계(약 12시간) 동안 학습되었습니다. "큰 모델"은 각 단계에 1.0초가 걸렸으며, 300,000단계(3.5일) 동안 학습되었습니다.
5.3 Optimizer
5.4 Regularization
- **잔류 드롭아웃(Residual Dropout)**: 각 서브레이어의 출력에 드롭아웃을 적용하고, 서브레이어 입력에 더한 후 정규화했습니다. 또한 인코더와 디코더 스택의 임베딩과 위치 인코딩의 합에도 드롭아웃을 적용했습니다. 기본 모델의 드롭아웃 비율은 0.1입니다.
- **레이블 스무딩**: 훈련 중 레이블 스무딩 값을 0.1로 설정했습니다. 이는 모델이 더 불확실하게 학습하도록 하여, 퍼플렉서티(perplexity)는 손해를 보지만 정확도와 BLEU 점수는 향상됩니다.
6. Results
6.1 Machine Translation
- **영어-독일어 번역**: 트랜스포머 모델은 WMT 2014 영어-독일어 번역 태스크에서 기존에 보고된 모든 모델과 앙상블을 넘어서는 새로운 최고의 BLEU 점수 28.4를 달성하며, 새로운 상태의 기술(state-of-the-art)을 설정했습니다. 이 모델은 8개의 P100 GPU에서 3.5일 동안 학습되었습니다. 심지어 베이스 모델조차도 이전에 발표된 모든 모델과 앙상블을 넘어서며, 경쟁 모델의 일부분에 불과한 학습 비용으로 이를 달성했습니다.
- **영어-프랑스어 번역**: 큰 모델(big model)은 이전에 발표된 모든 단일 모델을 뛰어넘는 BLEU 점수 41.0을 달성했으며, 이전 최고의 모델의 1/4 미만의 학습 비용으로 이를 달성했습니다.
6.2 Model Variations 모델 변형
트랜스포머 모델의 다양한 구성 요소의 중요성을 평가하기 위해, 베이스 모델을 여러 가지 방법으로 변형하면서 영어-독일어 번역 태스크에서의 성능 변화를 측정했습니다. 이 실험에서는 다음과 같은 주요 결과를 얻었습니다:
- 주의 헤드의 수와 주의 키 및 값의 차원을 변화시키면서, 연산량을 일정하게 유지했을 때, 단일 헤드 주의는 최적 설정보다 BLEU 점수가 0.9 낮았고, 너무 많은 헤드를 사용하면 품질이 떨어졌습니다.
- 주의 키 크기를 줄이면 모델 품질이 손상되었으며, 이는 호환성을 결정하는 것이 쉽지 않음을 시사합니다. 더 복잡한 호환성 함수가 유용할 수 있습니다.
- 예상대로 더 큰 모델이 더 나은 성능을 보였고, 드롭아웃은 과적합을 피하는 데 매우 유용했습니다.
- 삼각 함수를 사용한 위치 인코딩 대신 학습된 위치 임베딩을 사용했을 때 거의 동일한 결과를 얻었습니다.

7. Conclusion
7장에서는 이 연구에서 제시된 트랜스포머 모델, 즉 전적으로 어텐션에 기반한 첫 번째 시퀀스 변환 모델에 대한 결론을 제시합니다. 트랜스포머는 인코더-디코더 아키텍처에서 일반적으로 사용되는 순환 레이어를 다중 헤드 셀프 어텐션으로 대체합니다.
번역 작업에 있어, 트랜스포머는 순환 또는 합성곱 레이어를 기반으로 하는 아키텍처보다 훨씬 빠르게 학습될 수 있습니다. WMT 2014 영어-독일어 및 영어-프랑스어 번역 작업에서는 새로운 최고 성능을 달성했습니다. 특히 영어-독일어 작업에서는 이전에 보고된 모든 앙상블 모델마저도 능가하는 최고의 모델을 제시했습니다.
저자들은 어텐션 기반 모델의 미래에 대해 흥분하고 있으며, 다른 작업에도 이를 적용할 계획입니다. 텍스트 이외의 입력 및 출력 모달리티를 다루는 문제로 트랜스포머를 확장하고, 이미지, 오디오, 비디오와 같은 큰 입력 및 출력을 효율적으로 처리할 수 있는 지역 제한 어텐션 메커니즘을 조사할 계획입니다. 또한, 생성을 덜 순차적으로 만드는 것도 연구 목표 중 하나입니다.
모델을 학습하고 평가하는 데 사용된 코드는 공개되어 있으며, 이를 통해 연구 커뮤니티가 추가적인 실험과 발전을 이어갈 수 있도록 지원합니다.
'공부 > Deep Learning' 카테고리의 다른 글
[Paper Review] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (0) | 2024.03.17 |
---|---|
[Paper Review] Noise2Noise: Learning image restoration without clean data (0) | 2024.03.17 |
혼자 공부하는 머신러닝 + 딥러닝 9장 (1) | 2023.11.25 |
혼자 공부하는 머신러닝 + 딥러닝 8장 (2) | 2023.11.19 |
혼자 공부하는 머신러닝 + 딥러닝 7장 (1) | 2023.11.12 |