Blog

2025.10.28

Engineering

Research

AutoSampler:多目的・制約付き最適化を本格的にサポート

Yoshihiko Ozaki

はじめに

AutoSamplerは、状況に応じてOptunaに実装されている最適化アルゴリズムを自動選択し、効率的な解の探索を行ってくれる便利なSamplerであり、週間DL数で3万以上に成長したOptunaHubで最も人気のあるパッケージです。本機能の最初のバージョンでは、リリース直後に公開したブログのとおり、特別な自動選択ルールが単目的最適化において実装されました。一方で、多目的最適化や制約付き最適化においてはOptunaのデフォルトSamplerが用いられ、本格的なサポートは将来の課題となっていました。

今回Optuna v4.6(来月リリース予定)の開発期間において、長らく望まれていたAutoSamplerの多目的・制約付き最適化サポートの強化を行いましたので、本ブログ記事ではAutoSamplerのアップデート概要、利用方法と最新版の簡単なベンチマーク結果について紹介させていただきます。(※この新しいAutoSamplerは今すぐ利用が可能です。)

多目的・制約付き最適化を本格サポート

新しいAutoSamplerは、AutoSampler公開当初からの設計原理である

  • 評価回数、探索空間、制約の有無や目的数等の問題設定に応じて、それらを適切に扱えるSamplerを自動選択する
  • デフォルトのSamplerを常に用いた場合と比べて、経験的に同等かより良い探索結果が得られるようにSamplerを自動選択する

を継承し、サンプラ選択ルールに新たに多目的・制約付き最適化の本格的なサポートが行われました。

アップデートされたSampler自動選択ルールは

  • カテゴリ変数・条件分岐等の複雑な探索空間に対応したTPESampler
  • 連続・整数探索空間での多目的・制約GPSampler
  • 評価回数に対してスケーラブルなNSGAIISampler及び多数目的最適化に適したNSGAIIISampler

を目的数や評価回数に応じて自動的に切り替えるようになっています (図1)。本アップデートはOptuna v4.2-v4.5にかけてGPSamplerの制約・多目的対応が完了したことによって実現することができました。

図1:遂にAutoSamplerが制約付き最適化と多目的最適化を本格サポート。

図1:遂にAutoSamplerが制約付き最適化と多目的最適化を本格サポート。

AutoSamplerの利用方法

まず、最新のAutoSamplerの利用方法について紹介します。

はじめに、optuna, optunahub及びAutoSamplerの依存パッケージをインストールします。特に、optuna>=4.5が必要となることにご注意ください。

pip install -U optuna optunahub
pip install -r https://hub.optuna.org/samplers/auto_sampler/requirements.txt

あとは、optunahub.load_module関数を用いて “samplers/auto_sampler” パッケージを読み込み、パッケージに含まれるAutoSamplerを従来のSamplerと同様に使用するだけです。以下はコピー & ペーストで実行可能なコード例です。

import optuna
import optunahub


def objective(trial: optuna.Trial) -> tuple[float]:
    x = trial.suggest_float("x", 0, 5)
    y = trial.suggest_float("y", 0, 3)
    return  4 * x**2 + 4 * y**2, (x - 5)**2 + (y - 5)**2

study = optuna.create_study(
    directions=["minimize", "minimize"],
    sampler=optunahub.load_module("samplers/auto_sampler").AutoSampler()
)
study.optimize(objective, n_trials=300)

print(study.best_trials)

ただし、既にAutoSamplerを利用されている方については、1度load_moduleをforce_reload=True付きで実行し、ローカルにキャッシュされた古いバージョンのAutoSamplerを最新版に更新する必要があります。

python
>>> import optunahub; optunahub.load_module("samplers/auto_sampler", force_reload=True)

性能評価

次に、最新のAutoSamplerの多目的最適化、制約付き最適化の性能について、デフォルトSamplerとの性能比較の結果を紹介します。

多目的最適化

図2は、最新のAutoSamplerとOptunaのデフォルトSamplerを多目的最適化において広く使われているWFG1ベンチマーク問題で評価した結果です。デフォルトSamplerは問題設定に依らず常にNSGA-IIですが、最新のAutoSamplerは、評価回数・目的数・探索空間の特徴に応じてGPSampler, TPESampler, NSGAIISampler, NSGAIIISamplerの4手法を自動で使い分けることで、優れた探索性能を実現しています。

図2: WFG1ベンチマークの実験結果

図2: WFG1ベンチマークの実験結果

制約付き最適化

制約付き最適化問題においても、最新のAutoSamplerとデフォルトSamplerを比較しました。ベンチマーク問題としてbbob-constrainedに収録されている3つの制約を持つ5次元のRotated Rastrigin関数を用いた結果を図3に示します。最新版のAutoSamplerでは、Optuna v4.2以降に導入された制約付き最適化向けGPSamplerなども採用されるルールとなっており、高い探索性能を発揮できています。詳細は[Optuna v4.2] ガウス過程を利用した Sampler の不等式制約対応をご確認ください(制約付き多目的最適化についても、同様にOptuna v4.5で導入されたばかりの制約付き多目的GPSamplerが採用されるようになっています。)

図3: Rotated Rastrigin関数のベンチマーク結果

図3: Rotated Rastrigin関数のベンチマーク結果

おわりに

多目的・制約付き最適化のサポートを強化した最新のAutoSamplerについて紹介しました。AutoSamplerを用いることで、ユーザは最適化アルゴリズムの使い分けを意識することなく、デフォルトSamplerと同等以上の性能を経験的に得ることができます。大変強力かつ便利な機能ですので、是非ともご活用いただければ幸いです。

本アイテムは、Optuna v5ロードマップにて「自動アルゴリズム選択機能を持つAutoSamplerの多目的最適化・制約付き最適化向けの機能強化」として掲げていたものであり、今回のアップデートでOptuna v5の正式リリースに向けてまた一歩前進することができました。今後もロードマップに従って着実に新機能の追加や既存機能の強化を継続して行っていく予定ですのでお楽しみに!

  • Twitter
  • Facebook