Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

GP

Gaussian Process

Gaussian Process (GP) は、TPE と同様にベイズ最適化の手法です。TPE のセクションで紹介したように、どちらもベイズ最適化を使用しますが、パラメータと目的関数値の関係をどのようにモデル化するかが異なります。

  • GP はパラメータ値が与えられたときの目的関数値の分布、つまり p(y|x) を直接モデル化します。
  • TPE は p(x|y)p(y) を別々にモデル化します。

Gaussian Process とは

Gaussian Process は、関数に対する確率分布を定義します。観測された試行の集合が与えられると、GP はサロゲートモデルをフィッティングし、探索空間内の未観測の点における平均(期待値)と不確実性(分散)の両方を予測します。

これが TPE に対する重要な利点です。GP は未観測の点で期待される値だけでなく、その予測にどれだけ自信があるかも把握しています。

GP ベースのベイズ最適化の仕組み

GP による最適化は、STEP2 から STEP3 を繰り返し実行することで行われます。

STEP1

TPE と同様に、まず初期の観測データを収集するためにランダムサンプリングが行われます。初期試行の数は「Number of startup trials」設定によって制御されます。

STEP2

観測データが与えられると、GP はサロゲートモデルをフィッティングします。探索空間内の各候補点 x について、モデルは以下を提供します。

  • 予測平均 μ(x): x における目的関数の期待値
  • 予測分散 σ²(x): x における予測の不確実性

STEP3

獲得関数(acquisition function)が次に評価すべき点を選択します。Tunny は期待改善量(Expected Improvement, EI)を使用し、以下のバランスを取ります。

  • 活用(Exploitation): 既知の良い点の近くを探索(μ(x) が低い箇所)
  • 探索(Exploration): 不確実性の高い領域を探索(σ(x) が高い箇所)

次の試行は、EI を最大化する点で実行されます。

GP Optuna vs GP BoTorch

Tunny には 2 種類の GP 実装があります。

GP Optuna GP BoTorch
Backend Optuna native BoTorch library
Multi-objective 未対応 対応
Constraints 対応 対応
Speed 高速 低速

多目的最適化を行わない場合は GP Optuna を推奨します。多目的ベイズ最適化には GP BoTorch が必要です。

計算量

GP は各ステップでカーネル行列の逆行列を計算する必要があり、その時間計算量は観測数 n に対して O(n³) となります。そのため、試行回数が増えるにつれて GP は TPE(O(dn log n))よりも低速になります。試行回数が多い場合は、TPE の方が実用的なことが多いです。

GP を使うべき場面

  • 1 回の試行にコストがかかり、最大限のサンプル効率が求められる場合
  • 目的関数が滑らかで連続である場合
  • 変数の数が比較的少ない場合(GP は次元数が増えるとスケーラビリティが低下します)

Reference