【べいずさいてきか】
ベイズ最適化 とは?
💡 過去の記憶を活かして、次の一手を賢く読む探索術
📌 このページのポイント
ベイズ最適化って名前が難しそうなんだけど、何をしているの?
簡単に言うと、過去の試行結果から『このあたりが良さそう』という地図を作って、次にどこを試すかを賢く決める仕組みだよ。無作為に試すランダムサーチと違って、過去の情報を活用するんだ。
地図ってどうやって作るの?
ガウス過程というモデルを使うことが多いよ。試した点の精度を元に、試していない点の精度を『平均値とばらつき』で予測するんだ。精度が高そうな場所と、まだよく分かっていない場所を両方考慮して次の点を選ぶよ。
獲得関数って何なんだね!
次にどの点を試すかを決める関数だよ。EI(期待改善量)は今より良くなる期待値が最大の点を選ぶし、UCBは平均値と不確実性を足した値が最大の点を選ぶんだ。探索(未知の場所を試す)と活用(良さそうな場所を深掘り)のバランスを取っているんだよ。
Optunaって聞いたことあるけど、これを使っているの?
そうだよ。OptunaはTPEというベイズ最適化の亜種アルゴリズムを使っていて、PyTorchやscikit-learnと相性がいいんだ。`study.optimize()`を呼ぶだけで試行を重ねてくれるから、とても使いやすいよ。
どんなときにランダムサーチよりベイズ最適化を使うの?
1回の学習に時間がかかるモデルや、試行回数を少なく抑えたい場合に効果的だよ。逆に並列化を最大限使える環境では、ランダムサーチをたくさん回した方が速いこともある。状況に応じて使い分けるのがプロの判断だね。
まとめ:ざっくりこれだけ覚えればOK!
「ベイズ最適化」って出てきたら「過去の結果を使って賢くハイパーパラメータを探す手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bayesian Optimization」 = ベイズ最適化
💬 ベイズの定理を使って「次にどこを試すべきか」の確率モデルを更新し続けることから名付けられたよ