解讀百度AutoDL:打破SOTA紀錄的神經架構搜索是如何煉成的

近日,百度大數據實驗室在 arXiv 上發佈了兩篇論文,一篇給出了任何深度學習網絡在小學習率狀況下的收斂性證實,包括用 AutoDL 搜出來的網絡,另外一篇則提供了一個正則化的方法,讓 AutoDL 搜索到的網絡的訓練結果超過了以前全部公開報道的結果。基於 PaddlePaddle 框架實現的代碼已經開源:node

Github地址:git

https://github.com/PaddlePadd...github

機器之心就 AutoDL 各方向的設計思路和論文內容採訪了百度大數據實驗室主任浣軍教授,如下爲採訪實錄。算法

機器之心:百度開發 AutoDL 的初衷是什麼?想要實現什麼目標?緩存

AutoDL 的理念,用一句話來歸納,就是「開放普惠 AI」,讓廣大中小企業、初創企業和我的可以更方便地應用大數據和深度學習。安全

如今,這些能力主要掌握在大公司研發中心或者高校中間,並未向中小企業和初創企業輻射,緣由在於大數據分析和深度學習對硬件、軟件以及工程技術人員的能力要求都比較高。網絡

AutoDL 所作的事情,就是用深度學習來設計深度學習,從而實現讓你們都可以快速用到這項能力。咱們的願景是把現在的「深度學習模型藝術品」變成「深度學習模型工業產品」,讓深度學習的模型可以像工廠的產品同樣被大規模地生產出來。框架

機器之心:這一目標具體由哪些需求組成?如何知足這些需求?函數

咱們從三個維度思考這件事。硬件、應用場景和模態的多樣化決讓 AI 算法的維度空間極爲龐大。想要儘量探索這一空間,就必然要從手工設計模型,轉向自動化生產模型,快速高效地產生可以適配不一樣硬件、支持不一樣場景、適應不一樣模態的深度學習模型。性能

爲了實現這些需求,咱們將 AutoDL 分紅三個部分,分別是 AutoDL Design,AutoDL Transfer 和 AutoDL Edge。

AutoDL Design 根據用戶提供的數據集從頭設計全新深度學習模型。

AutoDL Transfer 支持小數據建模,利用百度擁有的大量數據預訓練好的模型遷移到用戶具體的應用場景上。

AutoDL Edge 將深度學習模型部署到擁有不一樣算力、內存資源的硬件上,知足不一樣的能源消耗、響應時間需求。是 AI 和 IoT 的結合,是深度學習和邊緣計算的完美結合。

AutoDL Design:更大的模型結構搜索空間帶來更佳的效果

機器之心:從用戶給出標註數據集到拿到自動設計好的模型結構,是一個什麼樣的過程?

如今 AutoDL Design 有多條技術路線,但總的來講仍然是一個端到端的訓練過程。百度在模型結構優化方面選擇了兩條主要技術路線。

第一條技術路線利用深度加強學習完成設計。系統由兩部分組成,第一部分是網絡結構的編碼器,第二部分是網絡結構的評測器。

編碼器一般以 RNN 的方式把網絡結構進行編碼,而後評測器把編碼的結果拿去進行訓練和評測,拿到包括準確率、模型大小在內的一些指標,反饋給編碼器,編碼器進行修改,再次編碼,如此迭代。通過若干次迭代之後,最終獲得一個設計好的模型。

爲了性能考慮,迭代中用到的訓練數據一般是幾萬張規模的數據集(好比 CIFAR-10),模型設計結束後,會用大規模數據(好比 ImageNet)從新訓練一次,進一步優化參數。

圖:AutoDL 加強學習流程

第二條技術路線是將結構圖構建爲可微的結構。即,鏈接節點的邊再也不是非 0 即 1 的狀態,而是變成一個可求微分的機率。

除此以外,咱們還進行了超參數優化,正則化訓練等其餘一系列優化,最終,咱們在 CIFAR-10 上取得了正確率 98% 以上,這個結果優於全部有公開報道的設計網絡效果,包括人類專家設計的和機器自動設計的。

機器之心:可否更詳細地解釋基於深度加強學習的技術路徑裏編碼器與評測器的工做?迭代過程當中計算資源消耗狀況?

編碼器的能夠從一個隨機的模型開始,也能夠從一種已知的模型出發。從性能角度考慮,一般咱們會選擇從一個較優的模型結構出發。

模型優化分爲三個層級,分別是單元格優化,單元格鏈接方式優化以及超參數優化。單元格(cell)是模型的基本結構,每一個單元格由幾個到十幾個節點(node)組成。每一個節點都是一種常見的操做,例如一次卷積運算就是一個節點,常見的節點中的操做有十個左右。

圖:AutoDL Design 設計的單元格,左邊爲普通單元格(Normal Cell),右邊爲縮減單元格(Reduction Cell)

獎勵函數是一個正確率的函數。這裏的正確率並非說每進行一次迭代就要在所有訓練數據上訓練到徹底收斂。而是採用了「提早終止」(early stopping)的方法,用訓練到必定程度的結果來預測最終結果。

在 CIFAR-10 級別的數據集上(數萬張圖片),每次迭代平均須要不到 1 GPU hour,從開始搜索到找到理想的模型結構,平均須要進行 50~200 次迭代。

機器之心:AutoDL Design 設計出的模型結構與人工設計的模型結構有什麼區別?

若是把圖像識別的常見模型用有向無環圖表示出來,咱們會發現:VGG 模型的結構是線性的;ResNet 在線性結構的基礎上添加了「跳層鏈接」;Inception 模型的結構更偏向樹狀。而 AutoDL Design 的不受任何現成網絡結構的約束,可以在全部可能的有向無環圖空間內進行探索。

圖:AutoDL Design 設計的模型結構

另外,AutoDL Design 的一個特色是能夠實現多目標優化:若是目標除了效果好以外,還對模型大小、運行時間有要求,系統也能夠根據要求完成設計。

AutoDL Transfer:「小數據」也能夠建「大模型」

機器之心:可否介紹一下 AutoDL Transfer 的優化方式?

AutoDL Transfer 是在 ResNet、DenseNet、VGG、Inception 等經典網絡的基礎上,進行了一些基於人工經驗的組件改良,以及採用了超參優化技術進行搜索。例如,咱們增長了雙線性(bilinear)組件,把通過層層卷積的向量再進行兩兩組合,讓特徵更爲豐富。

AutoDL Transfer 如今提供兩種服務,分別是靜態模型(Static Model)和動態模型(Dynamic Model)。

靜態模型是在大量已有數據集上進行測試後,選出可以在大部分數據集上取得優異性能的模型結構,而後利用用戶數據精調模型參數。

動態模型則會根據用戶數據在不一樣組件以及超參的組合中從新進行一次搜索。和靜態模型相比,動態模型可以針對用戶數據進行更加精細的優化,但也須要用戶提供更多數據。

圖:AutoDL Transfer 示意圖

機器之心:什麼樣的用戶場景適合選擇 AutoDL Transfer?AutoDL Transfer 對用戶數據規模有什麼要求?

首先,數據量比較小的情景下,很難從頭訓練大模型,此時 AutoDL Transfer 仍然能保證一個很好的模型效果。

同時,即便用戶數據量比較大,遷移學習仍然能把初始階段從大規模數據集中習得的物體特徵的知識以參數的形式帶入到接下來有針對性的優化過程當中,效果每每比從頭訓練要好。

AutoDL Transfer 還使用了一些百度本身研發的技術,包括自動數據加強、遷移過程當中正則化項的優化等。這些技術都有助於在小數據條件下提高模型泛化能力,所以 AutoDL Transfer 對用戶數據規模幾乎沒有限制,分類任務中,每一個類別的數據能夠只有 100 張甚至幾十張。用戶能夠在上傳數據後幾分鐘就拿到訓練好的模型結果。關於 AutoDL Transfer 的最新進展,能夠見咱們在 ICLR 2019 上發表的文章。

圖:AutoDL Transfer 靜態模型與動態模型在不一樣任務中的效果示意圖

AutoDL Edge:事半功倍的終端計算

機器之心:AutoDL Edge 採用了哪些優化方法?

AutoDL Edge 主要旨在對模型進行壓縮,使得同等邊緣算力支持更多 AI 能力,從而拓寬應用場景。

由於市面上有很是多不一樣的硬件配置,所以咱們的團隊先研究了一些設備無關的通用的模型壓縮算法,這類算法可以同時減少網絡規模、提高推理速度且不改變模型的性能。

濾波器剪枝(Filter Pruning)就是其中一種典型的技術。咱們會估算每個卷積核的重要程度,在每個卷積層中,去掉那些不那麼重要的卷積核。此外,咱們也會對計算資源消耗最大的全鏈接層作矩陣低秩分解,加速矩陣乘法。

圖:濾波器剪枝示意圖

觀察到深度卷積網絡的參數主要集中在卷積核上,咱們最新採用的模型壓縮算法經過參數共享來壓縮卷積核的參數空間。咱們提出了一種新的卷積核的表示方式,使得卷積核能夠在訓練過程當中自動進行參數共享。咱們提出的參數共享模型能夠從頭開始訓練,而不是須要先訓練出一個大模型而後使用參數共享或者其餘的壓縮方法。配合參數量化(quantization)方法,咱們的方法在 CIFAR-10 上在準確率僅下降 0.27% 的條件下將 ResNet-18 壓縮了 50 多倍。在目標檢測任務上,咱們的方法將 Single Shot MultiBox Detector(SSD)網絡進行了有效壓縮,在參數數量(0.45M)明顯小於 Tiny SSD(1.13M)下,在 VOC 2007 的測試集上的平均準確率(mAP)反而有大幅提高。

此外,還有一些針對性特定芯片的優化,設備提出了算力、能耗、響應時間等約束。而算法設法在這些約束之降低低運算量,壓縮模型大小。一旦將模型壓縮到緩存能夠容納的大小,就能夠極大加速 I/O。

值得一提的是,模型壓縮的過程也是自動化的。

同時,咱們也在探索用 AutoDL Design 的思路,不須要針對一個大模型進行壓縮,而是從頭尋找一個小模型。

機器之心:關於這次公開的兩篇新論文,神經網絡的收斂性證實有什麼意義?

深度神經網絡普遍使用隨機梯度降低,其優化的特性,例如是否會離開局部最優,收斂到全局最優一直是你們關心的問題,最近這方面也有一些有意思的進展。咱們的探索主要集中在構造一族損失函數。經過這樣的構造,咱們能夠在即便學習率很是低的狀況下,對於每個局部最優,證實 SGD 都必定的機率逃逸出局部最優。逃逸機率不但與極值點的值有關並且咱們也證實了與極值點附近的幾何性質有關。若是咱們跑 SGD 足夠長時間,SGD 會以馬氏鏈的方式遍歷局部最優,能夠大機率收斂到全局最優。基於這幾點,咱們指望將來對極值點附近的幾何性質的研究會對深度學習有強有力的促進做用。

機器之心:第二篇論文提出,利用局部拉德馬赫複雜度作正則化,從而提升網絡泛化特性,可否詳細介紹一下其作法?

深度學習的核心問題之一在於如何保證在有限樣本上學到的分類器或者預測函數能在未來未觀察到的數據,例如測試數據上,仍然有預測錯誤率的保證。由於在數據點上的 0-1 的離散錯誤很難精確優化,在一般的實踐中,預測函數都是經過在訓練數據上最小化一個損失函數獲得,這個經驗函數通常是預測錯誤率的一個上界。在統計中分類器在訓練集和測試集之間的差,能夠用預測函數族的一個被稱之拉德馬赫複雜度的標準來衡量。預測函數族越小,拉氏複雜度也越小,經驗損失和泛化損失的差距也越小。拉氏複雜度在經典支持向量機有這普遍的應用。

目前深度神經網絡成爲普遍應用的預測函數。由於神經網絡的多層結構,其所屬的函數族能夠逼近任意的連續函數,這使得許多經典的用函數族的拉德馬赫複雜度做爲正則化項的統計學習方法沒法進行。但統計學習領域中的局部拉德馬赫複雜度,即只考慮全函數族的一個子族上的拉德馬赫複雜度,卻能夠避開全局拉德馬赫複雜度的問題。

咱們提出的局部拉德馬赫複雜度方法借鑑了已有的局部拉德馬赫複雜度方法,僅考慮在經驗損失函數的極小值點附近的一個球內的拉德馬赫複雜度。採用最近的拉德馬赫複雜度的估計方法,咱們對摺頁損失函數 (Hinge Loss) 和交叉熵(cross entropy)推得了這個固定值的表達式,而且將其稱之爲局部拉德馬赫正則化項,並加在經驗損失函數上。咱們對提出的局部拉德馬赫正則化方法在標準的網絡結構(即 ResNet-18)和 CIFAR-10 上進行了實驗,發現其能夠有效下降損失函數在測試數據上的值而且提升預測準確率,體現了加強的泛化性能。咱們進一步將該方法應用到被搜索出來的網絡結構上,發現局部拉德馬赫正則化方法和其餘的提升泛化性能的方法,包括混合(mix-up)和模型集成(model ensemble),能夠兼容。將咱們的正則化方法做用在混合和模型集成以後,咱們獲得了 CIFAR-10 上目前最好的準確率。在咱們的文章中也提供了基於PaddlePaddle框架實現的開源代碼。

進化中的 AutoDL:劍指「一步到位」的深度學習模型

機器之心:從 AutoDL 1.0 到 AutoDL 2.0,系統發生了哪些變化?

主要有三方面變化。

第一,在自動設計效果上,如今的 AutoDL 設計出的神經網絡已經全面超過人類專家設計的網絡效果。圖像識別公開數據集 CIFAR-10 上,達到了超過 98% 的正確率。這個效果優於全部有公開報道的人類專家設計的網絡的效果。

第二,在模態方面,除了視覺以外,咱們也增長了對語音任務的支持,包括語音模型壓縮、語音模型自動建模等。

第三,在模型適配上,咱們增長了一些具體的應用案例,包括對一些能夠用於新零售的視覺硬件的支持。

機器之心:AutoDL 團隊如今在進行哪些新方向的探索?

咱們特別關心 AutoDL 三個方向的結合,換言之,能不能同時完成模型的設計、遷移和適配。

這也是咱們在強化學習技術路徑以外,也同時關注可微分結構路徑的緣由:可微分結構既能夠用於自動模型搜索,也能夠用於遷移學習。模型的安全性也是咱們重點關注的方向。咱們但願設計的網絡可以抗攻擊而且具備必定的可解釋性。

相關文章
相關標籤/搜索