Optunaで学ぶベイズハイパーパラメータチューニング超入門
– 第3回: ベイズ最適化とは? Optunaのアルゴリズムの背後にあるもの –

Optunaで学ぶベイズハイパーパラメータチューニング超入門 – 第3回: ベイズ最適化とは? Optunaのアルゴリズムの背後にあるもの –

ハイパーパラメータのチューニングにおいて、ベイズ最適化は鍵となる役割を果たしますが、その背後にはどのような原理やアルゴリズムが働いているのでしょうか。

前回、Optunaの基本的な使い方やその背後にある技術的特徴について触れました。Optunaは、ユーザーが直感的にかつ効率的にハイパーパラメータのチューニングを行えるようデザインされています。

Optunaで学ぶベイズハイパーパラメータチューニング超入門 – 第2回: Optunaの紹介と基本的な使い方 –

しかし、Optunaの背後にある最適化の技術的側面は、ベイズ最適化という広く知られた理論に基づいています。ベイズ最適化は、近年、多くの研究や実応用で注目されており、その効率性や精度の高さから多岐にわたる領域での利用が進められています。

今回は、このベイズ最適化の基本原理や、それがどのようにOptunaの中で利用されているのかを、最低限の数式のみで説明します。

ベイズ最適化の基本原理

ベイズ最適化は、確率的最適化手法の一つとして知られ、特にハイパーパラメータのチューニングにおいて非常に効果的です。

その名の通り、ベイズの定理を活用して、既知のデータや事前知識を基に次の試行点を効率的に選択することが特徴です。

 

 ベイズ最適化とは?

ベイズ最適化は、未知の目的関数をモデル化するために確率モデル(例えばガウス過程)を使用し、このモデルの上で事後分布を更新することによって、次の試行点を選択します。つまり、過去の評価結果から最も情報量が高いと期待される点を効率的に選択することができます。

例えば、ある目的関数f(x)に対して、その最小値(または最大値)を取る入力xを探索する問題として定義されます。数式で示すと以下のようになります。

\displaystyle x^{*} = arg \underset{x} {min} f(x)

ただし、この目的関数f(x)は、その形状が完全には分からないと仮定されます。

 

 ベイズ最適化の利点と主な応用例

ベイズ最適化の主な利点は、目的関数の不確実性を直接モデル化し、それを考慮して最適な点を探索する点にあります。具体的には、ガウス過程を用いて関数の予測と不確実性をモデル化し、それを基に次に評価する点を選択します。

次の点を探すために、獲得関数 (acquisition function) と呼ばれる関数を用い、どの点が最も情報量が高いかを評価します。代表的な獲得関数として、Expected Improvement (EI) があります

\displaystyle EI(x)=E[max(f(x_{best})−f(x),0)]

ここで、f(x_{best})は現時点での最良の関数値を示します。この獲得関数を最大化する入力 x を選択することで、次の評価点を決定します。

ベイズ最適化の応用例としては、機械学習のハイパーパラメータチューニングや、高価なシミュレーションの最適化など、評価が高価であるか、評価回数に制限がある問題に適用されます。

 

 主なハイパーパラメータチューニング手法

ベイズ最適化を用いたハイパーパラメータチューニングは、機械学習のモデルの性能を向上させるための効果的な方法の一つです。

以下に、ベイズ最適化に関連する主な手法やアプローチを挙げます。

  • ガウス過程 (Gaussian Process, GP):
    • ガウス過程は非常に人気のあるベイズ最適化の手法の一つです。
    • 未知の関数の事後分布をモデル化するためにガウス過程を使用します。
  • TPE (Tree-structured Parzen Estimator):
    • TPEは、ハイパーパラメータの空間を確率的にモデル化する手法です。
    • 与えられたハイパーパラメータの設定の下での目的関数の期待値を推定します。
  • MCMC (Markov Chain Monte Carlo):
    • MCMCは、ハイパーパラメータ空間においてサンプリングするための手法で、ベイズ最適化のコンテキストで使われることがあります。
    • サンプリングに基づくアプローチで、効率的にハイパーパラメータ空間を探索します。

 

主流は、ガウス過程です。MCMCは単独で用いることもできますが、ガウス過程と合わせて使うケースが多いです。

では、Optunaはどうかというと、OptunaTPEです。

先ず、主流のガウス過程の方法を説明し、次にOptunaで利用されているTPEについて簡単に説明してきます。

 

ガウス過程入門

ガウス過程 (Gaussian Process; GP) は、ベイズ最適化の中核を成す確率的モデリング技術の1つです。

 

 ガウス過程とは?

ガウス過程はノンパラメトリック推定の一種で、データの複雑な構造を捉えるために、固定された関数の形状や構造を持たず観測データに応じて関数の形が変わります。

ガウス過程の関数の形状は、データと選択されたカーネルによってのみ定義されます。そのため、適切なカーネルを選択する必要があります。

ガウス過程は、特に少量のデータに対して、複雑な関数の形状を推定する場面で非常に有効です。ベイズ最適化のような、関数の不確実性を考慮しながら効率的なサンプリングを行うためにガウス過程が利用されます。

 

 ガウス過程の定義

ガウス過程は、関数の集合に確率分布を与えるものとして定義されます。

入力xに対する関数f(x)ガウス過程\mathcal{GP}に従うとき、任意の有限集合x_1,x_2,\cdots ,x_nに対して、出力f(x_1),f(x_2),\cdots ,f(x_n)が多変量正規分布に従うと言います。

数式で表すと、ガウス過程は以下のようになります。

\displaystyle f(x) \sim \mathcal{GP}\left( m(x),k(x,x^{′}) \right)

ここで、m(x)は平均関数、k(x,x′)はカーネル(または共分散)関数です。代表的なカーネル関数として、平方指数カーネル(RBFカーネル)があります。

\displaystyle k(x,x^{'}) \sim exp\left( - \frac{\left\| x - x^{'} \right\|^2}{2l^2} \right)

ここで、lカーネルの幅を制御するハイパーパラメータで、これにより関数の滑らかさが決まります。

 

 ガウス過程による関数の推定

ガウス過程(GP)を使用して関数を推定するというのは、実際の関数を知らないが、ある入力点での関数の値を観測できるという状況において、未知の入力点での関数の値を予測することを意味します。

要は、ガウス過程を用いると、既知のデータ点に基づいて、新しい入力点x_∗での関数値f(x_∗))の事後分布を得ることができます。

 

以下は、ガウス過程を用いた関数の推定の基本的なステップです。

  1. 事前分布の設定: この時点では、関数の形については何も知らないと仮定します。事前分布は、通常、平均関数と共分散関数(またはカーネル)で定義されたガウス過程です。
  2. データの観測: いくつかの入力点で関数の値を観測します。これらの観測値は、後のステップで関数の形を推定するために使用されます。
  3. 事後分布の計算: 観測データを使用して、関数に関する事前分布を更新し事後分布を計算します。事後分布もまたガウス過程として表現されます。
  4. 未知の入力点での予測: 事後分布を使用して、未知の入力点での関数の値とその不確実性を予測します。ガウス過程による予測は、平均と分散で表されるのが一般的です。

事前分布:
事前分布では、データがまだ考慮されていないため、平均関数とカーネル(または共分散)関数は事前知識や特定の仮定に基づいて設定されます。多くの場合、事前分布の平均関数は単純にゼロ関数(すべての入力点で0の値を取る関数)として設定されることが一般的です。

事後分布:
データが観測された後、事後分布は事前分布を更新するために計算されます。具体的には、観測データとカーネル関数を使用して、新しい平均関数とカーネル関数が導出されます。この更新は、ガウス過程の再生性と、観測データがガウスノイズを伴って得られるという仮定に基づいています。

 

 ハイパーパラメータチューニングの流れ

ガウス過程(GP)を活用したハイパーパラメータチューニングの流れは以下のようになります。

ステップ 説明
1. 事前分布の設定 平均関数と共分散関数(またはカーネル)を定義します。
2. 初期サンプルの選択 ハイパーパラメータの探索空間からランダムにいくつかのサンプル点を選択します。

選択したハイパーパラメータの組み合わせで目的関数(例えば、検証データにおける誤差)を評価します。

3. ガウス過程モデルの構築 これまでのサンプルとその評価結果を使用して、ガウス過程による事後分布を構築します。
4. 獲得関数の定義 獲得関数は、次に試すハイパーパラメータの候補を決定するための指標となります。

主な獲得関数としては、Expected Improvement (EI)、Probability of Improvement (PI)、Upper Confidence Bound (UCB) などがあります。

5. 獲得関数の最大化 獲得関数を最大にするハイパーパラメータの組み合わせを見つけるため、数値的な最適化アルゴリズム(例えば、勾配ベースの方法やランダムサーチ)を使用します。
6. 新しいハイパーパラメータの評価 獲得関数が最大となるハイパーパラメータで目的関数を再評価します。
7. 終了条件の確認 所定のイテレーション数に達する、獲得関数の値が一定の閾値以下になる、などの終了条件を確認します。

条件を満たしていない場合、ステップ3に戻ります。

8. 最適なハイパーパラメータの選択 これまでのイテレーションで最も良い評価を得たハイパーパラメータの組み合わせを最適として選択します。

 

この流れを繰り返すことで、目的関数を最小化(または最大化)するハイパーパラメータの組み合わせを効率的に探索することができます。ガウス過程は関数の不確実性をモデル化しているため、未評価のハイパーパラメータの組み合わせでも、その評価結果を予測することが可能です。これにより、効率的な探索が可能となります。

 

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

Optuna高度な自動ハイパーパラメータ最適化ツールとして広く知られていますが、その背後にはベイズ最適化のアイディアが利用されています。

特に、OptunaTree-structured Parzen Estimator (TPE)というアルゴリズムを採用しています。

 

 Optunaが採用するベイズ最適化の特徴

ベイズ最適化は、前の実験結果を基に次に試すべきハイパーパラメータを選択します。Optunaでは、TPEというアルゴリズムを使用してこの選択を行います。

TPEは、ベイズ最適化の一形態であり、高速かつ高精度なハイパーパラメータ探索を実現しています。

TPEは、過去の試行結果を2つのモデル、すなわち成功した試行のモデルと失敗した試行のモデルに分けて学習します。これにより、次に試すべきハイパーパラメータの提案が非常に効率的に行われます。

 

 Tree-structured Parzen Estimator (TPE)の解説

TPEは、ハイパーパラメータのサンプリング方法としてParzen窓推定を採用しています。

具体的には、以下の2つの密度関数を利用します。

  • l(x): 過去の良好な試行のハイパーパラメータの密度関数
  • g(x): 過去の不良な試行のハイパーパラメータの密度関数

次に試すハイパーパラメータは、以下の比率が最も高いものが選ばれます。

\displaystyle r(x) = \frac{l(x)}{g(x)}

この方法により、成功した試行の領域に近いハイパーパラメータを効率的にサンプリングすることができます。

 

 ハイパーパラメータチューニングの流れ

OptunaTPE(Tree-structured Parzen Estimator)を活用したハイパーパラメータチューニングの流れは以下の通りです。

ステップ 説明
1. 初期サンプリング 最初のデータポイントをいくつかサンプルする。
2. 尤度モデルの構築 利用可能なデータを基に、成功したトライアルと失敗したトライアルの2つのモデルを構築する。
3. 獲得関数の定義 上記の2つのモデルから、新しいハイパーパラメータ値をサンプルするための獲得関数を定義する。
4. 新しい設定のサンプリング 獲得関数を基にして、新しいハイパーパラメータの組み合わせをサンプルする。
5. 目的関数の評価 選択されたハイパーパラメータの組み合わせで目的関数を評価する。
6. モデルの更新 新しいデータポイントでモデルを更新する。
7. 反復処理 停止基準を満たすまで、ステップ2から6を繰り返す。

 

TPEアルゴリズムはベイズ最適化のアイディアを採用しつつ、特定のモデリング手法(ツリー構造のParzen窓推定)を採用しており、ガウス過程とは異なるアプローチを取っています。OptunaでのTPEの利用は非常に効果的であり、多くのタスクにおいて高速かつ正確なハイパーパラメータの探索を実現しています。

 

 TPE(Optuna) vs ガウス過程

Tree-structured Parzen Estimator(TPE)ガウス過程(GP)は、ハイパーパラメータ最適化のための異なるアプローチを持っています。

以下に、それぞれのメリットとデメリットを、簡単にまとめました。

Tree-structured Parzen Estimator (TPE) ガウス過程 (GP)
メリット 計算効率: TPEはサンプリングのための計算コストが低いため、大規模な最適化タスクに適しています。

柔軟性: TPEは、連続的なハイパーパラメータだけでなく、カテゴリカルなハイパーパラメータにも対応しています。

スケーラビリティ: 高次元のハイパーパラメータ空間でも、TPEは比較的うまく機能します。

予測の不確実性: GPは、関数の予測とともに不確実性も提供します。これにより、探索と活用のバランスを取ることが容易になります。

理論的背景: GPは強固な数学的基盤に基づいており、関数の挙動に関する洞察を提供します。

カーネルの選択: ガウス過程では、さまざまなカーネル(カーネル関数)を選択することができ、問題に最適化されたモデルを構築することができます。

デメリット 理論的背景: TPEの背後にある理論は、ガウス過程などの他の方法と比べてやや直感的であり、数学的に厳密ではありません。 計算コスト: ガウス過程の学習と予測は、データ点の数に対して立方の計算量が必要となるため、大規模なタスクでは非効率的です。

スケーラビリティ: 高次元のハイパーパラメータ空間では、ガウス過程は計算的にコストがかかります。

 

TPEガウス過程はそれぞれの利点と欠点があり、最適化するタスクや目的に応じて適切な方法を選択する必要があります。

 

まとめ

今回は、このベイズ最適化の基本原理や、それがどのようにOptunaの中で利用されているのかを、最低限の数式のみで説明しました。

  • ベイズ最適化の概念とその重要性
  • ガウス過程の基礎と、ハイパーパラメータチューニング
  • Optunaのベイズ最適化におけるアルゴリズムTree-structured Parzen Estimator (TPE)について

ただ、ハイパーパラメータチューニングは手作業でも自動化でも非常に時間が掛かるものです。

では、Optunaではどのように時間短縮を図っているのでしょうか。

次回は、「チューニング時間の短縮に貢献するプルーニング」というお話しをします。

Optunaで学ぶベイズハイパーパラメータチューニング超入門 – 第4回: チューニング時間の短縮に貢献するプルーニング –