動態

詳情 返回 返回

Optuna AutoSampler 更新:讓多目標和約束優化不再需要手動選算法 - 動態 詳情

AutoSampler是個智能採樣器,能根據具體問題自動挑選 Optuna 裏最合適的優化算法。這個工具在 OptunaHub 上熱度很高,每週下載量超過 3 萬次。最早的版本對單目標優化做了專門的自動選擇邏輯,為了配合下個月發佈的 Optuna v4.6,AutoSampler 終於把多目標和約束優化的完整支持做完了。這篇文章會講清楚新功能怎麼用,順帶看看基準測試的表現如何。最新版本其實現在就能用了。

多目標和約束優化的實現

新版 AutoSampler 延續了之前的設計思路——分析評估預算、搜索空間、約束條件、目標數量這些因素,然後自動選一個實際效果不比默認差的採樣器。

更新後的選擇規則覆蓋了多目標和約束優化場景。系統會在幾個採樣器之間自動切換(圖 1):

  • TPESampler:處理帶分類變量和條件分支的複雜搜索空間比較在行
  • GPSampler:連續和整數搜索空間的首選,現在支持多目標和約束了
  • NSGAIISamplerNSGAIIISampler:評估次數多的用 NSGA-II,目標多的用 NSGA-III

圖1:AutoSampler 對約束優化和多目標優化的支持終於完整了

使用方式

先裝依賴,optuna 需要 4.5 或更新的版本:

 pip install -U optuna optunahub  
 pip install -r https://hub.optuna.org/samplers/auto_sampler/requirements.txt

然後用

optunahub.load_module

加載

"samplers/auto_sampler"

包,實例化 AutoSampler,就能當普通 Optuna 採樣器用了。下面代碼是一個多目標優化的例子:

 import optuna  
import optunahub  

   
def objective(trial: optuna.Trial) -> tuple[float]:  
    x = trial.suggest_float("x", 0, 5)  
    y = trial.suggest_float("y", 0, 3)  
    return  4 * x**2 + 4 * y**2, (x - 5)**2 + (y - 5)**2  

study = optuna.create_study(  
    directions=["minimize", "minimize"],  
    sampler=optunahub.load_module("samplers/auto_sampler").AutoSampler()  
)  
study.optimize(objective, n_trials=300)  

 print(study.best_trials)

如果之前用過 AutoSampler 的話,本地緩存可能是舊版本,所以需要加個

force_reload=True

參數強制更新一下:

 >>>importoptunahub; optunahub.load_module("samplers/auto_sampler", force_reload=True)

性能表現

拿最新的 AutoSampler 和 Optuna 默認採樣器對比了下多目標和約束優化場景的表現。

多目標優化測試

多目標基準用的是 WFG1 問題。從圖 2 能看出來 AutoSampler 的搜索效果更好。默認採樣器固定用 NSGA-II 算法,AutoSampler 會根據評估次數、目標數量、搜索空間這些特徵在 GPSampler、TPESampler、NSGAIISampler、NSGAIIISampler 四個方法之間動態切換。這種自適應策略讓它能找到更好的解。

圖2:WFG1 基準測試結果

約束優化測試

約束問題用的是 bbob-constrained 基準集裏 5 維旋轉 Rastrigin 函數加三個約束條件。圖 3 顯示 AutoSampler 又是更好的那個。

優勢來自新的選擇規則引入了具備約束感知能力的 GPSampler(Optuna v4.2 引入),在約束搜索空間裏導航效率明顯高一些。對於同時有約束和多目標的問題,還能用上 Optuna v4.5 裏 GPSampler 的進一步增強。

圖3:旋轉 Rastrigin 函數基準測試結果

總結

這次更新讓 AutoSampler 完整支持了多目標和約束優化。在集成到工作流後,基本能達到和默認採樣器持平或更好的效果,而且不需要用手動選算法。這樣省下的精力可以專注在問題本身,優化策略交給 Optuna 自動處理就行。

https://avoid.overfit.cn/post/67621750374c48e1a5cf8c00e11991ac

作者:Yoshihiko Ozaki

user avatar josie_68d213f999ae8 頭像 chiqingdechouti 頭像 zhishuangdemaipian 頭像 shiwangdehongshu 頭像 aws_aidevcommunity 頭像 baihai_idp 頭像 mangrandedanche 頭像 old_it 頭像
點贊 8 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.