深度神經網路中深度究竟帶來了什麼?

微軟研究院AI頭條發表於2016-12-14

緣起

人工智慧近幾年實現了爆炸式發展,深度學習可以說是其主要的推動力。筆者對於能來微軟實習並從事深度學習方面的研究感到十分榮幸,因為微軟研究院在該領域一直處於領先的地位,其優秀的人才配備和強大的計算資源都非常適合做這方面的研究。

在計算機視覺領域,大部分的問題都已經開始使用深度神經網路進行解決,也確實取得了廣泛的成功。在很多視覺任務中,如影象識別、語義分割、目標檢測與跟蹤、影象檢索等,作為提取特徵的CNN網路模型往往起到了關鍵的作用。我們經常見到最新的方法將基礎網路換一下,效能就會得到很大的提升。因此,研究並設計一個更好的網路模型變得至關重要。

深度神經網路中深度究竟帶來了什麼?

基礎網路模型的結構樣例

最新研究進展

經典的神經網路模型主要在“寬度”與“深度”方面進行不同程度的擴增。藉助於大規模資料的訓練,AlexNet、VGG-16、VGG-19等經典網路通過寬度或深度增加的引數可以有效地提升其模型的表達能力。但當網路變得越來越深,其訓練難度也隨之相應增加,反而會導致效能的下降。最近的ResNet和Highway Networks等方法通過引入Skip跳躍結構來試圖解決極深網路在優化上帶來的問題。

深度神經網路中深度究竟帶來了什麼?ResNet和Highway Networks結構的簡單示意圖


最新的一些研究嘗試從其他角度來解釋Highway、ResNet和GoogLeNet等網路結構表現優異的原因。其中我在微軟實習的導師王井東研究員、實習生魏禎和張婷以及曾文君研究員提出Deep Fusion (Jingdong Wang, Zhen Wei, Ting Zhang, Wenjun Zeng: Deeply-Fused Nets. CoRR abs/1605.07716 (2016))深度融合的概念,認為不同分支的網路在中間層進行融合(加和或拼接等方式)能夠(1)產生很多潛在的共享引數的基礎網路,(2)同時優化資訊的流動,(3)從而幫助深層網路的訓練過程。

深度神經網路中深度究竟帶來了什麼?

Deep Fusion深度融合最簡單形式的概念示意圖

我們可以發現很多有代表性的網路結構基本都可以按照深度融合的概念進行理解。除去LeNet、AlexNet、VGGNet等單分支網路,近兩年提出的ResNet、Highway Networks、GoogLeNet系列等網路均可以看作是不同程度上的深度融合網路。在這個概念下,我們發現今年新的Inception-v4、FractalNet、DenseNet、ResNeXt以及我們新提出的Merge-and-Run等網路結構在融合方式上進行了更多的設計和探索,使得中間的融合次數和分支數目更多,從而得到更多的基礎網路和更優的資訊流動,最終取得更好的效能表現。

深度神經網路中深度究竟帶來了什麼?

近期一些深度神經網路模型的基本結構示意圖


康奈爾大學的Serge Belongie團隊也有類似的觀察與發現,他們解釋ResNet其實是眾多相對較淺的潛在網路的一個整合。在模型的測試階段發現將網路中的一些模組去掉,剩下的網路模型依然具有不錯的表現。

深度神經網路中深度究竟帶來了什麼?

將ResNet中的某些模組移除的實驗示意圖


最近提出的一些新的深度神經網路方法也從側面印證了這方面的研究,如ResNet with Stochastic Depth、FractalNet和Swapout等使用Drop-path的方法與上述移除Residual模組的研究有著異曲同工之妙。ResNet of ResNet、ResNeXt、Multi-Residual Networks和DenseNet等增加分支或路徑數目的方法均得到了效能上的提升,從某種程度上驗證了增加基礎網路數目對整體網路模型的影響。

我們的工作

我們沿著deep fusion的思路更進一步地研究了類似ResNet、Highway、Inception等結構的深度融合網路,探索了“深度”在神經網路當中究竟帶來了什麼。基於研究觀察與分析,我們又提出了一個新的網路模型,在不同資料集上均取得了不錯的表現。

Liming Zhao, Jingdong Wang, Xi Li, Zhuowen Tu, and Wenjun Zeng. "On the Connection of Deep Fusion to Ensembling." arXiv preprint arXiv:1611.07718 (2016).

一、深度融合網路剖析

首先我們從網路結構和實驗分析上展示這種多分支融合的網路跟多個潛在網路整合的關係。

深度神經網路中深度究竟帶來了什麼?

多分支融合的網路與整合網路的結構類似


通過上圖可以發現多分支融合的網路形式可以近似很多潛在網路的整合過程,區別是沒有中間的資訊互動,只是他們共享對應層的網路引數。通過10組不同深度的網路結構實驗發現,這樣一個共享引數的整合網路與帶資訊互動的深度融合網路效能表現很相似。

深度神經網路中深度究竟帶來了什麼?

深度融合網路與整合網路的表現類似


二、深度帶來更多組成網路

下一步就可以利用整合學習中的一些思路來指導我們對該型別的深度融合網路進行剖析。首先是研究其潛在的基礎網路數目,很明顯上面圖中融合3次的網路能夠組合8個基礎網路,即2^3個。那麼我們可以發現增加融合次數可以提升基礎網路的組合數目。那麼像ResNet、Highway、Inception等形式的網路,增加“深度”帶來的一個影響就是增加了其潛在基礎網路的組合數目(Ensemble Size)。

深度神經網路中深度究竟帶來了什麼?

不同融合次數會得到不同數目的組合網路(路徑)


我們也通過實驗在不同深度的網路結構上驗證了:增加組合數目能像傳統Ensemble理論中增加Ensemble Size一樣提升整體效能。

深度神經網路中深度究竟帶來了什麼?

較多的組合網路數目能夠取得更好的結果


我們也通過實驗在不同深度的網路結構上驗證了增加組合網路數目能夠提升整體效能,這也與傳統Ensemble理論中增加Ensemble Size能提升效能的結論相吻合。我們可以看到ResNet在增加深度的同時,極大地增加了組合數目,這也是其效能優異的原因之一。

三、深度影響整體效能

我們繼續研究每一個基礎組合網路,並且探索在深度融合的過程中其相互之間會產生怎樣的影響。對比每個網路單獨分開訓練得到的模型,我們發現,深度融合網路裡較深的組合網路效能得到了提升,但較淺的組合網路效能反而下降了。我們猜想在訓練過程中,由於淺層的網路容易收斂,它們能夠幫助深層的網路進行優化。但深度融合網路的各個潛在的組成網路是共享引數的,極深的網路可能會影響較淺網路的求解空間與難度,從而產生相互影響效能往中間靠攏的現象。

深度神經網路中深度究竟帶來了什麼?

每一個單獨的組成網路行為分析


既然我們認為最終的表現是一種整合的近似,那麼我們是否可以著手尋找更優的組合網路以達到整體效能的提升?通過上述組合網路之間相互影響的啟發,我們認為極深的網路會產生“拖後腿”的效果,反而較深但又不是特別深的“中間”網路會對結果影響比較大。上圖的實驗結果也驗證了我們的這個想法:(a)顯示了每個組成網路由於共享引數導致的效能變化;(b)顯示了每個組成網路對整體網路(ensemble)的相對貢獻程度。

我們依然需要淺層網路來幫助訓練較深網路,而且實際設計神經網路的時候很難做到只保留中間深度的網路結構。那麼一個折中的方案是把這裡面最深的組成網路去掉,這樣看看對結果會產生什麼影響。

深度神經網路中深度究竟帶來了什麼?

去除最深的組成網路(重新訓練或只是測試時候去除)


上圖三個方法的實驗結果表明,去除極深的組成網路不會對整體效能產生太大影響,有時候反而會提高最終結果。

深度神經網路中深度究竟帶來了什麼?

去除極深的組成網路不會影響太大,大部分情況下反而會提升效能

四、提出新的方法

基於上述觀察,我們認為一個好的網路結構應該包含如下兩個特性:足夠多的潛在網路數目,以及足夠好的組成網路。最簡單的策略是去掉“拖後腿”的極深網路,將其變成“中間”深的組成網路。下面是我們提出的方法:

深度神經網路中深度究竟帶來了什麼?

基於ResNet的形式,我們提出新的網路結構(b)和(c)


基於ResNet的形式,我們提出的Inception-Like結構與Merge-and-Run結構都去除了極深的那一條線路,但是Inception-Like的組合數目比相同引數下的ResNet要少,因此我們認為Merge-and-Run形式比較符合我們的分析與觀察。最終的實驗結果也確實驗證了這一想法,而且跟上面的實驗觀察相吻合:Inception-Like沒有極深網路的影響,更加容易訓練或收斂,比ResNet會稍好一點,與上述的Ensemble-7與Ensemble-8的實驗結果相似。Merge-and-Run結構比Inception-Like的潛在網路數目多,最終結果也是比Inception-Like的表現要好。

深度神經網路中深度究竟帶來了什麼?ResNet, Inception-Like和Merge-and-Run在不同資料集上的對比


在ImageNet結果上也驗證了我們前面的論述 (我們的方法用DFN-MR表示):

深度神經網路中深度究竟帶來了什麼?

我們提出的DFN-MR與ResNet在ImageNet資料集上的對比


五、總結

目前一個研究熱點是在深度神經網路中引入一個新的維度:潛在的組成網路數目(Ensemble Size)。可以發現像ResNet、Highway、Inception等網路增加“深度”的同時,實際增加了這個網路數目。此外,我們的工作發現極深網路除了能增加潛在網路數目外,對整體效能的貢獻並不是最大的。反而會影響其它的組成網路,導致最終的結果受到影響。我們按照“不減少組成網路數目”和“避免極深組成網路”這兩個原則,設計出新的網路結構,發現在不同資料集上總是表現優異。後續工作可以圍繞當前分析的內容,最優化提出的設計指標與原則,得到更容易訓練效能更好的網路模型。


後記:

個人感覺深度學習方法有時候對工程技術要求較高,往往方法不work的原因不是idea的問題,而是實現層面上對於細節的處理有差異,這也對我們學生在科研道路的前進造成了很大的困難。

為了方便大家在該領域的研究,我們將提出的模型和該論文實驗中用到程式碼完全開源,目前維護在GitHub上,專案地址為: https://github.com/zlmzju/fusenet;

希望我們的工作能給大家在Deep Learning的研究上帶來一些新的思考和幫助,期待更多更深入的探索和研究工作。

​原文連結:http://mp.weixin.qq.com/s/V8jI7LRxJW_RLWww7jIPGA

相關文章