⊢ DeepLearning

전이학습(Transfer Learning)

최 수빈 2025. 3. 22. 03:43

 

전이학습 (Transfer Learning)

 

기존에 학습된 모델의 지식(가중치 등)을 새로운 문제에 적용하는 머신러닝 기법

 

대량의 데이터를 활용해 학습한 모델을 기반으로, 새로운 작업에 적은 데이터로도 좋은 성능을 낼 수 있도록 도와줌

 

전이학습이 필요한 이유

  • 데이터 부족
    새롭게 풀고자 하는 문제에 대한 학습 데이터가 적을 때, 사전 학습된 모델을 활용해 일반화 성능을 끌어올릴 수 있음
  • 학습 시간 단축
    처음부터 모델을 학습하는 것보다 빠르게 수렴
  • 성능 향상
    ImageNet, COCO 등 대규모 데이터셋에서 학습된 모델은 일반적인 시각적 특징을 잘 추출하므로, 특정 도메인에서도 높은 성능을 보일 수 있음

 

전이학습의 원리

 

전이학습은 크게 두 가지 방식으로 구분됨

  • 특징 추출기(Feature Extractor)
  • 미세 조정(Fine-Tuning)

 

특징 추출기(Feature Extractor)

사전 학습된 모델의 초기 층(Convolution 등)을 고정하고, 마지막 출력층만 새로 학습

빠르고, 적은 데이터에서도 효과적

사전 학습된 모델 → [Conv → Conv → Conv → ... → FC]  
전이학습 → Conv 층 고정, FC만 새로운 태스크에 맞게 변경

 

미세 조정(Fine-Tuning)

전체 네트워크를 모두 재학습

일반적으로는 마지막 몇 개 층만 업데이트하지만, 필요에 따라 전체 레이어를 모두 학습할 수 있음

모든 레이어의 gradient를 업데이트 (requires_grad=True)
→ 사전 학습된 feature에 새로운 태스크를 완전하게 맞춤

 

 

 

전이학습을 활용한 모델 만들기 (PyTorch 예시)

 

사전 학습된 모델 로드

 

PyTorch에서는 torchvision.models를 통해 다양한 사전 학습 모델을 쉽게 불러올 수 있음

import torchvision.models as models

model = models.resnet18(pretrained=True)

 

 

모델 수정 (클래스 수 변경)

import torch.nn as nn

num_classes = 5  # 새로운 데이터셋의 클래스 수
model.fc = nn.Linear(model.fc.in_features, num_classes)

 

 

모델 학습

  • 특징 추출기 방식: requires_grad=False로 설정
  • 미세 조정 방식: 모든 파라미터를 업데이트
# Feature Extractor 방식
for param in model.parameters():
    param.requires_grad = False
for param in model.fc.parameters():
    param.requires_grad = True
# Fine-Tuning 방식
for param in model.parameters():
    param.requires_grad = True

 

 

손실함수 & 옵티마이저 설정 예

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

 

 

 

'⊢ DeepLearning' 카테고리의 다른 글

하이퍼파라미터 튜닝  (0) 2025.03.22
과적합(Overfitting) 방지 기법  (0) 2025.03.22
생성형 모델(Generative Models)  (0) 2025.03.22
오토인코더(Autoencoder)  (0) 2025.03.21
이미지 처리 모델  (0) 2025.03.21