2017-04-14 66 views
0

有沒有辦法通過梯度下降來執行scikit-learn中的超參數調整?雖然超參數梯度的公式可能難以計算,但通過評估超參數空間中的兩個接近點來計算超參數梯度的數值計算應該非常容易。這種方法是否有現有的實施?爲什麼這個方法或者不是一個好主意?sklearn:通過漸變下降調整超參數?

回答

6

梯度的計算是最少的問題。至少在先進的automatic differentiation軟件的時代。 (對所有sklearn分類器來說,實現這一點當然並不容易)

雖然有些人使用這種想法的作品,但他們只是針對一些特定的,明確的問題(例如SVM調整)。此外,可能有很多假設,因爲:

爲什麼這不是一個好主意

  • 超PARAM優化是在一般:非平滑
    • GD真正喜歡光滑函數作爲零梯度是沒有幫助的
    • (其中每一種是由一些定義超參數離散集(例如,選擇l1與l2懲罰)引入非光滑表面)
  • 超參數優化一般是:非凸
    • GD的全部收斂理論假設,深層的問題是凸
      • 良好的情況:你得到了一些地方最低(可任意壞)
      • 最壞情況:GD甚至沒有收斂到一些地方最小

我想補充,你的一般問題是最壞的一種優化問題中的一個可以考慮的,因爲它是:

  • 非光滑,非凸
  • 甚至隨機/嘈雜最底層算法與一些變化啓發式近似的問候決賽輸出(並且通常甚至是基於PRNG的隨機行爲)

最後一部分的原因是,爲什麼在sklearn所提供的方法是簡單的:

  • 隨機搜索:
    • ,如果我們不能infere東西,因爲這個問題太硬,剛嘗試了很多實例,並挑選出最好的
  • 網搜索:
    • 讓我們假設有某種平滑的
      • ,而不是隨機抽樣,我們樣本中關於我們的平滑度,假設
        • (以及其它類似的假設:一個參數是可能很大 - >np.logspace分析更大的數字)

雖然有很多貝葉斯方法,包括像hyperoptspearmint這樣的可用python軟件,但很多人認爲隨機搜索是最好的方法(這可能令人驚訝但強調所提到的問題)。

+0

非常好的答案。你能否推薦參考文件進一步解釋你所做的評論? – Archie