殘差網絡(Residual Networks)是由微軟亞洲研究院的Kaiming He等人提出的神經網絡模型。依托該模型,他們獲得ILSVRC & COCO 2015圖像分類競賽第一名。你可以在這裡找到論文正文:
這篇文章非常經典,推薦精讀。以下是對該論文核心内容的摘抄。
網絡退化
神經網絡的深度已然被認為是影響網絡表現的一個核心因素。但是極深網絡的訓練面臨着梯度消失與爆炸的幹擾。歸一化(normalization)的引入很大程度上解決了這個問題,使得數十層深的網絡得以收斂。但是新的問題又浮現了出來,網絡開始退化——随着深度增加,準确率趨于飽和,之後迅速衰退。這并非由過拟合(overfitting)造成,并且給已經很深的模型增加更多的層數會導緻更高的訓練誤差。
56層正常網絡的訓練誤差大于20層。作者:Kaiming He, et al.
學習殘差
為了解決這一問題,作者提出了深度殘差學習(deep residual learning)的概念:堆疊的網絡需要拟合的不再是設想中的隐含映射,而是全新的殘差映射。如果将設想中的隐含映射記為
$$ H(x) $$
則殘差映射可以表示為
$$ H(x) + x $$
作者認為這種全新的映射拟合起來更加容易。例如拟合恒等映射時,相比堆疊多個非線性層來拟合,将殘差置0顯然更加簡單。
快捷連接配接
如果将殘差連接配接記為$F(x)$,由上一公式可得
$$ F(X) = H(x) - x $$
将$x$拿到等号的另一邊,可得
$$ F(X) + x = H(x) $$
也就是說,傳統神經網絡學習的映射關系其實是$F(X) + x$。這種映射在網絡建構時可以通過快捷連接配接(shortcut connection)來實作。在ResNet模型中,快捷連接配接起着恒等映射的作用。是以它的實作也及其簡單——将輸入加至輸出即可。
快捷連接配接示意圖。作者:Kaiming He, et al.
殘差網絡為什麼有效
理論上,給神經網絡追加層數不應當導緻網絡退化——例如追加的層均為恒等映射時。但是實際上網絡卻發生了退化,這意味着求解器在使用多層網絡拟合恒等映射也存在着困難。在實際情況中,恒等映射不太可能是最優選擇,但是如果最優選擇與恒等映射非常接近時,殘差網絡可以很容易的學習到“恒等映射 + 擾動”這樣的分離方案,而非完整的最優映射。
TensorFlow實作
TensorFlow提供了官方實作,位址是
我正在嘗試開發一個對新手更加友好的版本,歡迎關注!