Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

Surrogate Optimizer

Surrogate Optimizer は、サンプリング済みの trial 群から応答曲面(サロゲートモデル)を学習し、その曲面上で最適化を実行して最適なパラメータ値を推定します。 追加の trial 実行は不要です。

使い方

  1. 目的関数、サロゲートモデル、最適化手法を選択します。
  2. Run Optimization をクリックすると、完了済み trial 全体でサロゲートを学習し、log に記録された各変数の宣言レンジ(取得できない場合はサンプリングされたパラメータ範囲)内で最適化を行います。
  3. 推定最適点は、パラメータと予測目的値を、Trial Table ウィジェットと同じ形式の表で示します。多目的モードでは、予測パレートフロントをウィジェット内の散布図で表示し、観測 trial も重畳できます(下記「結果の表示」を参照)。

結果の表示

  • 最適変数の組み合わせ:推定最適点(多目的では予測パレートフロントの各点)のパラメータ値と予測目的値を、Trial Table ウィジェットと同じ表形式(ストライプ、列幅可変、横スクロール)で表示します。
  • 予測パレートフロント散布図(多目的):予測フロントを目的空間の散布図でウィジェット内に表示します。目的が 2 つなら obj0 × obj1 の 2D、3 つ以上なら 3D view トグルで 2D と 3D を切り替え、X / Y(3D は Z も)の表示軸を選べます。フロントは Pareto Scatter ウィジェット(2D、3D)にも金色で重畳表示されます。
  • 観測点の重畳:既存 trial を散布図に重ね、予測フロントが観測結果からどれだけ改善しているかを見比べられます。点は他の散布図と同じ規約で、観測パレートフロント(赤)、被支配(青)、実行不可能(グレー)に分類され、それぞれ表示のオンとオフを切り替えられます。軸スケールは、フロント点と観測点の双方を含むように取ります。
  • 最適化履歴プロット(単目的):全 trial の目的値推移に、予測最適値を水平線と星マーカーで強調表示します。

応答曲面(ヒートマップ)スライスの表示は廃止しました。 サロゲートの当てはまりは下記の検証プロットで、最適化の改善度は予測フロントや履歴プロットで確認できます。

サロゲートモデル

  • GP-FITC:ARD Matérn 5/2 カーネルによるガウス過程回帰(Kriging)です。egobox-gp バックエンドを使います。M = min(N, 100) 誘導点による FITC スパース近似で、最大 2000 trial で学習します(超過分はサブサンプリング。下記参照)。予測平均に加えて不確実性($\pm 1.96\sigma$)を提供します。デフォルトの GP 選択肢です。
  • GP-VFE:GP-FITC と同じアーキテクチャですが、Variational Free Energy 下界を使用します。やや滑らかで保守的なフィットを生成します。GP-FITC の曲面が過学習気味やスパイク状に見える場合に推奨します。
  • GP-MOE:egobox-moe による混合エキスパート GP です。ガウス混合モデルで入力空間をクラスタリングし、クラスタごとに 1 つの FITC エキスパートを学習します(最大 3 クラスタ、500 点以下のサブサンプルでクロスバリデーション選択)。不連続またはレジームスイッチング型の目的関数に最適です。学習が失敗した場合は、暗黙的にフォールバックせずエラーを表示します。
  • Ridge:線形リッジ回帰です。高速なベースラインですが、曲面は平面のため、最適点は常に宣言レンジ(探索範囲)の境界上になります。
  • LightGBM:勾配ブースティング決定木由来のモデルを、LightGBM の Random Forest モードで学習します。非平滑や不連続な応答曲面にも強い一方、予測は区分定数で、学習範囲外への外挿は平坦になり、不確実性の推定は提供されません。

自動モデル選択

モデル選択で Auto (cross-validated) を選ぶと、サロゲートを自動で選定します。 各候補をクロスバリデーションし、平均 CV R² が最も高いモデルを学習します。

  • 候補:Ridge、GP-FITC、GP-VFE、LightGBM です。GP-MOE は Auto から除外します。クロスバリデーションによるクラスタ探索が高コストで、滑らかや線形なデータでは単一 GP に劣化するため、コスト対効果が悪いからです。応答が不連続や多峰だと分かっている場合は、GP-MOE を手動で選んでください。
  • 基準:k-fold CV R² の平均です(検証パネルに表示されるものと同じ指標)。in-sample のフィットではなく、汎化性能を評価します。
  • 同点処理:CV R² の差が 1e-3 未満の候補は同点とみなし、上記の並びでに来る(より単純で低コストな)候補を選びます。完全に線形なデータでは Ridge も GP も R² ≈ 1 に達するため、わずかな差で複雑な GP を選ばず、単純な Ridge を残します。

Auto 学習後、ウィジェットには、選択されたモデルと候補ごとの CV R² ランキングが表示されます。 選ばれた具体的なモデルは、以降のすべて(獲得関数による提案や制約)に使われます。

検証プロット(予測 vs 実測)

Fit & Validate 後、out-of-fold(CV で各 fold を一度ずつ検証側にしたとき)の予測値と実測値の散布図を表示します。 点が対角線 y=xy = x に近いほど、サロゲートの汎化性能が高いことを示します。

多目的フィットでは、パレートフロント(非劣、rank 0)の trial を赤で強調し、それ以外を青で描きます。 さらに、フロント点のみで算出した out-of-fold の R2R^2 や RMSE をプロット上部に表示します。 全体の当てはまりが良くても、最適化で実際に使うフロント近傍だけ系統的にズレている場合があるため、この分類表示でフロント近傍の近似精度を直接確認できます(単目的フィットはフロント概念が無いため、全点青のままです)。

最適化手法の選び方

Surrogate Optimizer が曲面(サロゲートモデル)上で使う最適化手法には、単一目的最適化(推定最適点の探索)と、次候補の提案(実評価するパラメータの推奨)の 2 つがあります。 いずれも GP 以外のサロゲートでも動作しますが、獲得関数(EI / LCB / EHVI)は不確実性が必要なため、GP 系(GP-FITC / GP-VFE / GP-MOE)のみ対応します。

曲面最適化(推定最適点の探索)

手法 微分情報 探索の単位 多目的 向く曲面 選ぶべき場面
Multi-start L-BFGS 数値勾配 単一点(マルチスタート) 非対応 滑らか、単峰 曲面が滑らかで単峰性が強いとき。少ない評価回数で収束
CMA-ES 不要(分布適応) 単一の適応分布 非対応 緩い多峰、相関、スケール歪み 連続最適化の強力なデフォルト。歪みや緩い多峰に頑健
NSGA-II 不要 集団(n 個体) 対応 強い多峰、不連続 多峰性が強い、不連続な曲面、および多目的モードの予測パレートフロント算出(自動)
Random Search 不要 乱数多点 非対応 任意 常に動作する堅牢なベースライン
  • 滑らかで単峰性が強いなら、Multi-start L-BFGS が少ない評価回数で収束します。
  • 緩い多峰性や、変数間の相関やスケールの歪みがあるなら、CMA-ES が分布を適応させて頑健です。
  • 強い多峰性や不連続な曲面(LightGBM のような区分定数モデルを含む)には NSGA-II が向き、多目的モードでは予測パレートフロントの算出に自動で使われます。
  • 迷ったときは、Random Search をベースラインとして確認できます。

獲得関数(次候補の提案)

GP サロゲート(GP-FITC / GP-VFE / GP-MOE)を学習した後、Suggest next trials で次に実評価すべきパラメータを提案します。 いずれも獲得関数で、目的関数が 1 つか複数かで使う関数が変わります。

  • EI(期待改善量、Expected Improvement):単一目的最適化向けです。予測改善量と不確実性のバランスを取るデフォルトです。
  • LCB(下限信頼境界、Lower Confidence Bound):単一目的最適化向けです。目的関数の下限が最も小さい点を選び、探索を重視します。
  • EHVI(期待ハイパーボリューム改善、Expected Hypervolume Improvement):多目的最適化向けです。評価すればパレートフロントの支配ハイパーボリュームを最も増やす点を提案します(GP のみ)。
  • バッチ候補(最大 10 件)は Constant Liar 戦略で生成され、Copy enqueue JSON で Optuna の study.enqueue_trial() 用にエクスポートできます。

次候補の提案(獲得関数)

GP サロゲートを学習した後、最適化結果の下に Suggest next trials セクションが表示されます。 獲得関数を使用して、次の実評価に推奨するパラメータ設定を提案します。 いずれも獲得関数で、目的関数が 1 つか複数かで使う関数が変わります。

  • EI(期待改善量、Expected Improvement):単一目的最適化向けです。予測改善量と不確実性のバランスを取ります(デフォルト)。
  • LCB(下限信頼境界、Lower Confidence Bound):単一目的最適化向けです。目的関数の下限が最も小さい点を選択します。
  • EHVI(期待ハイパーボリューム改善、Expected Hypervolume Improvement):多目的最適化向けです。予測パレートフロントの下に Suggest next trials (EHVI) セクションが表示され(GP サロゲートのみ)、評価すればパレートフロントの支配ハイパーボリュームを最も増やすと期待されるパラメータ設定を推奨します。固定された共通乱数のサンプル行列を用いたモンテカルロで推定され、提案が決定的になります。

バッチ候補(最大 10 件)は Constant Liar 戦略で生成されます。 選択した候補を「嘘」の観測値として一時追加し、再フィットしてから次の候補を選択します。

Copy enqueue JSON ボタンは、Optuna の study.enqueue_trial() で使用できる JSON 配列として、提案パラメータをクリップボードへコピーします。

多目的(EHVI)の操作

  • 候補数(1〜10、デフォルト 3)を設定し、Suggest next trials (EHVI) をクリックします。
  • 結果テーブルには候補ごとに、パラメータ値、各目的の予測値 ± 標準偏差、EHVI スコアが表示されます。
  • いずれかの目的が GP 以外のモデルを使う場合、または計算実行中は、ボタンが無効になります(ヒント付き)。
  • バッチ候補は単目的パスと同じ Constant Liar 戦略を使い、Copy enqueue JSON ボタンは提案パラメータを Optuna の study.enqueue_trial() 用にコピーします。

制約を考慮した最適化

Study に制約列がある場合(Optuna の規約では、値 ≤ 0 が実行可能)、Fit セクションに Use constraints (N) チェックボックスが表示されます(N は制約列数)。

このチェックボックスを有効にすると、オプティマイザは次の動作をします。

  1. 目的モデルとともに、各制約に対して目的関数と同じ種別のサロゲートを学習します(GP なら平滑な実行可能性確率が得られます。完全に線形でノイズゼロな制約で GP 学習が退化した場合のみ、その制約は Ridge にフォールバックします)。
  2. 最適化時のコスト関数に制約ペナルティを追加します。

cost(x)=signμ^y(x)+100imax(0,c^i(x)z0,i)\text{cost}(x) = \text{sign} \cdot \hat{\mu}_y(x) + 100 \cdot \sum_i \max(0, \hat{c}i(x) - z{0,i})

ここで z0,iz_{0,i} は正規化制約空間での実行可能性境界、$\text{sign} = 1$(最小化)または 1-1(最大化)です。 3. 結果に P(feasible) の割合と各制約の予測値を表示します。

表示される実行可能性確率は、各制約の P(ci0)P(c_i \le 0) を全制約で積算したものです(GP なら Φ\Phi による平滑な確率、Ridge フォールバック時はハード指標)。

Pfeas(x)=iP(ci0x)P_\text{feas}(x) = \prod_i P(c_i \le 0 \mid x)

Suggest next trials セクションの候補テーブルには P(feas) 列が追加され、各候補の実行可能性確率を表示します。 0.5 未満の値は、オレンジや赤でハイライトされます。

注意事項

  • 探索は、各変数の宣言レンジ(log に記録された探索空間)が張る超直方体に制限されます。観測データの外側でも、宣言レンジ内なら探索しますが、レンジ外へは出ません。宣言レンジを取得できない変数(カテゴリカルや旧 Uniform 形式)は、サンプリング範囲にフォールバックします。データから離れた領域ほど GP の予測は不確実になるため、検証プロットや予測の不確実性も併せて確認してください。
  • 目的の方向(最小化 / 最大化)は、Study のメタデータから自動で判定されます。
  • R2R^2 は、訓練データへのサロゲートの当てはまりを示します。$R^2$ が低い場合、推定最適点は信頼できません。
  • 推定最適点は、あくまでモデルによる推定です。採用する前に、実評価で検証してください。
  • カテゴリカルパラメータは対象外で、数値パラメータのみを最適化します。
  • 制約チェックボックスは、単目的パスでのみ表示されます。多目的モードでは現在、制約に対応していません。
  • 学習中は進捗バーと現在の段階(モデル選択、交差検証、最終学習など)が表示され、Cancel ボタンで中止できます。キャンセルは、各学習ステップの境界で反映されます。

パレートフロント集中サロゲート

多目的フィットでは、trial 数が GP の誘導点上限(100)を超える場合、誘導点を非劣(パレートフロント)trial に集中させます。 これにより、改善が意味を持つパレートフロント近傍でサロゲートが最も正確になります。 trial が 100 以下のときは全点が誘導点として使われる(Z = X)ため、この集中は結果に影響しません。

大規模データのサブサンプリング

学習に使う trial 数が上限(2000)を超える場合、学習前に代表的な部分集合へ間引きます。 GP-FITC の学習コストは trial 数 NN にほぼ比例し、さらに Fit & Validate は同一モデルを 7 回学習します(8:2 ホールドアウト 1 回、5-fold CV 5 回、全データ最終 1 回)。 そのため NN が 1 万規模になると、1 分以上かかります。 一方 FITC は情報を 100 個の誘導点へ圧縮するため、代表的な部分集合で学習しても応答曲面の質はほとんど落ちません。

間引きでは、予算の半分をエリートとして必ず残し、残りを非エリートからランダムに補充します(シード固定で決定的)。

  • 単目的:目的値の両端(最良側、最悪側)をエリートにします。フィット自体は最適化方向に依存しないため、両端を残せば、最大化と最小化のどちらでも最適点側が保持されます。
  • 多目的:非劣ランクの昇順でエリートを選びます。rank 0(パレートフロント)から始め、予算に満たなければ rank 1, 2, … と対象を広げます。全目的で同一の部分集合を共有するため、予測パレートフロントが整合します。

ランダム補充を空間充填の代わりに使うのは、Optuna の trial が良い領域に密集する性質を保つためです。 空間充填は密度を均してしまい、最適化で重要な良い領域を薄めてしまいます。

trial が 2000 以下のときは間引きは行われず、全 trial で学習します。