화이트 모드로 보시길 권장합니다
이 글은 [LLM] 시리즈로
LLM의 개념을 정리해둔 시리즈이다.
Transformer
What is Attention?
가중치(weight)를 사용하여 어떤 입력이 더 중요한지 계산하고, 그 정보를 반영하는 과정이다.
주어진 입력 데이터에서 각 요소가 출력에 얼마나 중요한지를 학습하여 가중치를 다르게 부여하는 방식이다.
What is Transformer?
자연어 처리(NLP) 및 시퀀스 데이터 처리에 사용되는 인공지능(AI) 모델로, Attention 메커니즘을 활용하여 문맥을 이해하고 병렬 연산이 가능하여 높은 성능을 보인다.
대형 언어 모델(LLM)들의 기반이 되는 가장 강력한 딥러닝 모델 중 하나이다.
정의 :
기존 RNN(Recurrent Neural Network)과 LSTM(Long Short-Term Memory) 모델의 한계를 극복한 딥러닝 모델로, 기계 번역, 텍스트 요약, 문장 생성 등의 자연어 처리 작업에서 SOTA(State-of-the-art performance)성능을 달성했다.
개념 :
Attention 메커니즘을 기반으로 동작하며, 자연어 문장에서 중요한 단어를 강조하고, 병렬 연산을 통해 빠르게 학습 및 추론이 가능한 모델이다.
기존 RNN/LSTM과 달리, Transformer는 한 번에 전체 문장을 처리할 수 있어 학습 속도가 빠르다.
Self-Attention을 사용하여 문장의 문맥을 효과적으로 반영한다.
핵심 개념 :
- Self-Attention을 사용하여 단어 간 관계를 학습 (입력된 문장 내에서 중요한 단어를 강조)
- 병렬 연산이 가능하여 학습 속도가 빠름 (RNN처럼 순차적으로 처리하지 않음)
- 위치 정보(Positional Encoding)로 단어 순서를 학습 (순차적 처리가 없으므로 위치 정보를 따로 추가)
- Encoder-Decoder 구조를 사용하여 문장 이해 및 생성 (GPT와 같은 모델은 Decoder-only 사용)
Transformer 특징
Self-Attention Mechanism :
- 문장의 각 단어가 다른 모든 단어들과의 관계를 학습함.
- 기존 RNN/LSTM은 순차적으로 데이터를 처리하지만, Transformer는 병렬 연산이 가능하여 훨씬 빠르게 학습할 수 있음.
병렬 연산 가능(Parallelization) :
- RNN/LSTM은 단어를 하나씩 처리해야 하므로, 긴 문장을 학습하는 데 시간이 오래 걸림.
- Transformer는 모든 단어를 한 번에 입력받아 병렬 연산이 가능하여 학습 속도가 빠름.
순차적 정보 학습(Positional Encoding) :
- Transformer는 순서를 직접 인식할 수 없기 때문에, Positional Encoding을 사용하여 단어의 순서를 학습함.
확장성 :
- 모델 크기를 쉽게 확장할 수 있으며, 대규모 데이터에서도 강력한 성능을 발휘함.
- GPT, BERT, T5 같은 대형 언어 모델(LLM)들은 Transformer를 기반으로 만들어짐.
Transformer 주요 동작 구조
Transformer는 인코더(Encoder)와 디코더(Decoder)로 나뉜다.
Encoder(인코더) :
입력 문장을 분석하여 각 단어의 의미를 학습하는 역할을 한다.
입력 문장을 문맥 정보를 포함한 벡터로 변환한다.
Encorder 주요 과정 :
- 입력 문장을 토큰화하여 숫자로 변환 (Tokenization)
- 각 단어를 벡터로 변환 (Word Embedding)
- 위치 정보를 추가 (Positional Encoding)
- Self-Attention을 수행하여 문맥을 학습
- Feedforward Neural Network (FFN) 적용
- Layer Normalization 및 Residual Connection을 Self-Attention과 FFN 이후 연산에 각각 적용
Decoder(디코더) :
Encoder의 출력 벡터를 받아 문장을 생성하는 역할을 수행한다.
단어를 한 개씩 예측하며 문장을 완성한다.
- 입력 토큰을 받아 문장 생성 시작
- Masked Self-Attention 적용 (이전 단어까지만 참고하여 다음 단어 예측)
- Encoder에서 나온 문맥 정보와 결합하여 Attention 수행
- Feedforward Neural Network (FFN) 적용
- Softmax를 사용하여 다음 단어를 예측
- 반복적으로 단어를 예측하여 문장 완성
Self-Attention: Transformer 핵심 메커니즘
Transformer가 단어 간의 관계를 학습하는 핵심 메커니즘이다.
Query, Key, Value 벡터 생성 :
- X : 입력 단어의 벡터
- W_{Q}, W_{K}, W_{V} :
학습 가능한 가중치 행렬.
가중치 행렬을 통해 입력 벡터 X 가 다양한 관점에서 변환. - Query (Q) :
입력된 단어(토큰)가 다른 단어들과 얼마나 관련이 있는지 판단하기 위한 벡터.
"이 단어가 다른 단어들과 얼마나 연관이 있는가?" - Key (K) :
각 단어를 나타내는 고유한 벡터로, Query와의 유사도를 계산하는 데 사용.
" 이 단어가 어떤 정보를 갖고 있는가?" - Value (V) :
Query와 Key의 연산 결과를 반영하여 최종적으로 모델이 출력할 정보를 결정하는 벡터.
"그 정보를 모델이 어떻게 활용할 것인가?"
Attention Score 계산 :
- 각 단어가 문장 내 다른 단어들과 얼마나 관련이 있는지를 평가하기 위해 사용.
- 각 단어의 Query 벡터와 Key 벡터 간의 내적(dot product)을 수행하여 유사도를 측정.
- d_{k} :
Key 벡터의 차원 수이며, 스케일링을 통해 안정적인 학습을 유도.
벡터 차원이 커질수록 내적 값이 커지므로, 이를 조정하여 숫자가 너무 커지는 것을 방지.
Softmax를 사용한 Attention 가중치 계산 :
- Softmax 함수를 적용하여 확률 분포를 생성하고, 각 단어가 다른 단어에 대해 가지는 중요도를 결정.
- Softmax를 적용하면, 각 단어에 대한 가중치 값이 확률값(0~1) 형태로 변환된다.
단어 | The | cat | sat | on | the | mat |
The | 0.2 | 0.1 | 0.05 | 0.02 | 0.3 | 0.05 |
cat | 0.1 | 0.4 | 0.3 | 0.1 | 0.05 | 0.05 |
sat | 0.05 | 0.3 | 0.5 | 0.2 | 0.1 | 0.1 |
- "sat"은 "cat"과 "on"에 더 높은 가중치를 할당함 → 문맥적으로 관련이 많음
Value 벡를 가중합하여 최종 출력 벡터 생성 :
- 각 단어의 Value 벡터를 가중 평균하여 최종 출력 벡터를 생성.
- Transformer는 문장의 문맥을 반영한 벡터 표현을 가지게 됨.
Multi-Head Attention: 다양한 관점에서 문맥을 학습
Self-Attention은 문장에서 각 단어가 다른 단어들과의 관계를 학습하는 방식이지만, 단어 간의 관계는 단 하나의 의미로만 해석되지 않는다.
단순한 Self-Attention은 다의적(Polysemous) 의미를 반영하지 못한다.
Multi-Head Attention을 사용하면, 단어의 다양한 의미를 여러 개의 독립적인 Self-Attention으로 분석할 수 있다.
각각의 Head는 다른 해석을 학습하여 더 정교한 문맥 이해가 가능해진다.
Muti-Head Attention 동작 과정 :
Step 1. 입력 데이터를 여러 개의 Head로 분할기 위한 변환 :
- Q, K, V :
각 단어(토큰)에 대해 d_{model} 차원의 벡터가 생성되며, 전체 문장은 seq_len개의 단어로 이루어짐.
각 행렬의 크기 : seq_{len}(입력 문장의 단어 수)*d_{model}(모델의 차원 수)
- W_{Q}, W_{K}, V_{K} :
입력 벡터의 차원 d_{model} 을 유지하면서 변환하는 역할.
각 행렬의 크기 : d_{model}*d_{model}
각 단어에 대해 d_{model} 차원의 벡터 가중치를 적용한 d_{model}차원의 새로운 벡터로의 변환을 수행한다.
- W_{Q}, W_{K}, V_{K} :
- Transformer에서 입력 벡터 X 는 d_{model} 차원의 벡터를 가짐.
- X를 여러 개의 Head로 분할하기 위해, 독립적인 가중치 행렬을 곱해 Query, Key, Value 벡터로 변환.
Step 2. Head 개수만큼 벡터를 분할 :
- d_{model} 크기의 벡터를 h개의 Head로 나눔.
- Head는 d_{k} 차원의 벡터를 가짐.
- d_{model}차원 벡터를 Head로 나눌 때, 단순한 분할이 아니라, Head별로 독립적인 가중치((W_{Q})^h, (W_{K})^h, (W_{V})^h)를 적용해 새로운 d_{k}차원 벡터(Q_{h}, K _{h} , V_{h})로 변환.
- 가중치 행렬들은 처음에는 랜덤한 값이지만, 학습 과정에서 오차 역전파(Backpropagation)를 통해 점점 최적화된다.
- ex) d_{mode} = 512, h = 8
d_{k} = 512/8 = 64, Head는 64차원의 벡터를 갖게 됨.
Q_{h}, K _{h} , V_{h} ∈ R^{seq_len*d_{k}}로 변환됨.
Step 3. 각 Head에서 독립적인 Self-Attention 수행 :
- Query와 Key의 내적 연산을 수행하여 유사도(Attention Score)를 계산.
- Softmax를 적용하여 가중치를 확률값으로 변환.
- Value 벡터에 가중치를 적용하여 최종 문맥 벡터를 생성.
- 이 연산이 Head 개수만큼 병렬적으로 수행됨.
Step 4. 여러 Head의 결과를 다시 하나로 합침(Concatenation) :
- 각 Head에서 얻은 Attention 결과를 하나의 벡터로 합쳐야 함.
- W^O :
출력 차원으로 변환하는 학습 가능한 가중치 행렬.
각 Head에서 학습한 정보를 하나로 합쳐 최종적인 Attention 벡터가 생성된다.
Feedforward Neural Network(FFN, Muti-Layer Perceptron; MLP)
Self-Attention만으로는 문맥을 이해할 수 있지만, 더 복잡한 관계를 학습하기 위해 추가적인 비선형 변환이 필요하다.
단순한 Fully Connected Layer로 구성되어 있으며, Self-Attention을 통과한 벡터를 추가 변환하여 더 정교한 표현을 생성한다.
- : 학습 가능한 가중치 행렬
- b_{1},b_{2} : 바이어스 (bias)
- ReLU 활성화 함수 max(0,X)를 사용하여 비선형성 추가
- FFN 필요성 :
Self-Attention만으로는 문맥을 학습하지만, 추가적인 변환을 통해 더 깊은 표현을 학습해야 함.
ReLU 같은 활성화 함수 적용으로 비선형성(Non-linearity) 추가.
Self-Attention을 통과한 벡터의 특징을 더욱 강화하여 최종적인 표현력을 높임.
Layer Normalization(LayerNorm)
딥러닝 모델에서 각 레이어의 입력을 정규화(Normalization)하는 기법이다.
주로 Transformer 모델과 같은 딥러닝 아키텍처에서 사용되며, 학습 안정성을 높이고, 기울기 흐름(Gradient Flow)을 원활하게 유지하는 역할을 한다.
입력 벡터의 평균(Mean)과 표준편차(Standard Deviation)를 사용하여 정규화하며, 각 뉴런이 독립적으로 학습할 수 있도록 도와준다.
개념 :
- 입력을 정규화하여 학습 안정성을 증가시키는 정규화 기법.
- BatchNorm과 달리 배치 크기에 영향을 받지 않으며, Transformer, RNN 등에 최적화됨.
- MLP(FeedForward Network) 및 Self-Attention 계층 앞뒤에서 사용.
- 딥러닝 모델이 안정적으로 학습할 수 있도록 돕는 필수적인 정규화 기법이며, 특히 Transformer 모델에서 강력한 성능을 발휘함.
필요한 이유 :
- 신경망에서의 필요성 :
- Gradient Vanishing 혹은 Gradient Exploding 문제 :
- 입력이 너무 크거나 너무 작으면, 역전파(Backpropagation) 과정에서 기울기 값이 0으로 사라지거나 지나치게 커질 수 있음.
- 깊은 네트워크(Deep Neural Networks)에서 이런 문제가 심각해짐.
- 모델 학습 속도 저하 :
- 입력값의 분포가 일정하지 않으면, 모델이 최적의 가중치를 학습하는 속도가 느려짐.
- 이를 해결하기 위해 각 layer에서 데이터를 정규화하여 일관된 입력을 유지해야 함.
- Gradient Vanishing 혹은 Gradient Exploding 문제 :
- 모델 학습 속도 저하 :
- Batch Normalization (BatchNorm)은 입력을 정규화하는 대표적인 방법이지만, 미니배치(Mini-batch) 단위로 정규화를 수행하기 때문에 단점이 존재.
- 배치 크기가 작을 경우(예: 1개) → 정규화가 불안정해짐.
- RNN, Transformer와 같은 시퀀스 모델에서는 배치 단위가 아닌 개별 입력 단위에서 정규화가 필요함.
- Batch Normalization (BatchNorm)은 입력을 정규화하는 대표적인 방법이지만, 미니배치(Mini-batch) 단위로 정규화를 수행하기 때문에 단점이 존재.
- LayerNorm은 이러한 문제를 해결하기 위해 등장했으며, 배치 크기와 무관하게 입력을 정규화할 수 있도록 설계되었기에, Transformer에선 BatchNorm 대신 LayerNorm을 사용함.
특징 :
- Batch 크기에 영향을 받지 않음 :
- BatchNorm은 미니배치 크기에 따라 정규화가 달라지지만, LayerNorm은 개별 입력을 기반으로 정규화되므로 일관된 출력을 제공.
- Transformer, RNN 같은 모델에서 필수적 :
- Transformer 모델에서는 시퀀스 단위로 정규화해야 하기 때문에 BatchNorm보다 LayerNorm이 더 적합.
- 학습 안정성 증가 :
- Gradient Vanishing 혹은 Gradient Exploding 문제를 방지하여 더 안정적인 학습 가능.
- Parameter Tying과 조합 가능 :
- 입력 임베딩과 출력 선형 변환 계층 간의 파라미터를 공유(Parameter Tying)하면서도 LayerNorm을 사용하여 학습 효율을 극대화.
수식 :
- x-hat_{i} : 정규화된 출력
- x_{i} :
입력 벡터의 개별 요소(d 차원). - μ : 입력 벡터 평균.
- σ : 입력 벡터의 표준편차.
- ϵ : 수치적 안정성을 위한 작은 값(ex. 10^{-5}
- γ : 학습 가능한 스케일링 파라미터
- β : 학습 가능한 Bias 파라미터
동작 원리 :
- Step 1. 입력 벡터의 평균 계산 :
- 입력 벡터 x의 μ 를 계산.
- 평균값을 이용해 입력 데이터를 평균 중심화(Mean Centering) 함.
- Mean Centering : x에서 μ를 빼, 데이터 중심을 0으로 맞추는 과정
- Step 2. 입력 벡터의 표준편차 계산 :
- 각 요소에서 평균을 뺀 후 제곱하고, 전체 차원의 평균을 구한 후 제곱근을 취하여 표준편차 σ를 구함.
- 입력 값의 분포를 일정한 크기로 조정 가능.
- Step 3. 정규화 수행 :
- 입력 벡터에서 평균을 빼고 표준편차로 나눔 → 입력 값이 평균이 0, 분산이 1인 표준 정규 분포를 따르게 됨.
- Step 4. 스케일링 및 Bias 적용 :
- 정규화된 값에 학습 가능한 파라미터 γ와 β를 적용하여 모델이 최적의 값으로 조정할 수 있도록 만듦.
- 는 정규화된 입력을 확장(Scaling), β는 이동(Shifting)하는 역할을 수행.
- 모델이 더 유연하게 학습할 수 있도록 도와줌.
- 정규화로 인해 손실될 수 있는 표현력을 보완함.
- Scaling :
- 정규화된 데이터는 평균 0, 표준편차 1이지만, 모델이 학습하면서 필요에 따라 더 큰 값이나 작은 값을 사용하고 싶을 수 있음.
- γ를 곱하면 데이터의 크기를 조절(Scaling) 가능.
- Shifting :
- 데이터의 위치(평균)를 이동하는 역할.
- 정규화된 데이터는 평균이 0이지만, 모델이 더 나은 학습을 위해 특정 값을 중심으로 데이터를 조정하고 싶을 수 있음.
- β를 더해주면 데이터의 중심을 이동(Shifting) 가능.
Residual Connection(잔차 연결)
뉴럴 네트워크에서 입력을 그대로 다음 레이어로 전달하면서, 변환된 출력과 더하는(Skip Connection ) 방식의 연결 기법이다.
이 기법은 딥러닝 모델이 더 깊어질 때 발생하는 학습 문제(기울기 소실, 기울기 폭발)를 해결하는 데 핵심적인 역할을 한다.
Transformer, ResNet과 같은 최신 모델에서 필수적인 구조로 사용된다.
개념 :
- 일반적인 뉴럴 네트워크에서는 각 레이어(layer)가 이전 레이어의 출력을 변환하여 학습을 진행.
- 네트워크가 너무 깊어지면 Gradient Vanishing 및 Gradient Exploding 문제가 발생하여 학습이 어려워짐.
- Residual Connection은 이러한 문제를 해결하기 위해, 입력을 직접 다음 레이어로 전달하는 추가적인 경로(Skip Connection)를 제공하는 방식.
- 기울기 소실 문제를 해결하고, 학습 속도를 향상시키며, 정보 손실을 방지하는 중요한 기법.
- 학습이 더 쉬워지고, 깊은 네트워크에서도 정보 손실 없이 안정적인 학습이 가능.
- Transformer에서 중요한 역할을 하며, MLP(FeedForward Network) 및 Self-Attention 계층 앞뒤에서 사용.
- '입력+변환된 결과'를 합하는 방식.
특징 :
- Gradient Vanishing 문제 해결 :
- 깊은 네트워크에서는 역전파 과정에서 기울기가 점점 작아져서 학습이 어려워지는 문제가 발생.
- Residual Connection을 사용하면, 입력이 직접 다음 레이어로 전달되므로, 역전파 시 기울기가 직접 전파되어 손실되지 않음.
- 더 깊은 네트워크에서도 안정적으로 학습이 가능.
- 학습 속도 향상 :
- 입력이 직접 전달되므로, 초기 학습 단계에서 모델이 더 빠르게 수렴할 수 있음.
- 실험적으로 Residual Connection이 없는 모델보다 잔차 연결이 포함된 모델이 학습 속도가 더 빠름.
( Deep Residual Learning for Image Recognition (He et al., 2016))
- 정보 손실 방지 :
- 일반적인 딥러닝 네트워크에서는 각 레이어가 입력을 변환하면서 일부 정보가 손실될 가능성이 있음.
- Residual Connection을 사용하면 원본 입력을 그대로 다음 레이어로 전달할 수 있으므로 정보 손실을 방지할 수 있음.
수식 :
- x = 입력 벡터(이전 레이어의 출력)
- f(x) : NN 연산(ex. 선형변환, 활성화 함수, etc.)
- y : Residual Connection을 적용한 최종 출력
- f(x)만 사용하는 기존 네트워크와 달리, x를 그대로 더함으로써 입력을 직접 전달할 수 있음.
동작 원리 :
- Step 1. 일반적인 NN :
- y = f(x)
- 입력 x가 함수 f(x)를 거쳐 변환된 후 출력됨.
- 네트워크가 깊어질 수록 f(x)가 복잡해지고, 기울기 소실 문제 발생 가능.
- Step 2. Residual Connection 적용 :
- y = f(x)+x
- 일반적인 NN과 달리 입력 x를 그대로 유지하며 f(x)를 더함.
- 네트워크가 깊어지더라도 원본 정보가 직접 전달되기에 학습이 더 쉬워짐.
Transformer 최종 출력
Transformer의 마지막 레이어에서는 출력된 벡터를 확률 분포로 변환하여, 다음 단어를 예측한다.
입력 벡터를 처리하여 숨겨진 표현(Hidden Representation) 생성 :
- Decoder의 마지막 층을 통과한 벡터는 각 단어에 대한 정보가 포함된 고차원 벡터가 됨.
- 특정 단어를 예측하기 위해 Decoder의 최종 출력 벡터 (h) 를 Softmax에 입력.
출력 벡터를 단어 임베딩 공간으로 변환 (Linear Projection) :
- Decoder의 마지막 출력 벡터 hh 는 단어 사전에 있는 모든 단어와 비교할 수 있도록 변환.
- 출력 벡터에 학습 가능한 가중치 행렬 W_{o} 를 곱하여 단어의 확률 점수(Logits)를 계산.
- W_{o}의 크기 : R^(d_{model}*V)
- V : 단어 사전의 크기(50,000)
- x의 크기 : R^V, 각 단어가 선택될 가능성을 나타내는 Logits를 얻음.
Softmax를 적용하여 확률 분포를 생성 :
- Logits 벡터 x를 확률 분포로 변환해야 함.
- Softmax 함수를 적용함.
단어 | x_{i}(Logits 값) | Softmax 확률 |
Paris | 2.5 | 0.7 (70%) |
London | 1.8 | 0.2 (20%) |
Tokyo | 0.5 | 0.08 (8%) |
Berlin | -0.2 | 0.02 (2%) |
최종 출력 단어 선택 :
Softmax를 통해 가장 높은 확률을 가진 단어가 최종 출력 단어로 선택됨.
예측된 단어가 Decoder의 다음 입력으로 추가되며 Transformer는 다음 단어를 예측하는 과정을 반복한다.
'Paper Review' 카테고리의 다른 글
[IBM Granite 3.0] Granite 3.0 Language Model(KR) (2) | 2025.02.06 |
---|