論文筆記
DenseNet
今日研讀了作者Zhuang Liu的論文DenseNet,下面是學習的一些筆記
如有錯誤可在評論區中提出~
論文地址:https://arxiv.org/pdf/1608.06993.pdf
Introduction
密集連接網絡,對於每一層,輸入來自前面網絡的所有特徵。
隨着網絡層數的不斷加深,對網絡的訓練方式也在不斷改善,LeNet5,VGG,HighwayNet,ResNet
ResNet
ResNet(residual neural Network)改進了傳統卷積神經網絡的前饋傳播方式,使得神經網絡不再是直接連接上一層的輸出到下一層的輸入。通過skip-connection的連接方式將每一層的輸出與輸入使用identity function求和,一同傳入下一層。
這個做法使得梯度可直接從後層流入前層。但是也存在着缺陷,identity function求和的做法可能存在信息的丟失,阻礙信息在整個網絡中的傳播。
Dense connectivity
DenseNet引入了Dense conncetivity的概念,將前面所有層的輸出在網絡寬度維度上直接拼接,作爲特徵輸入到後層中,這有利於信息的重用,並且不會導致信息丟失,增強了特徵信息在網絡中的流動。(可看上圖理解連接方式)
Composite function
論文中定義H()函數爲Composite function,且有三個連續的操作組成:
- BN
- ReLU
- Conv3x3
Transition layers
通過降採改變特徵的大小,連接Dense Block的層叫做Transition layers(轉接層),由三部分組成:
- BN
- conv 1x1
- average pool 2x2
Growth rate K
增長率K是網絡的超參數,控制網絡寬度。
通過K可計算出第l層的輸入特徵個數:K0 + K(l -1),其中K爲輸入的深度
這是個經驗值,需要通過大量的實驗去調整來適應不同的數據集
Bottleneck layers(DenseNet-B)
瓶頸層,即使DenseNet每層只產生K個特徵,但是這仍然存在大量的輸入,有論文中提到在Conv3x3卷積層前加入Conv1x1卷積層能減少特徵的數量,從而加快計算的效率。
- BN
- ReLU
- Conv1x1 : 4k
- BN
- ReLU
- Conv3x3
Compression
爲了減少特徵,可對特徵進行壓縮。如果密集層輸出m個特徵,則使轉階層輸出θ*m個特徵。(0 < θ <= 1)
- θ = 1,特徵不改變
- θ < 1,DenseNet-C
- 當使用了Bottleneck + Compression,此時的網絡爲 DenseNet-BC
Implementation Details
Pytorch 實現
Github:等有時間再來更新代碼~