2013-07-17 67 views
2

我正在開發基於訓練數據對圖像進行分類的機器學習算法。在「黑匣子」系統中尋找最佳參數

在圖像預處理階段,我可以修改幾個參數來影響我提供算法的數據(例如,我可以在提取SURF特徵時更改Hessian閾值)。因此,流動迄今爲止的樣子:

[參數1,參數2,參數3 ...] => [黑匣子] =>精度%

我的問題是:有這麼多的參數在我手上,怎麼我是否可以系統地選擇能夠給出優化結果/準確度的值?一個天真的方法是運行我嵌套for循環(假設我的參數),只是遍歷所有參數組合,但如果它需要5分鐘來計算我的「黑匣子」系統的準確性,這將需要很長很長的時間。

這就是說,有沒有任何算法或技術可以在黑匣子系統中搜索最佳參數?我正在考慮參加離散優化課程,但我不確定這是否是我最好的時間。

謝謝你的時間和幫助!

編輯(回答評論): 我有5-8個參數。每個參數都有其自己的範圍。一個參數可以是0-1000(整數),而另一個可以是0-1(實數)。沒有什麼會阻止我從多線程黑盒評估。

另外,黑盒子的某些部分對它們有一定的隨機性。例如,一個階段是使用k均值聚類。每個黑匣子評估,集羣中心都可能發生變化。我多次運行k-means(希望)避免局部最優。另外,爲了進一步減少隨機性和異常值,我多次評估黑匣子並找到中值精度。

+0

它們有多少個參數以及它們的值範圍?也可以多線程處理你的黑匣子評估,例如與(雲)計算羣集? –

+0

感謝您的問題!我用答案修改了原始問題。 – trianta2

回答

0

這是您的問題solution

在這個paper中描述了一個方法。

+1

歡迎來到SO。請爲您的鏈接提供一些背景信息。如果鏈接在未來死亡,答案的用處也是如此。請參閱[如何回答](http://stackoverflow.com/help/how-to-answer)。 – cokeman19

2

作爲部分解決方案,中等分辨率和範圍的網格搜索可以是遞歸地在n參數導致最佳值的區域中重複。

來自每個步驟的每個n維度結果將用作開始點用於下一次迭代。關鍵在於,對於每次迭代,絕對項的分辨率保持恆定(即,保持迭代週期恆定),但範圍減小了以便減小音高/粒度步長。

我把它叫做「承包網」 :)

記住,雖然它避免了全蠻力複雜性,只有在達到最後一次迭代(詳盡解析這是定義決賽迭代)。

此外,概述的過程僅包含可能包含或不包含全局最小值的點的子集,即,它可能會導致局部最小值。

(您可以隨時雖然追逐你的尾巴由某些子初始分辨率量抵消了最初的電網,並比較結果...)

玩得開心!