當前位置:
首頁 > 科技 > 谷歌開源集成學習工具AdaNet:2017年提出的演算法終於實現了

谷歌開源集成學習工具AdaNet:2017年提出的演算法終於實現了

曉查 編譯整理

量子位 報道 | 公眾號 QbitAI

最近,谷歌在GitHub上發布了用TensorFlow實現的AutoML框架——AdaNet,它改進了集成學習的方法,能以最少的專家干預實現自動習得高質量模型。

谷歌AI研究團曾在2017年的ICML上提出了AdaNet:人工神經網路的自適應結構性學習(Adaptive Structural Learning of Artificial Neural Networks)。AdaNet建立在最近的強化學習和基於進化的AutoML成果基礎之上,在提供學習保證時能做到快速靈活。

谷歌為何要推出AdaNet?

AdaNet提供了一個通用框架,不僅可以學習神經網路架構,還可以學習集合以獲得更好地模型。

集成學習被廣泛用於神經網路以實現最先進的性能。但是由於訓練時間太長,導致它們在實踐中使用不多,而且ML模型候選者做選擇需要其領域專業知識。

但隨著計算能力提高和專用深度學習硬體(如TPU)廣泛被採用,機器學習模型變得越來越大,集成學習將變得更重要。

現在,谷歌的AdaNet可以自動搜索神經架構,並學會將最優的架構組合成一個高質量的模型。

AdaNet有何優點?

AdaNet易於使用,並能創建高質量的模型,為ML從業人員節省了用於選擇最佳神經網路架構的時間,實現了將學習神經架構作為子網路集合的自適應演算法。AdaNet能夠添加不同深度和寬度的子網路,創建多樣化的集合,並通過參數數量來改進性能。

【圖】AdaNet增加集合中的神經網路,每一次迭代中,AdaNet將評估候選子網路的損失,並將最優結果放入下一次迭代中

AdaNet實現了TensorFlow Estimator介面,通過封裝訓練、評估、預測和服務導出,大大簡化了機器學習編程。

它集成了開源工具,如TensorFlow Hub模塊,TensorFlow模型分析和谷歌雲的Hyperparameter Tuner。

AdaNet還支持分散式訓練,可顯著縮短訓練時間,並使用CPU和GPU等加速器進行線性擴展。

實測效果:

【圖】AdaNet在CIFAR-100數據集上的表現:藍線為訓練集的精確度,紅線為測試集的表現,綠線和灰線是加入子網路之前的精確度。

AdaNet還能與TensorFlow中的可視化工具TensorBoard無縫集成,以監控子網路訓練、集合的組合和性能。當AdaNet完成訓練後,它會導出一個可以使用TensorFlow Serving部署的SavedModel。

學習保證

構建神經網路集合有以下幾個挑戰:最佳子網路架構需要考慮的是什麼?最好是重複使用相同的架構還是鼓勵多樣性?

雖然具有更多參數的複雜子網路會在訓練集上有更好的表現,但由於其更大的複雜性,它們可能無法推廣到其他數據上。這些挑戰源於評估模型性能。

我們可以從訓練集中分出的保留集合上評估性能,但這樣做會減少可用於訓練神經網路的樣本數量。

AdaNet的方法平衡了集合在訓練集上的表現和其推廣到測試集的性能上的矛盾,只有改善整體訓練損失而不影響其測試能力時,集合才包括候選子網路。這保證了:

通過訓練誤差和複雜性限制集合的泛化誤差。

通過優化此目標,可以直接最小化此限制。

優化此目標的一個實際好處是,它降低了選擇候選子網路加入集合時對保留數據集的需求。另一個好處是,可以使用更多的訓練數據來訓練子網路。

擴展

谷歌認為,為研究和生產提供有用的AutoML框架的關鍵是不僅要提供合理的默認值,還要允許用戶嘗試自己的子網路/模型定義。因此,機器學習研究人員,從業者和愛好可以使用高級TensorFlow API(如tf.layers)定義他們自己的AdaNet類adanet.subnetwork.Builder。

已經在其系統中集成了TensorFlow模型的用戶可以輕鬆地將他們的TensorFlow代碼轉換到AdaNet子網路,並使用adanet.Estimator提高模型性能,同時獲得學習保證。 AdaNet將探索他們定義的候選子網路搜索空間,並學習整合子網路。

谷歌選取了NASNet-A CIFAR架構的一個開源實現,將其轉換為子網路,並在八次AdaNet迭代後改進了CIFAR-10最優結果。此外,AdaNet訓練的模型相比NASNet-A使用更少的參數:

用戶還可以通過擴展adanet.subnetwork.Generator類,來完全定義要探索的候選子網路的搜索空間。這允許用戶根據可用硬體來增加或減少搜索空間。

子網路的搜索空間可以簡單到使用不同的隨機種子複製相同的子網路配置,訓練具有不同超參數組合的子網路,並讓AdaNet選擇包含在最終集合中的子網路。

AdaNet是一個正在進行的研究項目,頁面中已經包含了一些使用密集層和卷積的工作示例,來幫助用戶入門。 谷歌歡迎廣大用戶給這個項目做出貢獻。

安裝方法

AdaNet項目要求TensorFlow版本不低於1.7

$ gitclonehttps://github.com/tensorflow/adanet &&cdadanet

在安裝AdaNet之前,還需要安裝Bazel

$cdadanet

$ bazeltest-c opt //...

安裝完成後,你就可以直接使用AdaNet啦!

importadanet

附錄:

項目地址

https://github.com/tensorflow/adanet

谷歌論文地址

https://arxiv.org/pdf/1607.01097.pdf

加入社群

量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)

活動策劃招聘

量子位正在招聘活動策劃,將負責不同領域維度的線上線下相關活動策劃、執行。歡迎聰明靠譜的小夥伴加入,並希望你能有一些活動策劃或運營的相關經驗。相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

李彥宏說互聯網思維已過時,AI可以根本上變革交通、城市、農業和醫療
吳恩達新書手稿完工,現在開放免費下載

TAG:量子位 |