搜尋意圖: 如果你在找「貝氏最佳化 是什麼」或「貝氏最佳化 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 貝氏最佳化是一種用於最佳化黑盒函數的演算法,它使用貝氏模型來建立目標函數的代理模型,並利用該模型來選擇下一個要評估的點,以在最少的迭代次數內找到最佳解。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
超參數很多又很貴,能不能少試幾次就找到比較好的組合? 你可以把貝氏最佳化想成會先學經驗再決定下一次試哪裡的搜尋法。 它特別適合評估一次成本高、又不想亂試太多次的問題。
你可以把它想成一個把抽象概念拉回日常判斷的提示,先知道它解決什麼問題,再看技術細節。
容易混淆
貝氏最佳化 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 還一定是首選嗎? → 不一定,這時簡單搜尋法也可能已經夠用
常見問題
貝氏最佳化一定用高斯過程嗎?
不一定,隨機森林或其他代理模型也可以。
它適合高維參數嗎?
高維時通常會變難,因為代理模型與搜尋空間都更複雜。
它和強化學習是一樣的嗎?
不是,兩者都會做序列決策,但貝氏最佳化是在找最佳參數點。