거대 언어 모델을 말할 때 빼놓고 설명할 수 없는 것이 있습니다. 그건 바로 2017년에 발표된 "Attention is All You Need"(https://arxiv.org/pdf/1706.03762.pdf) 논문에서 Transformer 모델입니다. Transformer는 기존의 순차적인 처리 방식(예: RNN, LSTM) 대신 '어텐션(Attention)' 메커니즘을 사용하여 자연어 처리 분야에서 큰 변화를 가져왔습니다. Transformer의 주요 구성 요소와 작동 방식에 대해 자세히 설명하겠습니다.
Transformer 주요 구성 요소
1. 어텐션 메커니즘 (Attention Mechanism):
- 셀프 어텐션 (Self-Attention): 입력 문장의 모든 단어 간의 관계를 평가합니다. 각 단어가 문장 내 다른 단어와 얼마나 관련이 있는지를 파악하여, 해당 정보를 기반으로 문장의 표현을 생성합니다.
- 멀티-헤드 어텐션 (Multi-Head Attention): 어텐션을 여러 번 병렬로 수행하며, 각각 다른 관점에서 정보를 수집합니다. 이는 모델이 다양한 위치의 정보를 포착하고, 복잡한 관계를 더 잘 이해할 수 있도록 합니다.
어텐션은 트랜스포머에서 매우 중요한 개념이므로 좀 더 자세히 짚고 넘어가겠습니다. 논문에 소개된 Scaled Dot-Production Attention과 Multi-Head Attention의 동작 방식입니다.
Scaled Dot-Product Attention
Scaled Dot-Product Attention은 입력으로 쿼리(Q), 키(K), 값(V) 세 가지를 받습니다. 이 세 가지는 모두 벡터의 집합이며, 일반적으로 문장의 단어들을 나타내는 벡터들입니다. 이때, Attention 메커니즘은 다음과 같이 작동합니다:
1) MatMul (Q, K): 쿼리(Q)와 키(K)의 행렬 곱셈을 수행하여, 각 쿼리가 키와 얼마나 관련이 있는지 나타내는 점수(score)를 계산합니다.
2) Scale: 점수를 키 벡터의 차원의 제곱근(d_k)으로 나눠줍니다. 이는 점수의 크기를 조정하여, softmax 함수가 작은 그래디언트를 생성하는 것을 방지합니다.
3) SoftMax: 점수를 softmax 함수에 통과시켜 확률 분포로 변환합니다. 이는 각 쿼리에 대해 다른 키의 중요성을 가중치로 나타냅니다.
4) MatMul (SoftMax, V): softmax 함수를 통과한 점수와 값(V)의 행렬 곱셈을 수행합니다. 이는 각 쿼리에 대한 가중치를 반영하여 최종 출력을 생성합니다.
5) Mask (opt.): 선택적으로 마스크를 적용할 수 있으며, 이는 특정 값들을 무시하도록 합니다. 주로 시퀀스의 미래 위치에 대한 정보를 숨기는 데 사용됩니다(예: 디코더의 경우).
Multi-Head Attention
Multi-Head Attention은 Scaled Dot-Product Attention을 여러 번 병렬로 수행하여, 다양한 표현(subspace)에서 정보를 집계합니다. 이 과정은 다음과 같습니다:
1) Linear Layers: 입력 Q, K, V는 각각 다른 가중치를 가진 선형 레이어를 통과합니다. 이는 각 어텐션 헤드가 다른 표현을 학습하도록 합니다.
2) Scaled Dot-Product Attention: 각 선형 변환된 Q, K, V 세트는 개별적인 어텐션 메커니즘을 통과합니다. 이는 병렬로 실행됩니다.
3) Concatenation: 각 어텐션 헤드의 결과를 연결합니다.
4) Final Linear Layer: 연결된 결과는 마지막 선형 레이어를 통과하여 최종 출력을 생성합니다.
각각의 어텐션 헤드는 데이터의 다른 측면을 포착하기 때문에, Multi-Head Attention은 모델이 다양한 관점에서 정보를 통합하고 더 풍부한 표현을 학습할 수 있도록 합니다. 이는 특히 복잡한 문장 구조를 다룰 때 유용하며, Transformer 모델이 뛰어난 성능을 발휘하는 데 중요한 역할을 합니다.
2. 포지셔널 인코딩 (Positional Encoding):
- Transformer는 순차적인 처리를 하지 않기 때문에, 단어의 순서 정보가 사라집니다. 이를 보완하기 위해, 각 단어의 위치 정보를 나타내는 포지셔널 인코딩을 입력에 추가합니다. 이는 모델이 단어의 순서와 상대적 위치를 인식할 수 있게 해줍니다.
3. 인코더와 디코더 (Encoder and Decoder):
- 인코더: 입력 문장을 처리하여 중간 표현을 생성합니다. Transformer 모델에는 일반적으로 여러 개의 인코더 레이어가 존재합니다.
- 디코더: 인코더의 출력과 이전의 디코더 출력을 사용하여 최종 출력(대상 언어의 문장)을 생성합니다. 디코더 역시 여러 레이어로 구성됩니다.
Transformer 작동 방식
위 그림은 Transformer 모델의 전체적인 구조를 보여주고 있습니다. 모델은 크게 인코더와 디코더로 나뉘며, 각각 여러 개의 동일한 레이어(Nx)로 이루어져 있습니다. 여기서 각 부분의 역할을 순서대로 설명하여 작동 방식을 설명하겠습니다.
인코더
1. Input Embeddings: 입력 시퀀스(문장 등)는 임베딩 과정을 거쳐 고정된 크기의 벡터로 변환됩니다. 이 벡터들은 모델이 처리할 수 있는 형태의 숫자 데이터입니다.
2. Positional Encoding: 입력 임베딩에 추가되며, 이는 단어의 순서 정보를 제공합니다. Transformer는 순차적이지 않은 구조이므로, 위치 정보가 중요합니다.
3. Multi-Head Attention: 입력된 임베딩은 셀프 어텐션 메커니즘을 거칩니다. 이 과정에서 각 단어는 문장 내 다른 단어들과의 관계를 파악합니다.
4. Add & Norm: 어텐션의 출력은 원래의 입력과 더해지는데, 이는 잔차 연결(residual connection)입니다. 그 후에 레이어 정규화(layer normalization)가 수행됩니다.
5. Feed Forward: 각 위치의 단어에 대해 독립적으로 동일한 피드포워드 신경망을 적용합니다. 이는 비선형 변환을 제공합니다. 이때, "Position-wise Feed-Forward Networks"는 인코더와 디코더의 각 레이어에 존재하는 구성 요소입니다. 각 인코더 또는 디코더 레이어 내에는 두 가지 주요 구성 요소가 있습니다: 하나는 Multi-Head Attention이고, 다른 하나가 바로 이 Position-wise Feed-Forward Network입니다.
여기서 Position-wise Feed-Forward Networks의 작동 원리는 1) 독립적인 처리: 입력의 각 위치에서 동일한 네트워크를 독립적으로 적용합니다. 즉, 시퀀스의 각 위치(각 단어 또는 토큰)에 동일한 피드포워드 신경망(FFN)이 적용되지만, 각 위치의 입력은 독립적으로 처리됩니다. 2) 레이어 구성: 기본적으로, Position-wise FFN은 두 개의 선형 변환과 그 사이에 위치한 비선형 활성화 함수로 구성됩니다. 수식으로 표현하면, FFN(x) = max(0, xW1 + b1)W2 + b2와 같이 나타낼 수 있습니다. 여기서 W1, W2는 가중치 행렬이고, b1, b2는 편향, max(0, z)는 ReLU 활성화 함수입니다.3) 비선형 활성화: 첫 번째 선형 변환 후에 ReLU와 같은 비선형 활성화 함수가 적용됩니다. 이 비선형성은 신경망이 복잡한 함수를 모델링할 수 있게 해줍니다. 4) 시퀀스의 위치 정보 유지: Position-wise FFN은 입력의 순서를 바꾸지 않습니다. 즉, 입력과 출력의 시퀀스 길이는 동일하며, 이는 Transformer가 시퀀스의 위치 정보를 유지할 수 있도록 돕습니다.
이처럼 Position-wise Feed-Forward Networks는 비선형성 추가 (어텐션 메커니즘은 주로 선형적인 연산들로 구성되어 있지만, FFN은 모델에 필수적인 비선형성을 제공합니다.), 복잡한 패턴 학습 (비선형 활성화 함수를 통해, FFN은 입력 데이터 내에 존재할 수 있는 더 복잡한 패턴과 관계를 학습할 수 있습니다.), 레이어 간의 정보 통합 (FFN은 어텐션 층을 통해 얻은 정보를 더 풍부하게 만들고, 다음 레이어로 전달하기 전에 추가적인 처리를 수행합니다.)의 기능이 있습니다.
이러한 Position-wise Feed-Forward Networks는 Transformer 모델의 각 레이어에서 중요한 역할을 하며, 각 단어의 위치별로 정보를 독립적으로 처리하여 Transformer가 다양한 자연어 처리 작업에 뛰어난 성능을 보이는 데 기여합니다.
6. Add & Norm: 피드포워드 네트워크의 출력 역시 원래의 입력과 더해진 뒤 레이어 정규화를 거칩니다.
디코더
디코더는 인코더와 유사하지만, 몇 가지 추가적인 부분이 있습니다:
1. Output Embeddings (shifted right): 출력 시퀀스는 임베딩되고 오른쪽으로 한 위치씩 이동(shifted)된 후, 위치 인코딩이 추가됩니다. 이동은 모델이 현재 단어를 예측할 때 이후의 단어를 볼 수 없도록 하는 "masked" 어텐션을 위한 것입니다.
2. Masked Multi-Head Attention: 디코더의 첫 번째 어텐션 레이어는 마스킹 처리를 통해 현재 위치에서 이후의 위치를 참조하지 못하도록 합니다. 이는 자기 회귀적(auto-regressive) 특성을 유지하는 데 중요합니다.
3. Multi-Head Attention (Encoder-Decoder Attention): 디코더의 두 번째 어텐션 레이어는 인코더의 출력과 디코더의 출력을 결합합니다. 이를 통해 디코더는 입력 문장과 관련 있는 정보에 집중할 수 있습니다.
4. Feed Forward, Add & Norm: 인코더와 마찬가지로 피드포워드 네트워크와 레이어 정규화를 수행합니다.
최종 출력
디코더의 출력은 최종 선형 레이어와 소프트맥스 레이어를 통과하여, 각 단어의 확률 분포를 생성합니다. 이 분포는 모델이 예측한 다음 단어에 대한 확률을 나타냅니다.
이 구조를 통해 Transformer는 입력 시퀀스를 받아 각 단어의 문맥을 파악하고, 이를 바탕으로 출력 시퀀스를 생성할 수 있습니다.
Transformer 특징 및 장점
- 병렬 처리: Transformer는 전체 데이터를 한꺼번에 처리할 수 있어, RNN이나 LSTM에 비해 학습과 추론 속도가 훨씬 빠릅니다.
- 장거리 의존성: 셀프 어텐션 메커니즘은 문장 내 장거리 의존성을 포착할 수 있어, 긴 문장에서도 효과적입니다.
- 유연성: 다양한 언어 처리 작업에 적용 가능하며, 특히 기계 번역, 텍스트 요약, 질의 응답 시스템 등에서 뛰어난 성능을 보입니다.
Transformer 모델은 이후 BERT, GPT와 같은 다양한 변형 모델들의 기반 기술이 되며, 현재 자연어 처리 분야의 주요한 패러다임으로 자리 잡았습니다.
'Deep learning' 카테고리의 다른 글
PyTorch를 사용한 신경망 구축 (0) | 2024.05.04 |
---|---|
PyTorch 기초 (데이터, 모델, 학습, 저장) (0) | 2024.05.03 |
인공지능 인터뷰 준비 - 실제 받았던 질문들 (0) | 2024.01.23 |
BERT, RoBERTa, 그리고 BigBird (1) | 2024.01.21 |
[딥러닝 기법 모음] 딥러닝 학습에서 흔히 쓰이는 기법들 (1) | 2024.01.15 |