Transformer
등장배경 : RNN / LSTM의 한계
LSTM은 문장을 처리할 때 한 단어씩 차례대로 다음처럼 계산한다.
- $ x_{t} $ 현재 단어
- $ h_{t-1}, c_{t-1} $ : 이전 시점의 은닉 상태와 셀 상태
즉, RNN LSTM과 같은 Neural Network 기반의 알고리즘은
현재 출력이 이전 출력에 의존하게 된다. 따라서, 구조적으로 병렬처리가 어렵다.
1. 순차 처리라서 느림
- RNN은 단어를 한 개씩 순서대로 처리
→ 병렬 처리 불가능
→ 긴 문장일수록 속도 느림
2. 긴 문장 기억 못함
- 문장이 길어지면 앞부분 정보를 잊어버림
→ 장기 의존성 문제 (Long-term dependency) : LSTM 이 이 문제를 일부 해결했지만, 근본적인 구조적인 문제로 완전 해결이 불가능함
3. 병렬 처리 불가능
- LSTM도 구조는 더 복잡하지만 결국 순차적→ GPU 활용 잘 안 됨 → 훈련 오래 걸림
Transformer의 구조
입력 문장을 벡터화 → Self-Attention → Multi-Head → Feed Forward → 출력
Transformer는 입력 문장을 한 번에 처리할 수 있도록 설계된 완전 병렬 처리 기반 모델이다.
RNN/LSTM처럼 순서대로 처리하지 않고, 전체 문장을 동시에 보고 처리 가능한 점이 핵심이다.
1. Encoder (왼쪽)
- 입력 전체 문장의 의미를 인코딩
- 입력 임베딩 + 위치 인코딩 (Positional Encoding)
- Multi-head Self-Attention
→ 입력 문장의 모든 단어가 서로를 보는 구조 - Add & Norm
→ 잔차 연결 + 정규화 - Position-wise Feed Forward
→ 각 단어 벡터에 MLP 적용 - Add & Norm
2. Decoder (오른쪽)
- 인코딩된 문맥을 바탕으로 출력 문장 생성
- 입력 임베딩 + 위치 인코딩
- Masked Multi-head Self-Attention
→ 아직 생성되지 않은 단어는 못 보게 “마스킹” - Add & Norm
- Multi-head Attention (Encoder-Decoder Attention)
→ Encoder 출력을 참고함 (문맥 정보) - Add & Norm
- Position-wise Feed Forward
- Add & Norm
- 마지막에 Dense + Softmax
→ 다음 단어 확률로 변환
Transformer는 모든 단어를 동시에 보고, 각 단어쌍 간의 관계를 Attention Score로 계산한다.
→ 계산 순서가 시간 축에 의존하지 않기 때문에 GPU로 병렬 연산이 가능하다.
Transformer 구조 전체에서 핵심적인 포인트는 Attention (Self-Attention, Masked Self-Attention) 이다.
Attention 알고리즘
‘뉴럴 네트워크(Neural Network)’가 주어진 데이터들 사이의 관계를 학습하기 제한적인 한계를 극복하기 위해 고안된 알고리즘
- 데이터를 표현하는 벡터들의 내적(Dot Product) 을 통해 그 관계를 파악
- 해당 value를 잘 표현할 수 있는 데이터(키, key)
- 유사성을 측정할 대상(Query)
- 가중치가 곱해지는 대상(value)
⇒ 어텐션 알고리즘의 궁극적인 목표는 주어진 벡터들의 가중합을 구하는 일
Self-Attention
Self-Attention
각 단어가 문장 내 다른 모든 단어를 참조하여 문맥을 이해
(예시) "The animal didn't cross the street because it was too tired."
여기서 it이 의미하는 게 animal인지 street인지 판단하려면, 단어 하나만 보면 안 되고 문장 전체를 함께 봐야 한다.
Self-Attention Process
다른 단어들을 얼마나 참조할지 계산
- 입력 문장을 임베딩 벡터로 표현
$ X \in \mathbb{R}^{n \times d_{model}} $ - 각 단어로부터 Q, K, V 생성
$ Q = XW^Q,\quad K = XW^K,\quad V = XW^V $ - 유사도 계산 및 가중합
$ Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax} \left( \frac{QK^T}{\sqrt{d_k}} \right) V $
Masked Self-Attention
아직 생성되지 않은 미래 단어는 못 보도록 막는 Self-Attention
Decoder에서는 다음 단어를 하나씩 예측해야 해요.
예측할 때, 정답 단어를 미리 보면 안 되기 때문에, 미래 단어에 대한 정보를 마스킹(masking)
나는 | ✅ | ❌ | ❌ | ❌ |
밥을 | ✅ | ✅ | ❌ | ❌ |
먹었다 | ✅ | ✅ | ✅ | ❌ |
. | ✅ | ✅ | ✅ | ✅ |
'Data Science & AI' 카테고리의 다른 글
Linear Algebra for AI (0) | 2025.02.23 |
---|---|
폐쇄망에서 파이썬 패키지 설치하기 (0) | 2025.01.15 |
[VS Code 가상환경] VS Code에서 django 설치하기 for mac (0) | 2023.07.25 |
[PyCharm 가상환경] Django 설치하기 for mac - 2 (0) | 2023.07.25 |
[PyCharm 가상환경] 파이참 설치 및 실행 for mac (0) | 2023.07.25 |