谷歌開源的基於 TensorFlow 的輕量級框架 AdaNet幾大優點

TensorFlow 是相對高階的機器學習庫,用戶能夠方便地用它設計神經網絡結構,而沒必要爲了追求高效率的實現親自寫 C++或 CUDA 代碼。它和 Theano 同樣都支持自動求導,用戶不須要再經過反向傳播求解梯度。git

clipboard.png

而基於 TensorFlow 的輕量級框架 AdaNet,可使用少許專家干預來自動學習高質量模型。據介紹,AdaNet 在谷歌近期的強化學習和基於進化的 AutoML 的基礎上構建,快速靈活同時可以提供學習保證(learning guarantee)。重要的是,AdaNet 提供通用框架,不只能用於學習神經網絡架構,還能學習集成架構以獲取更好的模型。github

clipboard.png

結合不一樣機器學習模型預測的集成學習在神經網絡中獲得普遍使用以得到最優性能,它從其悠久歷史和理論保證中受益良多,從而在 Netflix Prize 和多項 Kaggle 競賽等挑戰賽中取得勝利。可是,因其訓練時間長、機器學習模型的選擇要求領域專業知識,它們在實踐中並不那麼經常使用。而隨着算力、深度學習專用硬件(如 TPU)的發展,機器學習模型將愈來愈大,集成技術也將愈加重要。如今,想象一個工具,它可以自動搜索神經架構,學習將最好的神經架構集成起來構建高質量模型。web

clipboard.png

剛剛,谷歌發佈博客,開源了基於 TensorFlow 的輕量級框架 AdaNet,該框架可使用少許專家干預來自動學習高質量模型。AdaNet 在谷歌近期的強化學習和基於進化的 AutoML 的基礎上構建,快速靈活同時可以提供學習保證(learning guarantee)。重要的是,AdaNet 提供通用框架,不只能用於學習神經網絡架構,還能學習集成架構以獲取更好的模型。面試

AdaNet 易於使用,可以建立高質量模型,節省 ML 從業者在選擇最優神經網絡架構上所花費的時間,實現學習神經架構做爲集成子網絡的自適應算法。AdaNet 可以添加不一樣深度、寬度的子網絡,從而建立不一樣的集成,並在性能改進和參數數量之間進行權衡。算法

圖片描述

AdaNet 適應性地增加集成中神經網絡的數量。在每次迭代中,AdaNet 衡量每一個候選神經網絡的集成損失,而後選擇最好的神經架構進入下一次迭代。編程

若是對Python編程、網絡爬蟲、機器學習、數據挖掘、web開發、人工智能、面試經驗交流。感興趣能夠519970686,羣內會有不按期的發放免費的資料連接,這些資料都是從各個技術網站蒐集、整理出來的,若是你有好的學習資料能夠私聊發我,我會註明出處以後分享給你們。數組

快速易用

AdaNet 實現了 TensorFlow Estimator 接口,經過壓縮訓練、評估、預測和導出極大地簡化了機器學習編程。它整合如 TensorFlow Hub modules、TensorFlow Model Analysis、Google Cloud』s Hyperparameter Tuner 這樣的開源工具。它支持分佈式訓練,極大減小了訓練時間,使用可用 CPU 和加速器(例如 GPU)實現線性擴展。網絡

clipboard.png

AdaNet 在 CIFAR-100 上每一個訓練步(x 軸)對應的準確率(y 軸)。藍線是訓練集上的準確率,紅線是測試集上的性能。每一百萬個訓練步開始一個新的子網絡,最終提升整個集成網絡的性能。灰色和綠色線是添加新的子網絡以前的集成準確率。架構

TensorBoard 是 TensorFlow 最好的功能之一,可以可視化訓練過程當中的模型指標。AdaNet 將 TensorBoard 無縫集成,以監控子網絡的訓練、集成組合和性能。AdaNet 完成訓練後將導出一個 SavedModel,可以使用 TensorFlow Serving 進行部署。框架

學習保證

構建神經網絡集成存在多個挑戰:最佳子網絡架構是什麼?重複使用一樣的架構好仍是鼓勵差別化好?雖然具有更多參數的複雜子網絡在訓練集上表現更好,但也因其極大的複雜性它們難以泛化到未見過的數據上。這些挑戰源自對模型性能的評估。咱們能夠在訓練集分留出的數據集上評估模型表現,可是這麼作會下降訓練神經網絡的樣本數量。

不一樣的是,AdaNet 的方法是優化一個目標函數,在神經網絡集成在訓練集上的表現與泛化能力之間進行權衡。直觀上,即僅在候選子網絡改進網絡集成訓練損失的程度超過其對泛化能力的影響時,選擇該候選子網絡。這保證了:

集成網絡的泛化偏差受訓練偏差和複雜度的約束。

經過優化這一目標函數,可以直接最小化這一約束。

優化這一目標函數的實際收益是它能減小選擇哪一個候選子網絡加入集成時對留出數據集的需求。另外一個益處是容許使用更多訓練數據來訓練子網絡。

AdaNet 目標函數教程:https://github.com/tensorflow...

可擴展

谷歌認爲,建立有用的 AutoML 框架的關鍵是:研究和產品使用方面不只可以提供合理的默認設置,還要讓用戶嘗試本身的子網絡/模型定義。這樣,機器學習研究者、從業者、喜好者都可以使用 tf.layers 這樣的 API 定義本身的 AdaNet adanet.subnetwork.Builder。

已在本身系統中融合 TensorFlow 模型的用戶能夠輕鬆將 TensorFlow 代碼轉換到 AdaNet 子網絡中,並使用 adanet.Estimator 來提高模型表現同時獲取學習保證。AdaNet 將探索他們定義的候選子網絡搜索空間,並學習集成這些子網絡。例如,採用 NASNet-A CIFAR 架構的開源實現,把它遷移到一個子網絡,通過 8 次 AdaNet 迭代後提升其在 CIFAR-10 上的當前最優結果。此外,得到的模型在更少參數的狀況下得到了如下結果:

clipboard.png

在 CIFAR-10 數據集上,NASNet-A 模型的表現 vs 結合多個小型 NASNet-A 子網絡的 AdaNet 的表現。

經過固定或自定義 tf.contrib.estimator.Heads,用戶可使用本身定義的損失函數做爲 AdaNet 目標函數的一部分來訓練迴歸、分類和多任務學習問題。

用戶也能夠經過拓展 adanet.subnetwork.Generator 類別,徹底定義要探索的候選子網絡搜索空間。這使得用戶可以基於硬件擴大或縮小搜索空間範圍。子網絡的搜索空間能夠簡單到複製具有不一樣隨機種子的同一子網絡配置,從而訓練數十種具有不一樣超參數組合的子網絡,並讓 AdaNet 選擇其中一個進入最終的集成模型。

出處:https://blog.csdn.net/Stephen...

相關文章
相關標籤/搜索