當前位置:
首頁 > 最新 > 機器學習超參自動調優演算法調研

機器學習超參自動調優演算法調研

自2015年以來,對於機器學習超參的自動調優成為了各大頂會熱議的主題,AAAI和NIPS等會議對上相繼發表了不同的對自動調優演算法進行討論的論文,這些論文都取得了不俗的成績。

不僅是學術上的討論,現代數據工業對自動調優的需求也非常迫切。甚至很多機器學習從業人員也將自己的工作性質定義為「調參黨」用以描述每天大數據,人工智慧從業人員的工作內容。

總體而言,機器學習自動調參的目標是在某個數據集下,選擇一組超參,比如對於GBDT來說,這些超參就有樹的個數,每棵樹葉子的個數等等,對於LR來說就有batchsize的大小,正則化係數的大小等等。而使用這組參數訓練機器學習模型,其模型的輸出,比如CTR,AUC或者分類錯誤率就會最理想。

舉個例子:我希望找到一個GBDT的超參(生成樹的個數,每棵樹葉子的數量),使用這組超參,我希望我得到的GBDT模型可以在KDD2012這個數據集上的分類錯誤率最小。

本文對現階段機器學習自動調參的演算法進行了初步的調研。

現階段將機器學習自動調優演算法的思路可以分為三類:1.啟發式演算法,2.構造性能函數求解最佳參數,3.構造強盜問題搜索最佳參數。

這三種方法各有其獨有的優勢,但是依照這三種思路構造的具體演算法也還有屬於自身的局限性和不足。下面我們逐一對這三種思路進行介紹。

使用啟發式演算法進行參數調優

啟發式演算法是一類通用的函數求極值演算法。就像他們的名字所言,「啟發」是指啟發自大自然的一些行為。比如生物的進化,或者螞蟻搬家的策略等等,甚至早期神經網路也是「啟發」自大腦的結構(不過後來三層以下的全神經網路有了明晰的數學解釋和理論上限的證明)。這些演算法大部分都是黑箱模型,對於這些黑箱能處理問題的邊界以及理論上限都缺乏相關的證明。

儘管啟發式演算法有這樣和那樣的問題,但是啟發式演算法卻被廣泛應用在各類函數求解極值問題中,比如:遺傳演算法是程序自動調優框架的核心演算法之一,一方面這些演算法確實可以找到比初始值更好的超參,另一方面也因為這些演算法簡單,在操作上簡單,再加上黑箱模型固有的處理問題邊界的模糊等等。

這裡我們不會化篇幅對這些演算法在參數調優方面進一步討論,但是這些演算法廣泛應用在自動調有框架中這個事實是值得一提的。

構造「性能模型」進行最優值求解

使用性能模型對超參進行預測並指導下一步的探索是自動化調參的常用手段,比如在程序性能自動調參常用的模型就有roofline,多級cache等模型,通過模型預測一個參數的範圍再繼續搜索。

在機器學習方面,如何構造一個性能的模型指導我們的探索呢?因為超參->目標的目標函數是無法預知的。

比如在GBDT中,F(樹的個數,每棵樹葉子的個數)->分類錯誤率。

這個函數就是我們希望看到的性能模型,但是顯然這個函數只有天知道具體解析形式是什麼。

下面我們介紹兩種理論基礎比較好的構造性能模型的方法。

(1) 基於先驗假設的概率性能模型

巧婦難為無米之炊,一無所知地構造性能模型是個近乎無法完成的任務。我們可以基於一些概率分布的假設來構造這個性能模型,通過性能模型預測新的超參,再將已有的(超參,輸出)組來進一步完善假設概率分布的細節。這類演算法成為貝葉斯優化方法。

那麼超參和輸出的關係如果假設為樹型的關係,那麼這個演算法就成為TPE演算法,如果假設為高斯分布的話,就變成了SMAC演算法。

① SMAC

我們假設針對一組超參,性能模型的輸出值的概率是關於超參的正態分布,剩下的就是根據歷史信息來計算均值方差了。

當然在標準的SMAC演算法中,歷史信息並沒有多到能夠計算出一個高斯過程的程度,為了達到這個目的,標準的SMAC演算法建議已有的信息先構造出一個隨機森林出來,使用隨機森林算出來一些「預測」(超參,輸出)(當然這些「預測」的信息並不進入歷史信息),使用歷史信息和預測信息一起構造當前迭代中的高斯過程。繼而選擇最優參數。

② TPE

我們假設針對一組超參,性能模型的輸出為c的概率是關於超參的樹的模型:

而l和g函數是根據先前已有的歷史信息學習出來的函數(具體學習方法各有不同,限於篇幅這裡不過多解釋),剩下的也就是不斷循環貝葉斯優化演算法,逐步完善求優這棵樹的具體形狀了。

總之這類性能模型在邊求精邊求優,逐步給出在假設的條件下那個只有天知道的性能模型的解析形式,最終給出參考的最優超參的選擇。

(2) 譜模型

相比於概率模型的假設,譜模型的假設相對來說並沒有那麼強。

泛函分析認為,絕大多數函數在特定條件下,都可以用一組正交函數系解析成傅里葉級數(實變函數,泛函分析中的傅里葉級數)(使用三角函數作為基底就是我們大一學的傅里葉級數(這裡的傅里葉級數是狹義的傅里葉級數),而連續函數解析成正交函數基底表達的級數是由維爾斯特拉斯第二逼近定理所保證的)。這裡我們並不想過多討論數學,大家只需要明白正交函數系對應的傅里葉級數可以展開非常多函數這個事實即可。

那麼我們假設的這個「天知道」的性能函數如果也能解析為傅里葉級數嗎?我們假設可以的話,使用傅里葉級數所表達的這個性能模型,就是所謂的「譜模型」。

思路到這裡,這種方法也就浮出了水面,整個思路落實到演算法總共分類兩部:

在這個思路下,我們就可以用很多信號的思考方式去對譜模型進一步優化,比如我們可以對這個譜進行濾波,通過刨去稀疏較小的項目進一步加快計算時間,甚至可以考慮一些噪音的因素,使用信號還原對噪音的處理方式處理這些傅里葉係數。

這類演算法有非常好的理論思考方式,理論結果也非常漂亮。但是終歸也是有一些問題的:

1. 傅里葉級數展開多少才是一個比較好的逼近?

2. 「天知道」如果不是一個固定模型而是一個如貝葉斯演算法所構造的概率模型該怎麼樣做?

......

在相關文獻里,作者們認為為了得到更精確更好的解,依舊可以使用迭代的方法將上一輪得到的函數作為下一輪的先驗函數進行校正,通過不斷校正,使得得到的函數儘可能包容更多做實驗得到的(超參,輸出)結果。在思想上,這種方式有點接近最小二乘法。

構造強盜問題進行最佳參數搜索

上面的方法雖然會用到迭代,但本質目標依舊是尋找那個「天知道」的模型,通過求解「天知道」的模型來找到最優的那個超參。不過只是通過不停的迭代來逐步完善這個模型。還有一種思路是「搜索」,我希望通過某種策略來找到最優解。把整個問題轉化為強盜問題就是一個值得考慮的思路了。

在相關文獻中,被轉化的問題被稱為「純探索,非隨機,無窮臂老虎機問題」(NIBP問題)。

整個問題的描述如下:

我們可以通過特定的分布生成一串老虎機,這些老虎機對應了一個編號,第k次拉動第i號老虎機我們可得到一個損失 li,k,當k趨向於無窮的時候li,k->vi.我們的目標是找到最小vi對應的第i號老虎機,當然整個過程中我們希望為了找到這個最小老虎機的過程的代價最小。

這個過程對應到自動求參問題如下:

已知:為了知道每組超參對應的輸出需要花費一定的代價,比如時間,花費的代價越多,得到的輸出和最終收斂結果的差距(波動)也就越小。這是顯而易見的,訓練的時間越長,得到的結果離最終收斂的結果也就越接近。我們希望在已有的多組超參中,用儘可能少的代價,找到收斂結果最小的那組超參。

這個問題可以通過如下的successive halving 演算法求解:

顯然,successive halving演算法有其不合理的地方,其中最重要的是資源分配的問題(每輪都要分配的資源都要一致?)和探索步長(每輪選擇多少超參組進入下一輪?)的問題。

作為successive halving的升級,Hyperband演算法為此做了進一步的資源分配方案。

通過逐步改變每組超參可以用的資源的量和每輪計算所使用的資源的量,Hyperband實現了多步長探索最優參數。

理論證明,在總資源大於特定值的情況下,Hyperband可以搜索到我們期望的最優的老虎機。

機器學習自動調整超參的框架現行的演算法的求解思路基本上可以分為上述三種,具體落實的演算法各有不同,比如我們可以調整傳統強盜問題中置信度方法或者貝葉斯方法到新的NIBP問題中,或者構造新的正交函數系來刻畫「天知道」的那個函數,或者加入資料庫的信息進行熱啟動等。而且這些落實的演算法近期也發表了不少文章。但是現行的框架如sklearn或者autoweka等還是主要使用傳統的貝葉斯優化方法(SMAC)。

招聘信息

公司簡介


- END -

關注智鈾科技公眾號


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

想開發機器學習產品,先剷平這三個障礙
蘋果將給Siri加入機器學習技術 能識別設備主人

TAG:機器學習 |