「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
色々なオプションがある。
XXに関するテクニック †
学習に関するテクニック †
SGD †
- 呼称
- SGD:Stochastic Gradient Descent
- 確率的勾配降下法
- 概要
- 勾配が最も急な向きに勾配を下る手法
- 勾配が急であればあるほど大きくパラメタを変化させる。
- 変化を学習率というハイパーパラメタによって調整する。
- 最短距離でない、無駄に谷間を往復する。
学習率が大きい場合は無駄な往復が目立つ。
MomentumSGD †
- 概要
- SGDに慣性(加速・減速)の概念を加えた最適化手法。
- 加速で、谷間での無駄な往復を減らし、早く収束する。
NesterovAG †
(Nesterov Accelerated Gradient)
極小値付近でブレーキをかける機能を加えたアルゴリズム
AdaGrad? †
- 動いた量が増えたら更新が緩やかにする。
- NesterovAGのブレーキ機能を学習率の減衰によって実現
RMSprop †
(Root Mean Square Propagation)
- Adagradの改良版
- 学習率の減衰が穏やかになる機能を指数移動平均の導入によって追加
AdaDelta? †
Adam †
(ADAptive Moment estimation)
両方の自動調整の機能を持ち合わせたアルゴリズム
実装例 †
転移学習 †
学習済みモデルには手を加えず(、重みを固定し)、
追加の出力層だけを新たに学習させモデルを作成する。
概要 †
- 人が過去の経験を活かして新しい物事を習得する流れと似ている。
- 大量の犬の画像データと少量の猫の画像データがあり、
犬の種類判別モデルと猫の種類判別モデルを作成する場合、
犬の種類判別の課題から得られた知識を猫の種類判別モデルに適応させ判別精度の向上を図る。
詳細 †
- メリット・デメリット
- メリット
- 限られたデータから高精度なモデルを作成できる
- 少ないデータでの学習のため学習時間を短縮できる
- デメリット
- 精度の改善ではなく悪化をもたらす場合がある(負の転移(negative transfer))
- 負の転移は、転移元と転移先の関連性が低い、転移の方法が適切でないなどが考えられる。
- 学習済みモデルの最終出力層(全結合)だけを付け替えてデータを学習させ
最終出力層(全結合)のパラメタだけ変更して新しいモデルを作成する。
- 入力層に近い部分は、タスクに固有の特徴ではなく汎用的な特徴を抽出する。
- 奥の層に行くに連れて特徴が複雑になると、拾う特徴は段々とタスクに固有になっていく。
- 少ないデータで、最終出力層(全結合)のパラメタだけ変更することで学習が速く進むようになる。
ファイン・チューニング †
学習済みモデルに手を加えて(、重みを初期値し、)、
追加の出力層以外も新たに再度学習させモデルを作成する。
概要 †
転移学習との違いは、既存部分を再学習するかどうか。
詳細 †
転移学習との違いに関してのみ言及。
構築方法 †
- 学習済みモデルの最終出力層(全結合)を付け替え、
出力層(全結合)だけでなく入力層に近い部分のパラメタも変更して新しいモデルを作成する。
- 出力層(全結合)の何層かのみ初期値を乱数にして学習させる。
奥にある層は複雑で固有な特徴を学習しているので学習済みのパラメタを利用する効果が薄い。
- 一部の層のパラメタを全く学習させないという工夫もある。
手持ちのデータが少ないときほど学習させるパラメタを絞る。
参考 †