獲得関数(Acquisition Function)とは、ベイズ最適化において、次の探索点(評価するパラメータ)を決定するために用いられる関数です。ベイズ最適化は、未知の関数(目的関数)の最適解を効率的に探索するための手法であり、機械学習におけるハイパーパラメータ最適化などで利用されます。
獲得関数の役割
ベイズ最適化では、目的関数の形状を直接知ることができないため、ガウス過程回帰などの手法を用いて目的関数の代理モデル(サロゲートモデル)を構築します。獲得関数は、このサロゲートモデルを用いて、次の探索点を決定するための指標となります。
獲得関数は、以下の2つの要素を考慮して、次の探索点を決定します。
- 活用(exploitation):
- サロゲートモデルにおいて、目的関数の値が高い(または低い)と予測される領域を探索します。
- 探索(exploration):
- サロゲートモデルにおいて、不確実性が高い領域(まだ十分に探索されていない領域)を探索します。
獲得関数は、この活用と探索のバランスを調整することで、効率的に最適解を探索します。
代表的な獲得関数
代表的な獲得関数として、以下のものが挙げられます。
- 期待改善量(Expected Improvement、EI):
- 現在の最適値よりも目的関数の値が改善すると期待される量を最大化します。
- 改善確率(Probability of Improvement、PI):
- 現在の最適値よりも目的関数の値が改善する確率を最大化します。
- Upper Confidence Bound(UCB):
- サロゲートモデルの予測値と不確実性を考慮し、上限値(予測値+不確実性)を最大化します。
獲得関数の選択
獲得関数の選択は、最適化の目的や問題の特性によって異なります。一般的に、EIは活用と探索のバランスが良く、多くの問題で有効であるとされています。UCBは、探索を重視する場合に適しています。
獲得関数は、ベイズ最適化において、次の探索点を決定するための重要な役割を担います。適切な獲得関数を選択することで、効率的に最適解を探索できます。