Day 44 NN構築できるようになった / Batch Normalizationについて
本日の学習プランと結果
内容 | 分量 | 結果 |
---|---|---|
キカガク: 機械学習の基礎3 完了 | O | |
キカガク: Streamlitの基礎 完了 | O | |
キカガク: ディープラーニングの基礎1 完了 | O | |
キカガク: ディープラーニングの基礎2 完了 | O |
Github
ひとこと
PyTorchを使用してニューラルネットワークをついに自分で構築できるようになった.
(そして、これまで理解できていなかったコードの意味についても、きちんと理解できるようになった)
次はOptunaによるNN構造そのものの探索にチャレンジする.
Kaggleにも挑戦していくが、DLが必ずしも最適とは限らない.
XGBoostのようなアンサンブル学習も改めておさえつつ、機械学習の基本からさらにステップアップしていきたい.
Batch Normalizationについて
キカガクで、ここの説明は非常に浅かったため、自分で色々と調査した.
- ミニバッチ1の学習が終わり、ミニバッチ2の入力が始まったとき. ミニバッチ2とミニバッチ1のデータ分布があまりに違うと、全く違うパラメータで更新されてしまう. さらにミニバッチ3がミニバッチ2と全く違う分布だったら...学習が大変非効率になる. (内部共変量シフト)
- この問題を解決するために、各ミニバッチごとに平均と標準偏差をもとめ、下記のようにx^へ各変数ごとに変換して、入力するデータ分布をある程度一定にしようとするのがbatch normalization.
- α、βは学習するパラメータで、ここで非線形性を確保する. 平均β、標準偏差αとなるように変換を行う. 元データから平均を算出するのではなく、βと宣言するため、平均値の計算が不要となり、学習効率が上がる.
下記、参考となるサイト. 内容が怪しいサイトも中にはあるため、要注意.
効果
- 初期値への依存性が低くなった
- 正則化の役割を持つためDropoutを使用しなくてもよい
- 学習が早い
- 学習係数を大きくしても発散しない
明日の計画
内容 | 分量 | 結果 |
---|---|---|
キカガク: OptunaによるNN構造探索 完了 | ||
キカガク: 画像認識 入門 |
振り返りメニュー
向き合ったら○をつける。
課題克服メニュー | クリア | 理由 |
---|---|---|
1. 優先順位を設定する | - | |
2. 考えすぎずに手を動かす・気付いたことはすぐにメモする | C | ちょっと悩んだら、手を止める前に調べて実装する流れにしている. |
3. 振り返る | O | このブログ |
4. 継続する | O | このブログ |
5. 気づき・考えたこと・思ったことをまとめる | O | このブログ |
6. 嘘をつかない・見栄を張らない | O | |
7. 収支の把握 | O | |
8. 没頭する | O |