転移学習

学習目標: 事前学習済みモデルを活用して効率的に学習する方法を理解する

転移学習とは

大規模データセットで学習済みのモデルを、新しいタスクの出発点として使用する手法です。 少ないデータでも高い性能を達成できます。

実装例(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. 転移学習の利点は?