gp_simulation_animation_tkbo プログラム仕様

概要:

1次元ベイズ最適化のシミュレーションとアニメーションを生成します。

詳細説明:

tkboライブラリを使用して、様々なモデルと獲得関数によるベイズ最適化の進行を可視化します。 各ステップで次の評価点がどのように選択され、ガウス過程の予測平均と不確実性がどのように更新されるかを アニメーションで示します。

主な機能:

獲得関数「posterior mean maximization (平均値最大化)」のカスタム実装。 真の目的関数 f_true の定義。 コマンドラインインターフェースの構築と引数の正規化。 tkboオプティマイザの作成と設定。 ベイズ最適化のステップごとの実行と結果のプロット。 アニメーションの保存(GIF形式)と表示。

class regression.gp_simulation_animation_tkbo.MeanAcquisition[ソース]

ベースクラス: BaseAcquisition

概要:

後方分布の平均値を最大化する獲得関数。

詳細説明:

tkboのBaseAcquisitionを継承し、予測された平均値が最も高い候補点を選択します。 maximizeがTrueの場合は平均値をそのまま返し、Falseの場合は平均値の負の値を返します。

属性:
param name:

獲得関数の名前。

type name:

str

name: str = 'mean'
regression.gp_simulation_animation_tkbo.acquisition_kwargs(acquisition: str, args: Namespace) dict[ソース]
概要:

指定された獲得関数に必要な引数を返します。

詳細説明:

各獲得関数(UCB、LCBなど)が初期化時に受け入れる固有のパラメータを、 引数argsから抽出して辞書形式で返します。

引数:
param acquisition:

獲得関数名を表す文字列。

type acquisition:

str

param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

獲得関数固有のパラメータを含む辞書。

rtype:

dict

regression.gp_simulation_animation_tkbo.build_parser() ArgumentParser[ソース]
概要:

コマンドライン引数パーサーを構築します。

詳細説明:

argparseモジュールを使用して、スクリプトの実行に必要な様々な設定(モード、モデル、 反復回数、出力ファイルなど)をコマンドラインから受け取るためのパーサーを作成します。

引数: なし。 戻り値:

returns:

設定されたArgumentParserインスタンス。

rtype:

argparse.ArgumentParser

regression.gp_simulation_animation_tkbo.choose_next_index(X_candidates: ndarray, y_all: ndarray, rng: Generator, args: Namespace) int[ソース]
概要:

次に評価すべき候補点のインデックスを選択します。

詳細説明:

既に観測されたデータと未観測の候補点に基づいて、tkboオプティマイザまたは 乱数ジェネレータを使用して、次の観測点として最適なインデックスを選択します。

引数:
param X_candidates:

候補点のNumpy配列。

type X_candidates:

numpy.ndarray

param y_all:

すべての候補点に対応するy値のNumpy配列(未観測点はnan)。

type y_all:

numpy.ndarray

param rng:

乱数ジェネレータインスタンス。

type rng:

numpy.random.Generator

param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

次に評価すべき候補点のインデックス。

rtype:

int

例外:
raises RuntimeError:

未観測の候補点が残っていない場合やtkboが候補を返さない場合。

regression.gp_simulation_animation_tkbo.compute_plot_posterior_and_score(X_candidates: ndarray, y_all: ndarray, args: Namespace)[ソース]
概要:

プロット用の後方分布の平均、標準偏差、獲得スコアを計算します。

詳細説明:

現在の観測データに基づいてtkboオプティマイザを作成し、すべての候補点に対する ガウス過程の予測平均、標準偏差、および獲得スコアを計算します。

引数:
param X_candidates:

候補点のNumpy配列。

type X_candidates:

numpy.ndarray

param y_all:

すべての候補点に対応するy値のNumpy配列(未観測点はnan)。

type y_all:

numpy.ndarray

param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

予測平均、標準偏差、獲得スコアのNumpy配列のタプル。

rtype:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]

regression.gp_simulation_animation_tkbo.effective_model(args: Namespace) str[ソース]
概要:

シミュレーションのモデルを決定します。

詳細説明:

モードがrandomまたはgridの場合、モデルもそれに合わせて設定されます。 それ以外の場合は、引数で指定されたモデルがそのまま使用されます。

引数:
param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

シミュレーションに実際に使用されるモデル名。

rtype:

str

regression.gp_simulation_animation_tkbo.f_true(x: ndarray | float) ndarray | float[ソース]
概要:

真の目的関数を定義します。

詳細説明:

1次元入力に対して、sin関数とcos関数の組み合わせで定義される値を返します。 これはベイズ最適化の対象となる未知の関数をシミュレートします。

引数:
param x:

評価点。

type x:

numpy.ndarray または float

戻り値:
returns:

xにおける関数の値。

rtype:

numpy.ndarray または float

regression.gp_simulation_animation_tkbo.infer_acquisition_from_mode(mode: str) str[ソース]
概要:

モード名から対応する獲得関数名を推論します。

詳細説明:

標準的なモード名(例: std, max, ucb, eiなど)に基づいて、 tkboライブラリで使用される実際の獲得関数名を決定します。

引数:
param mode:

モード名を表す文字列。

type mode:

str

戻り値:
returns:

対応する獲得関数名を表す文字列。

rtype:

str

例外:
raises ValueError:

指定されたmodeが認識できない場合。

regression.gp_simulation_animation_tkbo.main() None[ソース]
概要:

スクリプトのエントリーポイントです。

詳細説明:

コマンドライン引数を解析し、run関数を呼び出してシミュレーションを開始します。 エラーが発生した場合はトレースバックを出力します。

引数: なし。 戻り値: なし。

regression.gp_simulation_animation_tkbo.make_optimizer(X_candidates: ndarray, y_all: ndarray, args: Namespace, *, for_plot: bool = False)[ソース]
概要:

tkboオプティマイザインスタンスを作成します。

詳細説明:

コマンドライン引数と現在の観測データに基づいて、指定されたモデルと獲得関数を持つ tkboのoptimizerを作成し、初期化します。 プロット用のオプティマイザが必要な場合は、特定のモデルが上書きされることがあります。

引数:
param X_candidates:

候補点のNumpy配列。

type X_candidates:

numpy.ndarray

param y_all:

すべての候補点に対応するy値のNumpy配列(未観測点はnan)。

type y_all:

numpy.ndarray

param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

param for_plot:

プロット用としてオプティマイザを作成するかどうかを示すブール値。

type for_plot:

bool

戻り値:
returns:

初期化されたtkboオプティマイザインスタンス。

rtype:

tkbo.optimizer.Optimizer

例外:
raises ValueError:

指定されたモデルが認識できない場合。

regression.gp_simulation_animation_tkbo.normalize_args(args: Namespace) Namespace[ソース]
概要:

コマンドライン引数を正規化します。

詳細説明:

位置引数として与えられた値を対応するオプション引数にマッピングし、 文字列引数を小文字に変換するなどして、内部処理に適した形式に整えます。

引数:
param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

正規化されたargparse.Namespaceオブジェクト。

rtype:

argparse.Namespace

regression.gp_simulation_animation_tkbo.normalize_score_for_color(score: ndarray) ndarray[ソース]
概要:

獲得スコアを色付けのために正規化します。

詳細説明:

獲得スコアの配列を受け取り、最小値と最大値に基づいて0から1の範囲に正規化します。 これにより、プロットでの色付けに利用できます。NaN値はそのまま維持されます。

引数:
param score:

獲得スコアのNumpy配列。

type score:

numpy.ndarray

戻り値:
returns:

0から1に正規化されたスコアのNumpy配列。

rtype:

numpy.ndarray

regression.gp_simulation_animation_tkbo.run(args: Namespace) None[ソース]
概要:

ベイズ最適化のシミュレーションを実行し、アニメーションを生成します。

詳細説明:

真の関数f_trueからのデータ収集、ガウス過程の更新、次の評価点の選択を args.nmaxiterで指定された回数だけ繰り返します。 各ステップの状態を可視化し、アニメーションとして表示または保存します。

引数:
param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

戻り値: なし。

regression.gp_simulation_animation_tkbo.safe_score_for_plot(score: ndarray, observed_mask: ndarray) ndarray[ソース]
概要:

プロット用に獲得スコアを整形します。

詳細説明:

観測済みの点に対するスコアをNaNに設定し、未観測の点のみのスコアを返します。 これにより、プロット時に観測済みの点がスコアによって表示されないようにします。

引数:
param score:

獲得スコアのNumpy配列。

type score:

numpy.ndarray

param observed_mask:

観測済みデータを示すブールマスク配列。

type observed_mask:

numpy.ndarray

戻り値:
returns:

観測済み点のスコアがNaNに設定されたスコアのNumpy配列。

rtype:

numpy.ndarray