1. 程式人生 > >論文筆記系列-Neural Architecture Search With Reinforcement Learning

論文筆記系列-Neural Architecture Search With Reinforcement Learning

control 地方 如果 align 並行 inf 筆記 靈活 2.4

摘要

神經網絡在多個領域都取得了不錯的成績,但是神經網絡的合理設計卻是比較困難的。在本篇論文中,作者使用 遞歸網絡去省城神經網絡的模型描述,並且使用 增強學習訓練RNN,以使得生成得到的模型在驗證集上取得最大的準確率。

CIFAR-10數據集上,基於本文提出的方法生成的模型在測試集上得到結果優於目前人類設計的所有模型。測試集誤差率為3.65%,比之前使用相似結構的最先進的模型結構還有低0.09%,速度快1.05倍。

Penn Treebank數據集上,根據本文算法得到的模型能夠生成一個新穎的 recurrent cell,其要比廣泛使用的 LSTM cell或者其他基線方法表現更好。在 Penn Treebank

測試集上取得62.4的perplexity,比之前的最好方法還有優秀3.6perplexity。這個 recurrent cell也可以轉移到PTB的字符語言建模任務中,實現1.214的perplexity。

1.介紹

深度神經網絡在許多具有挑戰性的任務重都取得了不俗的成績。在這成績背後涉及到的技術則是從特征設計遷移到的結構設計,例如從SIFT、HOG(特征設計)到AlexNet、VGGNet、GoogleNet、ResNet等(結構設計)。

各種優秀的網絡結構使得多種任務處理起來簡單不少,但是設計網絡結構仍然需要大量的專業知識並且需要耗費大量時間。

為了解決上述問題,本文提出 Neural Architecture Search

,以期望找到合適的網絡結構。大致原理圖如下:

RNN作為一個 controller去生成模型的描述符,然後根據描述符得到模型,進而得到該模型在數據集上的準確度。接著將該準確度作為 獎勵信號(reward signal)對controller進行更新。如此不斷叠代找到合適的網絡結構。

技術分享圖片

2.相關工作

超參數優化在機器學習中是個重要的研究話題,也被廣泛使用。但是,該方法很難去生成一個長度可變的參數配置,即靈活性不高。雖然 貝葉斯優化可以搜索得到非固定長度的結構,但是與本文提出方法相比在通用性和可變性上都稍遜一籌。

現代神經進化算法雖然可以很靈活的生成模型,但是在大規模數據上實用性不高。

program synthesis and inductive programming的思想是searching a program from examples,Neural Architecture Search與其有一些相似的地方。

與本文方法相關的方法還有 meta-learning使用一個神經網絡去學習用於其他網絡的梯度下降更新(Andrychowicz et al., 2016)、以及 使用增強學習去找到用於其他網絡的更新策略(Li & Malik, 2016)

3.方法

本節將從下面3個方面介紹所提出的方法:
1.介紹遞歸網絡如何通過使用policy gradient method最大化生成框架的準確率
2.介紹幾個改善方法,如skip connection(增加復雜度)、parameter server(加速訓練)等
3.介紹如何生成遞歸

3.1 Generate Model Descriptions With A Controller Recurrent Neural Network

用於生成模型描述的RNN結構如下,所生成的超參數是一系列的 token

技術分享圖片

在實驗中,如果層數超過一定數量,生成模型就會被停止。這種情況下,或者在收斂時,所生成模型在測試集上得到的準確率會被記錄下來。

3.2 Training With Reinforcement

RNN的參數用\(θ_c\)表示。controller所預測的一系列tokens記為一系列的actions,即\(a_{1:T}\),這些tokens是為了子網絡(Child network)設計結構。子網絡在驗證集上得到的準確率用\(R\)表示,該準確率作為 reward signal,並且會用到增強學習來訓練controller。

通過求解最大化reward找到最優的結構,reward表達式如下:

\[J(θ_c)=E_{P(a_{1:T;θ_c})}[R]\]

因為獎勵信號\(R\)是不可微分的,所以我們需要一個策略梯度方法來叠代更新\(θ_c\)。在本文中,使用到來自 Williams (1992) 的增強學習規則:

\[\nabla_{θ_c}J(θ_c)=\sum_{t=1}^{T}E_{P(a_{1:T;θ_c})}[\nabla_{θ_c}logP(a_t|a_{(t-1):1};θ_c)R]\]

根據經驗上式約等於:

\[\frac{1}{m} \sum_{k=1}^{m} \sum_{t=1}^{T} \nabla_{θ_c}logP(a_t|a_{(t-1):1};θ_c)R_k\]

其中\(m\)是controller在一個batch中采樣得到的結構的數量,\(T\)是controller用於預測和設計神經網絡結構的超參數的數量。

\(R_k\)表示第k個網絡結構在驗證集上的準確度。

上述的更新算法是對梯度的無偏估計,但是有很高的方差。為了降低方差,文中使用如下基線函數:

\[\frac{1}{m} \sum_{k=1}^{m} \sum_{t=1}^{T} \nabla_{θ_c}logP(a_t|a_{(t-1):1};θ_c)(R_k-b)\]

只要\(b\)不依懶於當前的action,那麽其仍是無偏梯度估計,且\(b\)是前面的結構準確率的 指數平均數指標(Exponential Moving Average, EMA)

EMA(Exponential Moving Average)是指數平均數指標,它也是一種趨向類指標,指數平均數指標是以指數式遞減加權的移動平均。

其公式為:
EMA_{today}=α * Price_{today} + ( 1 - α ) * EMA_{yesterday};

其中,α為平滑指數,一般取作2/(N+1)。

Accelerate Training with Parallelism and Asynchronous Updates 使用並行算法和異步更新來加速訓練

每一次用於更新controller的參數\(θ_c\)的梯度都對應於一個子網絡訓練達到收斂。但是因為子網絡眾多,且每次訓練收斂耗時長,所以使用 分布式訓練和異步參數更新的方法來加速controller的學習速度。

技術分享圖片

訓練模型如上圖所示,一共有\(S\)Parameter Server用於存儲 \(K\)Controller Replica的共享參數。然後每個 Controller Replica 生成\(m\)個並行訓練的自網絡。

controller會根據\(m\)個子網絡結構在收斂時得到的結果收集得到梯度值,然後為了更新所有 Controller Replica,會把梯度值傳遞給 Parameter Server

在本文中,當訓練叠代次數超過一定次數則認為子網絡收斂。

3.3 Increase Architecture Complexity With Skip Connections And Other Layer Types

3.1節中的示意圖為了方便說明,所以其中的網絡結構較為簡單。本節則會介紹一種方法能夠使得controller生成的網絡結構假如 skip connections(如ResNet結構) 或者 branching layers(層分叉,如GoogleNet結構)

為實現準確預測connections,本文采用了 (Neelakantan et al., 2015) 中的基於註意力機制的set-selection type attention方法。

\(N\)層,根據sigmoid函數判斷與其前面的\(N-1\)個層是否相連。sigmoid函數如下:

\[P(Layer\,j\,is\,an\,input\,to\,layer\,i)=sigmoid(v^T tanh(W_{prev}*h_j+W_{curr}*h_i))\]

上式中\(h_j\)表示controller在第\(j\)層的隱藏狀態(\(j\)的大小是從0到\(N-1\))。

技術分享圖片

下面介紹如何應對有的層可能沒有輸入或輸出的情況:

1.如果沒有輸入,那麽原始圖像作為輸入
2.在最後一層,將所有還沒有connected層的輸出concatenate起來作為輸入。
3.如果需要concatenated的輸入層有不同的size,那麽小一點的層通過補0來保證一樣大小

3.4 GENERATE RECURRENT CELL ARCHITECTURES

下圖展示了生成遞歸單元結構的具體細節。

由圖可知采用了樹結構來描述網絡結構,這樣也便於遍歷每個節點。

每棵樹由兩個葉子節點(用0,1表示)和一個中間節點(用2表示)組成。

技術分享圖片

4. 實驗與結果

具體的實驗結果可查閱原論文 NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING

技術分享圖片


MARSGGBO?原創





2018-7-21



論文筆記系列-Neural Architecture Search With Reinforcement Learning