転移学習概要
転移学習とはBozinovski and Fulgosi(1976)で考案された学習方法で、あるタスクを学習する際に、予め別タスクで学習させたモデルを組み合わせることにより学習の効率化を計る方法のことです。
転移学習については、厳密にはInstances-base, Mapping-base, Network-base, Adversarial-baseに分類できますが、今回はNetwork-baseの転移学習について扱います。
転移学習の例
転移学習についての例を挙げます。
ここでは転移学習を用いて様々な動物を認識することができるモデルを犬の画像認識に応用するというシナリオで考えてみます。
この場合、まず様々な動物の画像データを利用して様々な動物を画像認識するモデルを学習させます。
次に学習済みの様々な動物を画像認識するモデルの一部分を切り出し、新たに層を加えることで犬を画像認識するモデルを構築します。このように転移学習では、あるタスクで学習させたモデルの一部を取り出すことで学習済みモデルを特徴抽出器のように利用することができます。
最後に犬の画像データを用いて、追加した層のみパラメータを学習させます。
追加した層のみならず、ネットワーク全体を学習させる場合はファインチューニングと呼びます。ファインチューニングの場合は必然的に計算量が多くなりかなりの計算資源を消費します。コンピュータ資源に余裕がある場合はファインチューニングを検討するのも良いでしょう。
転移学習の効果
転移学習のメリットとしては、まず限られたデータから高品質なモデルを作成できるということが挙げられます。
一般的に深層学習モデルを作成する場合、まずはデータを取得することから始めますが、データの前処理に膨大なコストがかかったり、そもそもデータが少ないことなどで十分なデータが取得できない場合が多くあります。
そこで転移学習により類似のタスクを学習させた別モデルを利用することにより、少ないデータでも高品質なモデルを作成することが可能になります。
また、転移学習はモデルの正則化という効果もあります。
例えば先ほどの犬の画像データを利用したモデルの場合、転移学習を利用して転移させたモデルの部分のパラメータはある値に固定されることとなりますが、これをパラメータの制約条件と捉えた場合、正則化の効果が得られることがわかります。(ファインチューニングを実施する場合でも、初期値の制約条件と考えれば同様に正則化の効果は得られることがわかります)。
加えて転移学習には短時間でモデルを学習することができるというメリットもあります。
あるモデルを新たに学習する場合、一部に学習済みのモデルを組み入れることにより、その部分のパラメータの最適化が必要なくなるためより短い時間で学習することが可能になります。
それでは転移学習の効果をまとめると以下のようになります。
- 少量のデータで高品質なモデルを構築可能
- モデルの正則化が可能になる
- モデルを短期間で学習することができる