谷歌釋出 AdaNet,快速靈活的 AutoML 工具,幫助開發者構築強大整合學習模型
我愛計算機視覺 標星,更快獲取CVML新技術
整合學習可以有效利用不同機器學習演算法,提高最終模型精確度,在Kaggle比賽中被廣泛應用。
訓練整合學習模型計算量浩大,引數眾多,雖然隨著GPU/TPU的出現一定程度上降低了問題的難度,但對開發者仍是成本極高的。
可喜的是,谷歌剛剛釋出了AdaNet,這是一個基於TensorFlow的輕量級框架,可以通過最少的專家干預自動學習高質量的模型。 AdaNet以谷歌最新的強化學習和基於進化演算法的AutoML為基礎,在提供學習保證的同時實現快速靈活的模型構建。而且,AdaNet是一個通用框架,它不僅可以學習神經網路架構,還可以模型整合以獲得更好的模型。
AdaNet易於使用,可以構築高質量的模型,幫助機器學習從業者節省選擇最佳神經網路架構的時間,並能夠自適應實現將子網路整合學習為新的網路架構的方法。
AdaNet能夠新增不同深度和寬度的子網路,以建立多樣化的整合,並可以在引數數量和模型效能之間方便做出權衡。
AdaNet自適應地增長了神經網路的集合。在每次迭代中,它測量每個候選者的整合損失,並選擇最佳的一個進入下一次迭代。
快速且易於使用
AdaNet實現了TensorFlow Estimator介面,通過封裝訓練、評估、預測和模型匯出,大大簡化了機器學習程式設計。它集成了開源工具,如 TensorFlow Hub modules, TensorFlow Model Analysis, 和 Google Cloud’s Hyperparameter Tuner。分散式訓練的支援可顯著縮短訓練時間,並能與可用的CPU和加速器(例如GPU)進行線性擴充套件。
AdaNet在CIFAR-100上訓練結果,x軸代表訓練step數,y軸代表精度。藍線是訓練集上的準確度,紅線是測試集上的效能。每隔一百萬step就加入一個新的子網路,最終提高整體的效能。灰線和綠線是在新增新子網之前的精度。
AdaNet的學習保證Learning Guarantees
構建神經網路整合有幾個挑戰:比如要考慮的最佳子網架構是什麼?是否要重用相同的架構還是鼓勵模型多樣性?雖然具有更多引數的複雜子網將傾向於在訓練集上表現更好,但由於其更大的複雜性,推廣效能可能不好。這些挑戰源於如何評估模型效能。可以通過將訓練集樣本分割來評估,但這樣做會減少可用於訓練神經網路的樣本數量。
AdaNet的做法(源自論文“AdaNet: Adaptive Structural Learning of Artificial Neural Networks” at ICML 2017)是為了優化平衡集合在訓練集上的表現及其推廣到看不見的資料的能力之間的權衡的目標。直覺上是指只有當新加入的子網路改善整體訓練損失而不會影響其推廣能力時才將其加入。
這項學習保證意味著:
1)集合的泛化誤差受其訓練誤差和模型複雜性的限制。
2)通過優化此目標,直接最小化此限制。
優化此目標的一個實際好處是,它不需要訓練樣本集專門劃出一部分子集來評估選擇要新增到集合中的候選子網,況且可以使用更多的訓練資料來訓練子網。
要了解更多資訊,請瀏覽有關AdaNet優化目標的教程:
https://github.com/tensorflow/adanet/tree/v0.1.0/adanet/examples/tutorials/adanet_objective.ipynb
使用者自定義擴充套件
AdaNet不僅提供了常用的模型架構供研究人員使用,同時允許使用者將自己定義的網路加入進來,使用者可以使用adanet.subnetwork.Builder加入使用TensorFlow API(如tf.layers)定義的網路架構,定義自己的AdaNet。
使用TensorFlow構建模型的使用者可以輕鬆將TensorFlow程式碼轉換為AdaNet子網,使用adanet.Estimator提高模型效能,同時獲得學習保證。AdaNet將探索他們定義的候選子網的搜尋空間,並學習整合子網。
在這個例子中,使用了NASNet-A CIFAR架構的開源實現,將其轉換為子網,在八次AdaNet迭代後對CIFAR-10最先進的結果進行了改進。不僅提高進行而且新模型使用的引數更少。
使用者還可以使用tf.contrib.estimator.Heads將自己的自定義損失函式用作AdaNet目標函式的一部分,以便訓練迴歸,分類和多工學習問題。
使用者還可以通過擴充套件adanet.subnetwork.Generator類來定義要探索的候選子網的搜尋空間,根據可用硬體增加或減少搜尋空間。子網的搜尋空間可以簡單到使用不同的隨機種子複製相同的子網配置,或者訓練具有不同超引數組合的數十個子網,讓AdaNet選擇包含在最終整合模型中的子網。
AdaNet程式碼主頁:
https://github.com/tensorflow/adanet
AdaNet教程:
https://github.com/tensorflow/adanet/tree/v0.1.0/adanet/examples/tutorials
總之一句話,要構築神經架構的整合學習,就選AdaNet!
AdaNet會成為研究社群和Kaggle競賽的新寵嗎?讓我們拭目以待~
長按關注 我愛計算機視覺
Line"/>
【點贊與轉發】 就是一種鼓勵