9. Attention Is All You Need
4주차 수업 내용인 Attention Is All You Need에 대해서 정리를 하려고 한다.
많은 사람들이 이미 알고 있겠지만 리마인드 느낌으로 정리를 해보자!
현재의 시퀀스 변환 모델은 복잡한 순환 또는 합성곱 신경망을 기반으로 하고 있으며, 인코더와 디코더를 통해 구성
이 중 최고 성능을 보이는 모델들은 인코더와 디코더 사이에 주의(attention) 메커니즘을 연결하여 성능을 향상
본 논문에서는 순환과 합성곱을 전혀 사용하지 않고, 오직 Attention을 기반으로 하는 새로운 단순한 네트워크 아키텍처인 Transformer를 제안
두 기계 번역 태스크에서의 실험을 통해, 이 모델이 품질 면에서 우수함을 보이며, 더 많은 병렬 처리가 가능하고 훈련 시간이 현저히 줄어듬을 보여줌
WMT 2014 영어-독일어 번역 태스크에서 28.4 BLEU를 달성하여, 기존의 최고 결과를 2 BLEU 이상 개선한 새로운 단일 모델 최고 기록
WMT 2014 영어-프랑스어 번역 태스크에서는 41.8 BLEU로, 3.5일 동안 8개의 GPU에서 훈련한 후 새로운 단일 모델 최고 기록
Transformer가 다른 태스크로도 잘 일반화될 수 있음을 보여주기 위해, 영어 구문 분석에도 성공적으로 적용.
Introduction부분은 RNN, 특히 LSTM와 GRU가 언어 모델링과 기계 번역 같은 시퀀스 모델링과 변환 문제에서 최고의 접근 방식으로 확립되었음을 설명
이러한 모델들은 입력과 출력 시퀀스의 심볼 위치에 따라 계산을 분류하며, 이전 상태의 정보와 현재 위치의 입력을 기반으로 숨겨진 상태의 시퀀스를 생성
이 과정의 본질적인 순차적 특성은 훈련 예시 내에서 병렬 처리를 방해하는 주요 요인
특히, 시퀀스의 길이가 길어질수록 메모리 제약으로 인해 예시 간 배치 처리가 제한
Attention은 입력 또는 출력 시퀀스 내의 요소 간의 의존성을 모델링할 수 있게 해주며, 시퀀스 모델링과 변환 작업에서 중요한 부분을 차지
그러나 대부분의 경우, Attention은 순환 네트워크와 함께 사용
본 논문에서는 순환 및 합성곱 연산을 완전히 배제하고 오직 주의 메커니즘만을 사용하여 전역 의존성을 모델링하는 새로운 아키텍처인 Transformer를 제안
Background 부분에서는, 순차적 계산의 필요성을 줄이고자 하는 목표와 이전 연구들이 이 목표를 달성하기 위해 사용한 방법들에 대해 설명
이 섹션은 세 가지 주요 기술, 즉 Extended Neural GPU, ByteNet, 그리고 ConvS2S가 기본 구성 요소로 합성곱 신경망을 사용하여 모든 입력 및 출력 위치의 숨겨진 표현을 병렬로 계산한다는 점을 강조
이러한 모델들은 입력 또는 출력 위치 간의 임의의 신호를 관련시키는 데 필요한 연산의 수가 위치 간 거리에 따라 선형적으로(ConvS2S) 또는 로그 함수적(ByteNet)으로 증가한다는 특징
이는 먼 거리의 위치 사이의 의존성을 학습하기 어렵게 만듦
Transformer 모델은 이러한 거리에 따른 연산 비용 증가 문제를 해결하고자 함
Transformer는 위치 간 거리와 관계없이 상수 시간 연산을 통해 의존성을 모델링할 수 있는 self-attention을 사용
Transformer 모델의 핵심 기능 중 하나는 Self-Attention을 통해 시퀀스 내에서 각 위치 간의 의존성을 모델링하는 능력
이 메커니즘은 위치 간 거리에 관계없이 상수 시간(constant time) 연산으로 이러한 의존성을 포착할 수 있으며, 이는 모델이 시퀀스 내 임의의 두 위치 사이의 관계를 직접적이고 효율적으로 학습할 수 있게 해줌
Self-Attention의 기본 구성 요소
퀴리(Query), 키(Key), 값(Value): 각 입력 위치에서, 퀴리, 키, 값은 해당 위치의 특성 벡터로부터 파생된 세 가지 벡터
이들은 입력 시퀀스 내의 각 위치가 서로 '주의'를 기울일 수 있게 해주는 데 사용
작동 원리
스케일드 닷 프로덕트 주의 : Self-Attention의 핵심은 모든 키와 각 퀴리의 닷 프로덕트(dot product)를 계산하는 것
이는 각 퀴리와 모든 키 간의 유사도를 측정
계산된 유사도는 키의 차원의 제곱근으로 나누어 스케일링되며, 이는 큰 값들의 닷 프로덕트로 인해 softmax 함수가 너무 작은 그래디언트를 갖는 것을 방지
소프트맥스(Softmax) 가중치: 스케일링된 닷 프로덕트들은 softmax 함수를 통과하여, 각 키에 대한 퀴리의 가중치로 변환
이 가중치는 해당 퀴리가 각 키(그리고 연관된 값)에 얼마나 '주의'를 기울여야 하는지를 나타냄
가중된 값의 합계: 소프트맥스 가중치를 사용하여 각 값에 대한 가중합을 계산
이 합계는 주어진 퀴리에 대한 출력 벡터가 되며, 입력 시퀀스 내의 모든 위치에서 이 과정을 병렬로 수행할 수 있음
Multi-Head Attention
Transformer는 더 복잡한 의존성을 포착하기 위해 Multi-Head Attention을 사용
이는 입력을 여러 "Head"에 걸쳐 동일한 Self-Attention을 병렬로 적용하되, 각각 다른 파라미터 집합을 사용하여 퀴리, 키, 값 벡터를 생성하는 방식
이렇게 함으로써 모델이 다양한 서브스페이스에서 정보를 동시에 학습할 수 있게 됨
Transformer 모델의 아키텍처는 "Attention Is All You Need" 논문에서 처음 소개되었으며, 기존의 RNN이나 CNN을 사용하지 않고 전적으로 Attention에 기반
핵심 아이디어는 복잡한 시퀀스-투-시퀀스 변환을 처리할 때 메모리 요구 사항을 줄이면서도 효율적인 학습과 빠른 추론 속도를 가능하게 하는 것
Transformer 모델의 구조는 크게 인코더와 디코더로 나누어져 있으며, 각각 여러 개의 레이어로 구성.
인코더(Encoder)
인코더는 입력 시퀀스를 연속적인 벡터로 변환하는 역할.
Transformer 모델에서는 N개의 인코더 레이어를 쌓아 올려 구성.
각 인코더 레이어는 주로 다음 두 가지 서브 레이어로 구성:
- Multi-Head Self-Attention: 입력 데이터의 다양한 부분에서 정보를 동시에 추출할 수 있도록 해주며, 각 헤드는 입력 데이터의 다른 부분에 주의를 기울입니다. 이를 통해 모델은 입력 시퀀스 내의 모든 단어 간의 관계를 효과적으로 학습할 수 있습니다.
- Position-wise Feedforward Neural Network: 각 위치에서 독립적으로 동작하는 완전 연결 레이어로, 입력의 각 위치에 대해 동일한 연산을 수행하지만 다른 위치의 결과에는 영향을 주지 않음. 선형에 비선형을 추가해주는 역활을 함
각 서브 레이어의 출력은 Layer Normalization와 Residual Connection을 거쳐 다음 레이어로 전달됩니다. 이 구조는 모델이 깊어질 때 발생할 수 있는 그래디언트 소실 또는 폭발 문제를 완화합니다.
Transformer 모델의 설계는 깊은 신경망의 훈련을 용이하게 하기 위한 몇 가지 중요한 구성 요소를 포함합니다.
이 중 "Layer Normalization"과 "Residual Connection"은 모델의 각 서브 레이어 후에 적용되어, 깊은 네트워크에서 발생할 수 있는 그래디언트 소실 또는 폭발 문제를 완화하는 데 도움을 줍니다.
1. Residual Connection (잔차 연결)
작동 방식: Residual Connection은 입력을 서브 레이어의 출력에 직접 더해줍니다. 즉, 어떤 서브 레이어의 입력 x와 출력 F(x)에 대해, 최종 출력은 x+F(x)가 됩니다. 이 구조는 "잔차 블록"이라고도 하며, 심층 네트워크에서의 학습을 용이하게 합니다.
목적: 깊은 신경망에서는 층을 거치면서 그래디언트가 점점 작아지거나 커지는 문제(그래디언트 소실 또는 폭발)가 발생할 수 있습니다. 잔차 연결은 이러한 문제를 완화합니다. 역전파 시에, 신호가 직접적인 경로를 통해 더 쉽게 흐를 수 있게 하여, 깊은 네트워크에서도 안정적인 그래디언트를 유지할 수 있도록 돕습니다.
Layer Normalization (레이어 정규화)
작동 방식: Layer Normalization은 서브 레이어의 출력에 적용되며, 레이어의 모든 활성화 값에 대해 평균과 분산을 계산한 뒤, 이를 사용해 데이터를 정규화합니다. 이 과정은 학습 중에 각 레이어의 활성화 값을 비슷한 범위 내에 유지하도록 도와줍니다.
목적: 신경망에서는 입력 데이터의 스케일이나 분포가 다를 때 학습 속도가 저하되거나 불안정해질 수 있습니다. Layer Normalization은 서브 레이어의 입력이나 출력이 극단적인 값을 가지는 것을 방지하여, 모델의 학습 과정을 안정화시킵니다. 또한, 레이어 간의 활성화 값의 분포가 일정하게 유지되도록 하여, 깊은 신경망의 효율적인 학습을 촉진합니다.
결합 효과
레이어 정규화와 잔차 연결의 결합은 Transformer 모델이 깊어질수록 증가할 수 있는 학습 문제를 완화하는 데 도움을 줍니다. 잔차 연결은 깊은 네트워크에서 그래디언트의 흐름을 개선하며, 레이어 정규화는 각 층의 활성화 값이 균일하게 유지되도록 도와 학습을 안정화시킵니다.
디코더(Decoder)
디코더는 인코더로부터 얻은 정보를 바탕으로 출력 시퀀스를 생성합니다. 인코더와 마찬가지로 디코더도 N개의 디코더 레이어를 쌓아 올려 구성합니다. 각 디코더 레이어는 다음 세 가지 주요 서브 레이어로 구성됩니다:
- 멀티-헤드 셀프 어텐션: 디코더 내에서도 멀티-헤드 셀프 어텐션 메커니즘이 사용되지만, 출력 시퀀스가 순차적으로 생성될 수 있도록 특정 위치에서는 아직 생성되지 않은 미래 위치에 대한 정보를 참조하지 않도록 마스킹 처리합니다.
- 멀티-헤드 인코더-디코더 어텐션: 디코더의 각 레이어는 인코더의 최종 출력에 대해서도 어텐션을 수행합니다. 이를 통해 디코더는 입력 시퀀스의 모든 위치로부터 정보를 추출하며, 이 정보를 현재 생성하고 있는 출력 시퀀스와 결합합니다.
- 포지션-와이즈 피드포워드 신경망: 인코더와 동일한 역할을 수행합니다.
디코더의 각 서브 레이어 후에도 레이어 정규화와 잔차 연결이 적용됩니다.
"Attention" 메커니즘은 신경망이 입력 시퀀스에서 중요한 정보에 "주목"하고, 그 정보를 바탕으로 출력을 생성할 수 있게 하는 핵심 기술입니다. Transformer 모델에서는 이 개념을 확장하여, "Self-Attention"과 "Multi-Head Attention"을 포함한 다양한 형태의 어텐션을 사용합니다. 여기서는 Transformer 내의 주요 어텐션 메커니즘들에 대해 자세히 설명하겠습니다.
Self-Attention
Self-Attention 메커니즘은 입력 시퀀스 내의 각 위치가 시퀀스 내 다른 모든 위치의 정보를 참조할 수 있도록 합니다. 이를 통해 모델은 각 단어의 문맥적 의미를 파악하고, 단어 간의 장거리 의존성을 학습할 수 있습니다.
- 작동 방식: 각 입력 위치에 대해, 퀴리(Query), 키(Key), 값(Value) 벡터가 생성됩니다. 퀴리는 해당 위치의 정보를, 키는 다른 위치의 정보를, 값은 해당 정보의 내용을 나타냅니다. 퀴리와 모든 키의 닷 프로덕트(dot product)를 계산하여 유사도 점수를 얻고, 이 점수에 소프트맥스를 적용하여 정규화된 가중치를 계산합니다. 마지막으로, 이 가중치를 각 위치의 값에 곱하고, 결과를 모두 더하여 출력 벡터를 생성합니다.
Multi-Head Attention
Multi-Head Attention은 Self-Attention 메커니즘을 여러 "헤드"에서 병렬로 수행하여, 입력 시퀀스의 다양한 부분에서 정보를 추출할 수 있도록 합니다. 이는 모델이 다양한 관점에서 데이터를 해석할 수 있게 해줍니다.
- 작동 방식: 입력 시퀀스에 대해 Self-Attention이 여러 번(각각 다른 퀴리, 키, 값 가중치 행렬을 사용하여) 독립적으로 수행됩니다. 각 헤드의 출력은 연결(concatenation)되고, 추가적인 가중치 행렬을 통해 선형 변환됩니다. 이 최종 출력은 입력 데이터의 복합적인 특성을 포착합니다.
Encoder-Decoder Attention
Transformer 모델의 디코더에서는 Encoder-Decoder Attention 메커니즘이 사용됩니다. 이 메커니즘은 디코더가 인코더의 출력을 어떻게 참조할지 결정하도록 합니다. 이를 통해 디코더는 입력 시퀀스의 전체 문맥을 고려하여 출력 시퀀스를 생성할 수 있습니다.
- 작동 방식: 디코더의 각 위치에서 생성된 퀴리는 인코더의 출력에서 생성된 키와 값과 상호 작용합니다. 이를 통해 디코더는 인코더가 처리한 입력 시퀀스의 전체 정보를 활용할 수 있으며, 이 정보는 출력 시퀀스의 생성에 기여합니다.
Position-wise Feed-Forwad Networks
Transformer 모델 내의 각 인코더와 디코더 레이어에는 Position-wise Feed-Forward Networks가 포함되어 있습니다. 이 네트워크는 모델의 각 위치에서 독립적으로 작동하는 완전 연결된 레이어로 구성되며, 모델이 복잡한 데이터 관계를 학습할 수 있게 해주는 중요한 비선형 변환 기능을 제공합니다.
구조 및 작동 방식
- 구성: Position-wise Feed-Forward Network는 주로 두 개의 완전 연결 레이어와 그 사이에 위치한 비선형 활성화 함수로 구성됩니다. 첫 번째 레이어는 입력 데이터의 차원을 확장하고, 활성화 함수는 비선형성을 도입합니다. 그 후, 두 번째 레이어는 데이터를 다시 원래 차원으로 매핑합니다.
- 동작: 이 네트워크는 입력 시퀀스의 각 위치(예: 각 단어 또는 토큰)에 대해 동일한 연산을 독립적으로 수행합니다. 즉, 시퀀스 내의 각 위치에 대한 입력 벡터가 먼저 확장된 차원으로 매핑되고, 비선형 활성화 함수(예: ReLU)를 거친 후, 원래 차원으로 다시 매핑되는 과정을 거칩니다.
비선형성의 중요성
- 비선형 변환: Transformer 모델이 선형적인 변환만을 사용할 경우, 여러 레이어를 거치는 것이 단일 레이어로 수행할 수 있는 연산과 본질적으로 다르지 않게 됩니다. 비선형 활성화 함수를 도입함으로써, 모델은 훨씬 더 복잡한 함수를 학습할 수 있게 되고, 이는 다양한 자연어 처리 태스크에서 더 높은 성능을 달성하는 데 필수적입니다.
- 표현력 증대: 비선형 활성화 함수는 모델의 표현력을 크게 증대시킵니다. 이를 통해 모델은 더 복잡한 패턴과 데이터 구조를 학습하고, 더 정확하게 입력 데이터의 의미와 문맥적 관계를 포착할 수 있습니다.
위치별 독립성
- 독립적 연산: 비록 포지션-와이즈 피드포워드 네트워크가 시퀀스 내의 모든 위치에 대해 동일한 연산을 수행하지만, 각 위치는 독립적으로 처리됩니다. 이는 입력 시퀀스 내의 각 단어나 토큰이 각자의 문맥적 정보를 바탕으로 독립적인 비선형 변환을 거치게 함으로써, 전체적인 문맥 이해에 기여합니다.
Embeddings
- 단어 임베딩(Word Embeddings): Transformer 모델에서 각 단어는 고정된 크기의 벡터로 매핑됩니다. 이 벡터들은 단어의 의미, 문법적 속성, 문맥 등과 같은 정보를 포함하도록 학습됩니다. 초기에는 보통 랜덤한 값으로 시작하지만, 모델이 학습하는 동안 데이터로부터 유용한 의미적 특성을 추출하여 조정됩니다.
- 포지셔널 인코딩(Positional Encoding): Transformer 모델은 순서 정보를 포함하지 않은 상태에서 입력을 처리합니다. 따라서, 입력 시퀀스 내에서 각 단어의 위치 정보를 제공하기 위해 포지셔널 인코딩이 사용됩니다. 이는 임베딩 벡터에 더해져서 각 단어의 절대적 또는 상대적 위치 정보를 모델에 제공합니다.
Softmax
"Softmax"는 모델의 출력 레이어에서 사용되는 함수로, 모델이 생성한 벡터를 실제 확률 분포로 변환합니다. 이는 모델이 다음 단어 예측이나 분류 태스크에서 어떤 클래스(또는 단어)를 선택할지 결정하는 데 사용됩니다.
- 확률 분포 생성: 모델의 각 출력에 대해, Softmax 함수는 벡터의 모든 값을 e의 지수로 변환하고, 이를 모든 e의 지수로 변환된 값들의 합으로 나누어 줍니다. 이렇게 하여 각 클래스에 대한 확률 분포를 생성합니다.
- 다음 단어 예측: 기계 번역이나 텍스트 생성과 같은 태스크에서, 모델은 소프트맥스 확률 분포를 사용하여 다음 단어를 예측합니다. 가장 높은 확률을 가진 단어가 다음 단어로 선택됩니다.
결합된 작동 원리
Transformer 모델에서 입력 문장은 먼저 임베딩 과정을 거쳐 각 단어의 벡터 표현으로 변환되고, 포지셔널 인코딩이 추가됩니다. 모델의 인코더와 디코더는 이 벡터들을 처리하고, 최종적으로 디코더의 출력은 소프트맥스 레이어를 통과하여 각 단어에 대한 확률 분포를 생성합니다. 이 과정을 통해, 모델은 각 단계에서 다음에 올 단어를 예측할 수 있습니다.
임베딩과 소프트맥스는 Transformer 모델이 효과적으로 텍스트 데이터를 처리하고, 의미 있는 출력을 생성하는 데 필수적인 요소입니다.
Positional Encoding의 목적:
Transformer 모델에 시퀀스의 순서 정보를 제공하여, 모델이 단어의 순서를 고려할 수 있도록 하는 것입니다. 이를 통해 모델은 각 단어의 문맥을 보다 정확하게 이해할 수 있습니다.
작동 원리:
- 정적 인코딩: Positional Encoding은 각 위치에 고유한 벡터를 할당하여, 모델이 위치 정보를 학습할 수 있도록 합니다. 이 인코딩은 주로 sin과 cos 함수의 주기적인 특성을 활용하여 계산됩니다.
- 여기서 는 단어의 위치, i는 차원의 인덱스, 은 모델의 임베딩 차원 수를 나타냅니다.
- 활용: 계산된 Positional Encoding은 단어의 임베딩 벡터에 더해집니다. 이를 통해 임베딩 벡터는 단어의 의미뿐만 아니라, 문장 내에서의 위치 정보도 함께 반영하게 됩니다.
중요성:
Positional Encoding 없이는 Transformer 모델이 단어의 순서를 구별할 수 없기 때문에, "dog bites man"과 "man bites dog"을 구분할 수 없습니다. Positional Encoding을 통해 이러한 문장이 다른 의미를 가진다는 것을 모델에 전달할 수 있습니다.
self-attention
self-attention는 모델의 계산 효율성을 향상시킵니다. 순환 신경망(RNN)과 달리 자기 주의는 훨씬 더 많은 병렬 처리를 가능하게 하여, 긴 시퀀스를 학습할 때 특히 중요합니다. RNN에서는 계산의 순차적인 특성으로 인해 특히 긴 시퀀스를 다룰 때 메모리 제약이 문제가 될 수 있습니다.
장거리 의존성
자기 주의를 사용하는 주된 동기 중 하나는 시퀀스 내에서 장거리 의존성을 포착할 수 있는 능력입니다. RNN은 먼 위치의 정보를 관련짓기 위해 많은 단계를 거쳐야 하지만, 자기 주의는 시퀀스 내에서 두 위치 간의 거리에 관계없이 직접적인 경로를 통해 이를 달성할 수 있으며, 이러한 의존성 학습을 촉진합니다.
레이어 복잡성
논문에서는 장거리 의존성을 처리하는 데 있어 다른 레이어 타입들의 복잡성을 비교합니다. self-attention 레이어는 레이어 당 일정한 복잡성을 가지고 있으며, 시퀀스 길이에 상관없이 고정된 수의 순차적 연산만을 필요로 합니다. 이는 길이와 구조 측면에서 입력과 출력이 밀접하게 관련된 시퀀스를 모델링하는 데 적합합니다.
경로 길이
장거리 의존성을 효과적으로 학습하기 위해서는 시퀀스 내의 두 위치 간에 더 짧은 경로를 갖는 것이 중요합니다. 자기 주의는 모든 위치 쌍 간의 관계를 직접 계산하여 최대 경로 길이를 O(1)로 달성합니다. 이는 RNN(O(n)) 또는 k 크기 커널을 가진 CNN(O(log_k(n)))에서 발견되는 경로 길이보다 상당히 짧습니다.
모델링의 유연성
자기 주의는 시퀀스 내의 단어 간 다양한 종류의 관계를 동적으로 모델링하는 유연성을 제공합니다. 자기 주의를 통해 모델은 학습된 주의 가중치에 기반하여 시퀀스의 다른 부분에 동적으로 집중할 수 있습니다.
해석 가능성
마지막으로 자기 주의 메커니즘은 RNN이나 CNN에 비해 해석 가능성 측면에서 잠재적으로 더 우수할 수 있습니다. 주의 가중치는 분석 및 시각화가 가능하여, 모델이 의사 결정을 내리는 방법, 입력 시퀀스의 어떤 부분이 주어진 작업에 중요한지, 그리고 시퀀스 내에서 서로 다른 단어가 어떻게 관련되어 있는지에 대한 통찰력을 제공합니다.