転移学習(Transfer Learning)は、あるタスク(通常は一般的または大規模なデータセットでのタスク)で学習されたモデルを、異なる関連するタスクに再利用または適応させる手法です。ゼロからモデルを学習させる代わりに、事前に学習されたモデルを新しい、より小規模なデータセットや特定の問題に微調整します。ゼロから始めるのではなく、モデルがすでに初期の学習から有用なパターン(特徴)を学んでいるため、時間と計算リソースを節約できます。たとえば、大規模なデータセット(ImageNetなど)は、より小さなタスク固有のデータセットの強力な基盤を提供します。
例: ImageNet(一般的な画像が数百万枚あるデータセット)で学習されたモデルを持っているとします。このモデルは、鳥の画像を使用して最後の数層のみを再学習することで、特定の鳥の種を識別するために微調整できます。初期の層はすでにエッジやテクスチャ、形状などの一般的な特徴を認識することを学んでいるので、そのまま使用できます。
以下は、PyTorchで転移学習を使用して、ImageNetで事前学習されたモデルを鳥の画像データセットに対して微調整するコードの例です。この例では、
torchvision
に含まれる事前学習済みのResNetモデルを使用し、最後の全結合層(分類層)を鳥の種を識別するために再学習します。PyTorchでの転移学習(ResNetのファインチューニング)
サンプルコード