대규모 언어모델 • 챕터 2 / 7
| 구분 | RNN | Transformer |
|---|---|---|
| 처리 방식 | 순차적 (문장 길이만큼 순차 처리) | 병렬적 (모든 토큰 동시 처리) |
| 장기 의존성 | 문장이 길어지면 앞 내용 손실 | 각 토큰을 병렬적으로 처리하여 유지 |
| 학습 속도 | 느림 | 빠름 |
| 대표 모델 | LSTM, GRU | BERT, GPT |
입력 문장 → 토큰화 → 토큰별 임베딩 → Encoder → Decoder → 출력역할: 입력 문장의 의미를 효과적으로 파악
구성 요소:
Encoder 6연속 쌓기:
역할: 출력 문장을 자연스럽게 생성
구성 요소:
"이 문장에서 이 단어는 어떤 의미인가?"
예시: "나는 밥을 먹었다"
각 토큰을 Query, Key, Value 값으로 변환하여 계산
| 요소 | 역할 | 예시 |
|---|---|---|
| Query | 질문하는 것 | "나는"이 무엇을 의미하는가? |
| Key | 참조되는 것 | "밥을", "먹었다" 등 |
| Value | 실제 의미 정보 | 각 단어의 의미 벡터 |
계산 방식:
Self-Attention(Q, K, V) = softmax(QK^T / √d_k) × V핵심 원리
각 토큰이 문장 내 다른 토큰들과의 관계를 파악하고, 병렬적으로 모든 토큰의 의미를 동시에 계산합니다.
| 차원 | Head 수 | Head당 차원 | 결과 |
|---|---|---|---|
| 256 | 8 | 32 | 256 |
256 차원 임베딩 → 32 × 8 → 256[토큰 임베딩]
↓
[Self-Attention] → 단어 간 관계 파악
↓
[FFNN] → 깊은 패턴 학습
↓
[출력]Input (입력 토큰의 목록)
↓
[Encoder Layer 1]
├─ Self-Attention
├─ Add & Norm
├─ Feed Forward
└─ Add & Norm
↓
[Encoder Layer 2~6 반복]
↓
Output (입력 문장의 토큰별 맥락 벡터)<BOS> I had meal (이전 출력)
↓
[Masked Self-Attention] → 앞 토큰만 참조
↓
[Encoder-Decoder Attention] → Encoder 정보 참조
↓
[FFNN]
↓
[Linear + Softmax]
↓
다음 토큰 확률 (예: <EOS>)Decoding 과정은 직전 출력의 영향을 받음 (순차적 출력)
Step 1: <BOS> → I
Step 2: <BOS> I → had
Step 3: <BOS> I had → meal
Step 4: <BOS> I had meal → <EOS><BOS>, 'I'만 고려 (had, meal은 미래 정보)목적:
Encoder 구조를 활용하여 문장 의미 파악
Decoder 구조를 활용하여 텍스트 생성
| 구분 | Encoder (BERT) | Decoder (GPT) |
|---|---|---|
| 맥락 | 양방향 (모든 토큰 참조) | 단방향 (이전 토큰만 참조) |
| 최적화 | 문장 의미 파악 | 순차적 생성 |
| Masking | 없음 | 미래 정보 차단 |
구조는 같지만 목적이 다름
Encoder: 의미를 뽑는 것 Decoder: 말을 하는 것
나는 밥을 먹었다 (입력) → [X] Encoder 없음
↓
[Decoder Only]
= Masked Self-Attention
+ Feed-Forward NN ← Encoder 정보 없음
↓
I → had → meal → <EOS>어떤 문장을 주고 이 문장의 다음 단어를 맞추는 구조
I → had → meal → <EOS><BOS> → I<BOS> I → had<BOS> I had → meal<BOS> I had meal → <EOS>| 구성 요소 | 역할 |
|---|---|
| Encoder | 입력 문장의 의미 파악 (양방향 맥락) |
| Decoder | 출력 문장 생성 (단방향 맥락, 순차적) |
| Self-Attention | 단어 간 관계 파악 |
| Multi-Head Attention | 다양한 관점에서 관계 파악 |
| FFNN | 비선형성 추가, 깊은 패턴 학습 |
| Positional Encoding | 토큰 위치 정보 추가 |
| 모델 | 구조 | 용도 |
|---|---|---|
| BERT | Encoder만 사용 | 문장 의미 파악 (분류, 질의응답) |
| GPT | Decoder만 사용 | 텍스트 생성 (대화, 자동완성) |