定義搜尋空間和決策變數

定義 AlphaEvolve 用途的搜尋空間和決策變數時,需要以程式碼正確制定問題,並提供可供演化啟發式方法疊代及改良的基準解決方案。

這項程序包括:

  • 提供目標情境:為最佳化用途建立背景、網域規則和效能界線。

  • 提供乾淨的基準:提供清楚且架構完善的程式碼,正確實作目標問題的基準解決方案。

  • 標記自由度:在程式碼集加入明確的 EVOLVE-BLOCK 註解,標記代理可變動及探索的特定決策變數、邏輯結構或常式,找出效能更高的解決方案。

初始程式的結構

初始程式由兩種主要區塊類型組成,可決定演化搜尋的界線:

  1. 不可變動的程式碼區塊:樣板程式碼、輔助函式和依附元件,可限制搜尋空間或執行不會影響解決方案效能的工作 (例如標準前處理步驟或資料處理常式)。

  2. 可變動程式碼區塊 (EVOLVE-BLOCK):包含特定決策變數、邏輯結構或分析運算式的目標區域,代理程式可探索及變動這些區域。

    import numpy as np
    # Code to constrain the search space (Immutable)
    def def_preprocessing():
        """Feature engineering and preprocessing."""
        pass
    
    # EVOLVE-BLOCK-START
    # Mutable block: Provides degrees of freedom for AlphaEvolve to optimize
    def model_tuning():
        """Model tuning function: parametrized to take features."""
        pass
    # EVOLVE-BLOCK-END
    
    # Boilerplate code that does not impact solution performance (Immutable)
    def batch_predictions():
        """Inference function: batch predictions to test performance."""
        pass
    

限制搜尋空間的最佳做法

您如何安排不可變動的匯入項目,並明確放置演進區塊,會顯示 AlphaEvolve 的運作界線。

管理程式庫匯入作業和依附元件

AlphaEvolve 無法判斷哪些外部程式庫適用於您的正式環境。

允許開放式探索:如果任何機器學習或數學套件都能盡量提升指標,請將匯入內容放在可變動的 EVOLVE-BLOCK 內。這讓 AlphaEvolve 可以自由替換替代架構 (例如將 sklearn 換成 TensorFlow 或 xgboost)。

強制執行嚴格的工具鍊:如果所有模型都必須來自特定套件,請在演進區塊外將該套件宣告為不可變動的匯入項目。如果 AlphaEvolve 在搜尋期間需要該套件中的其他內部模組,仍可在可變動空間中匯入這些模組,不會違反全域限制。

避免搜尋空間過度受限

在初始程式或使用者提供的額外文字內容中,盡可能將硬性限制設為不可變更的程式碼區塊。這樣一來,代理程式就不會探索結構上不可行的解決方案。

不過,請勿將搜尋空間縮小到進化方法變得多餘的程度。舉例來說,強制 AlphaEvolve 只使用單一參數線性迴歸,可將問題縮減為標準格線搜尋公用程式可剖析的狹窄設定空間。請改用軟性限制做為評估條件中的負面懲罰,引導探索,但不要扼殺探索。

策略性放置目標區塊

變更 EVOLVE-BLOCK 的範圍會改變管道的整體最佳化目標:

最佳化樣本外 (OOS) 校正:如果您的目標是廣泛的演算法探索,請將整個模型調整和初始化常式包裝在區塊周圍。

改善結構合適度:如要保留線性架構,但探索複雜的分析運算式或自訂數學轉換,請嚴格將可變動的區塊隔離在特徵轉換邏輯周圍,並保持下游模型架構固定且不可變動。

保留模組階層 (HDL/Verilog 範例):最佳化結構程式碼區塊設定時,請將 EVOLVE-BLOCK-STARTEVOLVE-BLOCK-END 標記嚴格保留在模組定義界線內。這樣可避免搜尋啟發式演算法做出結構無效的動作,例如嘗試以多個未對應的浮動子模組,取代單一乾淨的內含模組。