【べいずさいてきか】

ベイズ最適化 とは?

💡 過去の記憶を活かして、次の一手を賢く読む探索術
📌 このページのポイント
ベイズ最適化の流れ ① 初期評価 ランダムに数点 試して記録 ② サロゲートモデル ガウス過程で 関数を近似 ③ 獲得関数 次に試すべき点を EI/UCBで決定 ④ 評価 & 更新 実際に学習して記録 繰り返す 精度 次の点 パラメータ値 → 青線: 予測平均 ● 観測済み点 赤点: 獲得関数が選んだ次の候補
ベイズ最適化のサロゲートモデルと獲得関数のイメージ
ひよこ ひよこ

ベイズ最適化って名前が難しそうなんだけど、何をしているの?

ペンギン先生 ペンギン先生

簡単に言うと、過去の試行結果から『このあたりが良さそう』という地図を作って、次にどこを試すかを賢く決める仕組みだよ。無作為に試すランダムサーチと違って、過去の情報を活用するんだ。

ひよこ ひよこ

地図ってどうやって作るの?

ペンギン先生 ペンギン先生

ガウス過程というモデルを使うことが多いよ。試した点の精度を元に、試していない点の精度を『平均値とばらつき』で予測するんだ。精度が高そうな場所と、まだよく分かっていない場所を両方考慮して次の点を選ぶよ。

ひよこ ひよこ

獲得関数って何なんだね!

ペンギン先生 ペンギン先生

次にどの点を試すかを決める関数だよ。EI(期待改善量)は今より良くなる期待値が最大の点を選ぶし、UCBは平均値と不確実性を足した値が最大の点を選ぶんだ。探索(未知の場所を試す)と活用(良さそうな場所を深掘り)のバランスを取っているんだよ。

ひよこ ひよこ

Optunaって聞いたことあるけど、これを使っているの?

ペンギン先生 ペンギン先生

そうだよ。OptunaはTPEというベイズ最適化の亜種アルゴリズムを使っていて、PyTorchscikit-learnと相性がいいんだ。`study.optimize()`を呼ぶだけで試行を重ねてくれるから、とても使いやすいよ。

ひよこ ひよこ

どんなときにランダムサーチよりベイズ最適化を使うの?

ペンギン先生 ペンギン先生

1回の学習に時間がかかるモデルや、試行回数を少なく抑えたい場合に効果的だよ。逆に並列化を最大限使える環境では、ランダムサーチをたくさん回した方が速いこともある。状況に応じて使い分けるのがプロの判断だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ベイズ最適化」って出てきたら「過去の結果を使って賢くハイパーパラメータを探す手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bayesian Optimization」 = ベイズ最適化
💬 ベイズの定理を使って「次にどこを試すべきか」の確率モデルを更新し続けることから名付けられたよ
← 用語集にもどる