Closed1
ハイパーパラメータの探索手法について

Hyper parameterの探索手法についてまとめる。
既存で用いられている探索手法とその特徴
既存で用いられている探索手法の大まかな特徴をまとめると以下のようになる。
なお、ここで述べられている特徴は主観的、直感的な表現が多用されており、厳密な正しさは期待できない。あくまで自分の中での整理として記す。
- hyper-parameter sweep: 与えられた範囲を全件探索する。
- ベイズ最適化: 「まだ調べてない範囲を網羅的に」かつ「見込みのある範囲を重点的に」バランスよく調べる。
- 遺伝的アルゴリズム: 「見込みのある範囲を重点的に」「ただし候補はランダムに選択して多様性を保ち」ならがら探索する(遺伝的アルゴリズムの概要については[1]などを参照のこと)。
ベイズ最適化が幅優先探索寄りの手法だとすると、遺伝的アルゴリズムは深さ優先探索に近いように思える。一般的な議論は難しいが、計算予算が限られている前提では、パラメータの探索空間が絞られていない状態で広範な範囲を探索する場合は遺伝的アルゴリズムの方が比較的良い値を見つけられそうに思える。一方で探索範囲が絞られていて、厳密解に近い解を見つけたい場合はベイズ最適化ベースの手法が有望かもしれない(ただし、詳しくは知らないが、ベイズ最適化ベースの手法では幅優先的な探索と深さ優先的探索のバランスを獲得関数に何を選択するかで調整できるのかもしれない。
具体的な実装例
hyper-parameter sweepは実装が直感的かつ容易であるため幅広いツールで一般的に用いられている。
ベイズ最適化はOptunaやW&B[5]で用いられている。また、HydraのpluginにOptunaを用いてベイズ最適化によりsweepをおこなうものもある[3]。
遺伝的アルゴリズムはYOLOv5のパラメータ探索で用いられている[4]。ただし、YOLOv5の既存のパラメータ探索では個体間の交配は行われず、個体の変異のみ実装している[2]。
Reference
- [1] https://towardsdatascience.com/introduction-to-optimization-with-genetic-algorithm-2f5001d9964b
- [2] https://github.com/ultralytics/yolov5/discussions/11124
- [3] https://hydra.cc/docs/plugins/optuna_sweeper
- [4] https://docs.ultralytics.com/yolov5/tutorials/hyperparameter_evolution/
- [5] https://wandb.ai/site/sweeps
このスクラップは2023/11/10にクローズされました