티스토리 뷰
딥러닝 기초학습 9: Transformer 구조 완전 해부 — Encoder·Decoder·Multi-Head Attention이 왜 이렇게 생겼는가
octo54 2025. 12. 22. 12:20딥러닝 기초학습 9: Transformer 구조 완전 해부 — Encoder·Decoder·Multi-Head Attention이 왜 이렇게 생겼는가
Attention을 이해하고 나면,
다음 질문은 딱 하나다.“그래서 이걸 어떻게 ‘모델’로 조립했길래 이렇게 강력해졌지?”
그 답이 바로 Transformer다.
이번 글은 Transformer를
블랙박스가 아니라 기계 구조도처럼
머릿속에 그려지게 만드는 글이다.
1. Transformer 한 줄 정의
“RNN 없이, Attention만으로 시퀀스를 처리하는 최초의 딥러닝 아키텍처”
Transformer는
- 순차 계산 ❌
- 기억 전달 ❌
- 대신 Self-Attention + 병렬 처리 ⭕
이 선택 하나로 NLP의 판이 바뀌었다.
2. Transformer의 큰 그림
입력 토큰
→ Embedding
→ Positional Encoding
→ [ Encoder × N ]
→ [ Decoder × N ]
→ Linear
→ Softmax
핵심은 Encoder와 Decoder가 같은 블록을 반복한다는 점이다.
(“깊이”는 반복 횟수로 만든다)
3. Encoder 블록 내부 구조 (진짜 중요)
Encoder 하나를 뜯어보면 항상 이 순서다.
Input
→ Multi-Head Self-Attention
→ Add & Norm
→ Feed Forward Network
→ Add & Norm
왜 이렇게 생겼을까?
(1) Self-Attention
- 입력 문장 안에서 단어 간 관계를 계산
- 장거리 의존성 해결
(2) Add & Norm (Residual + LayerNorm)
- gradient 흐름 안정화
- 깊은 네트워크 학습 가능
(3) Feed Forward Network (FFN)
- 각 토큰을 독립적으로 변환
- 비선형 표현력 강화
👉 Encoder는
“문장 전체의 관계를 이해한 뒤,
각 단어를 한 번 더 똑똑하게 바꿔주는 블록” 이다.
4. Decoder는 왜 더 복잡할까?
Decoder 블록은 Encoder보다 한 단계 더 많다.
Input
→ Masked Multi-Head Self-Attention
→ Add & Norm
→ Encoder-Decoder Attention
→ Add & Norm
→ Feed Forward Network
→ Add & Norm
Decoder에만 있는 두 가지 포인트
① Masked Self-Attention
- 미래 단어를 보지 못하게 막는다
- 오토리그레시브 생성의 핵심
예:
“나는 오늘 ___” 을 예측할 때
아직 안 나온 단어를 보면 안 됨
② Encoder-Decoder Attention
- Decoder가 Encoder의 출력을 참조
- 번역에서 “입력 문장 ↔ 출력 단어” 정렬
5. Multi-Head Attention은 왜 필요한가?
“Attention 하나면 충분하지 않나?”
→ 아니다. 시야가 너무 단일하다.
직관적 이유
사람도 문장을 볼 때
- 문법 관계
- 의미 관계
- 위치 관계
를 동시에 본다.
Multi-Head Attention은:
- 같은 문장을
- 여러 관점(head) 으로 병렬 분석한다.
Input
→ Head 1 (문법)
→ Head 2 (의미)
→ Head 3 (거리)
→ ...
→ Concat
→ Linear
그래서 표현력이 폭발적으로 증가한다.
6. Positional Encoding — 순서 정보는 어디서 오나?
Transformer는 순서를 “기억”하지 않는다.
그래서 순서를 숫자로 알려줘야 한다.
그게 Positional Encoding이다.
핵심 개념
- 각 위치(position)에 고유한 벡터 추가
- 토큰 임베딩 + 위치 임베딩
수식은 몰라도 된다. 핵심은 이것:
“단어 의미 + 위치 정보”를 합쳐서 입력한다
이 덕분에
- “고양이가 사람을 물었다”
- “사람이 고양이를 물었다”
를 구분할 수 있다.
7. Transformer 학습 흐름 요약
1) 입력 문장 → Encoder
2) Encoder 출력 → 전체 문맥 벡터
3) Decoder는 이전 출력 + Encoder 정보로 다음 토큰 예측
4) 이 과정을 병렬로 학습
이 구조 덕분에:
- 학습은 매우 빠르고
- 문맥 이해는 매우 강해졌다
8. PyTorch로 Transformer 핵심 구조 맛보기
아래는 실제 Transformer 구성 요소를 그대로 쓰는 코드다.
import torch
import torch.nn as nn
d_model = 512
nhead = 8
encoder_layer = nn.TransformerEncoderLayer(
d_model=d_model,
nhead=nhead,
dim_feedforward=2048
)
encoder = nn.TransformerEncoder(
encoder_layer,
num_layers=6
)
src = torch.randn(10, 32, d_model) # (seq_len, batch, d_model)
out = encoder(src)
print(out.shape) # (10, 32, 512)
✔ 실무에서도 쓰는 공식 API
✔ 구조 이해용으로 최고
9. Transformer가 RNN/LSTM을 완전히 대체한 이유
항목RNN/LSTMTransformer
| 계산 방식 | 순차 | 병렬 |
| 장거리 의존성 | 약함 | 강함 |
| 학습 속도 | 느림 | 빠름 |
| 구조 | 복잡 | 단순 반복 |
| 확장성 | 제한 | 매우 높음 |
이 차이 때문에:
- BERT
- GPT
- T5
- 모든 최신 LLM
이 Transformer 기반이다.
10. Transformer의 철학 (이걸 기억하자)
Transformer는 단순한 모델이 아니다.
- ❌ 기억을 쌓아두지 않는다
- ✅ 관계를 계산한다
- ❌ 순서를 따라가지 않는다
- ✅ 전체를 동시에 본다
- ❌ 구조를 복잡하게 만들지 않는다
- ✅ 단순 블록을 반복한다
이 철학이
대규모 학습 + 확장성과 완벽하게 맞아떨어졌다.
11. 요약 정리
구성 요소역할
| Encoder | 입력 문장 이해 |
| Decoder | 출력 문장 생성 |
| Self-Attention | 문맥 관계 계산 |
| Multi-Head | 다양한 관점 학습 |
| FFN | 비선형 변환 |
| Add & Norm | 안정적 학습 |
| Positional Encoding | 순서 정보 주입 |
딥러닝,Transformer,EncoderDecoder,MultiHeadAttention,SelfAttention,PositionalEncoding,NLP,LLM,딥러닝기초,PyTorch
'study > ML' 카테고리의 다른 글
| LLM 실전 활용 1: RAG의 탄생 — “모델을 키우지 말고, 지식을 연결하자” (0) | 2025.12.30 |
|---|---|
| 딥러닝 기초학습 10 (완결): GPT·BERT·LLM의 진화 — Transformer는 어떻게 ‘언어를 생성하는 지능’이 되었는가 (0) | 2025.12.26 |
| 딥러닝 기초학습 8: Attention의 등장 — “기억하지 말고, 필요할 때 찾아보자” (0) | 2025.12.16 |
| 딥러닝 기초학습 7: LSTM과 GRU — RNN의 기억력 문제를 해결한 ‘게이트 설계’의 정수 (0) | 2025.12.15 |
| 딥러닝 기초학습 6: RNN의 탄생 — 순차 데이터를 이해하기 위해 만들어진 첫 번째 딥러닝 모델 (0) | 2025.12.01 |
- Total
- Today
- Yesterday
- rag
- LangChain
- fastapi
- SEO최적화
- Express
- NestJS
- 쿠버네티스
- JAX
- Prisma
- flax
- llm
- 압박면접
- PostgreSQL
- seo 최적화 10개
- JWT
- Docker
- ai철학
- DevOps
- Next.js
- nextJS
- 웹개발
- Redis
- Python
- kotlin
- CI/CD
- 개발블로그
- REACT
- node.js
- 딥러닝
- 백엔드개발
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
