NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING 筆記

這是一篇使用增強學習來進行模型搜索的論文。
結構如下圖:

 

overview

由於不知道網絡的長度和結構,作者使用了一個RNN作爲控制器,使用該控制器來產生一串信息,用於構建網絡。之後訓練該網絡,並用網絡的accuracy作爲reward返回給控制器來更新控制器的參數,達到更優的策略。
其中控制器(RNN)的設計借鑑了sequence to sequence的思想,不同的是它優化的是一個不可微的目標,也就是 網絡的accuracy。

方法

CNN

上圖展示瞭如何使用RNN控制器產生一個簡單的CNN網絡,對於CNN網絡的每一層,控制器都會產生一組超參數,當層數達到一個閾值,就會停止。RNN的參數\theta_{t}會通過增強學習算法更新,以得到更好的模型結構。

使用REINFORCE來訓練

控制器可以看作agent,控制器產生一組token,也就是超參數,看作agent的action,使用產生的模型在驗證集的準確率作爲reward。因此,控制器需要優化下面公式:

optimization target


但是

R

是不可微分的,因此不能使用傳統的BP算法,在論文中,作者使用了REINFORCE。該算法是增強學習的常用算法之一,算法將agent的policy看作一個函數,通過reward來進行參數的更新,從而實現reward的最優化。並且該算法給出了rewardpolicy參數的導數公式。

REINFORCE

 

它的一個經驗近似公式如下:

 

empirical approximation

m是一個batch中的模型個數
T是超參數的個數

由於以上公式會遇到variance過大的問題,可以使用如下帶baseline的公式

 

with baseline

分佈式訓練加速

分佈式框架如下圖

PS


思路:其中 parameter server共同保存了控制器的所有參數,這些server將參數分發給controller,每一個controller使用得到的參數進行模型的構建,這裏由於得到的參數可能不同,構建模型的策略是隨機的,導致每次構建的網絡結構也會不同。每個controller會構建一個batch,也就是

m

個網絡,然後並行地訓練這些網絡,得到它們的accuracy。也就是說,每一個controller會得到一個batch也就是

m

個網絡,和它們的accuracy,然後根據之前提到的公式,計算參數的梯度。接着,計算完梯度的controller會將梯度發送給servers。這些server在得到梯度後,分別對自己負責的參數進行更新。更新後,當controller再次訓練時,會得到更新後的參數。這裏如果每個controller各自發送自己的梯度,之間不進行同步,就是異步更新。

 

skip connection and other layer types

爲了能夠在搜索空間中加入類似於resnet,inception的skip connection。作者設計了anchor,用於表示是否和前面幾個層進行連接。如下

 

anchor

相對應的,agent的action選擇如下圖:

 

agent action

它會根據前面算出的概率P和自己的策略,判斷是否加入connection。
最終,所有沒有後續連接的層都會被連接到輸出層,如果連接的兩個層大小不一致,就將小的層用0來填充。(pad with zeros)

產生RNN網絡cell

爲了產生RNN網絡cell,類似於LSTM,作者使用了一種樹的結構,每一個樹的節點都會擁有一個操作(addition, elementwise multiplication, etc.)和一個激活函數(tanh, sigmoid等)。每一個節點的輸入,都連接了兩個其他節點的輸出。爲了使用上面描述的方法,作者將每個節點編號,按照順序預測。如下圖:

 

RNN

 

根據預測的結果,將會按照如下方式構建網絡:

 

Computation steps

總結

這篇文章將增強學習的算法應用在了模型預測上,並且巧妙地使用RNN來預測參數。總體思路依舊是通過在一個有限的搜索空間進行高效的搜索,來不斷提高agent預測的模型的準確率。
note:REINFORCE算法真神奇,能夠直接使用一個簡單的標量reward來知道agent更新參數的方式。



作者:Junr_0926
鏈接:https://www.jianshu.com/p/b4fd2d4b96d9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章