残差网络(Residual Networks, ResNets)
1. 什么是殘差(residual)?
“殘差在數(shù)理統(tǒng)計(jì)中是指實(shí)際觀察值與估計(jì)值(擬合值)之間的差。”“如果回歸模型正確的話, 我們可以將殘差看作誤差的觀測值。”
更準(zhǔn)確地,假設(shè)我們想要找一個(gè) $x$,使得 $f(x) = b$,給定一個(gè) $x$ 的估計(jì)值 $x_0$,殘差(residual)就是 $b-f(x_0)$,同時(shí),誤差就是 $x-x_0$。
即使 $x$ 不知道,我們?nèi)匀豢梢杂?jì)算殘差,只是不能計(jì)算誤差罷了。
2. 什么是殘差網(wǎng)絡(luò)(Residual Networks,ResNets)?
在了解殘差網(wǎng)絡(luò)之前,先了解下面這個(gè)問題。
Q1:神經(jīng)網(wǎng)絡(luò)越深越好嗎?(Deeper is better?)
A1:如圖 1 所示,在訓(xùn)練集上,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)越深效果不一定越好。而?Deep Residual Learning for Image Recognition 這篇論文認(rèn)為,理論上,可以訓(xùn)練一個(gè) shallower 網(wǎng)絡(luò),然后在這個(gè)訓(xùn)練好的 shallower 網(wǎng)絡(luò)上堆幾層?identity mapping(恒等映射) 的層,即輸出等于輸入的層,構(gòu)建出一個(gè) deeper 網(wǎng)絡(luò)。這兩個(gè)網(wǎng)絡(luò)(shallower 和 deeper)得到的結(jié)果應(yīng)該是一模一樣的,因?yàn)槎焉先サ膶佣际?identity mapping。這樣可以得出一個(gè)結(jié)論:理論上,在訓(xùn)練集上,Deeper 不應(yīng)該比 shallower 差,即越深的網(wǎng)絡(luò)不會比淺層的網(wǎng)絡(luò)效果差。但為什么會出現(xiàn)圖 1 這樣的情況呢,隨著層數(shù)的增多,訓(xùn)練集上的效果變差?這被稱為退化問題(degradation problem),原因是隨著網(wǎng)絡(luò)越來越深,訓(xùn)練變得原來越難,網(wǎng)絡(luò)的優(yōu)化變得越來越難。理論上,越深的網(wǎng)絡(luò),效果應(yīng)該更好;但實(shí)際上,由于訓(xùn)練難度,過深的網(wǎng)絡(luò)會產(chǎn)生退化問題,效果反而不如相對較淺的網(wǎng)絡(luò)。而殘差網(wǎng)絡(luò)就可以解決這個(gè)問題的,殘差網(wǎng)絡(luò)越深,訓(xùn)練集上的效果會越好。(測試集上的效果可能涉及過擬合問題。過擬合問題指的是測試集上的效果和訓(xùn)練集上的效果之間有差距。)
圖 1 不同深度的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)效果對比圖
(“plain” network指的是沒有使用 shortcut connection 的網(wǎng)絡(luò))
殘差網(wǎng)絡(luò)通過加入 shortcut connections,變得更加容易被優(yōu)化。包含一個(gè) shortcut connection 的幾層網(wǎng)絡(luò)被稱為一個(gè)殘差塊(residual block),如圖 2 所示。(shortcut connection,即圖 2 右側(cè)從 $x$ 到 $\bigoplus$ 的箭頭)
圖 2 殘差塊
2.1 殘差塊(residual block)
如圖 2 所示,$x$ 表示輸入,$F(x)$ 表示殘差塊在第二層激活函數(shù)之前的輸出,即 $F(x) = W_2\sigma(W_1x)$,其中 $W_1$ 和 $W_2$ 表示第一層和第二層的權(quán)重,$\sigma$ 表示 ReLU 激活函數(shù)。(這里省略了 bias。)最后殘差塊的輸出是 $\sigma(F(x) + x)$。
當(dāng)沒有 shortcut connection(即圖 2 右側(cè)從 $x$ 到 $\bigoplus$ 的箭頭)時(shí),殘差塊就是一個(gè)普通的 2 層網(wǎng)絡(luò)。殘差塊中的網(wǎng)絡(luò)可以是全連接層,也可以是卷積層。設(shè)第二層網(wǎng)絡(luò)在激活函數(shù)之前的輸出為 $H(x)$。如果在該 2 層網(wǎng)絡(luò)中,最優(yōu)的輸出就是輸入 $x$,那么對于沒有 shortcut connection 的網(wǎng)絡(luò),就需要將其優(yōu)化成 $H(x) = x$;對于有 shortcut connection 的網(wǎng)絡(luò),即殘差塊,最優(yōu)輸出是 $x$,則只需要將 $F(x) = H(x) - x$ 優(yōu)化為 0 即可。后者的優(yōu)化會比前者簡單。這也是殘差這一叫法的由來。
2.2 殘差網(wǎng)絡(luò)舉例
圖 3 最右側(cè)就是就是一個(gè)殘差網(wǎng)絡(luò)。34-layer 表示含可訓(xùn)練參數(shù)的層數(shù)為34層,池化層不含可訓(xùn)練參數(shù)。圖 3 右側(cè)所示的殘差網(wǎng)絡(luò)和中間部分的 plain network 唯一的區(qū)別就是 shortcut connections。這兩個(gè)網(wǎng)絡(luò)都是當(dāng) feature map 減半時(shí),filter 的個(gè)數(shù)翻倍,這樣保證了每一層的計(jì)算復(fù)雜度一致。
ResNet 因?yàn)槭褂?identity mapping,在 shortcut connections 上沒有參數(shù),所以圖 3 中 plain network 和 residual network 的計(jì)算復(fù)雜度都是一樣的,都是?3.6 billion FLOPs.
圖 3 ?VGG-19、plain network、ResNet
殘差網(wǎng)絡(luò)可以不是卷積神經(jīng)網(wǎng)絡(luò),用全連接層也可以。當(dāng)然,殘差網(wǎng)絡(luò)在被提出的論文中是用來處理圖像識別問題。
2.3 為什么殘差網(wǎng)絡(luò)會work?
我們給一個(gè)網(wǎng)絡(luò)不論在中間還是末尾加上一個(gè)殘差塊,并給殘差塊中的 weights 加上 L2 regularization(weight decay),這樣圖 1 中?$F(x) = 0$ 是很容易的。這種情況下加上一個(gè)殘差塊和不加之前的效果會是一樣,所以加上殘差塊不會使得效果變得差。如果殘差塊中的隱藏單元學(xué)到了一些有用信息,那么它可能比 identity mapping(即 $F(x) = 0$)表現(xiàn)的更好。
"The main reason the residual network works is that it's so easy for these extra layers to learn the identity function that you're kind of guaranteed that it doesn't hurt performance. And then lot of time you maybe get lucky and even helps performance, or at least is easier to go from a decent baseline of not hurting performance, and then creating the same can only improve the solution from there."
References
殘差 百度百科
Residual (numerical analysis) - Wikipedia
Course 4 Convolutional Neural Networks by Andrew Ng
He, K., Zhang, X., Ren, S., & Sun, J. (2015). Deep Residual Learning for Image Recognition, 1–9. Retrieved from http://arxiv.org/abs/1512.03385
?
轉(zhuǎn)載于:https://www.cnblogs.com/wuliytTaotao/p/9560205.html
總結(jié)
以上是生活随笔為你收集整理的残差网络(Residual Networks, ResNets)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ans_rproxy 说明
- 下一篇: [POI2007]堆积木Klo