HyperParameter(ハイパーパラメータ)と学習結果の違い
-
学習率
- 一回の学習で重みパラメータをどれくらい変化させるかという指標
- 大きいと一気にパラメータが更新され、小さいとチビチビと進んでいくイメージ
- 学習率が大きいと損失関数が最小となる谷を一気に通り過ぎるリスクがあり、小さいと局所解にトラップされて学習が進まなくなる可能性がある
-
バッチサイズ
- 複数のデータの塊(ミニバッチ)のサイズ
- 学習では、ミニバッチに対する損失関数の微分を計算し、重みを更新する
- ミニバッチのサイズが大きいとデータの特徴が平均化されてしまい、データの個性が失われるリスクがあるが、局所解にトラップされることが少なくなり、学習も早くなる
- バッチサイズは機械学習の分野の慣習として2のn乗の値が使われることが多く、32, 64, 128, 256, 512, 1024, 2048辺りがよく使われる数値である
-
学習率とバッチサイズの関係
-
バッチサイズと学習率の決め方
- 小さなバッチサイズ(1、2、4、8、16・・・)から始め、学習時間が気になる場合や手っ取り早く精度が知りたい場合はデータ数を小さくするなどの工夫をする
- バッチサイズが小さいとノイズの影響を受け局所解にトラップされやすい。
この場合は学習率を上げて対応する。 - バッチサイズが大きくなると入力パラメータの特徴が平均化されるため、数万規模のバッチサイズではデータの個々の特徴が失われる可能性がある。
(画像だと多くても128や256ぐらい) - 一般にバッチサイズが小さいほど精度が良いとされる。
逆に低バッチサイズで精度が悪く、大きいほど精度が高いという場合には、入力データの表現力がそもそも高くない可能性を考慮すべきである。
特徴量エンジニアリングから検討し直す。 - 自動のパラメータ決定方法として、ベイズ最適化(BO)に基づいたハイパーパラメータ探索法がある。(有名どころではOptunaなど)
便利だが、探索空間を適当に決めてはいけない。BOで最適化する場合、探索空間を決める根拠をしっかり持つ。
参考サイト