Deep Learning study
전이 학습(Transfer Learning) 심층 가이드: 이론부터 도메인 적응까지 본문
전이 학습(Transfer Learning) 심층 가이드: 이론부터 도메인 적응까지
illinaire 2025. 4. 18. 12:09전이 학습(Transfer Learning) 심층 가이드: 이론부터 도메인 적응까지
포스트 요약: 사전학습 모델의 지식을 새로운 과제에 효과적으로 적용하는 전이 학습의 이론적 배경, 주요 전략(feature extraction, fine‑tuning, domain adaptation), 수식 모델링, 상세 구현 예제, 실험 설계 팁을 종합 제공합니다.
1. 전이 학습의 개념과 이론적 배경
전이 학습은 소스 도메인 \(\mathcal{D}_S\)에서 학습된 분포 \(P_S(X,Y)\)와 타겟 도메인 \(\mathcal{D}_T\)의 분포 \(P_T(X,Y)\)가 다를 때, 소스에서 획득한 표현 \(\phi_S\)를 활용해 타겟 성능을 개선하는 기법입니다.[1]
목표는 타겟 데이터셋 \(\{(x_i^T,y_i^T)\}\)가 작을 때, 소스 모델 파라미터 \(\theta_S\)를 초기화하거나 고정하여 학습 효율과 일반화 성능을 높이는 것입니다.
1.1 수학적 모델링
타겟 손실 \(\mathcal{L}_T(\theta)\)을 최소화하는 대신,
\[ \theta^* = \arg\min_\theta \bigl[\mathcal{L}_T(\theta) + \lambda\,\|\theta - \theta_S\|^2\bigr] \]
정규화 항 \(\|\theta-\theta_S\|^2\)는 소스 지식 보존을 유도하며, \(\lambda\)는 전이 강도를 조절합니다.
2. 주요 전략: Feature Extraction vs Fine‑Tuning
2.1 Feature Extraction
사전학습된 백본의 모든 가중치를 고정(freeze)하고, 최상단 분류기만 교체합니다.
from torchvision import models
import torch.nn as nn
model = models.resnet50(pretrained=True)
for param in model.parameters():
param.requires_grad = False
num_feats = model.fc.in_features
model.fc = nn.Linear(num_feats, num_classes)
– **장점**: 학습 시간·메모리 절약
– **단점**: 도메인 차이가 클 때 표현 학습 한계
2.2 Fine‑Tuning
모델의 일부(또는 전체) 가중치를 재학습합니다. 일반적으로 분류기 이후 몇몇 레이어만 선택적으로 unfreeze합니다.
# 예: layer4와 fc 레이어만 재학습
for name, param in model.named_parameters():
if 'layer4' in name or 'fc' in name:
param.requires_grad = True
else:
param.requires_grad = False
– **장점**: 표현력 유지, 도메인 특화 학습 가능
– **단점**: 학습 비용 증가, 과적합 위험
| 전략 | 학습 대상 | 장점 | 단점 |
|---|---|---|---|
| Feature Extraction | 분류기만 | 빠르고 안정적 | 표현 학습 제한 |
| Fine‑Tuning | 부분/전체 | 높은 성능 | 리소스 요구↑ |
3. 도메인 적응(Domain Adaptation)
소스/타겟 도메인 분포 차이 \(\Delta = D_{KL}(P_S\|P_T)\) 완화 기법:
3.1 MMD 기반 정규화
최대 평균 차이를 최소화하여 분포 정합성 확보:
\[ \mathrm{MMD}^2(\mathcal{D}_S,\mathcal{D}_T) = \Bigl\|\frac{1}{n}\sum_{i}\phi(x_i^S) - \frac{1}{m}\sum_j\phi(x_j^T)\Bigr\|^2 \]
# PyTorch 예시 (의사 코드)
loss_mmd = torch.mean(phi_s, dim=0) - torch.mean(phi_t, dim=0)
loss = loss_cls + alpha * torch.sum(loss_mmd**2)
3.2 Adversarial 적응 (DANN)
Domain Discriminator를 사용해 소스/타겟 특징을 구별 불가능하게 학습:
# Gradient Reversal Layer 사용 예
from torch.autograd import Function
class GradReverse(Function):
@staticmethod
def forward(ctx, x, lam):
ctx.lam = lam; return x
@staticmethod
def backward(ctx, grad):
return -ctx.lam * grad, None
4. 심층 구현 예제
import torch, torch.nn as nn, torch.optim as optim
from torchvision import models
# 모델 준비
model = models.resnet50(pretrained=True)
for param in model.parameters(): param.requires_grad = False
for param in model.layer4.parameters(): param.requires_grad = True
model.fc = nn.Linear(model.fc.in_features, num_classes)
optimizer = optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4)
criterion = nn.CrossEntropyLoss()
# 학습 루프 (간략)
for epoch in range(epochs):
model.train()
for imgs, labels in train_loader:
imgs, labels = imgs.cuda(), labels.cuda()
logits = model(imgs)
loss = criterion(logits, labels)
optimizer.zero_grad(); loss.backward(); optimizer.step()
5. 실험 설계 & 팁
- 소스/타겟 도메인 유사도 확인 (FID, MMD)
- Learning rate 차별화: 백본 낮게, head 높게
- Early stopping & LR scheduler 활용
- 데이터 불균형 시 oversampling/weighting 적용
6. 결론 및 다음 단계
- 다양한 사전학습 모델(ResNet, Vision Transformer) 비교
- Domain Adaptation 기법(MMD, DANN, CDAN) 성능 분석
- 자체 데이터셋으로 end-to-end 배포 파이프라인 구축
참고 문헌
- Pan, S. J., & Yang, Q. (2010). A Survey on Transfer Learning. IEEE TKDE.
- Ganin, Y., & Lempitsky, V. (2015). Unsupervised Domain Adaptation by Backpropagation. ICML.
- Long, M., et al. (2015). Learning Transferable Features with Deep Adaptation Networks. ICML.
'AI > Deep learning 을 위한 지식' 카테고리의 다른 글
| 배치 정규화(Batch Normalization) 심층 분석: 수학적 유도부터 구현·튜닝까지 (0) | 2025.04.18 |
|---|---|
| GPU 메모리·연산 효율 최적화 완전 가이드 (0) | 2025.04.18 |
| 과적합 vs 과소적합 심층 분석: 이론, 진단, 해결 전략 (0) | 2025.04.18 |
| 학습률 스케줄러 심층 가이드: 수학적 원리부터 실전 적용까지 (1) | 2025.04.18 |
| 베이즈 정리(Bayes theorem)와 최대 우도 추정 (Maximum likelihood estimation, MLE) (0) | 2020.04.12 |