今更ですが、、、
転移学習とは(Transfer learning)
ある領域(ドメイン)で学習したモデルを、別の領域(ドメイン)に適合させる技術を転移学習という。
これにより、普通に学習させるよりも少ないデータ量で学習させることができる。
具体例
2014年のILSVRCで優勝した学習済みモデルVGG16を例にして説明します。
このモデルは、ImageNetのデータセットから、コンテストのお題で出された1000クラスを識別できるようになっています。分類は大まかに区分されたり、詳細に区分されたりとまちまちです。このサイトでどんな分類があるかみれます。
例えば、猫の種類分類を行うシステムを作ろうと思ったとき、この学習済みモデルそのままではきちんと分類することはできません。そこで、用いるのが転移学習です。この学習済みモデルにひと手間加えることにより、猫の種類分類をすることができるようになります。さらに、一から作るよりずっと少ないデータ量で分類ができるようになります。
アプローチ
CS231n: Convolutional Neural Networks for Visual Recognition Lecture 7より
上図では、学習済みモデルの最後2層を追加学習させ、新たな猫の種類を分類させます。
追加学習させないレイヤーをフリーズさせると言います。このフリーズさせる範囲を変更することで、精度が多少変わったり、学習時間が変わったりします。
また、抽出した特徴ベクトルをSVMを用いて分類することもできます。
ファインチューニング(Fine tuning)
転移学習を勉強しているとよく、ファインチューニングという言葉をよく目にします。
ファインチューニングとは、学習済みモデルの一部、或いはすべての重みを微調節する手法です。
転移学習では、特徴抽出器は変えずに最後の層だけを再度学習しましたが、ファインチューニングでは、学習済みモデルの重みを初期値として、再度学習させ微調節します。
*転移学習では、入力層から中間層の最後の層までを特徴抽出器と言います。
いつどのようにファインチューニングするか
スタンフォード大学の講義資料に、技法の選び方のノウハウが記載されているので図にまとめます。