貝氏最佳化 是什麼?

Bayesian Optimization:貝氏最佳化 的完整解釋

貝氏最佳化是一種用於最佳化黑盒函數的演算法,它使用貝氏模型來建立目標函數的代理模型,並利用該模型來選擇下一個要評估的點,以在最少的迭代次數內找到最佳解。

容易混淆

貝氏最佳化 vs 網格搜尋? 貝氏最佳化:用代理模型挑下一個最值得試的點 網格搜尋:把參數空間整齊掃過去 最關鍵的區別:前者聰明挑點,後者是全域粗掃

貝氏最佳化 vs 隨機搜尋? 貝氏最佳化:每次都會更新對目標函數的認識 隨機搜尋:每次都隨機抽參數 最關鍵的區別:BO 會利用過去結果,隨機搜尋不會

代理模型 vs 目標函數? 代理模型:用來近似昂貴目標函數 目標函數:真正想最大化或最小化的東西 最關鍵的區別:代理模型是估計器,目標函數才是本體

記住這句就好

先學哪裡可能好,再去試哪裡

實際案例

模型調參 訓練一次要幾小時時,用貝氏最佳化比亂試超參數更有效率

實驗配方 材料實驗每次成本很高,研究者會先用少量試驗推估下一個更可能成功的配方

算法與應用

重點 你要看什麼 為什麼重要
代理模型 近似目標函數 讓系統用少量試驗學到大致地形
採集函數 決定下一個試驗點 平衡探索與利用
優勢 試次少、效率高 很適合昂貴黑盒函數

為什麼不用網格搜尋就好

方法 怎麼挑下一組參數 適合
網格搜尋 把所有組合都跑一遍 參數少、每次評估很便宜
隨機搜尋 隨機抽 參數多但只有少數重要時,通常勝過網格
貝氏最佳化 依照目前為止的結果推測哪裡最值得試 每次評估很貴(訓練一次要好幾小時)

關鍵差別在最後一列:網格與隨機搜尋是「無記憶」的,跑過的結果不會影響下一次挑什麼。貝氏最佳化會利用已知結果,所以在評估成本高、能試的次數有限時明顯更有效率。

順帶一提,隨機搜尋勝過網格搜尋是一個違反直覺但已被驗證的結論:網格搜尋在不重要的參數上浪費了大量嘗試,隨機搜尋則能在重要參數上取到更多不同的值。

兩個核心零件

代理模型(surrogate model)。 用已經跑過的少數幾組結果,配一個便宜的模型來預測「還沒試過的參數大概會得到什麼結果,以及這個預測有多不確定」。最常見的是高斯過程(Gaussian Process),它天然會給出預測值與信賴區間。參數維度高或有類別型參數時,也常改用樹狀結構的 TPE。

採集函數(acquisition function)。 依照代理模型的預測,決定下一組要試哪裡。它要在兩件事之間權衡:

利用(exploitation):往目前看起來最好的區域附近試。 探索(exploration):往不確定性最大的區域試,因為那裡可能藏著更好的解。

常見的採集函數有期望改善(Expected Improvement, EI)、信賴上界(UCB)與改善機率(PI)。EI 是多數工具的預設。

什麼時候值得用

值得: 訓練一次要幾十分鐘以上、參數在 5 到 20 個之間、預算只夠跑幾十次。深度學習的超參數調整、AutoML、實驗設計都是典型場景。

不值得: 每次評估只要幾秒(直接隨機搜尋跑幾千次更省事)、參數超過幾十個(高斯過程在高維度會失效)、目標函數有大量雜訊而且無法重複量測。

常見工具有 Optuna、Hyperopt、scikit-optimize 與各家雲端的 AutoML 服務。實務上 Optuna 的預設設定通常就夠用,不需要自己選採集函數。

情境判斷

Q1:如果你只能測 20 次參數組合,BO 有沒有可能比網格搜尋更合適? → 很可能更合適,因為它會把試驗次數花在更值得的地方

Q2:如果目標函數很平滑、維度很低,而且評估很便宜,BO 還一定是首選嗎? → 不一定,這時簡單搜尋法也可能已經夠用

相關術語

常見問題

貝氏最佳化一定用高斯過程嗎?

不一定,隨機森林或其他代理模型也可以。

它適合高維參數嗎?

高維時通常會變難,因為代理模型與搜尋空間都更複雜。

它和強化學習是一樣的嗎?

不是,兩者都會做序列決策,但貝氏最佳化是在找最佳參數點。