深度解讀何愷明團隊提出的隨機連線神經網路 RandWireNN
中心俞一鵬博士給大家帶來隨機連線神經網路RandWireNN的解讀。
深度學習模型煉丹師一般手工精心設計網路中不同層之間的連線方式,如CNN的convolution,RNN的recurrent,ResNets的x+F(x),以及DenseNets的[x, F(x)]等。自動化機器學習/深度學習的研究者則主要關注在巨大的網路模型空間中如何高效地搜尋出較好的神經網路,如早期研究人員一般使用random search/gird search,現在演變出reinforcement learning, gradient-based, weight-sharing,以及evolutionary等方法。論文作者引入了一種網路模型空間的構造方法,即圖論中的random graph,之後用grid search搜尋出較好的神經網路子集,並在ImageNet的1000-class分類任務上進行驗證。
論文的主要工作包含以下步驟:
(1)基於圖論的隨機圖方法生成隨機圖Random Graph;
(2)將Random Graph轉換為一個神經網路NN;
(3)將多個NN堆疊起來,形成最終的隨機連線神經網路RandWireNN;
(4)在ImageNet 1000-class任務上驗證RandWireNN的表現;
(5)重複(1)到(4)步驟。
下面對每個步驟進行詳細描述。
一、基於圖論的隨機圖方法生成隨機圖Random Graph
作者引入了三種隨機圖生成方法,即Erdos-Renyi(ER)、Barabasi-Albert(BA)和 Watts-Strogatz(WS)。這三個方法生成隨機圖的機制比較簡單。
--ER: N個節點,節點兩兩之間以P的概率有一條邊。該方法包含一個引數P,故以ER(P)表示。
--BA: 初始有M個節點(M<N),每增加1個新節點的時候,該節點以一定的概率與已有的所有節點相連(這個概率與已有節點的度有關),重複,直到這個新節點有M條邊。重複,直到整個圖有N個節點。該方法包含一個引數M,故以BA(M)表示。
--WS: 所有N個節點排成一個圈,每個節點與兩邊鄰近的K/2個節點相連。之後按照順時針方向遍歷每一個節點,與當前節點相連的某一條邊以概率P與其他某個節點相連。重複K/2次。該方法包含2個引數K和P,故以WS(K,P)表示。
其中模型的節點總數N由論文作者根據網路複雜度(FLOPs)手動指定,因此ER方法的引數搜尋空間為P∈[0.0,1.0],BA方法的引數搜尋空間為M∈[1,N],WS方法的引數搜尋空間為K∈[1,N-1] x P∈[0.0,1.0]。圖1是三種方法生成的隨機圖。
圖1:隨機圖
二、 把生成的隨機圖Random Graph轉換為一個神經網路NN
由圖1可知,生成的每個隨機圖中的邊是沒有方向的,且不知道哪個是輸入節點,哪個是輸出節點。
首先要給每條邊指定一個方向,即把生成的隨機圖Random Graph轉換為有向無環圖DAG。方法就是給每個節點分配一個索引index(從1到N),若兩個節點之間有邊,則邊的方向從小索引節點到大索引節點。其中ER方法按照隨機的方式給N個節點分配索引;BA方法給初始的M個節點分配索引1~M,之後每增加一個節點,其索引加1;WS方法則按照順時針方向從小到大給N個節點分配索引。
其次給DAG指定唯一的輸入節點(input)和唯一的輸出節點(output)。DAG本身包含N個節點,那麼額外指定一個輸入節點與DAG中所有入度為0的節點相連,其負責將輸入的圖片轉發出去;再額外指定一個輸出節點與DAG中所有出度為0的節點相連,該節點進行均值計算後將結果輸出。
最後規定DAG中每個節點的操作型別(如圖2所示),從而形成一個神經網路NN。其中conv是一個ReLU-convolution-BN,簡稱conv。
圖2:節點的操作
三、 將多個NN堆疊起來,形成最終的隨機連線神經網路RandWireNN
借鑑其他經典深度學習神經網路,作者將多個NN堆疊起來形成最終的隨機連線神經網路RandWireNN。圖3為一個示例,其包含共5個stages,其中stage1是一個卷積層,stage2可以是一個卷積層或者是一個NN,stage3、stage4和stage5均為NN。不同stage之間:卷積操作的stride為2,故feature map的大小逐漸減半;卷積操作的卷積核的數量x2,故feature map的通道數(即C)也x2。
其中每個NN的節點數N(不包含輸入和輸出節點)設定為32,通道數C設定為78或者109/154。不同的(N,C)對應不同的網路複雜度(FLOPs),這樣可以跟不同規模(small/regular/larger)的其他經典網路進行實驗比較。
圖3:RandWireNN
四、 在ImageNet 1000-class任務上驗證RandWireNN的表現
(1)三個隨機圖生成方法(ER,BA,WS)的比較
如圖4所示,WS方法的表現最好,於是接下來作者挑選了WS(4,0.75)與其他網路進行比較。論文還進行了另外一個網路結構魯棒性測試的實驗,即將網路中的某個節點或者某條邊隨機去掉,然後測試網路的表現,最後發現WS的結構最不穩定。這個研究點很有意思,也許將來會有一種網路生成器能夠生成又好又魯棒的網路結構,類似大腦,也許有種大腦結構最不容易得精神疾病。
圖4:三種隨機圖方法的表現
(2)WS(4,0.75)與其他網路的比較
首先是與小規模網路(smaller)進行比較,此時N=32,C=78。如表1所示,比MobileNet/ShuffleNet/NASNet/PNAS/DARTS等表現好,比Amoeba-C略差。
表1:與小規模網路比較
其次與中等規模的網路(regular)進行比較,此時N=32,C=109/154,如表2所示,比ResNet-50/101和ResNeXt-50/101表現好。
表2:與中等規模網路比較
最後與大規模網路(larger)進行比較,此時直接使用剛才訓練好的中等規模網路,不過輸入影象的size由224x224提高到320x320,如表3所示,雖然比其他網路表現略差,但是計算量少了很多。
表3:與大規模網路比較
(3)遷移表現
論文將RandWireNN作為骨幹網路,用Faster R-CNN with FPN來檢測目標(COCO object detection),如表4所示,比ResNet-50和ResNeXt-50效果好。
表4:遷移表現
五、 進一步思考
(1)這篇論文將圖論的方法引入,並強調network generator的重要性,很有新意,好比“虎父無犬子”,“龍生龍,鳳生鳳”。
(2)這個idea也許你也能想到,不過快速實現這個idea的能力更重要;
(3)不同stage之間只有一個node連線,這個設計未必合理;
(4)遷移學習表現比較的實驗過於簡單,且其他實驗結果也沒有很驚豔。
(5)引入的圖論方法有點簡單,也許有更復雜的圖生成方法,比如Bio-inspired類的;
(6)只與NASNet進行了表現比較,沒有與其他AutoML方法進行對比。