resnet(殘差網路)的F(x)究竟長什麼樣子?

想弄明白resnet的機制,看了不少網路資源,都提到「H(X)= F(X)+X。H映射計算複雜,F(X)計算相對簡單,所以加深網路是OK的」。。。H(X)知道是什麼,兩個隱藏層節點多的話訓練複雜也可以理解。但是沒有那篇資料詳細寫過F(X)長啥樣子?多少參數?為何它會比H(X)參數少?然後,resnet的shortcut為何是 輸入的X,不是X/2或者其他什麼東西?(有資料提到輸入的X最適的話F直接等於0即可,方便)


F是求和前網路映射,H是從輸入到求和後的網路映射。

比如把5映射到5.1,

那麼引入殘差前是F"(5)=5.1,

引入殘差後是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。

這裡的F"和F都表示網路參數映射,引入殘差後的映射對輸出的變化更敏感。比如原來是從5.1到5.2,映射F"的輸出增加了1/51=2%,而對於殘差結構從5.1到5.2,映射F是從0.1到0.2,增加了100%。明顯後者輸出變化對權重的調整作用更大,所以效果更好。

殘差的思想都是去掉相同的主體部分,從而突出微小的變化,看到殘差網路我第一反應就是差分放大器...


resnet最初的想法是在訓練集上,深層網路不應該比淺層網路差,因為只需要深層網路多的那些層做恆等映射就簡化為了淺層網路。所以從學習恆等映射這點出發,考慮到網路要學習一個F(x)=x的映射比學習F(x)=0的映射更難,所以可以把網路結構設計成H(x) = F(x) + x,這樣就即完成了恆等映射的學習,又降低了學習難度。這裡的x是殘差結構的輸入,F是該層網路學習的映射,H是整個殘差結構的輸出。


對於shortcut的形式, @大缺弦 的答案很對。當初沒有好好看論文,看來還需要提高姿勢水平。

簡單來說,殘差網路效果好,很大程度上依賴於殘差連接回傳的梯度緩解梯度消失等問題,所以只能取x,實驗結果也佐證了這一點。


第一次答題,請多指教Orz。

對於resnet,可以參考Kaiming大神的兩篇論文。

[1] K. He, X. Zhang, S. Ren, and J. Sun, 「Deep Residual Learning for Image Recognition,」 http://Arxiv.Org, vol. 7, no. 3, pp. 171–180, 2015.

[2] K. He, X. Zhang, S. Ren, and J. Sun, 「Identity Mappings in Deep Residual Networks Importance of Identity Skip Connections Usage of Activation Function Analysis of Pre-activation Structure,」 no. 1, pp. 1–15, 2016.

  • kaiming大神在[1]中提出了殘差結構。之前的答主有提到,resnet的提出是為了解決深層網路優化的問題,如果深層網路的後面那些層是恆等映射,那麼模型就退化為一個淺層網路。殘差結構的輸出表示為F(x) + x,相比於用多個堆疊的非線性層直接去學習恆等映射F(x) = x,殘差結構直接學習F(x) = 0使得訓練更容易些。

  • 至於F(x)長什麼樣,這個問題不是特別理解。我覺得模型的訓練,就是根據一個訓練集數據(某個函數加入雜訊後的採樣)更好地擬合該函數。如果知道了這個函數長什麼樣,那就不用訓練啦。另外,如果真的知道H(x)是什麼樣,那F(x)就是 H(x) - x 好了。
  • 至於為何shortcut的輸入時X,而不是X/2或是其他形式。kaiming大神的另一篇文章[2]中探討了這個問題,對以下6種結構的殘差結構進行實驗比較,shortcut是X/2的就是第二種,結果發現還是第一種效果好啊。


我覺得戴頭盔的答主回答的很在點子上。

我就簡單補充一點,為什麼同一映射 I(x)=x 這一項前的係數為1而不是1/2。

  • 一方面,實踐發現機器學習要擬合的(target function)函數 f(x) 經常是很接近同一映射函數的。
  • 另一方面,神經網路權值的初始值往往在 0 附近。

因此,以同一映射函數為初始函數,用其他神經網路做微調,相當於贏在了起跑線上。

形象但是鬆散一點描述就是,經驗表明要擬合的函數接近一根直線,於是就用一根直線加一些微小的折線們疊加來擬合。如果只用直線,就成了線性分類/回歸,細節難把握;而只用微小的折線們,要優化的路很長,並且還容易過擬合。

有篇文章 [1] 仔細分析了殘差網路背後的原理,簡單的說就是大量的(exponential)不同長度的神經網路組成的組合函數(ensemble)。

為什麼簡單補充一點就寫了這麼多。。。有什麼再繼續交流吧。對了,要想比較好的理解,最好找個好點的教程,自己動手運行一下代碼。然後你會發現,就加了幾行代碼就拿了IMAGENET的冠軍,簡直贊啊!

[1] Christian Szegedy, Sergey Ioffe, and Vincent Vanhoucke. Inception-v4, inception-resnet and the impact of residual connections on learning. arXiv preprint arXiv:1602.07261, 2016.


反對最高票答主 @theone ,反向傳播是在完成一次前向傳播之後進行的,每層的輸出都已經在前向傳播的時候算出來了,哪兒有什麼「輸出變化」,更何況網路的輸出是輸入和各種中間層決定的結果,權重變了輸出才能變,不是先讓輸出從 5.1 變到 5.2,再根據這個調整權重。

關於為什麼是 x 不是 x/2 kaiming 的 paper 裡面就有提到了。。戳這篇 ,大概意思是假如不是 x 而是 lambda_{i} x 的話梯度里會有一項 prod_{i=l}^{L-1} lambda_{i} ,就是從輸出到當前層之間經過的 shortcut 上的所有 lambda_{i} 相乘,假如 lambda_{i} 都大於 1 那經過多層之後就會爆炸,都小於 1 就會趨向於 0 而變得和沒有 shortcut 一樣了(具體自行看 paper 我只是複述了一遍)


不知道大家有沒有懂小波分析的,殘差網路像不像從輸入開始到輸出,n個殘差塊,每一個殘差塊像是小波表示係數中從大特徵到精細特徵的小波係數,每一塊只表示自己那一個精細程度的小波係數,不存在前幾級的小波表示內容。有一種萬物歸一的感覺^^


各位知友講的很清楚了,我一個深度學習初學者都感覺看懂了.

從一個初學者,我換一個角度說說我的理解, 我認為resnet能有好的表現主要還是因為事物本身的特徵就是不同層次的.

比如, 區分男女相對比較容易,不需要複雜的計算或者模型(在深度網路中就是網路不需要那麼深),但是要區分出范冰冰和張馨予就需要更多的計算了(模型更複雜,網路更深). 我們把網路看成一個映射或者函數,在沒有"捷徑"(shortcut)的網路里,無論簡單還是複雜的特徵都得用一個很複雜很深的網路來處理或轉換,這似乎有點不合理,而現在resnet引入了捷徑,不同層次提取到的特徵可以"走捷徑"影響預測結果.

在resnet的網路里,我們要區分出李晨,范冰冰和張馨予三個人的思路就是這樣的,首先提取區分男女特徵,這個特徵通過捷徑直接影響結果,而更細緻的臉型皮膚紋理等等走更細緻的網路區分范冰冰和張馨予.

所以shortcut(捷徑)這個詞用的真是好啊,看似簡單的修改,背後蘊含本質的區別.


F就代表了前幾層網路。

說錯的話請指正。


推薦閱讀:

卷積神經網路可以用於小目標檢測嗎?
深度學習與重整化群有什麼關係?
從事深度學習等人工智慧研究在未來的職業發展前景如何?
如何獲得Bengio的《Deep Learning》的pdf版?
怎麼評判卷積神經網路訓練得差不多了?

TAG:機器學習 | 神經網路 | 深度學習DeepLearning |