CVPR2018搶先看 | DiracNets:無需跳層連接,訓練更深神經網路,結構參數化與Dirac參數化的ResNet
雷鋒網 AI 科技評論按:本文作者 David 9,首發於作者的個人博客,AI 科技評論獲其授權轉載。
虛擬化技術犧牲硬體開銷和性能,換來軟體功能的靈活性;深度模型也類似,如果把網路結構參數化,得到的模型更靈活易控,但是計算效率並不高。 — David 9
近年來深度網路結構的創新層出不窮:殘差網路,Inception 系列,Unet 等等...微軟的殘差網路 ResNet就是經典的跳層連接(skip-connection):
來自:https://arxiv.org/pdf/1512.03385.pdf
上一層的特徵圖 x直接與卷積後的F(x)對齊加和,變為F(x)+x(特徵圖數量不夠可用 0 特徵補齊,特徵圖大小不一可用帶步長卷積做下採樣)。這樣在每層特徵圖中添加上一層的特徵信息,可使網路更深,加快反饋與收斂。
但是 ResNet 也有明顯的缺陷:我們無法證明把每一層特徵圖硬連接到下一層都是有用的;另外實驗證明把 ResNet 變「深」,不如把 ResNet 變「寬」, 即,到了一定深度,加深網路已經無法使 ResNet 準確度提升了(還不如把網路層像 Inception 那樣變寬)。
於是,DiracNets試圖去掉固定的跳層連接,試圖用參數化的方法代替跳層連接:
那麼問題來了,我們怎麼參數化這個被刪除的跳層連接?使得新增的參數像卷積核窗口參數一樣是可訓練的?
有一點是確定的,我們知道 F(x)+x的對齊求和操作是線性的,卷積操作F也是線性的,所以,理論上F(x)+x 可以合併成一個卷積操作(或者一個線性變換):
其中 x 即輸入特徵圖。其中
就是合併後的卷積核窗口參數矩陣(這個參數已經蘊含了卷積操作和跳層操作)。
其中
代表卷積操作。
最後,讓我們再把上式的參數拆分開來:
其中 W 即代表 ResNet 中的卷積操作的參數,I 即代表 ResNet 中的跳層操作的參數。
有沒有覺得 I 和單位矩陣很像? 你猜對了 ! I 就是由卷積窗口導出的單位參數矩陣,也叫 Dirac delta 變換,任何輸入 x 經過這個 I 矩陣 的變換,其輸出還是 x 本身。
而 diag (a)也是一個可訓練的向量參數,用來控制需要跳層連接的程度(需要單位矩陣的程度)。
現在我們看看這種參數化的 ResNet 是不是更靈活了?
如果 diag(a)向量都是趨近於 0 的,那麼 I 單位矩陣就基本起不到作用, 那麼跳層連接就被削弱了。這時原始的卷積操作 W 就認為佔主導作用。
如果 diag(a)向量都是趨近於 1 的,並且 W 參數都非常小,那麼卷積操作就被削弱了,輸出和輸入的特徵圖 x 很相似。
通過訓練 diag(a),我們可以控制ResNet 中的跳層操作和卷積操作兩者的權重。而不是像傳統 ResNet,不得不硬連接加上一個跳層連接(無論有用或沒用)。
代碼實現上,PyTorch 提供了許多靈活的方法,torch.nn.functional 介面允許你人工指定各個參數矩陣:
import torch.nn.functional as F
def dirac_conv2d(input, W, alpha, beta)
return F.conv2d(input, alpha * dirac(W) + beta * normalize(W))
上面代碼把參數矩陣對於之前說的拆分成兩部分:
alpha * dirac(W) + beta * normalize(W)
幸運的是pytorch提供現成的計算dirac單位矩陣的函數:
torch.nn.init.dirac(tensor)
如需深入研究,別錯過源代碼:
https://github.com/szagoruyko/diracnets
最後我們看看實驗結果.
在同等深度的情況下,DiracNets 普遍需要更多的參數才能達到和 ResNet 相當的準確率:
來自:https://arxiv.org/pdf/1706.00388.pdf
來自:https://arxiv.org/pdf/1706.00388.pdf
而如果不考慮參數數量,DiracNets 需要較少的深度,就能達到 ResNet 需要很深的深度才能達到的準確率:
來自:https://arxiv.org/pdf/1706.00388.pdf
參考文獻:
DiracNets: Training Very Deep Neural Networks Without Skip-Connections
https://github.com/szagoruyko/diracnets
Deep Residual Learning for Image Recognition
https://zh.wikipedia.org/wiki/%E7%8B%84%E6%8B%89%E5%85%8B%CE%B4%E5%87%BD%E6%95%B0
http://pytorch.org/docs/0.1.12/_modules/torch/nn/functional.html
本文採用署名 – 非商業性使用 – 禁止演繹 3.0 中國大陸許可協議進行許可。著作權屬於「David 9的博客」原創,如需轉載,請聯繫微信: david9ml,或郵箱:yanchao727@gmail.com


※簡單上手 實用為先 先河私有雲體驗評測
※監控攝像頭下的透明大時代:他們在看著你,以及這星球上的一切
TAG:雷鋒網 |