Highway Networks
論文地址:arXiv:1505.00387 [cs.LG] (ICML 2015),全文:Training Very Deep Networks( arXiv:1507.06228 )
基於梯度下降的算法在網絡層數增加時訓練越來越困難(並非是梯度消失的問題,因為batch norm解決梯度消失問題).論文受 RNN 中的 LSTM、GRU 的 gate 機制的啟發,去掉每一層循環的序列輸入,去掉 reset gate (不需要遺忘歷史信息),仍使用 gate 控制前一次輸出與當前層激活函數之后的輸出的融合比例,從而提出了highway networks,加入了稱為 information high-ways的shortcut連接,使得信息可以跨層直接原樣傳遞.這使得網絡深度理論上幾乎可以是無限.
傳統網絡做的非線性轉換(通常是仿射變換+非線性激活函數)是:
highway network添加了兩個非線性轉換: transform gate \(T(x,W_T)\) ,carry gate \(C(x,W_C)\):
令 \(C = 1 − T\),得到
當\(T(x,W_T)=0\)時,\(y=x\);當\(T(x,W_T)=1\)時,\(y=H(x,W_H)\).因此這個gate可以靈活地控制網絡的行為.直觀的理解就是每層不完全做非線性特征變換了,將原始特征直接添加到這一層,更有彈性一些.
上邊的公式(3)要求$x,y, H(x,W_H),T(x,W_T) $是相同的大小.對於大小不匹配的情況,采用對x 下采樣/0值填充
的方式,另外還可使用額外的網絡改變x的維度.
論文中設置\(T(x) = σ(W_T^Tx+b_T)∈ (0,1),∀x ∈ R\).
Highway network學習之后自動學習哪些層需要哪些不需要.而ResNet是直接(等比例)相加.
ResNet
論文(Deep Residual Learning for Image Recognition,CVPR 2016)
ResNet與Highway Networks的區別是Highway Networks增加了額外的參數,而ResNet不需要;Highway Networks,當carry gate接近於0時,殘差功能接近關閉狀態.而ResNet的殘差函數總是開啟.
ResNet 的動機是網絡degradation退化問題,即傳統網絡隨着層數增多,准確率不升反降.原因是當模型變復雜時,SGD的優化變得更加困難.
圖 Cifar-10 上的training/testing error. 網絡從20層加到56層,error卻上升了。
優勢:ResNet使用Identity mapping在不額外增加參數的情況下,收斂速度更快.
Identity mapping(恆等映射)
在網絡中某一位置添加一條 shortcut connection,將前層的特征直接傳遞過來,這個新連接稱為Identity mapping.如下圖所示:
Identity mapping反向求導時正好是單位矩陣I.
假設優化殘差映射F(x) 比優化原來的映射 H(x)容易(實驗結果證實了這一點)。F(x)+x 可以通過 shortcut connections 來實現,如下圖所示:
如果\(\mathbb x\)和\(\mathcal F\)的維度相同,那么:
如果不相同,則需要對shortcut connection的x進行線性投射使維度相同,從而能夠相加:
加法操作作用的兩個tensor具有相同的結構大小,在channel方向上將對應的feature map相加合並.
Plain Network
Plain Network 主要是受 VGG 網絡啟發,主要采用3x3濾波器,遵循兩個設計原則:
- 輸出相同特征圖尺寸的卷積層,有相同個數的濾波器(stride=1使得輸出尺寸不變)
- 通過stride=2降采樣后特征圖尺寸縮小一半,增加一倍的濾波器個數使每層卷積的計算復雜度相同(以特征圖大小56->28為例,56的卷積操作數為(56x56x64)x(3x3x64),而64的卷積操作數為(28x28x128)x(3x3x128),計算量相等,當然stride=2的conv層計算量減半).
Residual Network
在 plain network 中加入 shortcut connections 構成了ResNet.對於shortcut的連接方式,論文提出了三個選項:
A. 使用恆等映射,如果residual block的輸入輸出維度不一致,對增加的維度用0來填充;
B. 在block輸入輸出維度一致時使用恆等映射,不一致時使用線性投影以保證維度一致(使用一層Conv+BatchNorm即可);
C. 對於所有的block均使用線性投影。
對這三個選項都進行了實驗,發現雖然C的效果好於B的效果好於A的效果,但是差距很小,因此線性投影並不是必需的,而使用0填充時,可以保證模型的復雜度最低,這對於更深的網絡是更加有利的。並且由於A方法不需要額外的參數,所以在層數較高時選擇使用A.
Deeper Bottleneck結構:
對於更深的網絡使用三層的殘差結構,如下圖所示,使用兩個1x1的卷積先降維再增加維度,減少了3x3卷積層的個數及其輸入輸出維度,這個較小維度的3x3卷積即為bottleneck.圖示的兩種結構設計有相近的時間復雜度.
無參數的Identity shortcut對於bottleneck結構尤為重要,如果替換成有參數的投射,模型大小和復雜度將會增加.
論文中給出的18,34,50,101,152層網絡如下表所示:
Plain Network,Residual Network與VGG-19的區別:
關於degradation
論文指出網絡的退化不太可能是梯度消失造成的,因為網絡中使用了BatchNorm層來保持信號的傳播.具體原因尚不明確,需要后續研究.
實驗發現通過更多的迭代次數(3x),仍然是degradation.
ResNet解讀
參考論文作者另一篇論文Identity Mappings in Deep Residual Networks對ResNet的解讀,
殘差網絡單元其中可以分解成右圖的形式,從圖中可以看出,殘差網絡其實是由多種路徑組合的一個網絡,直白了說,殘差網絡其實是很多並行子網絡的組合,整個殘差網絡其實相當於一個多人投票系統(Ensembling)。
ResNet只是表面上看起來很深,事實上網絡卻很淺。
所示ResNet真的解決了深度網絡的梯度消失的問題了嗎?似乎沒有,ResNet其實就是一個多人投票系統。
代碼實現
caffe中實現特征的加法,用Eltwise層的SUM operation即可:
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Eltwise2"
bottom: "Convolution7"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}