本から学んだこと
ブラックボックス最適化
Optunaの概要
- 目的関数の1回の評価をtrial、一連の最適化プロセスをstudyと呼ぶ。Studyオブジェクトは全てのtrial情報を持っているので最良の試行以外の結果も取り出せる。
- Optunaは複数の指標を持つ多目的最適化問題にも対応している。パレートフロントによる可視化に対応。多目的最適化は「複数の目的のトレードオフを探索し、最後のパラメータの選択は人間が行う」という状況で活躍する。
- 探索空間を絞るには条件付き最適化や枝刈り(pruning)がある。また、ドメイン知識がない場合はRandomSamplerで探索を行い、ハイパーパラメータの重要度の可視化によって手動で探索空間を絞っていくのも有効。
- 探索点を手動で指定できる(study.enqueue_trial)。事前に有望なパラメータがわかっていたりする場合は有効。CmaEsSamplerはWarm Startに対応しており、以前の探索結果を再利用できる。
最適化の仕組み
- Optunaのsamplerは独立サンプリングと同時サンプリングの組み合わせで柔軟なインターフェースを実現している。Trialオブジェクト作成時に過去の試行を元に同時サンプリングを行い、次に目的関数呼び出し時にサジェストAPIでパラメータを取得する。この時同時サンプリングされていないパラメータがあれば独立サンプリングが行われる。
- TPESamplerはデフォルトで独立サンプリングのみを行うため、同時サンプリングをしたい場合は引数で指定する必要あり。
- 探索点の選択は探索と活用のトレードオフで、各samplerはそれぞれ独自の方法でこれに取り組む。それぞれのsamplerの特徴はこちらのドキュメントにまとめられています。optuna.samplers — Optuna 3.1.0 documentation
- 基本はデフォルトのTPESamplerで良いと思いますが、1000を超えるような多くのtrialを実行する場合は進化計算によるCmaEsSamplerの方が適している。