jiku log

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

「ベイズ最適化」を読む ~第3章 ベイズ最適化のアルゴリズム ①はじめに~

はじめに

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

本記事は,「第3章 ベイズ最適化のアルゴリズム」における,「はじめに」に関する読書メモである。

  • 本書の紹介ページ

www.kindaikagaku.co.jp

第3章 ベイズ最適化のアルゴリズム

3.1 はじめに

本章では,ベイズ最適化の全体像,特にベイズ最適化において重要な役割をはたす獲得関数について詳細に説明している。
本節では,ベイズ最適化の全体像について説明している。

ベイズ最適化のアルゴリズム

ベイズ最適化のアルゴリズムは以下の通りである。

  • 1: 入力 : 目的関数の統計モデル p(f|D_n)
  • 2: 初期条件として何点か \boldsymbol{x}を何点か選び目的関数値 yを観測する。
    •  n = n_0, \mathcal{D}_n = \{ (\boldsymbol{x}_i, y_i) \}_{i=1}^n
  • 3: while終了条件が満たされるまでdo
  • 4: Step 1:  \mathcal{D}_nを用いて目的関数の統計モデルを更新 :  p(f|\mathcal{D}_n)
  • 5: Step 2: 獲得関数を最大化して次の候補点を選ぶ。
    •  \boldsymbol{x}_{n+1} = \mathrm{argmax} \alpha(x|p, \mathcal{D}_n)
  • 6: Step 3:  \boldsymbol{x}_{n+1}における観測値 y_{n+1}を得る。
  • 7: Step 4: データ集合を更新 :  \mathcal{D}_{n+1} = \mathcal{D}_n \cup \{ (\boldsymbol{x}_{n+1}, y_{n+1}) \}
  • 8: end while
  • 9: 出力 : 得られた実行可能回の集合 \{ \boldsymbol{x}_n \}をもとに生成した fの最適解 \boldsymbol{x}^* の推定値\hat{\boldsymbol{x}}^*

獲得関数

獲得関数(Acquisition function)は,ベイズ最適化のアルゴリズムにおいて,次の候補点を選ぶための関数である。

獲得関数は,それまで集められたデータ \mathcal{D}_n = \{ (\boldsymbol{x}_i, y_i)_{i=1}^n \} (履歴(history))をもとに構成される関数である。
獲得関数の形は,

  • 入力 : 入力空間上のある点 \boldsymbol{x}
  • 出力 : 「その点 \boldsymbol{x}をどの程度選ぶべきか」という度合いを表す実数値

という関数であり, \alpha : \mathcal{X} \rightarrow \mathbb{R}という形をしている。

探索と活用のトレードオフ

獲得関数を構成するうえで重要なのは,探索と活用のトレードオフ(exploration-exploitation trade-off)という考え方である。
獲得関数の目的は,新たな候補点 \boldsymbol{x}_{n+1}を得ることであるが,この点を得るための方針として,

  • 探索 : 目的関数の振る舞いが分からないところから取る
  • 活用 : 目的関数が良いとわかっているところから取る

という2つの方針がある。

探索に偏ると,得られている目的関数の情報をブラッシュアップすることができない。一方で活用に偏ると,目的関数値をより良くする領域を見逃す可能性がある。子のトレードオフを制御しているのが獲得関数である。

目的関数における仮定

目的関数の性質に応じて適切な獲得関数は異なる。本章では,目的関数において以下のような仮定をおく。

ガウス過程回帰の利用

本書では目的関数を近似するために,平均関数0のガウス過程回帰を用いる。

観測

目的関数 f \boldsymbol{x}を与えて観測値 y \in \mathbb{R}を得る際には,


 \begin{align}
y = f(\boldsymbol{x}) + \varepsilon, \quad \varepsilon \sim \mathcal{N}(0, \sigma^2) \\
\end{align}
になるものとする。

カーネル関数

獲得関数を最適化する際に,獲得関数の勾配を考慮するが,勾配の計算方法について議論する際には,カーネル関数の微分可能性を仮定する。

計算時間

獲得関数の性質を調べる際に,計算量についても議論する。この際,入力 \boldsymbol{x}_{n+1}を目的関数 fに与えて y_{n+1}を得る時間 Cが,候補点を選ぶ時間よりも十分に短いとする。

候補点を選ぶ時間が長くかかる場合には,ベイズ最適化以外のブラックボックス最適化アルゴリズム(進化的アルゴリズムは擬似Monte Carlo法などのサンプリングベースのアルゴリズム)と比較する必要が出てくるためである。

まとめと感想

今回は,「第3章 ベイズ最適化のアルゴリズム」のうち, 獲得関数の性質や目的関数に関する仮定について学んだ。


ベイズ最適化の重要なプロセスとして,「次の候補点を選ぶ」というものがある。この選び方が,ベイズ最適化において重要になると理解した。
本章では様々な獲得関数について説明があるが,絶対的に良い獲得関数が存在する,というより,状況に応じて適切な獲得関数を選ぶことになると考えられる。その際に,獲得関数の特徴を把握する必要があるが,「探索と活用のトレードオフ」および計算量は,獲得関数を特徴付けるうえで重要な切り口だと感じた。


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