深層学習day2 Section3:過学習
要点まとめ
過学習とは、訓練用データにのみ過剰に適応してしまい、汎化性能が低下してしまった状態で、訓練誤差とテスト誤差とに乖離が生じてしまう状態。
原因は下記のような原因でネットワークの自由度が高すぎること。
- パラメータ数が多い
- パラメータ値が適切ではない
- ノードが多い
正則化、即ち ネットワークの自由度に制約を加えることで、過学習を抑制することができる。
L1正則化、L2正則化
重みが大きいと訓練データに適応しすぎてしまい、過学習が起きる。誤差関数にpノルムを加えることで、重みの大きさに制約を加え、過学習を抑制する。
pノルムとは
L1ノルム
スパース推定。重みを0にしやすい。
パラメータ更新の場合は微分を考える必要がある。
L2ノルム
重みは小さくはなるが、0にはなりにくい。
微分したときに都合が良いように、を掛けるのが定番。
Pythonでの実装は、
実装演習
確認テスト等考察
Lasso, Ridge 共にメリット・デメリットがあり、Pythonの実装も覚えておく必要がある。