1. 程式人生 > >告別煉丹,Google Brain提出強化學習助力Neural Architecture Search | ICLR2017

告別煉丹,Google Brain提出強化學習助力Neural Architecture Search | ICLR2017

論文為Google Brain在16年推出的使用強化學習的Neural Architecture Search方法,該方法能夠針對資料集搜尋構建特定的網路,但需要800卡訓練一個月時間。雖然論文的思路有很多改進的地方,但該論文為AutoML的經典之作,為後面很多的研究提供了思路,屬於里程碑式的論文,十分值得認真研讀,後面讀者會持續更新AutoML的論文,有興趣的可以持續關注

來源:曉飛的演算法工程筆記 公眾號

論文:Neural Architecture Search with Reinforcement Learning

  • 論文地址:https://arxiv.org/abs/1611.01578
  • 論文程式碼:https://github.com/titu1994/neural-architecture-search

Introduction


  論文提出神經網路架構搜尋(Neural Architecture Search),一個用於搜尋架構的gradient-based方法,主要包含4個步驟:

  1. the controller. 網路結構可能看成是可變長的字串,因此,論文使用迴圈神經網路(recurrent network)來產生這樣的字串
  2. child network. 在實際資料集上訓練字串對應的網路(child network),在驗證集上獲得準確率
  3. prolicy signal. 將準確率作為獎勵訊號(reward signal),我們能計算策略梯度(policy gradient)來更新controller
  4. iteration. 重複步驟1-3,controller將學習到如何針對訓練集構建合適的神經網路

Methods


GENERATE MODEL DESCRIPTIONS WITH A CONTROLLER RECURRENT NEURAL NETWORK

  假設需要產生一個僅包含卷積層的神經網路,如圖2,the controller會生成一個代表網路超引數的token序列。在實驗中,當層數達到設定後,生成操作就會停止,這個設定會按設定隨著訓練的進行增加。對於the controller產生的網路,會進行訓練並在收斂後在預留的驗證集上進行測試和記錄,將準確率作為指標來優化the controller RNN的引數$\theta_c$

TRAINING WITH REINFORCE

  controller產生的網路可以標記為一連串action $a_{1:T}$,網路在驗證集上的準確率標記為$R$,將$R$作為獎勵資訊,使用強化學習來訓練controller最大化$R$,損失函式為準確率的期望

  由於$R$對於controller是不可導的($R$是獨立訓練產生的),需要使用強化學習的policy gradient method來更新$\theta_c$,這裡採用Williams的REINFORCE方法,通過多次取樣來估算獎勵期望進行梯度計算(這裡有懂強化學習的讀者,可以留言講解下這個公式)

  轉換後,對於controller的梯度$\triangledown_{\theta_c} J(\theta_c)$就如上式所示,m為controller一次產生的網路數,T為controller產生的超引數,$R_k$為第k個網路的準確率

  前面的更新公式是對梯度的無偏估計,但會產生較大的方差,因為產生的網路質量不穩定,每輪的準確差異可能很大。為了減少方差,加入基底引數b,即REINFORCE with Baseline,這裡的b是之前每輪網路的準確率的指數滑動平均(exponential moving average),這樣就能判斷當前的準確率較之前是上升了還是下降了,從而更好地更新controller。由於b與當前的iteration無關,所以公式依然是無偏估計

  由於網路的訓練需要很長時間,論文采用分散式訓練以及非同步更新引數的方法來加速整體流程。採用parameter-server的結構,總共S個parameter server,K個controller,每個controller一次訓練m個網路。在網路都收斂後,controller收集梯度傳送給parameter server,收斂定義為訓練達到設定的週期

INCREASE ARCHITECTURE COMPLEXITY WITH SKIP CONNECTIONS AND OTHER LAYER TYPES

  前面提到的網路構建不包含目前流行的skip-connection layer(ResNet)和branching layer(GoogleNet),論文使用Neelakan-tan提出的給予注意力極致的set-selection type attention來增加這個特性

  在層N新增一個anchor point隱藏層,該層輸出N-1個content-based sigmoids來指示之前的層是否需要連線,$h_j$代表構造的網路的第j層的anchor point,$W_{prev}$ $W_{curr}$ $v$是可訓練的引數,由於這些引數依然是概率分佈,所以REINFORCE方法依然可直接使用

  在實際中,如果一個層包含多個輸入,會將輸入進行concat操作。由於每層的輸出大小不一樣,而且有的層甚至沒有輸入和輸出,skip connection可能會出現問題,主要有以下3種應對方法:

  • 如果當前層無輸入,直接將image作為輸入
  • 在最後一層將所有無連線的輸出concat作為最後的的分類器的輸入
  • 當concat的輸入大小不一致時,將小的輸入進行0填充至統一大小

  最後,論文提到controller可以新增學習率等引數的預測。此外,可以增加layer type的預測,來讓controller增加pooling, local contrast normalization, batchnorm等層的新增

GENERATE RECURRENT CELL ARCHITECTURES

  論文也在RNN架構搜尋上進行了嘗試,RNN和LSTM單元(cell)可以定義為一個樹狀結構,將$x_t$和$h_{t-1}$作為輸入,輸出$h_t$。controller需要預測結構中node的合併方式(addition, elementwise, multiplication等)和啟用函式(tanh, sigmoid等)來處理輸入以及生成輸出,然後將兩個node的輸出喂到下一個node中,為了方便預測,對樹狀結果的每一個node進行了編號
  另外,受LSTM的啟發,為每個單元新增變數$c_{t-1}$和$c_t$來儲存記憶狀態(memory state),讓controller選擇這兩個變數分別連線哪個node,注意$c_{t-1}$需要合併和啟用操作(Cell Inject),整體的預測步驟如下:

  • controller預測node 0的操作為$Add$和$Tanh$,$a_0=tanh(W_1 * x_t + W_2 * h_{t-1})$
  • controller預測node 1的操作為$ElemMult$和$ReLU$,$a_1=ReLU((W_3 * x_t) \odot (W_4*h_{t-1}))$
  • controller預測"Cell Index"的第二個變數為0,以及"Cell Inject"的操作為$Add$和$ReLU$,$a_0^{new}=ReLU(a_0+c_{t-1})$
  • controller預測node 2的操作為$ElemMult$和$Sigmoid$,$a_2=sigmoid(a_0^{new}\odot a_1)$
  • controller預測"Cell Index"的第一個變數為1,將$c_t$設為node 1啟用前的輸出

EXPERIMENTS AND RESULT


LEARNING CONVOLUTIONAL ARCHITECTURES FOR CIFAR-1

  • Search spac

  搜尋空間包含卷積操作,ReLu,batch normalization和skip connection。卷積核的長寬限制在$[1,3,5,7]$,output_num限制在$[24,36,48,64]$,步長包含兩種,一種固定為1,一種則限制在$[1,2,3]$

  • Training details

  controller為雙層LSTM,每層35個隱藏單元,使用ADAM優化,學習率為0.0006。搜尋的網路進行50輪訓練,驗證集是從訓練機隨機挑選的5000張樣本,使用Nesterov Momentum訓練,學習率為0.1。網路的層數初始為6層,每產生1600個子網路就增加2層

  • Results

  在訓練了12800個網路後,得到了準確率最高的網路結構,之後進行小範圍的超引數(learning rate,weight decay,batchnorm epsilon,epoch to decay learning rate)搜尋,最後得到表1的結果:

  • 如果不預測步長和池化,能夠得到一個5.5% errror rate的15-layer網路結構,這個結構準確率和層數的價效比很高,但是他的效能很慢,見Appendix,值得注意的是,這個結構包含很多長方形和比較大的卷積核,以及包含很多skip connections
  • 當需要預測步長時,由於搜尋空間很大,搜尋出的20-layer網路精度僅有6.01%
  • 最後,在允許網路在13層和24層包含池化操作後,controller能夠設計一個39-layer的網路,精度達到4.47%。為了縮小搜尋空間,讓模型預測13層網路,每層由全連線3層的3個子層構成(類似與densenet),此外,縮小卷積數量為$[6,12,24,36]$,每個大層增加40個卷積核,最終準確率達到3.74%,超越人類設計的最好網路

LEARNING RECURRENT CELLS FOR PENN TREEBANK


  • Dataset

  RNN在Penn Treebank資料集上進行語言模型構建,進行word-level的實驗,即單詞預測

  • Search space

  combination method為$[add,elem_mult]$,activation method為$[identity,tanh,sigmoid,relu]$,RNN單元的輸入對為8對(對應之前的node0 node 1那種),總共大約$6\times 10^{16}$種網路結構

  • Training details

  學習率為0.0005,每個子模型訓練35個epoch,每個子網路包含兩層,獎勵函式為$\frac{c}{(validation perplexity)^2}$,c一般設為80。同樣的,在搜尋完結構後,需要進行超引數搜尋

  • Result

  從表2可以看到,搜尋到的網路效能達到了state-of-the-art,搜尋出來的結構跟LSTM單元十分相似

  • Transfer Learning Results

  為了驗證搜尋的單元在不同任務上的通用性,在同樣的資料集上進行character-level的實驗,即字元預測,從結構看出,搜尋的結構依然表現不錯

  • Control Experiment 1 – Adding more functions in the search space

  為了驗證架構搜尋的魯棒性,新增max合併方法和sin啟用方法,從實驗來看,雖然搜尋空間變大了,但結果相差不大,結果見Appendix A

  論文進行了隨機搜尋的對比,儘管這個方法看起來,但是實際經常很難超越,從實驗結果看來,論文提出的搜尋方法不僅最好的模型要優異,整體平均都要優於隨機搜尋

CONCLUSION


  論文使用強化學習進行Neural Architecture Search這一創新的方法,該方法能夠針對資料集搜尋構建特定的網路,但搜尋的資源消費巨大。從實驗的過程來看,論文提出的方法還是需要新增許多人工干預的部分才能突破各個task中的state-of-the-art,而且需要十分多的計算資源和時間,但是從意義來說,該論文開創了AutoML的序幕,為後面很多的研究提供了思路,十分值得認真研讀

參考內容

  • Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning
    -[WILLIAMS,R. J.](http://xueshu.baidu.com/s?wd=author%3A%28WILLIAMS%2CR.%20J.%29%20&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_f_para=sc_hilight%3Dperson)
  • Neural Programmer: Inducing Latent Programs with Gradient Descent - [Arvind Neelakantan](https://arxiv.org/search/cs?searchtype=author&query=Neelakantan%2C+A)

A APPENDIX



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

相關推薦

告別Google Brain提出強化學習助力Neural Architecture Search | ICLR2017

論文為Google Brain在16年推出的使用強化學習的Neural Architecture Search方法,該方法能夠針對資料集搜尋構建特定的網路,但需要800卡訓練一個月時間。雖然論文的思路有很多改進的地方,但該論文為AutoML的經典之作,為後面很多的研究提供了思路,屬於里程碑式的論文,十分值得

「模仿學習」很強大但和「強化學習」有什麼關係

原文來源:Stats and Bots 作者:Vitaly Kurin 「機器人圈」編譯:嗯~阿童木呀、多啦A亮 在本文中,Statsbot團隊請教電腦科學家Vitaly Kurin簡要介紹模仿學習,並概述強化學習的基本知識。 生物有機體是及其複雜的。即使是諸如蒼蠅或蠕

自動機器學習工具全景圖:精選22種框架解放

構建一個典型的機器學習專案,一般分成以下步驟: 收集原始資料、合併資料來源、清洗資料、特徵工程、模型構建、超引數調優、模型驗證和裝置部署。 整個過程中,模型構建最能體現創造力,而最耗時的,要數特徵工程和超引數調優。 於是,有時候會因為趕時間,過早將模型從實驗階段轉移到生產階段,導致它們發揮不出最佳效果;

Google釋出“多巴胺”開源強化學習框架三大特性全滿足

編譯整理 | Just編輯 | 阿司匹林來源:AI科技大本營強化學習是一種非常重要 AI 技

Google Brain去年幹了太多事Jeff Dean一篇長文都沒回顧完

編譯 | AI科技大本營(rgznai100) 參與 | Reason_W 從AutoML、機器學習新演算法、底層計算、對抗性攻擊、模型應用與底層理解,到開源資料集、Tensorflo

NASNet : Google Brain經典作改造搜尋空間效能全面超越人工網路繼續領跑NAS領域 | CVPR 2018

> 論文將搜尋空間從整體網路轉化為卷積單元(cell),再按照設定堆疊成新的網路家族NASNet。不僅降低了搜尋的複雜度,從原來的28天縮小到4天,而且搜尋出來的結構具有擴充套件性,在小模型和大模型場景下都能使用更少的引數量和計算量來超越人類設計的模型,達到SOTA   來源:【曉飛的演算法工程

GRPC 1.3.4 發布Google 高性能 RPC 框架(Java C++ Go)

框架 9.png 高性能 修復 git ogl arch bsp 版本 GRPC 1.3.4 發布了,GRPC 是一個高性能、開源、通用的 RPC 框架,面向移動和 HTTP/2 設計,是由谷歌發布的首款基於 Protocol Buffers 的 RPC 框架。 GRPC

ajax同步請求時google瀏覽器崩潰。改用Deferred

回調 概念 解決 但是 category hid 意思 val ret jQuery的開發速度很快,幾乎每半年一個大版本,每兩個月一個小版本。 每個版本都會引入一些新功能。今天我想介紹的,就是從jQuery 1.5.0版本開始引入的一個新功能----deferred對象。

Android離Linux越來越遙遠了Google的Android真的是開源的嗎?

Python Linux Android 人工智能 Google Linux簡介(先簡單的介紹一下Linux) Linux是一類Unix計算機操作系統的統稱。Linux操作系統的內核的名字也是“Linux”。Linux操作系統也是自由軟件和開放源代碼發展中最著名的例子。嚴格來講,Linux

JAVA23種設計模式六大原則資料結構演算法強化訓練

目錄: 設計模式六大原則(1):單一職責原則 設計模式六大原則(2):里氏替換原則 設計模式六大原則(3):依賴倒置原則 設計模式六大原則(4):介面隔離原則 設計模式六大原則(5):迪米特法則 設計模式六大原則(6):開閉原則 設計模式六大原則(1):單一職責原則 定義:不要存在多於一個導致

方法數超過限制Google官方解決方案連結:https://developer.android.com/studio/build/multidex.html

方法數超過限制,Google官方解決方案連結:https://developer.android.com/studio/build/multidex.html 對了,如果參考第三種方案,發現 Multidex.install(this); 這一行程式碼總是報錯,嘗試用這行程式碼: Mu

html 5獲取GPS位置Google地圖顯示

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

伯克利、OpenAI等提出基於模型的元策略優化強化學習

基於模型的強化學習方法資料效率高,前景可觀。本文提出了一種基於模型的元策略強化學習方法,實踐證明,該方法比以前基於模型的方法更能夠應對模型缺陷,還能取得與無模型方法相近的效能。 引言 強化學習領域近期取得的很多成就都是通過無模型強化學習演算法 [1,2,3] 實現的。無模型(MF)

深度學習周志華機器學習西瓜書TensorFlowGoogle吳軍數學之美李航統計學習方法吳恩達深度學習筆記pdf下載

1. 機器學習入門經典,李航《統計學習方法》 2. 周志華的《機器學習》pdf 3.《數學之美》吳軍博士著pdf 4. Tensorflow 實戰Google深度學習框架.pdf 5.《TensorFlow實戰》黃文堅 高清完整PDF  6. 復旦大

通過AI自學習Google讓Pixel 3的人像模式更優秀

通過AI自學習,Google讓Pixel 3的人像模式更優秀 Link: https://news.cnblogs.com/n/613720/   雖然雙攝手機已經在市場上普及,其所帶來的人像模式、多倍變焦也成為了不少智慧手機的「標配」,但仍然有廠商依然堅持用一個攝像頭的配置。   比如以軟體著

facebook, twitter google第三方登入

第三方登入相關問題記錄 接過好幾次的第三方登入了,但是由於第三方登入的相關id和secret是另外一個組負責的,每次出問題之後就得配合他們檢查相關配置。故在此記錄一下需要注意的地方 Facebook登入 在申請facebook登入時需要一個填寫一個金鑰雜湊,如果簽名檔案

這一次Google 誓要紮根中國了!

相比於去年有李飛飛女士的激動亮相宣佈 Google 在中國的 AI 動作,今年的 Google 開發者大會似乎更多的還是幾個月前 Google I/O 的延續,但是全面鋪排的技術生態或許彰顯了它意欲更深層次搶佔中國市場的勃勃雄心。 作者 | 郭芮發自 G

讓映象漏洞無處藏身Google推出容器映象掃描功能_Kubernetes中文社群

當容器技術已普遍落地在各大公有云服務後,安全性也成為企業能否匯入正式環境的關鍵點。近日,Google公有云推出容器儲存庫漏洞掃描功能,可以提早在CI/CD階段中,掃描映象檔案是否存在已知的漏洞,避免開發者將有安全疑慮的映象,部署至正式環境。 這個新推出的漏洞掃描服務,與Google自家的雲服務

5250萬用戶資訊恐遭洩漏Google+ 將被提前關閉

   今年10月份,我們曾報道因 API 設計缺陷問題 Google 洩露了近 50 萬 Google+ 使用者的隱私資料,但卻選擇不報告該失誤,部分原因是擔心披露後會引發監管審查和聲譽受損。在被華爾街日報曝光後,Google 迴應稱將持續改進第三方 API,並將在2019年8