アルゴリズムの選び方#

どのアルゴリズムを選べばよいですか?#

パラメータの数や目的関数の性質に応じて選んでください。

アルゴリズム

適した場面

特徴

minsearch

パラメータ数が少なく(〜10程度)、局所的な最小値を素早く見つけたい

Nelder-Mead法。高速だが局所解に陥る可能性あり。勾配不要

global_search

連続パラメータの大域的最適化を行いたい

scipy.optimize の大域最適化(差分進化法、SHGO、DIRECT、dual annealing)。scipy が必要。候補点評価の MPI 並列に対応

bayes

目的関数の評価コストが高く、少数の評価で最適解を見つけたい

ガウス過程回帰によるサロゲートモデル。評価回数を最小化。physbo が必要

mapper

パラメータ空間の全体像を把握したい。パラメータ数が少ない(2〜3程度)

全格子点を評価。パラメータ数が増えると計算量が爆発的に増加

exchange

多峰性の目的関数を広範囲に探索したい

レプリカ交換法。局所解を回避しやすい。MPI 並列推奨(mpi4py が必要。1プロセスでも実行可能)

pamc

事後確率分布を推定したい。model evidence を計算したい

ポピュレーションアニーリング。統計的推定に適している

random_search

パラメータ空間の概観を手軽に把握したい

ランダムサンプリング。シンプルで堅牢

ttopt

パラメータ数が比較的多い問題や離散変数を含む問題で最小値を探索したい

テンソル列(テンソルトレイン)最適化。勾配不要の交差近似。MPI 並列に対応