Deep Residual Network 深度殘差網路

Medivhna

雲從科技研究院深度學習研究團隊成員。主攻深度學習與神經網路。

近年來,深度卷積神經網路(Deep Convolution Neural Network)在計算機視覺問題中被廣泛使用,並在圖像分類、目標檢測等問題中表現出了優異的性能。

Revisiting Deep Convolution Network

2012年,計算機視覺界頂級比賽ILSVRC中,多倫多大學Hinton團隊所提出的深度卷積神經網路結構AlexNet[1]一鳴驚人,同時也拉開了深度卷積神經網路在計算機視覺領域廣泛應用的序幕,如圖1所示。

圖1 AlexNet網路結構

2014年,Google公司的GoogleNet[2]和牛津大學視覺幾何組的VGGNet[3]在當年的ILSVRC中再一次各自使用深度卷積神經網路取得了優異的成績,並在分類錯誤率上優於AlexNet數個百分點,再一次將深度卷積神經網路推上了新的巔峰。兩種結構相較於AlexNet,繼續選擇了增加網路複雜程度的策略來增強網路的特徵表示能力。 2015年,微軟亞洲研究院的何凱明等人使用殘差網路ResNet[4]參加了當年的ILSVRC,在圖像分類、目標檢測等任務中的表現大幅超越前一年的比賽的性能水準,並最終取得冠軍。殘差網路的明顯特徵是有著相當深的深度,從32層到152層,其深度遠遠超過了之前提出的深度網路結構,而後又針對小數據設計了1001層的網路結構。殘差網路ResNet的深度驚人,極其深的深度使該網路擁有極強大的表達能力。本文剩餘部分將對殘差網路及其變種進行詳細的介紹。

Deeper is better?

上一部分我們回顧了深度卷積神經網路的發展歷程,可以明顯發現,網路的表達能力是隨著網路深度的增加而增強的。何愷明等人的實驗[5]也證明,時間複雜度相同的兩種網路結構,深度較深的網路性能會有相對的提升。 然而,網路並非越深越好。拋開計算代價的問題不談,在網路深度較深時,繼續增加層數並不能提高性能,如圖2所示。可以看到,在「平整」網路(與本文所介紹的殘差網路複雜程度相同,但未使用殘差結構的網路)中,隨著網路層數的增加,其性能不但沒有提升,反而出現了顯著的退化。由於訓練誤差也隨著層數增加而提升,所以這個現象可能並非參數的增加造成的過擬合;此外,這個網路在訓練時也使用了ReLU激活、BN等手段,一定程度上緩解了梯度消失,這個現象可能也並非完全由梯度消失造成的。這個問題仍有待理論層面的研究和解決。 那麼當下真的沒有辦法讓網路更深了嗎?把思路打開,假設上面的實驗場景中,多增加的26層全部為單位映射,那麼完全可以認為不會產生性能的損失。當然實際應用中這樣做是沒有意義的,但如果增加的層可以近似為單位映射,或者增加了些許擾動的單位映射,那麼就有可能實現上述假設。在這一思路的引導下,深度殘差學習(Deep Residual Learning)應運而生。

圖2 使用Cifar-10數據集對「平整」網路進行訓練和測試對應的誤差

Deep Residual Learning

(2)初始化:

我們設深度網路中某隱含層為H(x)-x→F(x),如果可以假設多個非線性層組合可以近似於一個複雜函數,那麼也同樣可以假設隱含層的殘差近似於某個複雜函數[6]。即那麼我們可以將隱含層表示為H(x)=F(x)+ x。

這樣一來,我們就可以得到一種全新的殘差結構單元,如圖3所示。可以看到,殘差單元的輸出由多個卷積層級聯的輸出和輸入元素間相加(保證卷積層輸出和輸入元素維度相同),再經過ReLU激活後得到。將這種結構級聯起來,就得到了殘差網路。典型網路結構表1所示。

圖3 殘差單元示意圖

可以注意到殘差網路有這樣幾個特點:1. 網路較瘦,控制了參數數量;2. 存在明顯層級,特徵圖個數逐層遞進,保證輸出特徵表達能力;3. 使用了較少的池化層,大量使用下採樣,提高傳播效率;4. 沒有使用Dropout,利用BN和全局平均池化進行正則化,加快了訓練速度;5. 層數較高時減少了3x3卷積個數,並用1x1卷積控制了3x3卷積的輸入輸出特徵圖數量,稱這種結構為「瓶頸」(bottleneck)。

表1 典型的殘差網路結構

圖4 ImageNet數據集上「平整」網路和殘差網路的收斂性能

圖5 ImageNet數據集上殘差網路和其他網路單模型分類驗證錯誤率對比 (VGG對應值為測試誤差)

圖6 ImageNet數據集上殘差網路和其他網路集成模型分類測試錯誤率對比

圖7 在Cifar-10數據集上網路各層響應的方差分布 上圖:按照原網路層數排列;下圖:按照方差大小排列

收斂性能:圖4中可以看到,與之前的實驗不同,殘差網路增加了一定層數之後,並未出現性能退化,反而性能有了一定程度的提升:殘差網路有著更低的收斂損失,同時也沒有產生過高的過擬合。同時注意到,殘差網路在淺層時並未表現出更多的優勢,說明殘差網路必須要配合較深的深度才能發揮其結構優勢,與「平整」網路拉開性能差距。

分類性能:圖5和圖6是幾種網路結構在ImageNet數據集上單模型及集成模型分類錯誤率的對比。可以發現,殘差網路系由於層數普遍高於以上模型,且又有殘差結構作為極深度的支持前提,使得其性能普遍高於此前的各類優秀模型。此外,殘差網路的性能也確實如期望隨著網路層數的提升而提升。在100層以上時已經遠遠甩開了IRSVRC 2014的冠亞軍網路模型。

網路響應:圖7中可以看出,殘差網路中大部分層的響應方差都處在較低水平,這一定程度上印證了我們的假設:這些響應方差較低的層響應較為固定,很有可能權重近似於零,這也就是說其所對應的殘差結構可能近似於單位映射,網路的實際有效層數是要比全部層數要少一些的,產生了跳過連接(Skip-connection)的作用。這樣也就是網路為什麼在較深的深度下仍可以保持並提升性能,且沒有過多增加訓練難度的原因。

ResDeeper more

何愷明等人基於深度殘差結構,進一步設計了一些其他的殘差網路模型,用於Cifar-10數據集上的分類任務,分類錯誤率如圖8所示。可以看到,110層以下的殘差網路中均表現出了較強的分類性能。但在使用1202層殘差網路模型時,分類性能出現了退化,甚至不如32層殘差網路的表現。由於Cifar-10數據集尺寸和規模相對較小,此處1202層模型也並未使用Dropout等強正則化手段,1202層的網路有可能已經產生過擬合,但也不能排除和之前「平整」網路情況類似的原因導致的性能退化。

圖8 Cifar-10數據集上殘差網路和其他網路分類測試錯誤率對比

何愷明等人經過一段時間的研究,認為極其深的深度網路可能深受梯度消失問題的困擾,BN、ReLU等手段對於這種程度的梯度消失緩解能力有限,並提出了單位映射的殘差結構[7]。這種結構從本源上杜絕了梯度消失的問題:

基於反向傳播法計算梯度優化的神經網路,由於反向傳播求隱藏層梯度時利用了鏈式法則,梯度值會進行一系列的連乘,導致淺層隱藏層的梯度會出現劇烈的衰減,這也就是梯度消失問題的本源,這種問題對於Sigmoid激活尤為嚴重,故後來深度網路均使用ReLU激活來緩解這個問題,但即使是ReLU激活也無法避免由於網路單元本身輸出的尺度關係,在極深度條件下成百上千次的連乘帶來的梯度消失。

圖9 原始殘差單元和預激活殘差單元的對比

實驗證明,將激活層融合到殘差支路中,並使用ReLU預激活的殘差單元,不僅可以滿足之前的假設,並且實驗證明在各種已知的結構裡面也是最優的[7],預激活單元和原始殘差單元的示意圖如圖9所示。可以看到,預激活的殘差單元在殘差支路中進行每次卷積之前即完成激活,然後再進行矩陣元素間加法進行合併,既滿足了激活要求,也使得支路外不再需要額外激活。

圖10 Cifar-10數據集上訓練1001層殘差網路的訓練曲線

圖11 Cifar-10和Cifar-100數據集上各種殘差網路 使用不同殘差單元的分類測試誤差對比

使用預激活殘差單元構築的殘差網路收斂性能和分類性能分別如圖10和圖11所示。可以看到,使用預激活殘差單元,相較於使用原始單元更易收斂,且有一定正則化的效果,測試集上性能也普遍好於原始殘差單元。

Conclusion

殘差網路結構簡單,解決了極深度條件下深度卷積神經網路性能退化的問題,分類性能表現出色。從ILSVRC 2015至今半年多的時間裡,殘差網路的廣泛使用已推進計算機視覺各任務的性能升入新的高度。

殘差網路表現出的良好圖像分類性能,同樣也可以進一步推廣到人臉識別領域上來。使用殘差網路,可以大幅提升人臉分類性能。在人臉識別準確率每3個月提升一個數量級的今天,殘差網路及未來更高性能的網路結構必定會將這個周期進一步的縮短。

Reference

[1]Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems. 2012.

[2]Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.

[3]Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556(2014).

[4]He, Kaiming, et al. "Deep residual learning for image recognition." arXiv preprint arXiv:1512.03385 (2015).

[5]He, Kaiming, and Jian Sun. "Convolutional neural networks at constrained time cost." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.

[6]Montufar, Guido F., et al. "On the number of linear regions of deep neural networks." Advances in neural information processing systems. 2014.[7]He, Kaiming, et al. "Identity mappings in deep residual networks." arXiv preprint arXiv:1603.05027 (2016).


推薦閱讀:

深度學習(Deep Learning)基礎概念1:神經網路基礎介紹及一層神經網路的python實現
SPPNet-引入空間金字塔池化改進RCNN
擔心的事情還是發生了,AI水軍你根本看不出來
Python · RNN

TAG:深度学习DeepLearning | 神经网络 | 人脸识别 |