転移学習とファインチューニングについて解説!
前書き
G検定の勉強ついでにまとめてみます。
転移学習とファインチューニングがごちゃ混ぜにしている方が結構多い?
と感じたので、自分なりに整理します。
転移学習を超短くまとめる
転移学習とは元のある領域(=ドメイン)で学習させたことを他の領域にも役立てる事です。
元のドメインをソースドメイン、役立てる先(転移先)のドメインをターゲットドメインと呼びます。
長所
- 既存モデルを使う事で学習時間の削減
- 既存モデルを使う為、必要データ数が少なくて済む
ファインチューニングとの違い
ファインチューニングでは、学習済みモデルの重みを微調整して、
再度全体を学習させます。
ファインチューニングでは入力・出力の分布パターンが異なる場合に適応するためです。
しかしデータ数が少ないとか学習を引き起こすリスクが高いです。
転移学習では、学習済みモデルの重みは固定で、
追加した後ろの出力に近い層の微調整を行います。
転移学習の方法
転移学習では学習済み既存モデルの出力に近い後ろの層を切り離して学習させます。
後ろの層では初期化したのを再び学習させ、
汎用性の高い特徴量抽出を実現する前の層は固定(凍結)させます。
これで大規模な学習モデルでも学習時間の削減につながります。
「学習の汎用性」を扱っている転移学習では短所もあり、
もちろん全ての学習に適している訳ではありません。
あらゆる問題に適した汎用最適化戦略は実現不可能(ノーフリーランチの定理)な訳で、
画像処理と自然言語処理など全く異なる学習には使えませんし、
既存学習モデルにバイアスが存在する場合に、
解きたい学習課題にフィットしていない場合もあります。