一、為什麼需要自動機器學習
二、超引數優化 hyper-parameter optimization
三、元學習 meta learning
四、神經網路架構搜尋 neural architecture search
五、自動化特徵工程
六、其它自動機器學習工具集
對於機器學習的新使用者而言,使用機器學習演算法的乙個主要的障礙就是演算法的效能受許多的設計決策影響。隨著深度學習的流行,工程師需要選擇相應的神經網路架構,訓練過程,正則化方法,超引數等等,所有的這些都對演算法的效能有很大的影響。於是深度學習工程師也被戲稱為調參工程師。
自動機器學習(automl)的目標就是使用自動化的資料驅動方式來做出上述的決策。使用者只要提供資料,自動機器學習系統自動的決定最佳的方案。領域專家不再需要苦惱於學習各種機器學習的演算法。
學習器模型中一般有兩類引數,一類是可以從資料中學習估計得到,還有一類引數時無法從資料中估計,只能靠人的經驗進行設計指定,後者成為超引數。比如,支援向量機裡面的c kernal gamma;樸素貝葉斯裡面的alpha等。
超引數優化有很多方法:
最常見的型別是黑盒優化 (black-box function optimization)。所謂黑盒優化,就是將決策網路當作是乙個黑盒來進行優化,僅關心輸入和輸出,而忽略其內部機制。決策網路通常是可以引數化的,這時候我們進行優化首先要考慮的是收斂性。
以下的幾類方法都是屬於黑盒優化:
網格搜尋 (grid search)
grid search大家都應該比較熟悉,是一種通過遍歷給定的引數組合來優化模型表現的方法。網格搜尋的問題是很容易發生維度災難,優點是很容易並行。
隨機搜尋 (random search)
隨機搜尋是利用隨機數求極小點而求得函式近似的最優解的方法。
很多時候,隨機搜尋比網格搜尋效果要更好,但是我們可以從上圖看出,它們都不能保證找到最優解。貝葉斯優化(貝葉斯優化是一種迭代的優化演算法,包含兩個主要的元素,輸入資料假設的模型和乙個採集函式用來來決定下一步要評估哪乙個點。每一步迭代,都使用所有的觀測資料fit模型,然後利用啟用函式**模型的概率分布,決定如何利用引數點,權衡是explaoration還是exploitation。相對於其它的黑盒優化演算法,啟用函式的計算量要少很多,這也是為什麼貝葉斯優化被認為是更好的超引數調優的演算法。
黑盒優化的一些工具:
hyperopt(
hyperopt 是乙個python庫,可以用來尋找實數,離散值,條件維度等搜尋空間的最佳值
google vizier
google的內部的機器學習系統 google vizier能夠利用遷移學習等技術自動優化其他機器學習系統的超引數
advisor(
google vizier的開源實現
katib (
基於kubernetes的超引數優化工具
由於優化目標具有不連續、不可導等數學性質,所以一些搜尋和非梯度優化演算法被用來求解該問題,包括我們上面提到的這些黑盒演算法。此類演算法通過取樣和對取樣的評價進行搜尋,往往需要大量對取樣的評價才能獲得比較好的結果。然而,在自動機器學習任務中評價往往通過 k 折交叉驗證獲得,在大資料集的機器學習任務上,獲得乙個評價的時間代價巨大。這也影響了優化演算法在自動機器學習問題上的效果。所以一些減少評價代價的方法被提出來,其中多保真度優化(multi-fidelity methods)就是其中的一種。這裡的技術包括:基於學習曲線來決定是否要提前終止訓練,探索-利用困境(exploration exploitation)的多臂***演算法 (multi-armed bandit)(等等。
另外還有一些研究是基於梯度下降的優化。
超引數優化面臨許多挑戰:
相關參考元學習也就是"學習如何學習",通過對現有的學習任務之間的效能差異進行系統的觀測,然後學習已有的經驗和元資料,用於更好的執行新的學習任務。這樣做可以極大的該靜機器學習流水線或者神經網路架構的設計,也可以用資料驅動的方式取代手工作坊似的演算法工程工作。
從某種意義上來說,元學習覆蓋了超引數優化,因為元資料的學習包含了:超引數,流水線的構成,神經網路架構,模型構成,元特徵等等。
機器學習的演算法我們又稱為『學習器』,學習器就是假定乙個模型,該模型擁有很多未知引數,利用訓練資料和優化演算法來找到最適合這些訓練資料的引數,生成乙個新的演算法,或者引數已知的模型,並利用該模型/演算法來**新的未知資料。如果說世界上只有乙個模型,那麼問題就簡單了,問題是模型有很多,不同的模型擁有不同的超引數,我們往往還會把模型和演算法組裝在一起構成復合模型和機器學習的流水線,這個時候,我就需要知道解決不同的問題要構建那些不同的模型。元學習就在這個時候,我們可以把超引數,流水線,神經網路架構這些都看成是乙個新的模型的未知引數,把不同學習任務的效能指標看成是輸入資料,這樣我們就可以利用優化演算法來找到效能最好的那組引數。這個模式可以一直巢狀,也就是說,你可以有『元元元學習『,當然我希望你不要走得太遠,找不到回來的路。
元學習的方法包括:
以下列出了一些常見的元特徵
遷移學習
利用rnn在學習過程中修改自己的權重
元學習的乙個很大的挑戰就是如果通過很少的訓練資料來學習乙個複雜的模型,這就是one-shot(或者few-shot的問題。
像人類的學習一樣,每次學習無論成功失敗,我們都收穫一定的經驗,人類很少從頭學習。在構建自動學習的時候,我們也應該充分利用已有的每一次的學習經驗,逐步的改進,使得新的學習更加有效。
相關參考:提起automl,其實大多數人都是因為google的automl系統才知道這個故事的。隨著深度學習的流行,神經網路的架構變得越來越複雜,越來越多的手工工程也隨之而來。神經網路架構搜尋就是為了解決這個問題。
nas主要包含三個部分:
相關參考自動化特徵工程可以幫助資料科學家基於資料集自動建立能夠最好的用於訓練的特徵。
featuretools(是乙個開源庫,用來實現自動化特徵工程。它是乙個很好的工具,旨在加快特徵生成的過程,從而讓大家有更多的時間專注於構建機器學習模型的其他方面。換句話說,它使你的資料處於「等待機器學習」的狀態。
featuretools程式包中的三個主要元件:
乙個entity可以視作是乙個pandas的資料框的表示,多個實體的集合稱為entityset。
深度特徵綜合(dfs)與深度學習無關,不用擔心。實際上,dfs是一種特徵工程方法,是featuretools的主幹。它支援從單個或者多個資料框中構造新特徵。
dfs通過將特徵基元應用於entityset的實體關係來構造新特徵。這些特徵基元是手動生成特徵時常用的方法。例如,基元「mean」將在聚合級別上找到變數的平均值。
相關參考以下列出一些開源的自動機器學習工具空大家參考、選擇
自動機器學習(AutoML)最新綜述
機器學習的應用需要大量的人工干預,這些人工干預表現在 特徵提取 模型選擇 引數調節等機器學習的各個方面。automl 試圖將這些與特徵 模型 優化 評價有關的重要步驟進行自動化地學習,使得機器學習模型無需人工干預即可被應用。作者從機器學習和自動化兩個角度給出了定義 1.從機器學習角度講,automl...
自動機器學習框架之二 AutoML
auto ml auto machine learning 自動機器學習是個寬泛的概念,有不只乙個軟體以此命名,本篇介紹的auto ml並非谷歌基於雲平台的 automl。本篇介紹的auto ml也是一款開源的離線工具,它的優勢在於簡單快速,且輸出資訊比較豐富。它預設支援keras tensorfl...
自動機器學習之Auto Keras入門
對於訓練深度學習,設計神經網路結構是其中技術含高最高的任務,優秀的網路架構往往依賴建構模型的經驗,專業領域知識,以及大量的算力試錯。實際應用中往往基於類似功能的神經網路微調生成新的網路結構。auto keras是乙個離線使用的開源庫,用於構建神經網路結構和搜尋超引數,支援rnn,cnn神經網路,它使...