利用概率學實現組合優化層,新研究構建Julia開源包InferOpt.jl
?從概率學的角度實現 CO 層,有助于構建近似微分和結構化損失函數。
機器學習 (ML) 和組合優化 (CO) 是現代工業流程的兩個重要組成部分。ML 方法能從嘈雜的數據中提取有意義的信息,而 CO 可以在高維受限環境中做出決策。在許多情況下,我們希望將這兩種工具結合使用,例如從數據中生成預測,然后使用這些預測做出優化決策。因此,混合 ML-CO pipeline 成為一個新興的研究方向。
然而這里存在兩個問題。首先,CO 問題的解通常表現為其目標參數的分段常函數,而 ML pipeline 通常使用隨機梯度下降進行訓練,因此斜率是非常關鍵的。其次,標準的 ML 損失在組合環境中效果不佳。
此外,組合優化層(CO 層)往往缺乏良好的實現。近日一項新研究從概率學的角度提出了實現 CO 層的方法,有助于近似微分和結構化損失的構建。
論文地址:https://arxiv.org/abs/2207.13513
基于這種思路,該研究提出了一個開源的 Julia 包——InferOpt.jl,它的功能包括:
- 允許將任何具有線性目標函數的 CO oracle 轉換為可微層;
- 定義損失函數來訓練包含可微層的 pipeline。
?InferOpt.jl 開源包地址:https://github.com/axelparmentier/inferopt.jl
InferOpt.jl 適用于任意優化算法,并且與 Julia 的 ML 生態系統完全兼容。研究團隊使用視頻游戲的地圖尋路問題來展示它的能力。
推理問題的關鍵是預測給定輸入的輸出,這需要了解每個 ML 層的參數。而學習問題旨在找到在推理過程中導致「良好」輸出的參數。如下等式 (1) 所示,現有的「CO oracle」代表可以解決優化問題的算法,包括基于求解器和手工的算法。
而層的定義是指我們可以使用自動微分 (AD) 計算有意義的導數,但現有 CO oracle 很少與 AD 兼容,并且導數幾乎處處為零,沒有可利用的斜率信息。?
因此,此前 CO oracle 還不是層,該研究的重點就是利用概率學的知識將其變成一個層。現代 ML 庫提供了豐富的基本構建塊,允許用戶組裝和訓練復雜的 pipeline。該研究試圖利用這些庫來創建混合 ML-CO pipeline,并主要解決了兩個問題:
- 將 CO oracle 轉換為可用層;
- 找到合適的 ML 損失函數,避免忽略潛在的優化問題。
? 感興趣的讀者可以閱讀論文原文,了解更多研究細節。?