谷歌的 AutoML 每小時(shí)收費(fèi) 20 美元,是不是很肉疼?GitHub 上的一個(gè)開源項(xiàng)目為廣大從業(yè)者帶來了福音。這種名為 AutoKeras 的開源 Python 包為昂貴的 AutoML 提供了免費(fèi)替代品。AutoKeras 使用高效神經(jīng)網(wǎng)絡(luò)自動(dòng)架構(gòu)搜索 ENAS,具有安裝快速、運(yùn)行簡單、案例豐富、易于修改等優(yōu)點(diǎn),而且所有代碼都是開源的!想要嘗鮮的小伙伴可以了解一下。
每小時(shí) 20 美刀的 AutoML
Google AI 終于發(fā)布了 AutoML 的 beta 版,有人說這項(xiàng)服務(wù)將徹底改變深度學(xué)習(xí)的方式。
beta 版鏈接:https://cloud.google.com/automl/
谷歌的 AutoML 是機(jī)器學(xué)習(xí)工具中新的云軟件集。它基于谷歌最先進(jìn)的圖像識別研究——神經(jīng)網(wǎng)絡(luò)自動(dòng)架構(gòu)搜索(Neural Architecture Search,NAS)。NAS 是一種在給定特定數(shù)據(jù)集中的算法,用于搜索在該數(shù)據(jù)集上完成特定任務(wù)的最優(yōu)神經(jīng)網(wǎng)絡(luò)。AutoML 是一套機(jī)器學(xué)習(xí)的工具,可以讓用戶輕松地訓(xùn)練高性能的深度網(wǎng)絡(luò),而無需用戶具備任何深度學(xué)習(xí)或人工智能方面的知識;你所需要的只是標(biāo)簽數(shù)據(jù)!谷歌將使用 NAS 為特定的數(shù)據(jù)集和任務(wù)找到最優(yōu)網(wǎng)絡(luò)。他們已經(jīng)展示了該模型如何取得遠(yuǎn)優(yōu)于手工設(shè)計(jì)網(wǎng)絡(luò)的性能。
AutoML 完全改變了整個(gè)機(jī)器學(xué)習(xí)圈,因?yàn)閷τ谠S多應(yīng)用程序來說,有了它就不再需要專業(yè)技能和專業(yè)知識了。許多公司只需要深度網(wǎng)絡(luò)完成簡單的任務(wù),如圖像分類。在這一點(diǎn)上,他們不需要招五個(gè)機(jī)器學(xué)習(xí)博士,只需要一個(gè)能處理數(shù)據(jù)遷移和數(shù)據(jù)組織的人即可。
那么 AutoML 會(huì)是讓所有公司或者個(gè)人輕松做人工智能的「萬能鑰匙」嗎?
沒那么快!
在計(jì)算機(jī)視覺中使用谷歌的 AutoML,每小時(shí)將花費(fèi) 20 刀。簡直瘋了!除非花錢去試,不然你都無法確定 AutoML 是否真的比你自己手工設(shè)計(jì)的網(wǎng)絡(luò)更準(zhǔn)確。有趣的是,在谷歌以此盈利之前,無論在谷歌還是 AI 社區(qū),人們都更傾向于開源,將知識分享給每一個(gè)人。
而谷歌的 AutoML 就將敗在「開源」上。
幫你省錢的開源 AutoKeras
AutoKeras 是一個(gè)由易用深度學(xué)習(xí)庫 Keras 編寫的開源 python 包。AutoKeras 使用 ENAS——神經(jīng)網(wǎng)絡(luò)自動(dòng)架構(gòu)搜索的高效新版本。AutoKeras 包可通過 pip install autokeras 快速安裝,然后你就可以免費(fèi)在準(zhǔn)備好在的數(shù)據(jù)集上做你自己專屬的架構(gòu)搜索。
因?yàn)樗械拇a都是開源的,所以如果你想實(shí)現(xiàn)真正的自定義,你甚至可以利用其中的參數(shù)。所有都來自 Keras,所以代碼都很深入淺出,能幫助開發(fā)人員快速準(zhǔn)確地創(chuàng)建模型,并允許研究人員深入研究架構(gòu)搜索。
AutoKeras 具備一個(gè)好的開源項(xiàng)目該有的一切:安裝快速,運(yùn)行簡單,案例豐富,易于修改,甚至可以看到最后 NAS 找到的網(wǎng)絡(luò)模型!偏愛 TensorFlow 或 Pytorch 的用戶可點(diǎn)擊以下鏈接:
https://github.com/melodyguan/enas
https://github.com/carpedm20/ENAS-pytorch
用戶可以嘗試?yán)?AutoKeras 或其他任何實(shí)現(xiàn)方式替代 AutoML,它們的價(jià)格便宜得離譜。或許谷歌正暗中改進(jìn) AutoML,與各種開源方法拉開差距,但 NAS 模型的表現(xiàn)與手工設(shè)計(jì)的模型差距很小,付出這么高的代價(jià)真的值得嗎?
知識應(yīng)該是開源的
總體來看,深度學(xué)習(xí)和 AI 是一種非常強(qiáng)大的技術(shù),我們不應(yīng)該為其設(shè)置如此之高的成本壁壘。沒錯(cuò),谷歌、亞馬遜、蘋果、Facebook 及微軟都需要賺錢才能在競爭中存活下來。但現(xiàn)在,研究論文是公開的,我們的深度學(xué)習(xí)庫可以快速復(fù)制這些方法,在公開內(nèi)容唾手可得的情況下,為用戶設(shè)置使用障礙是沒有意義的。
這里有一個(gè)更嚴(yán)重的潛在問題:知識本身正在被隱藏。AI 領(lǐng)域最新趨勢中非??扇牲c(diǎn)的一點(diǎn)就是:許多研究社區(qū)都決定在 arXiv 等網(wǎng)站上快速、公開地發(fā)表自己的研究成果,以與其他社區(qū)分享并獲得反饋。此外還有一個(gè)趨勢變得越來越明顯,即在 Github 上發(fā)布研究代碼以供復(fù)制以及在研究和實(shí)際應(yīng)用中實(shí)現(xiàn)算法的進(jìn)一步應(yīng)用。然而,我們?nèi)匀荒芸吹竭@種研究受困于高高的成本壁壘。
分享有助于每個(gè)人知識的增長和科學(xué)的進(jìn)步。知識應(yīng)該是開源的,這一點(diǎn)毋庸置疑,而且造福人人。
項(xiàng)目鏈接:https://github.com/jhfjhfj1/autokeras
AutoKeras 技術(shù)解析
相比于 AutoML,AutoKeras 采用的架構(gòu)搜索方法是一種結(jié)合了貝葉斯優(yōu)化的神經(jīng)架構(gòu)搜索。它主要關(guān)注于降低架構(gòu)搜索所需要的計(jì)算力,并提高搜索結(jié)果在各種任務(wù)上的性能。以下我們將從神經(jīng)架構(gòu)搜索到貝葉斯優(yōu)化介紹 AutoKeras 背后的技術(shù),并期望讀者們能嘗試使用這樣的開源技術(shù)完成各種優(yōu)秀的應(yīng)用。
神經(jīng)架構(gòu)搜索(NAS)是自動(dòng)機(jī)器學(xué)習(xí)中一種有效的計(jì)算工具,旨在為給定的學(xué)習(xí)任務(wù)搜索最佳的神經(jīng)網(wǎng)絡(luò)架構(gòu)。然而,現(xiàn)有的 NAS 算法通常計(jì)算成本很高。另一方面,網(wǎng)絡(luò)態(tài)射(network morphism)已經(jīng)成功地應(yīng)用于神經(jīng)架構(gòu)搜索。網(wǎng)絡(luò)態(tài)射是一種改變神經(jīng)網(wǎng)絡(luò)架構(gòu)但保留其功能的技術(shù)。因此,我們可以利用網(wǎng)絡(luò)態(tài)射操作將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)改成新的體系架構(gòu),如,插入一層或添加一個(gè)殘差連接。然后,只需再加幾個(gè) epoch 就可以進(jìn)一步訓(xùn)練新架構(gòu)以獲得更好的性能。
基于網(wǎng)絡(luò)態(tài)射的 NAS 方法要解決的最重要問題是運(yùn)算的選擇,即從網(wǎng)絡(luò)態(tài)射運(yùn)算集里進(jìn)行選擇,將現(xiàn)有的架構(gòu)改變?yōu)橐环N新的架構(gòu)?;谧钚戮W(wǎng)絡(luò)態(tài)射的方法使用深度強(qiáng)化學(xué)習(xí)控制器,這需要大量的訓(xùn)練樣例。另一個(gè)簡單的方法是使用隨機(jī)算法和爬山法,這種方法每次只能探索搜索區(qū)域的鄰域,并且有可能陷入局部最優(yōu)值。
貝葉斯優(yōu)化已被廣泛用于基于觀察有限數(shù)據(jù)的尋找函數(shù)最優(yōu)值過程。它經(jīng)常被用于尋找黑箱函數(shù)的最優(yōu)點(diǎn),其中函數(shù)的觀察值很難獲取。貝葉斯優(yōu)化的獨(dú)特性質(zhì)啟發(fā)了研究者探索它在指導(dǎo)網(wǎng)絡(luò)態(tài)射減少已訓(xùn)練神經(jīng)網(wǎng)絡(luò)數(shù)量的能力,從而使搜索更加高效。
為基于網(wǎng)絡(luò)態(tài)射的神經(jīng)架構(gòu)搜索設(shè)計(jì)貝葉斯優(yōu)化方法是很困難的,因?yàn)榇嬖谌缦绿魬?zhàn):首先,其潛在的高斯過程(GP)在傳統(tǒng)上是用于歐氏空間的,為了用觀察數(shù)據(jù)更新貝葉斯優(yōu)化,潛在高斯過程將使用搜索到的架構(gòu)和它們的性能來訓(xùn)練。然而,神經(jīng)網(wǎng)絡(luò)架構(gòu)并不位于歐氏空間,并且很難參數(shù)化為固定長度的向量。
其次,采集函數(shù)需要進(jìn)行優(yōu)化以生成下一個(gè)架構(gòu)用于貝葉斯優(yōu)化。然而,這個(gè)過程不是最大化歐氏空間里的一個(gè)函數(shù)來態(tài)射神經(jīng)架構(gòu),而是選擇一個(gè)節(jié)點(diǎn)在一個(gè)樹架構(gòu)搜索空間中擴(kuò)展,其中每個(gè)節(jié)點(diǎn)表示一個(gè)架構(gòu),且每條邊表示一個(gè)態(tài)射運(yùn)算。傳統(tǒng)的類牛頓或基于梯度的方法不能簡單地進(jìn)行應(yīng)用。第三,網(wǎng)絡(luò)態(tài)射運(yùn)算改變神經(jīng)架構(gòu)的的一個(gè)層可能會(huì)導(dǎo)致其它層的很多變化,以保持輸入和輸出的一致性,這在以前的研究中并沒有定義。網(wǎng)絡(luò)態(tài)射運(yùn)算在結(jié)合了跳過連接的神經(jīng)架構(gòu)搜索空間中是很復(fù)雜的。
在 AutoKeras 作者提交的論文中,研究人員們提出了一種帶有網(wǎng)絡(luò)態(tài)射的高效神經(jīng)架構(gòu)搜索,它利用貝葉斯優(yōu)化通過每次選擇最佳運(yùn)算來引導(dǎo)搜索空間。為應(yīng)對上述挑戰(zhàn),研究者創(chuàng)建了一種基于編輯距離(edit-distance)的神經(jīng)網(wǎng)絡(luò)核函數(shù)。與網(wǎng)絡(luò)態(tài)射的關(guān)鍵思路一致,它給出了將一個(gè)神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)化為另一個(gè)神經(jīng)網(wǎng)絡(luò)需要多少運(yùn)算。此外,研究者為樹形架構(gòu)搜索空間專門設(shè)計(jì)了一種新的采集函數(shù)優(yōu)化器,使貝葉斯優(yōu)化能夠從運(yùn)算中進(jìn)行選擇。優(yōu)化方法可以在優(yōu)化過程中平衡探索和利用。此外,作者還定義了一個(gè)網(wǎng)絡(luò)級態(tài)射,以解決基于前一層網(wǎng)絡(luò)態(tài)射的神經(jīng)架構(gòu)中的復(fù)雜變化。該方法被封裝成一個(gè)開源軟件,即 AutoKeras,在基準(zhǔn)數(shù)據(jù)集上進(jìn)行評估,并與最先進(jìn)的基線方法進(jìn)行比較。
該論文的主要貢獻(xiàn)總結(jié)如下:
結(jié)合網(wǎng)絡(luò)態(tài)射提出了一種高效的神經(jīng)架構(gòu)搜索算法;
提出了利用神經(jīng)網(wǎng)絡(luò)內(nèi)核的 NAS 貝葉斯優(yōu)化、樹結(jié)構(gòu)采集函數(shù)的優(yōu)化以及網(wǎng)絡(luò)級的態(tài)射;
開發(fā)了一個(gè)開源軟件 AutoKeras,基于本文提出的神經(jīng)架構(gòu)搜索方法;
在基準(zhǔn)數(shù)據(jù)集上運(yùn)行了大量試驗(yàn)來評估該方法。
論文:Efficient Neural Architecture Search with Network Morphism
論文地址:https://arxiv.org/abs/1806.10282
雖然目前深度神經(jīng)網(wǎng)絡(luò)自動(dòng)調(diào)參領(lǐng)域非常關(guān)注神經(jīng)架構(gòu)搜索(NAS),但現(xiàn)存的搜索算法通常面臨計(jì)算成本高昂的困境。網(wǎng)絡(luò)態(tài)射(Network morphism)在改變神經(jīng)網(wǎng)絡(luò)架構(gòu)的同時(shí)保留它的功能,因此能在搜索過程中實(shí)現(xiàn)更有效的訓(xùn)練來幫助 NAS。然而,基于 NAS 的網(wǎng)絡(luò)態(tài)射仍然在計(jì)算上比較昂貴,這主要因?yàn)閷ΜF(xiàn)有的架構(gòu)選擇合適的變形操作效率比較低。
眾所周知,貝葉斯優(yōu)化已經(jīng)廣泛應(yīng)用于優(yōu)化基于有限觀察值的目標(biāo)函數(shù),這激勵(lì)我們探索利用貝葉斯優(yōu)化加速變形運(yùn)算選擇過程。本論文中提出了一種新穎的框架,它引入了神經(jīng)網(wǎng)絡(luò)核函數(shù)和樹架構(gòu)的采集函數(shù)最優(yōu)化方法,并允許使用貝葉斯優(yōu)化為高效的神經(jīng)架構(gòu)搜索引導(dǎo)網(wǎng)絡(luò)態(tài)射。通過使用貝葉斯優(yōu)化選擇網(wǎng)絡(luò)態(tài)射操作,搜索空間的探索會(huì)更加高效。此外,將這一方法精心包裝成一個(gè)開源軟件,即 AutoKeras,沒有豐富機(jī)器學(xué)習(xí)背景的開發(fā)者也可以便捷地使用它。研究者已經(jīng)對真實(shí)數(shù)據(jù)集做了密集的實(shí)驗(yàn),并證明了開發(fā)的框架對于當(dāng)前最優(yōu)的基線模型有更優(yōu)的性能。
研究過程中需要解決的第一個(gè)問題是:NAS 空間不是歐氏空間,它并不滿足傳統(tǒng)高斯過程的假設(shè)。由于架構(gòu)包含的層級數(shù)和參數(shù)數(shù)量并不確定,因此向量化所有神經(jīng)架構(gòu)是不切實(shí)際的。此外,因?yàn)楦咚惯^程是一種核方法,所以研究人員使用神經(jīng)網(wǎng)絡(luò)核函數(shù)以解決 NAS 搜索空間的問題,而不是直接向量化神經(jīng)架構(gòu)。核函數(shù)背后的原理可直觀理解為將一個(gè)神經(jīng)架構(gòu)變形為另一個(gè)所需的編輯距離。
圖 1:神經(jīng)網(wǎng)絡(luò)核函數(shù)
我們需要解決的第二個(gè)問題是采集函數(shù)(acquisition function)最優(yōu)化。在歐氏空間上定義了傳統(tǒng)采集函數(shù),其優(yōu)化方法不適用于通過網(wǎng)絡(luò)態(tài)射進(jìn)行的樹架構(gòu)搜索。因此本文提出一種優(yōu)化樹架構(gòu)空間采集函數(shù)的新方法。
評估該方法有效性的結(jié)果如表 1 所示。我們的方法在所有數(shù)據(jù)集上的錯(cuò)誤率最低。
表 1:分類錯(cuò)誤率