集成學(xué)習(xí)是將不同的機(jī)器學(xué)習(xí)模型結(jié)合在一起的創(chuàng)新方法,它廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)中,可以收獲很好地表現(xiàn),例如在Netflix Prize和Kaggle競(jìng)賽中都有它的身影。
但是,在實(shí)踐中,這種方法卻很少用到,因?yàn)橛?xùn)練時(shí)間很長(zhǎng),并且在選擇機(jī)器學(xué)習(xí)模型時(shí)需要考慮各種類型的專業(yè)領(lǐng)域。隨著計(jì)算力和各種深度學(xué)習(xí)硬件的出現(xiàn)(例如TPU),機(jī)器學(xué)習(xí)模型會(huì)越來(lái)越豐富,集成現(xiàn)象也會(huì)越來(lái)越多。那么是否有一種工具可以自動(dòng)搜索神經(jīng)網(wǎng)絡(luò)框架,然后學(xué)習(xí)將最佳的幾種模型集合,創(chuàng)造出另一個(gè)高質(zhì)量模型。
最近,谷歌推出了AdaNet,這是一個(gè)基于TensorFlow的輕量化框架,可以自動(dòng)學(xué)習(xí)高質(zhì)量模型,只需人類少量干預(yù)。AdaNet以最近的強(qiáng)化學(xué)習(xí)和基于演化的AutoML為基礎(chǔ),不僅速度快、靈活度高,而且還能保證成功學(xué)習(xí)率。重要的是,AdaNet不僅僅為學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)架構(gòu)提供了通用框架,而且還能學(xué)習(xí)集成,得到更好的模型。
AdaNet使用起來(lái)很方便,并且得到的都是高質(zhì)量模型,為機(jī)器學(xué)習(xí)從業(yè)者節(jié)省了大量時(shí)間,用一種適應(yīng)性算法學(xué)習(xí)將神經(jīng)架構(gòu)看作是子網(wǎng)絡(luò)的集成。AdaNet可以將不同深度和寬度的子網(wǎng)絡(luò)結(jié)合起來(lái),創(chuàng)造出一個(gè)多樣化的集成模型,減少參數(shù)的數(shù)量提高性能。
AdaNet逐漸生成神經(jīng)網(wǎng)絡(luò)集成的過(guò)程,在每一次迭代,它會(huì)計(jì)算每個(gè)候選網(wǎng)絡(luò)的集成損失,選擇最佳的那個(gè)加入到下次迭代中
快速易用
AdaNet采用TensorFlow估計(jì)器的交互界面,它通過(guò)簡(jiǎn)單訓(xùn)練、評(píng)估,大大簡(jiǎn)化了機(jī)器學(xué)習(xí)的編程過(guò)程。它把TensorFlow Hub模塊、TensorFlow模型分析和谷歌云的超參數(shù)調(diào)整期等開(kāi)源工具結(jié)合在了一起。分布式訓(xùn)練可以極大地減少訓(xùn)練時(shí)間。
AdaNet在CIFAR-100上每一訓(xùn)練步驟的精確度。藍(lán)線代表在訓(xùn)練集上的精確度,紅線代表測(cè)試集上的表現(xiàn)。在每百萬(wàn)個(gè)步驟上都有一個(gè)新的子網(wǎng)絡(luò)開(kāi)始訓(xùn)練,最終會(huì)提高整個(gè)集成模型的性能?;疑途G色的線表示新的子網(wǎng)絡(luò)加入之前集成的精確度
TensorBoard是可視化模型尺度在訓(xùn)練時(shí)最佳的TensorFlow特征之一,AdaNet與其無(wú)縫銜接,從而控制子網(wǎng)絡(luò)的訓(xùn)練、集成的構(gòu)成和性能。當(dāng)AdaNet完成訓(xùn)練后,它會(huì)輸出一個(gè)SavedModel,之后會(huì)利用TensorFlow Serving進(jìn)行部署。
學(xué)習(xí)保證
創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò)集成會(huì)面臨多種問(wèn)題:哪種是最好的子網(wǎng)絡(luò)架構(gòu)?是重復(fù)使用同一種架構(gòu)好,還是讓架構(gòu)多樣化好?雖然參數(shù)更多的復(fù)雜子網(wǎng)絡(luò)在訓(xùn)練集表現(xiàn)得可能更好,但也正是因?yàn)樗鼈兊膹?fù)雜性,可能無(wú)法在陌生數(shù)據(jù)上進(jìn)行泛化。這些挑戰(zhàn)都來(lái)自于對(duì)模型性能的評(píng)估,我們可以從訓(xùn)練集中分出一部分?jǐn)?shù)據(jù)對(duì)模型性能進(jìn)行評(píng)估,但是這樣做可能會(huì)減少用于訓(xùn)練的樣本數(shù)量。
而在這里,AdaNet的方法對(duì)目標(biāo)進(jìn)行優(yōu)化,平衡了集成框架在訓(xùn)練時(shí)的性能和它對(duì)陌生數(shù)據(jù)泛化之間的差別。核心思想就是,當(dāng)備選子網(wǎng)絡(luò)提高了集成的訓(xùn)練損失超過(guò)了其對(duì)泛化能力的影響時(shí),子網(wǎng)絡(luò)才能加入到集成中去。這保證了:
集成的泛化錯(cuò)誤由它的訓(xùn)練錯(cuò)誤和復(fù)雜性所限制。
通過(guò)對(duì)目標(biāo)進(jìn)行優(yōu)化,我們可以直接對(duì)這一限制進(jìn)行最小化。
對(duì)這一目標(biāo)進(jìn)行優(yōu)化的實(shí)際好處就是,它無(wú)需再選擇哪個(gè)子網(wǎng)絡(luò)要被添加到集成中去,這也使得更多的訓(xùn)練數(shù)據(jù)可以用于訓(xùn)練更多子網(wǎng)絡(luò),成為了額外的好處。想了解更多,可以閱讀我們關(guān)于AdaNet的教程。
可擴(kuò)展
對(duì)研究者和從業(yè)者來(lái)說(shuō),讓AutoML框架產(chǎn)生作用的關(guān)鍵不僅僅是提供合理的默認(rèn)值,而且要讓用戶嘗試對(duì)他們自己的子網(wǎng)絡(luò)或模型進(jìn)行定義。機(jī)器學(xué)習(xí)研究者、從業(yè)者和愛(ài)好者都可以通過(guò)adanet.subnetwork.Builder來(lái)定義自己的AdaNet。
已經(jīng)在自己的系統(tǒng)中集成TensorFlow模型的用戶可以輕松將他們的TensorFlow代碼轉(zhuǎn)移到AdaNet子網(wǎng)絡(luò)中,并使用adanet.Estimator提高模型性能,同時(shí)保證學(xué)習(xí)成功率。AdaNet會(huì)找到他們所定義的子網(wǎng)絡(luò)搜索空間,學(xué)習(xí)如何集成子網(wǎng)絡(luò)。在谷歌官方博客中,研究人員取了一個(gè)開(kāi)源的NASNet-A CIFAR架構(gòu),將它轉(zhuǎn)換成一個(gè)子網(wǎng)絡(luò),并在CIFAR-10上優(yōu)化,經(jīng)過(guò)八次AdaNet迭代后得到最佳結(jié)果。另外,我們的模型在更少的參數(shù)上也達(dá)到了相同結(jié)果:
用戶也可以用自己特殊的損失函數(shù)作為AdaNet目標(biāo)的一部分,從而訓(xùn)練回歸、分類和多任務(wù)學(xué)習(xí)等問(wèn)題。
用戶還可以擴(kuò)展adanet.subnetwork.Generator的類別,完全定義候選子網(wǎng)絡(luò)的搜索空間。這可以讓他們基于自己的硬件設(shè)備增加或減少搜索空間。子網(wǎng)絡(luò)的搜索空間和復(fù)制有著相同配置不同隨機(jī)種子的子網(wǎng)絡(luò)一樣簡(jiǎn)單,訓(xùn)練多個(gè)有著不同超參數(shù)組合的子網(wǎng)絡(luò),讓AdaNet選擇一個(gè)添加到最終的集成中。
如果你想試試AdaNet,可以查看谷歌的GitHub,其中包含了幾個(gè)利用密集圖層和卷積的例子。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100420 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132315
原文標(biāo)題:谷歌推出集成學(xué)習(xí)的有力工具AdaNet,靈活快速實(shí)現(xiàn)AutoML
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論