アルゴリズムの選び方#
どのアルゴリズムを選べばよいですか?#
パラメータの数や目的関数の性質に応じて選んでください。
アルゴリズム |
適した場面 |
特徴 |
|---|---|---|
|
パラメータ数が少なく(〜10程度)、局所的な最小値を素早く見つけたい |
Nelder-Mead法。高速だが局所解に陥る可能性あり。勾配不要 |
|
連続パラメータの大域的最適化を行いたい |
scipy.optimize の大域最適化(差分進化法、SHGO、DIRECT、dual annealing)。scipy が必要。候補点評価の MPI 並列に対応 |
|
目的関数の評価コストが高く、少数の評価で最適解を見つけたい |
ガウス過程回帰によるサロゲートモデル。評価回数を最小化。physbo が必要 |
|
パラメータ空間の全体像を把握したい。パラメータ数が少ない(2〜3程度) |
全格子点を評価。パラメータ数が増えると計算量が爆発的に増加 |
|
多峰性の目的関数を広範囲に探索したい |
レプリカ交換法。局所解を回避しやすい。MPI 並列推奨(mpi4py が必要。1プロセスでも実行可能) |
|
事後確率分布を推定したい。model evidence を計算したい |
ポピュレーションアニーリング。統計的推定に適している |
|
パラメータ空間の概観を手軽に把握したい |
ランダムサンプリング。シンプルで堅牢 |
|
パラメータ数が比較的多い問題や離散変数を含む問題で最小値を探索したい |
テンソル列(テンソルトレイン)最適化。勾配不要の交差近似。MPI 並列に対応 |