「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>ニューラルネットワーク(学習)]] --[[深層学習の誤差逆伝播法]] --深層学習のテクニック *目次 [#xf223dce] #contents *概要 [#tf550353] *詳細 [#h518e281] **転移学習 [#ebe9edcc] 学習済みモデルには手を加えず(、重みを固定し)、~ 追加の出力層だけを新たに学習させモデルを作成する。 ***概要 [#k07a1a43] -人が過去の経験を活かして新しい物事を習得する流れと似ている。 -大量の犬の画像データと少量の猫の画像データがあり、~ 犬の種類判別モデルと猫の種類判別モデルを作成する場合、~ 犬の種類判別の課題から得られた知識を猫の種類判別モデルに適応させ判別精度の向上を図る。 ***詳細 [#i669f1c6] -メリット・デメリット --メリット ---限られたデータから高精度なモデルを作成できる ---少ないデータでの学習のため学習時間を短縮できる --デメリット ---精度の改善ではなく悪化をもたらす場合がある(負の転移(negative transfer)) ---負の転移は、転移元と転移先の関連性が低い、転移の方法が適切でないなどが考えられる。 -構築方法 --学習済みモデルの最終出力層(全結合)だけを付け替えてデータを学習させ~ 最終出力層(全結合)のパラメタだけ変更して新しいモデルを作成する。 ---入力層に近い部分は、タスクに固有の特徴ではなく汎用的な特徴を抽出する。 ---奥の層に行くに連れて特徴が複雑になると、拾う特徴は段々とタスクに固有になっていく。 --少ないデータで、最終出力層(全結合)のパラメタだけ変更することで学習が速く進むようになる。 **ファイン・チューニング [#ea94272b] 学習済みモデルに手を加えて(、重みを初期値し、)、~ 追加の出力層以外も新たに再度学習させモデルを作成する。 ***概要 [#s38ca193] [[転移学習>#ebe9edcc]]との違いは、既存部分を再学習するかどうか。 ***詳細 [#k36d2d62] [[転移学習>#ebe9edcc]]との違いに関してのみ言及。 -メリット・デメリット --メリット --デメリット ***構築方法 [#iad66a2b] -学習済みモデルの最終出力層(全結合)を付け替え、~ 出力層(全結合)だけでなく入力層に近い部分のパラメタも変更して新しいモデルを作成する。 --学習率を通常の 10^-2 倍程度に小さくする。 --出力層(全結合)の何層かのみ初期値を乱数にして学習させる。~ 奥にある層は複雑で固有な特徴を学習しているので学習済みのパラメタを利用する効果が薄い。 --一部の層のパラメタを全く学習させないという工夫もある。~ 手持ちのデータが少ないときほど学習させるパラメタを絞る。 *参考 [#b62d3054] -転移学習(TL:Transfer Learning)とFine Tuningの違いって? - ts0818のブログ~ https://ts0818.hatenablog.com/entry/2021/02/15/205258