1.概述
本文檔介紹MobileNet裡使用的深度殘差網絡理論,内容主要來源于Deep Residual Learning for Image Recognition一文。
十裡桃園首發,轉載請注明
- Why深度殘差?
理論上來說,增加網絡的寬度和深度可以提高網絡的性能,層數深的網絡往往較之淺的網絡性能好。如深層x層網絡A和淺層y層網絡B,那A的性能至少能與B一樣。假設網絡A的前y層和B網絡相同,那麼後面的x-y層網絡隻需做等價映射,就達到了A網絡一樣的效果。
但基于實驗表明,并非如此,由于網絡層數達到了一定的數目以後,網絡的性能趨于飽和,此時再增加網絡深度,其訓練和測試誤差會因過拟合以外原因性能退化。此問題稱為Degradation問題。
- 深層網絡性能退化
3.1.權重訓練與BP神經網絡
在深度神經網絡的權重訓練過程中,賦予初始權重會同樣本送入神經網絡,逐層傳遞至輸出層。若輸出層的實際輸出與期望輸出不同,則輸出誤差進行BP反向傳播至輸入層,在BP的過程中将誤差分攤給各層,以修正各層權重,使得如此反複使得誤差信号減小到最低限度。
3.2.深層網絡的BP梯度消失
記網絡期望輸出為E,則在傳統神經網絡中其輸出層Loss可求:
Where : N為目前層數,X前層輸出,W為權重,b為偏置
則其梯度的實體意義等價于loss對前層輸出求偏導:
上式為最後N層的反向傳遞梯度,那麼Losso 傳遞到第一層的偏導不難被判斷為是連層N-1次偏導計算所得,Losso本就是極小值,在網絡層數加深的情況下,其傳遞到網絡起始幾層的信号也将越來越弱。
随着信号越來越弱,BP梯度出現梯度消失,進而導緻層數加深反而性能下降的現象出現。
- 深度殘差
4.1.恒等映射疊加
梯度消失來源于BP梯度在傳遞的過程中衰減趨近于0,進而無法解析。是以若BP梯度恒大于1,則不會出現梯度消失的問題。為了解決梯度消失問題,深度殘差網絡引入了深度殘差塊,在原來的梯度基礎上做了一個恒等疊加,其圖示如下:
圖.1 殘差塊
如上圖,x為前層輸出,疊加在權重函數上。在下一層對x求導時,這一項恒為1,再做BP傳播時,其梯度恒大于1。
這樣出現一個論文作者沒有讨論,而是用實驗結論代替的問題。對于當L-1層:
其導數應為:
對于L-2層:
是以即使傳到到第一層,其值也遠遠不為0。而是前面各層的權重對于第一層的偏導之和再與1相加。
4.2.瓶頸殘差子產品
殘差對網絡深度的支援超過100層甚至達到1000層,其運算量成為一個越來越嚴峻的問題。為了降低運算量,伴随着殘差網絡,提供了名為Bottleneck Block瓶頸殘差子產品的解決模式。其圖示如下:
圖.2 Bottleneck Block
如圖.2,右側為基本的殘差塊,左側為瓶頸殘差塊,其差異為在Bottleneck Block中,先對其下采樣,卷積之後在上采樣以降低運算量。
在MobileNetV2中依循Bottleneck Block提出反向殘差的思路,與殘差網絡不同的是,其目的是通過反向的殘差塊來提升檢測精度。