自動(dòng)化機(jī)器學(xué)習(xí)將成為下一個(gè)AI研究主流?聽聽數(shù)據(jù)科學(xué)家怎么說
在過去的一年當(dāng)中,自動(dòng)化機(jī)器學(xué)習(xí)已經(jīng)成為一個(gè)眾人感興趣的話題。KDnuggets舉辦了一個(gè)關(guān)于該話題的博客大賽。結(jié)果喜人,有很多有意思的想法與項(xiàng)目被提出來了。一些自動(dòng)化學(xué)習(xí)工具也引起了大家的興趣,受到了大家的追捧。
本篇文章的作者 Matthew Mayo 將會(huì)對(duì)自動(dòng)化學(xué)習(xí)進(jìn)行簡單的介紹,探討下一下它的合理性、采用情況,介紹下它現(xiàn)在使用的工具,討論下它預(yù)期的未來發(fā)展方向。
什么是自動(dòng)化機(jī)器學(xué)習(xí)呢?
接下來我們要探討的是自動(dòng)化機(jī)器學(xué)習(xí)屬于哪一類科學(xué),以及它不屬于哪一類科學(xué)。
自動(dòng)化機(jī)器學(xué)習(xí)并不屬于自動(dòng)化數(shù)據(jù)科學(xué)。毫無疑問的是它與自動(dòng)化數(shù)據(jù)科學(xué)有重復(fù)的部分。盡管如此,機(jī)器學(xué)習(xí)只是數(shù)據(jù)科學(xué)工具包中的一個(gè)工具。它無法對(duì)所有的數(shù)據(jù)科學(xué)任務(wù)起作用。例如,機(jī)器學(xué)習(xí)雖然適用于預(yù)測性的數(shù)據(jù)科學(xué)任務(wù)。但它并不適用于描述性分析的數(shù)據(jù)科學(xué)任務(wù)。
即使是那些預(yù)測性的數(shù)據(jù)科學(xué)任務(wù),也不僅僅只包含預(yù)測。我們對(duì)自動(dòng)化機(jī)器學(xué)習(xí)與自動(dòng)化數(shù)據(jù)科學(xué)會(huì)產(chǎn)生了混淆,對(duì)此,數(shù)據(jù)科學(xué)家Sandro Saitta認(rèn)為:
這種誤解來源于我們對(duì)完整的數(shù)據(jù)科學(xué)過程(例如:CRISP-DM)、準(zhǔn)備數(shù)據(jù)的子過程(特征提取等等)以及建模(建模也被我們我們稱為機(jī)器學(xué)習(xí))的混淆。
在讀到關(guān)于自動(dòng)化數(shù)據(jù)科學(xué)與數(shù)據(jù)科學(xué)競賽的工具新聞的時(shí)候,沒有行業(yè)經(jīng)驗(yàn)的人會(huì)很困惑,他們可能認(rèn)為數(shù)據(jù)科學(xué)就是建模,這樣就可以完全自動(dòng)化運(yùn)行了。
他是完全正確的,不僅僅是詞義的問題。假如你想要對(duì)機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)有一個(gè)更加清晰的認(rèn)識(shí),那就讀讀這個(gè)。
此外,數(shù)據(jù)科學(xué)家、自動(dòng)化機(jī)器學(xué)習(xí)的領(lǐng)軍人物Randy Olson認(rèn)為我們要想得到高效的機(jī)器學(xué)習(xí)設(shè)計(jì)方案,我們必須做到以下幾點(diǎn):
- 始終調(diào)整我們模型的超參數(shù)
- 始終嘗試不同的模型
- 始終對(duì)我們的數(shù)據(jù)進(jìn)行大量的特征探索
假如我們將以上所說的東西都考慮進(jìn)去,那么我們可以認(rèn)為自動(dòng)化機(jī)器學(xué)習(xí)的任務(wù)是選擇算法、超參調(diào)整、迭代建模以及模型評(píng)價(jià),這樣的話,我們就可以以此來定義自動(dòng)化機(jī)器學(xué)習(xí)了。自動(dòng)化機(jī)器學(xué)習(xí)的定義是多種多樣的(對(duì)比一下數(shù)據(jù)科學(xué),當(dāng)你向十個(gè)人詢問什么是數(shù)據(jù)科學(xué)的時(shí)候,你會(huì)得到是十一種不同的回答。),但是我們卻可以說,這開了個(gè)好頭兒。
我們?yōu)槭裁葱枰?/strong>
盡管我們知道了自動(dòng)化機(jī)器學(xué)習(xí)的概念,自動(dòng)化機(jī)器學(xué)習(xí)對(duì)我們可能有好處,但是我們?nèi)孕枰罏槭裁礄C(jī)器學(xué)習(xí)會(huì)很難。
AI研究人員、斯坦福大學(xué)博士生S. Zayd Enam最近寫了一篇奇特的博客,博客的標(biāo)題是《為什么機(jī)器學(xué)習(xí)這么“硬”?》,在這篇文章中,他寫道(注意粗體字):

機(jī)器學(xué)習(xí)仍然是相對(duì)很困難的問題。毫無疑問,通過研究來推進(jìn)機(jī)器學(xué)習(xí)算法的進(jìn)步會(huì)很困難。這需要?jiǎng)?chuàng)造力、實(shí)驗(yàn)以及堅(jiān)持。 由于現(xiàn)成的算法、模型可以很好的為你提供服務(wù),這就阻礙了機(jī)器學(xué)習(xí)的發(fā)展。
請注意,盡管Enam主要提及的是機(jī)器學(xué)習(xí)的研究,但是他也提到了現(xiàn)成的算法在用例中的實(shí)現(xiàn)(見粗體字)。
緊接著Enam詳細(xì)闡述了機(jī)器學(xué)習(xí)的難題,并著重?cái)⑹隽怂惴ǖ奶匦裕ㄒ姶煮w字):
機(jī)器學(xué)習(xí)的難題之一就是建立直覺。建立直覺的意思是采用某種工具來應(yīng)對(duì)問題。 這就需要知道可用的算法、模型、風(fēng)險(xiǎn)權(quán)衡以及每一個(gè)限制條件。
……
困難在于機(jī)器學(xué)習(xí)基本上很難進(jìn)行調(diào)試。對(duì)于機(jī)器學(xué)習(xí)來說,調(diào)試會(huì)在兩種情況下發(fā)生:1)你的算法不起作用了;2)你的算法效用不是很好。…… 算法一開始就起作用的情況很少,因此我們大部分時(shí)間都在用來創(chuàng)建算法。
Enam緊接著從算法研究層面闡述了框架問題。再次強(qiáng)調(diào)下,他所說的是應(yīng)用算法。假如一個(gè)算法不起作用,或者性能不是很好,那么我們就需要對(duì)算法進(jìn)行迭代,即再選擇與再定義。這就產(chǎn)生了自動(dòng)化,因此也就有了自動(dòng)化算法。
我以前對(duì)于自動(dòng)化機(jī)器學(xué)習(xí)算法本質(zhì)的理解是這樣的:
正如Sebastian Raschka描述的那樣,假如說計(jì)算機(jī)程序關(guān)于自動(dòng)化的,那么機(jī)器學(xué)習(xí)可以看做是“關(guān)于自動(dòng)化的自動(dòng)化”。那么自動(dòng)化機(jī)器學(xué)習(xí)就是關(guān)于自動(dòng)化的自動(dòng)化的自動(dòng)化。程序通過管理重復(fù)的任務(wù)來減輕我們的壓力;機(jī)器學(xué)習(xí)幫助計(jì)算機(jī)如何***的處理這些重復(fù)的任務(wù);自動(dòng)化機(jī)器學(xué)習(xí)幫助計(jì)算機(jī)學(xué)習(xí)如何優(yōu)化上面的結(jié)果。
這種思想很有用處;盡管我們之前會(huì)擔(dān)心調(diào)參數(shù)、調(diào)超參數(shù)。自動(dòng)化機(jī)器學(xué)習(xí)通過嘗試一些列不同的方法,最終會(huì)采用***的方式來調(diào)參,從而得到***的結(jié)果。
自動(dòng)化機(jī)器學(xué)的理論基礎(chǔ)來源于這個(gè)想法:假如我們必須創(chuàng)建海量的機(jī)器學(xué)習(xí)模型、使用大量的算法、使用不同的超參數(shù)配置,那么我們就可以使用自動(dòng)化的方式進(jìn)行建模。同時(shí)也可以比較性能與準(zhǔn)確度。
很簡單,對(duì)不對(duì)?
對(duì)自動(dòng)化機(jī)器學(xué)習(xí)工具進(jìn)行比較
現(xiàn)在我們知道了自動(dòng)化機(jī)器學(xué)習(xí)到底是什么了,以及我們要用它的原因。那我們我們該如何才能創(chuàng)造出一個(gè)自動(dòng)化機(jī)器學(xué)習(xí)模型來?接下來要講解的是兩個(gè)自動(dòng)機(jī)器學(xué)習(xí)工具包的概述,以及二者之間比較。這些工具包是使用python編寫而成的。這兩個(gè)工具使用不同的方式來達(dá)到相同的目的,也就是是機(jī)器學(xué)習(xí)過程的自動(dòng)化。
Auto-sklearn
Auto-sklearn是自動(dòng)化機(jī)器學(xué)習(xí)的工具包,我們用它來替換scikit-learn中的estimator。在最近由KDnuggets舉辦的機(jī)器學(xué)習(xí)博客大賽中,它取得了冠軍頭銜。

auto-sklearn使機(jī)器學(xué)習(xí)的使用者可以很輕松的進(jìn)行算法選擇以及超參數(shù)的調(diào)整。它的優(yōu)勢就是在于使用貝葉斯優(yōu)化、元數(shù)據(jù)學(xué)習(xí)以及集合建設(shè)。要想了解更多關(guān)于auto-sklearn的背后技術(shù),你可以閱讀這篇2015年發(fā)表在NIPS論文。
上面的信息是摘自項(xiàng)目的文檔說明,Auto-sklearn可以通過貝葉斯優(yōu)化方式將超參數(shù)***化,就是通過不斷迭代以下幾個(gè)步驟:
- 創(chuàng)建一個(gè)概率模型,來找到超參數(shù)設(shè)置與機(jī)器學(xué)習(xí)的表現(xiàn)之間的關(guān)系
- 使用這個(gè)模型來挑選出有用的超參數(shù)設(shè)置,通過權(quán)衡探索與開發(fā),進(jìn)而繼續(xù)嘗試。探索指的是探索模型的未知領(lǐng)域;開發(fā)指的是重點(diǎn)從已知的空間中找到表現(xiàn)良好的部分。
- 設(shè)置好超參數(shù),然后運(yùn)行機(jī)器學(xué)習(xí)算法。
下面將進(jìn)一步闡明這個(gè)過程是如何進(jìn)行的:
這個(gè)過程可以概括為聯(lián)合選擇算法、預(yù)處理方法以及超參數(shù)。具體如下:分類/回歸的選擇、預(yù)處理方法是***優(yōu)先級(jí)、分類超參數(shù)、被選擇方法的超參數(shù)會(huì)被激活。我們將使用貝葉斯優(yōu)化方法來搜索組合空間。貝葉斯優(yōu)化方法適用于處理高維條件空間。我們使用SMAC,SMAC是的基礎(chǔ)是隨機(jī)森林,它是解決這類問題的***方式。
就實(shí)用性而言,由于Auto-sklearn直接替代scikit-learn的estimator,因此scikt-learn需要安裝這個(gè)功能,我們才能利用到這個(gè)優(yōu)勢。Auto-sklearn同樣也支持在分布式文件系統(tǒng)中進(jìn)行并行計(jì)算,同時(shí)它也可以利用scikit-learn模型的持續(xù)特性。要想高效的使用Auto-sklearn替代estimator只需要4行代碼就可以了。作者這樣寫道:

有一個(gè)更具魯棒性的示例(該示例使用了Auto-sklearn,并以MNIST數(shù)據(jù)集作為數(shù)據(jù)來源),如下:

需要注意的是,Auto-sklearn是ChaLearn AutoML challenge競賽中,auto單元與tweakathon tracks單元的雙料冠軍。
最近Kdnuggets舉辦了自動(dòng)化數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)博客大賽,Auto-sklearn研發(fā)團(tuán)隊(duì)提交的一篇博文在本次大賽中獲獎(jiǎng),你可以 點(diǎn)擊這里 進(jìn)行閱讀,同樣也可以 點(diǎn)擊這里 來閱讀對(duì)他們的的采訪。Auto-sklearn是由Freiburg大學(xué)研發(fā)出來的。
Auto-sklearn已經(jīng)被托管到GitHub上了,你可以找到相關(guān)文檔以及API。
TPOT
TPOT被認(rèn)為是“你的數(shù)據(jù)科學(xué)助手”(要注意,不是“你的數(shù)據(jù)科學(xué)替代品”)。它是一個(gè)Python的工具。通過使用“遺傳編程來自動(dòng)的創(chuàng)建與優(yōu)化機(jī)器學(xué)習(xí)管道”。TPOT與Auto-sklearn類似,與scikit-learn協(xié)同工作。就像是scikit-learn的包裝器。
在本文中,我們曾提到過,這兩個(gè)工具使用不同的方式,達(dá)到相似的目標(biāo)。二者都是開源的,都是使用python編寫而成的,都宣稱通過使用自動(dòng)化機(jī)器學(xué)習(xí)的方式簡化了機(jī)器學(xué)習(xí)的過程。然而Auto-sklearn使用的是貝葉斯優(yōu)化,TPOT使用的卻是遺傳編程。
盡管兩者使用的方法不同,但是二者的最終結(jié)果卻是相同的:自動(dòng)化超參數(shù)選擇,用一系列算進(jìn)行建模,對(duì)大量特征的探索,這些都導(dǎo)致了迭代建模以及模型進(jìn)化。

TPOT的真正好處之一就是使用scikit-learn的管道,產(chǎn)生可以準(zhǔn)備運(yùn)行的、獨(dú)立的Python代碼。這個(gè)代碼代表著所有備選模型中表現(xiàn)***的模型。我們就可以修改與審查這份代碼。這份代碼并不會(huì)是最終的模型,而是可以當(dāng)做是我們尋找***模型的有效起點(diǎn)。
下面是一個(gè)關(guān)于TPOT的例子,該案例使用MNIST數(shù)據(jù)集:

這次運(yùn)行的結(jié)果正確率達(dá)到了98%,同時(shí)pyhton代碼也就是我們所說的管道也會(huì)被導(dǎo)入到tpot-mnist-pipeline.py文件當(dāng)中,如下所示:

我們可以 在GitHub上找到TPOT的源代碼 ,以及說明文檔。
TPOT的領(lǐng)軍人物Randy Olson在Kdnuggets上寫過一篇關(guān)于TPOT 與AutoML(自動(dòng)化機(jī)器學(xué)習(xí))的文章,你可以 點(diǎn)擊這里 找到該文章。也會(huì)在這里找到對(duì)Randy的采訪。
TPOT是由賓夕法尼亞大學(xué)生物醫(yī)學(xué)信息學(xué)研究所研究出來的,由NIH資助。
當(dāng)然,自動(dòng)化機(jī)器學(xué)習(xí)不僅僅只有這兩個(gè)工具。還有其他的工具,像Hyperopt (Hyperopt-sklearn)、 Auto-WEKA,以及Spearmint等等。我打賭在未來幾年,大量相關(guān)的額外項(xiàng)目將會(huì)出現(xiàn),這些項(xiàng)目中既會(huì)包含研究項(xiàng)目,也會(huì)包含工業(yè)項(xiàng)目。
自動(dòng)化機(jī)器學(xué)習(xí)的未來
自動(dòng)化機(jī)器學(xué)習(xí)的未來在哪里?
我最近公開地進(jìn)行過以下陳述(根據(jù)我的文章《2017年機(jī)器學(xué)習(xí)預(yù)測》):
自動(dòng)化機(jī)器學(xué)習(xí)將變成重要的技術(shù)。在外人看來,它可能不如深度神經(jīng)網(wǎng)絡(luò)。但是自動(dòng)化機(jī)器學(xué)習(xí)對(duì)于機(jī)器學(xué)習(xí)、人工智能以及數(shù)據(jù)科學(xué)都產(chǎn)生了深遠(yuǎn)的影響。這種影響極有可能在2017年顯示出來。
在同一篇文章當(dāng)中,Randy Olson也表達(dá)了在2017年他對(duì)自動(dòng)化機(jī)器學(xué)習(xí)的期望。此外Randy在最近的采訪中有更加詳細(xì)地闡述了他的預(yù)測:
在不久的將來,我認(rèn)為自動(dòng)化機(jī)器學(xué)習(xí)將會(huì)替代機(jī)器學(xué)習(xí)的建模過程:一旦數(shù)據(jù)集擁有相對(duì)清晰的格式,那么自動(dòng)化機(jī)器學(xué)習(xí)將會(huì)比99%的人類更快地設(shè)計(jì)與優(yōu)化機(jī)器學(xué)習(xí)管道。
……
我可以很確定地認(rèn)為自動(dòng)化機(jī)器學(xué)習(xí)系統(tǒng)將會(huì)成為機(jī)器學(xué)習(xí)的主流。
但是自動(dòng)化機(jī)器學(xué)習(xí)是否會(huì)替代數(shù)據(jù)科學(xué)家?Randy繼續(xù)說道:
我并不認(rèn)為自動(dòng)化機(jī)器學(xué)習(xí)的目標(biāo)是為了替代數(shù)據(jù)科學(xué)家,就像是智能代碼自動(dòng)完成工具的目標(biāo)并不是來替代程序員一樣。相反,對(duì)于我來說,自動(dòng)化機(jī)器學(xué)習(xí)的的目標(biāo)是為了減輕數(shù)據(jù)科學(xué)家的壓力,使他們不必將大量的精力耗費(fèi)在重復(fù)與耗時(shí)的任務(wù)上(比如說機(jī)器學(xué)習(xí)的管道設(shè)計(jì)與超參數(shù)的***化)。這樣他們就可以將時(shí)間投入到無法進(jìn)行自動(dòng)化的任務(wù)當(dāng)中去。
這種思想十分好。auto-sklearn的開發(fā)人員也同樣認(rèn)同他的觀點(diǎn):
我們發(fā)展自動(dòng)化機(jī)器學(xué)習(xí)方法是為了向數(shù)據(jù)科學(xué)家提供幫助,而不是代替他們。這些方法使數(shù)據(jù)科學(xué)家擺脫了討厭復(fù)雜的任務(wù)(比如說超參數(shù)優(yōu)化),機(jī)器可以很好地解決這些任務(wù)。然而數(shù)據(jù)分析與結(jié)論獲取的工作仍然需要人類專家來完成。在未來,理解應(yīng)用程序領(lǐng)域的數(shù)據(jù)科學(xué)家仍然極其的重要。
這聽起來十分的鼓舞人心:數(shù)據(jù)科學(xué)家不會(huì)被大量替換,自動(dòng)化機(jī)器學(xué)習(xí)是為了幫助他們更好的工作。這并不是說自動(dòng)化機(jī)器學(xué)習(xí)已經(jīng)很***了。在我們提到自動(dòng)機(jī)器學(xué)習(xí)是否還有進(jìn)步空間的時(shí)候,Auto-sklearn團(tuán)隊(duì)如是說:
盡管有一些方法可以用來調(diào)試機(jī)器學(xué)習(xí)管道的超參數(shù),但是目前為止很少有工作能發(fā)現(xiàn)新管道。Auto-sklearn以固定的順序使用一系列的預(yù)定義的預(yù)處理器與分類器。假如一個(gè)方法對(duì)于找到新管道很有效,那么這個(gè)方法將會(huì)很有用處。當(dāng)然,人們可以繼續(xù)這種思路,并嘗試自動(dòng)尋找新的算法。最近,已經(jīng)有幾篇論文這樣做了。比如說Learning to learn by gradient descent by gradient descent.(雷鋒網(wǎng)此前也有提及這篇論文,它獲得了RedditML小組評(píng)選的“年度***論文標(biāo)題獎(jiǎng)”)
自動(dòng)化機(jī)器學(xué)習(xí)的發(fā)展方向在哪里?很難說清楚。毋庸置疑的是,遲早會(huì)出現(xiàn)。盡管不是所有的數(shù)據(jù)科學(xué)家都熟知自動(dòng)化機(jī)器學(xué)習(xí),但是熟知自動(dòng)化機(jī)器學(xué)習(xí)將會(huì)使你獲益匪淺。別忘了,假如你能夠在大多數(shù)人意識(shí)到之前就去學(xué)習(xí)自動(dòng)化機(jī)器學(xué)習(xí),駕馭科技浪潮,你就不會(huì)因未來的不確定性而擔(dān)心你的工作了。你對(duì)于這些技術(shù)的駕馭利用將會(huì)幫助你在未來更好的工作。而我也再想不出比這個(gè)更好的理由來學(xué)習(xí)自動(dòng)化機(jī)器學(xué)習(xí)了。























