jiku log

データサイエンスの核心を掴む : 学びと発見の記録

「増補改訂版 ベイズ最適化」を読む ~第4章 Optunaによるベイズ最適化の実装方法 ②GPSamplerの発展~

はじめに

データを使って仮説の生成と検証を行なうための方法であるベイズ最適化を学ぶために,今村秀明・松井孝太 著「増補改訂版 ベイズ最適化 ー適応的実験計画の基礎と実践ー」を読むことにした。

本記事は,「第4章 Optuna によるベイズ最適化の実装方法」における,GPSamplerの発展的な使い方に関する読書メモである。

4.5 GPSampler の発展的な使い方

本節では,GPSamplerをカスタマイズして利用する方法について説明している。


GPSamplerは,特定の実装に特化することで,簡潔な実装と高速な動作を両立している。一方で,ベイズ最適化アルゴリズムを切り替えてサポートすることは,そのままではできないようになっている。
GPSamplerでは,別種のアルゴリズムを試したいときはGPSamplerのソースコードを書き換えて実装することが想定されているが,GPSamplerは簡潔に実装されているので,書き換えは比較的簡単である。

4.5.1 GPSamplerのソースコード解説

OptunaのGitHubのサイトは以下の通りである。
github.com

本項で紹介されている,GPSamplerにソースファイルの構造とGitHubの各リンクを合わせて書くと以下のようになる。なおリンクは,2025/08/09現在のものである。

optuna
┣━samplers
┃ ┗━_gp
┃   ┗━sampler.py
┗━_gp
  ┣━search_space.py
  ┣━gp.py
  ┣━acqf.py
  ┗━optim_mixed.py

sampler.pyの実装

sampler.pyはガウス過程ベースのベイズ最適化アルゴリズムを実行する。

  • 終了したトライアルをもとにサンプラーが取り扱う探索空間を推論する
    • Optunaが,目的関数と短s九空間を同時に定義することから生じる処理である
  • 推論された探索空間に対して,次のトライアルで評価する探索点をサンプルする

といった処理が実装されている。

search_space.pyの実装

search_space.pyには,

  • 離散変数・カテゴリカル変数を連続変数に変換する
  • その逆変換を行なう
  • 変換後の探索空間から点をサンプリングする

といった処理が実装されている。

gp_pyの実装

gp.pyには,

などが実装されている。実装にはPyTorchが用いられている。

acqf.pyの実装

acqf.pyには獲得関数の計算方法が実装されている。

optim_mixed.pyの実装

optim_mixed.pyには獲得関数の最適化法が実装されている。

4.5.2 GPSamplerのカスタマイズ方法

GPSamplerのカスタマイズ方法は,サンプルコードで紹介されている。
github.com

サンプルコードのツリー構造は以下のようになっている。
customize_gp_sampler
┣━before.py
┣━sampler.py
┗━after.py

before.pyでは,

import optuna
...
if __name__ == "__main__":
    study = optuna.create_study(
        sampler=optuna.samplers.GPSampler(),
    )
...

のように,Optunaのsamplersが読み込まれている。

一方,after.pyでは,

import optuna

from sampler import GPUCBSampler
...
if __name__ == "__main__":
    study = optuna.create_study(
        sampler=GPUCBSampler(),
    )
...

のように,after.pyと同じ階層にあるsampler.pyが呼び出されており,このsampler.pyで独自に実装されているGPUCBSamplerが使用されている。

sampler.pyのGPUCBSamplerは,

from optuna.samplers._gp import sampler as optuna_gp_sampler
...
class GPUCBSampler(optuna.samplers.GPSampler):
    def __init__(
...

のように,Optunaの

このように実装する場合はOptunaのGPSamplerを継承して,必要な部分だけを書き換える。

4.7 OptunaHub の利用

OptunaHubは,Optuna v4.0.0で導入されたOputuna向け機能共有プラットフォームである。
OptunaHubには,Optuna本体にはないような多種多様なアルゴリズムが実装されている。利用するには,Optuna本体に加えて,OptunaHubライブラリをインストールする必要がある。

OptunaHubのトップページ

まとめと感想

今回は,「第4章 Optuna によるベイズ最適化の実装方法」における,GPSamplerの発展的な使い方について学んだ。

本節ではOptunaのGPSamplerを深く理解し,必要に応じてカスタマイズする方法,さらにOptunaHubを活用してアルゴリズムの幅を広げる方法を学んだ。

GPSamplerはガウス過程ベースのベイズ最適化を実装しており,探索空間の推論から獲得関数の最適化までがコンパクトに実装されているため,ソースコードの読解や改造が比較的容易である。
カスタマイズの基本は,GPSamplerを継承し必要な部分のみを上書きする方法であり,これにより新たな獲得関数や探索戦略を組み込みやすくなる。
またOptunaHubを利用すれば,コミュニティや研究者が提供する多様なアルゴリズムを即座に試すことができ,実験・比較の効率が向上することが期待される。


製造業の最適化課題では,現場の制約条件や評価指標が特殊であるため,市販の最適化アルゴリズムをそのまま適用できないケースが多い。今回のGPSamplerカスタマイズ手法は,こうした現場特有のニーズに合わせたアルゴリズム開発を迅速に行なううえで非常に有用だと感じた。
さらにOptunaHubの存在により,既存の研究成果や他社の工夫を自社の実験環境に素早く取り込める可能性が高まるので,新しいアルゴリズムの試行コストが下がり,製造現場に最適化技術を導入するスピードが加速すると考えられる。

本記事を最後まで読んでくださり,どうもありがとうございました。