전이 학습(Transfer Learning)은 대규모 데이터로 사전 학습된 모델의 지식을 새로운 태스크에 적용하는 기법이다. 적은 데이터와 적은 학습 시간으로도 높은 성능을 달성할 수 있다.
전이 학습 방식
사전 학습 (Pre-training):
대규모 데이터 (ImageNet 1.2M, Wikipedia 전체)
→ 모델이 일반적인 특징 학습
파인튜닝 (Fine-tuning):
소규모 도메인 데이터 (의료 이미지 1000장)
→ 사전 학습 가중치를 초기값으로 추가 학습
python
import torchvision.models as models
import torch.nn as nn
# ImageNet으로 사전 학습된 ResNet 로드
model = models.resnet50(pretrained=True)
# 특징 추출기는 동결 (학습 안 함)
for param in model.parameters():
param.requires_grad = False
# 마지막 FC 레이어만 새 태스크에 맞게 교체
num_classes = 5 # 새 태스크의 클래스 수
model.fc = nn.Linear(model.fc.in_features, num_classes)
# 마지막 레이어만 학습
optimizer = torch.optim.Adam(model.fc.parameters(), lr=0.001)
텍스트 전이 학습
python
# BERT 파인튜닝
from transformers import BertForSequenceClassification
model = BertForSequenceClassification.from_pretrained('bert-base-korean',
num_labels=3)
# 전체 모델을 학습하되, 작은 학습률 사용
optimizer = torch.optim.AdamW(model.parameters(), lr=2e-5)
관련 개념
- •CNN — 이미지 전이 학습의 기반
- •BERT — 텍스트 전이 학습의 대표 모델
- •파인튜닝 — 전이 학습의 핵심 방법
- •과적합 — 전이 학습으로 완화 가능
참고문헌
- •Pan & Yang (2010). A Survey on Transfer Learning