転移学習
学習目標: 事前学習済みモデルを活用して効率的に学習する方法を理解する
転移学習とは
大規模データセットで学習済みのモデルを、新しいタスクの出発点として使用する手法です。 少ないデータでも高い性能を達成できます。
実装例(ResNet)
import torch
import torch.nn as nn
from torchvision import models
# 事前学習済みResNet18をロード
model = models.resnet18(weights='IMAGENET1K_V1')
# 最終層を新しいタスク用に置き換え
num_classes = 10
model.fc = nn.Linear(model.fc.in_features, num_classes)
# 特徴抽出器として使用(重みを固定)
for param in model.parameters():
param.requires_grad = False
# 最終層のみ学習可能に
for param in model.fc.parameters():
param.requires_grad = True
# 最適化は学習可能なパラメータのみ
optimizer = torch.optim.Adam(model.fc.parameters(), lr=0.001)
Fine-tuning戦略
Feature Extraction
事前学習済みの重みを固定し、最終層のみ学習
- データが少ない場合に有効
- 計算が高速
Full Fine-tuning
全層を小さい学習率で再学習
- データが多い場合に有効
- より高い性能が期待できる
理解度チェック
Q. 転移学習の利点は?