ベイズ最適化 べいずさいてきか
ベイズ最適化ガウス過程ハイパーパラメータ最適化獲得関数TPE自動機械学習
ベイズ最適化について教えて
簡単に言うとこんな感じ!
過去の試行結果から「次にどこを試せば良さそうか」を賢く予測しながら最適値を探す手法だよ。「探索(未知の場所を試す)」と「活用(良さそうな場所を深掘り)」のバランスを取りながら、少ない試行回数で最良の設定を見つけられるんだ!
ベイズ最適化とは
ベイズ最適化(Bayesian Optimization) は、評価コストが高い目的関数(ブラックボックス関数)を少ない試行回数で効率的に最適化するアルゴリズムです。ハイパーパラメータチューニングのように「1回の評価(学習)に数時間かかる」場面で特に効果を発揮します。
アイデアは「過去の試行結果を使って目的関数の形を予測(サロゲートモデルで近似)し、次に試すべき点を賢く選ぶ」というものです。探索にはガウス過程(GP) や TPE(Tree-structured Parzen Estimator) などのサロゲートモデルが使われます。
どこを次に試すかは獲得関数(Acquisition Function) が決めます。「まだ調べていない未知の領域を探索する(Exploration)」と「すでに良い値が出ている周辺を重点的に試す(Exploitation)」のトレードオフを数学的に管理します。
ベイズ最適化の流れ
1. 初期点をランダムサンプリングして評価
↓
2. サロゲートモデル(GP・TPEなど)を現在の観測点でフィット
↓
3. 獲得関数を最大化する次の探索点を決定
↓
4. その点で実際に目的関数を評価
↓
5. 観測点を追加して 2. へ戻る
↓
(設定した試行回数または時間に達したら終了)
| 要素 | 役割 | 代表的な手法 |
|---|---|---|
| サロゲートモデル | 目的関数の形を近似 | ガウス過程(GP)、ランダムフォレスト、TPE |
| 獲得関数 | 次の探索点を決定 | EI(期待改善量)、UCB(上信頼限界) |
歴史と背景
- 1970年代:Mockusらが最適化へのベイズアプローチを提案
- 2012年:Snoekら「Practical Bayesian Optimization of Machine Learning Algorithms」でDNNのチューニングへの応用を示す
- 2015年:BergstraらがTPEを提案し、ガウス過程より高次元の探索が可能に
- 2019年:OptunaがデフォルトサンプラーとしてTPEを採用し、実務での使いやすさが向上
ベイズ最適化 vs 他の探索手法
| 手法 | 試行回数 | 計算コスト | 高次元への対応 |
|---|---|---|---|
| グリッドサーチ | 多い | 高い | 苦手(次元の呪い) |
| ランダムサーチ | 中程度 | 低い | まあまあ |
| ベイズ最適化(GP) | 少ない | 中程度 | 10〜20次元程度まで |
| ベイズ最適化(TPE) | 少ない | 低め | 100次元以上も対応 |
| CMA-ES | 中程度 | 低い | 連続値に強い |
実務での活用シーン
| シーン | ベイズ最適化の効果 |
|---|---|
| 大規模モデルのハイパーパラメータ最適化 | 数十回の試行で数百回分の成果 |
| 製造業のプロセス最適化 | 実験コスト削減 |
| 新薬候補の探索 | 膨大な化合物空間の効率的探索 |
| A/Bテストの設計 | 試行コストを最小化しながら最適値を発見 |
関連用語
- Optuna — ベイズ最適化(TPE)を使ったHPOフレームワーク
- ハイパーパラメータチューニング — ベイズ最適化の主要な応用先
- ハイパーパラメータ — ベイズ最適化で探索する対象