Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

アルゴリズムと手法

ガウス過程を用いたベイズ最適化に「GP Optuna」と「GP BoTorch」の2つがありますが、何が違うのですか?

その名の通り、GP BoTorch はベイズ最適化の汎用ライブラリである BoTorch を用いて実装されています。 汎用性が高く、多目的や制約付きのベイズ最適化にも使えますが、実行が遅いという欠点があります。

GP Optuna は、Optuna(Tunny)の最適化で動作するように再実装されたガウス過程の手法です。 多目的最適化は扱えませんが、制約を考慮でき、GP BoTorch より高速に動作します。

そのため、多目的ベイズ最適化を行わないのであれば、GP Optuna の使用をおすすめします。

なお GP はどちらの実装でも、それまでの観測すべてを使ってサロゲートモデルを作り直すため、Trial 数が増えるほど 1 Trial あたりの計算時間が伸びていきます。

Wallacei と同じ設定で最適化するにはどうすればよいですか?

Wallacei は以下のアルゴリズムを使用しています。

  • 最適化手法:NSGA-II
  • 交叉:SBX 交叉
  • 突然変異:多項式突然変異(Polynomial mutation)

Tunny のデフォルトの交叉は uniform 交叉なので、そのままでは設定が一致しません。 NSGA-II のサンプラー詳細設定には、Wallacei のデフォルト設定に合わせたプリセットが用意されています。 これを適用することで、設定を近づけられます。

ですが、このプリセットは Wallacei の実装を完全に複製したものではなく、できるだけ近い設定を目指したものです。 交叉方法を含む個々の値は、サンプラー詳細設定から変更できます。

重複なしでサンプリングすることはできますか?

各サンプラーは、重複を確認せずに最適化アルゴリズムが決定した探索点を計算するため、重複なしで最適化することはできません。 ただし、重複した場合に目的関数の計算をスキップすることはできます。

サンプラーの Other Settings Group で「Ignore Duplicate Sampling」にチェックを入れることで、重複が発生したときに過去の計算結果が参照され、そのまま登録されます。

なお、重複があるかどうかのチェックは Trial ごとに行われます。 このチェックのコストは Trial 数が増えるほど高くなるため、Trial 数を多く取る場合はかえって遅くなることもあります。

ラテン超方格サンプリング(LHS)はサポートされていないのですか?

Tunny は LHS の代わりに QMC をサポートしています。 QMC は点が一箇所に密集することなく適度な間隔で並ぶ低差異列を使うので、LHS よりも均一にサンプリングすることが知られています。

詳細はこちらの論文をご覧ください。