Zoph等人2018年提出的NASNet-A模型的性能,以及AdaNet學(xué)習(xí)在CIFAR-10上將小型NASNet-A子網(wǎng)結(jié)合起來的性能比較。
用戶還可以通過擴(kuò)展adanet.subnetwork.Generator類來完全定義候選子網(wǎng)絡(luò)的搜索空間。這允許他們根據(jù)可用硬件增大或減小搜索空間。子網(wǎng)絡(luò)的搜索空間可以很簡單,只需使用不同的隨機(jī)種子復(fù)制相同的子網(wǎng)絡(luò)配置,就能訓(xùn)練具有不同超參數(shù)組合的數(shù)十個(gè)子網(wǎng)絡(luò),并讓AdaNet選擇要包含在最終集合中的子網(wǎng)絡(luò)。
谷歌的研究團(tuán)隊(duì)提供了GitHub repo和tutorial notebook,并且包含了一些使用dense layers和卷積的示例幫助大家入門。
AdaNet的數(shù)據(jù)集、工作原理和應(yīng)用范圍
今天,該項(xiàng)目的成員也在Reddit和ycombinator上回答讀者提問,我們精選了一些回答:
1、請(qǐng)問你使用該算法嘗試了哪些數(shù)據(jù)集?它是否只適用于圖像分類,比如Google的AutoML產(chǎn)品?
我們?cè)趫D像識(shí)別之外的幾個(gè)大型數(shù)據(jù)集上使用了AdaNet,包括結(jié)構(gòu)化數(shù)據(jù)(參見原始論文)和一些NLP數(shù)據(jù)集。在大多數(shù)情況下,AdaNet的性能優(yōu)于獨(dú)立訓(xùn)練的任何單個(gè)子網(wǎng)絡(luò)(這些子網(wǎng)絡(luò)可能使用非常復(fù)雜的架構(gòu),如NASNet-A)。
當(dāng)然,如何定義一個(gè)優(yōu)化搜索空間,并使用合理的搜索啟發(fā)方式/算法對(duì)于獲得最佳的最終模型非常重要,而且一般最佳的模型是使用強(qiáng)大的先驗(yàn),就像最先進(jìn)的模型,并讓AdaNet學(xué)習(xí)將這些模型的不同變化結(jié)合起來。
但是,如果你希望AdaNet能夠通用于任意數(shù)據(jù)集,可以嘗試定義合理的搜索空間,比如搜索日益復(fù)雜的完全連接的神經(jīng)網(wǎng)絡(luò),并允許AdaNet學(xué)習(xí)將其組合到最佳模型中。
最終,這就是我們?cè)O(shè)計(jì)的AdaNet具備高度靈活性的原因:我們希望任何人嘗試建立對(duì)自己的數(shù)據(jù)集有意義的子網(wǎng)絡(luò)搜索空間,以便獲得最佳性能的最終模型。
2、官方資源庫中的示例是個(gè)更好的例子,說明了AdaNet的工作原理:
https://github.com/tensorflow/ad ... net_objective.ipynb
盡管名字叫“AutoML”,但實(shí)際上似乎仍需要做很多工作才能實(shí)現(xiàn)模型的優(yōu)化。 (第二個(gè)示例在這方面的表現(xiàn)相對(duì)更好一些:
https://github.com/tensorflow/ad ... mizing_adanet.ipynb)
確實(shí),雖然AdaNet項(xiàng)目目前還不包含最先進(jìn)的架構(gòu)搜索策略/搜索空間,但它確實(shí)為研究人員提供了一個(gè)抽象對(duì)象(adanet.subnetwork.Generator)來實(shí)現(xiàn)神經(jīng)架構(gòu)搜索算法,同時(shí)提供了適合用戶的生產(chǎn)友好型的TF Estimator界面,讓算法開發(fā)更容易集成到生產(chǎn)過程中,而且,已經(jīng)使用TF Estimator生態(tài)系統(tǒng)的用戶也可以更快地從這些開發(fā)成果中受益。
我想指出的是,盡管AdaNet的某些方面并不那么先進(jìn),但我們已經(jīng)看到AdaNet在各種各樣的任務(wù)上取得了良好的效果。大家都來試試看吧!
當(dāng)然,我們不會(huì)停下腳步!我們很高興自己也在這個(gè)領(lǐng)域工作,我們今后將繼續(xù)更新這個(gè)項(xiàng)目。
3、我還沒有細(xì)讀,但抱歉問一句;:AdaNet可以處理具有可變長度skip connections的塊嗎?(比如DenseNet),甚至能夠提供AmoebaNet風(fēng)格的模型嗎?指導(dǎo)超參數(shù)/架構(gòu)選擇過程的元策略(網(wǎng)格搜索/貝葉斯等)有哪些呢?謝謝!
這是個(gè)好問題!在最簡單的情況下,AdaNet允許用戶將獨(dú)立子網(wǎng)從線性模型集成到用戶定義的DenseNet / AmoebaNet式網(wǎng)絡(luò)上。但更有趣的是在迭代之間共享信息(這些信息可以是張量輸出,或是哪些超參數(shù)表現(xiàn)最好),以便AdaNet進(jìn)行神經(jīng)架構(gòu)搜索。用戶可以定義自己的adanet子網(wǎng)生成器,指定如何跨迭代過程調(diào)整訓(xùn)練方式。
開箱即用的元策略其實(shí)和用戶簡單定義的啟發(fā)式算法差不多。但是,AdaNet框架足夠靈活,可以支持更智能的策略,并抽象出分布式訓(xùn)練(Estimator),評(píng)估(TensorBoard)和服務(wù)(tf.SavedModel)的復(fù)雜度。
4、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)取得了如此大的進(jìn)步??梢怨烙?jì)一下我需要多少CPU 和成本才能獲得一些結(jié)果嗎?我的數(shù)據(jù)訓(xùn)練量大約是20M的樣本(每個(gè)樣本1K數(shù)據(jù)點(diǎn))。
這取決于你搜索的子網(wǎng)數(shù)量以及每個(gè)子網(wǎng)的訓(xùn)練成本。你可以使用單個(gè)DNN定義搜索空間,并為其提供一次迭代,這與固定DNN Estimator的操作相同。
比如說,假設(shè)搜索空間包含5個(gè)DNN,每個(gè)DNN完成一次迭代訓(xùn)練需要的成本為X,訓(xùn)練10次迭代,你的訓(xùn)練成本就是X x 5 x 10 = 50X。
但是,考慮到你使用AdaNet,可以考慮整合50個(gè)DNN進(jìn)行探索、訓(xùn)練和選擇等流程,此外,由于AdaNet是作為TensorFlow Estimator實(shí)現(xiàn)的,如果這就是你想要的,可以很容易地增加機(jī)器數(shù)量,以加快訓(xùn)練速度。
參考鏈接:
https://ai.googleblog.com/2018/1 ... t-and-flexible.html
https://www.reddit.com/r/Machine ... nsorflow_framework/
教程:
https://github.com/tensorflow/ad ... /examples/tutorials
【加入社群】
新智元 AI 技術(shù) + 產(chǎn)業(yè)社群招募中,歡迎對(duì) AI 技術(shù) + 產(chǎn)業(yè)落地感興趣的同學(xué),加小助手微信號(hào):aiera2015_3入群;通過審核后我們將邀請(qǐng)進(jìn)群,加入社群后務(wù)必修改群備注(姓名 - 公司 - 職位;專業(yè)群審核較嚴(yán),敬請(qǐng)諒解)。
評(píng)論