摘要
作者提出了一種新的網絡結構,傳統的L層網絡間有L個連接,作者提出的Densenet的L層網絡間有L(L+1)/2個連接。對某一層,之前的所有層的特征圖都被用做輸入。Densenet有以下幾個優點:緩解了梯度消失,加強了特征傳播,實現了特征重用和充分減少了參數數目。
介紹和相關工作
隨著神經網絡的加深,輸入信息經過多層網絡常常出現梯度消失等問題。Resnet、Highway Networks、Stochastic depth and FractalNets解決梯度消失問題的共性是它們在前面網絡層與后面層之間創造了短連接。在本文中,作者提出了一種將信息最大化向下一層傳播的網絡。
在整合特征時沒有像Resnet那樣將特征圖與前面層的信息相加而是將兩者拼接在了一起。違背直覺的是Densenet的參數數目變少了。除了減少參數外,該網絡提升了信息的流動與梯度傳播讓網絡變得更容易去訓練,并且密集連接具有正則化的作用,緩解了過擬合。
DenseNets
考慮一幅圖片X0輸入一個卷積網絡,該網絡包含L層,每層有一個非線性傳輸函數H(l),H可以是一系列操作的組合,例如批正則化,RELU,池化或者卷積操作。
ResNets
該網絡在一個block后一層輸入加上了該block的輸入,使得梯度可以直接由后一層向前一個block最開始的層傳播,但缺點是直接相加可能會妨礙網絡中信息流動。
Dense connectivity
為了提升信息在層之間的流動,作者提出了如圖結構,在每一個block里整合前一層特征圖信息時,將其與更早的特征圖進行拼接而不是相加。
Composite function
定義H(l)由BN、RELU和一個3x3的卷積構成。
Pooling layers
將整個網絡劃分為多個blocks,并在blocks之間進行卷積和池化。在該實驗中,使用了一個BN和一個1x1的卷積層和一個2x2的平均池化層。
Growth rate
假設每一個H操作就會產生k個feature maps,那么當層數為l的時候就會有k*(l-1)+k0 (k0是input的通道數,RGB的話,就是3),如果k太大,會導致數據量特別大,而這個k又是卷積核的個數,所以也不能太大,太大了,網絡的參數又太多。為了控制參數數目,作者引入超參數k,為增長率。
一種解釋是每一層所學到的都作為block中共享的知識,而每一層所學的對整體的貢獻由k所決定。
Bottleneck layers
為了減少特征圖從而減少計算量,采用在3x3卷積結構前加1x1卷積結構減少特征圖數目。加入這種結構的blocks稱為DenseNet-B。
Compression
為了讓網絡結構更加緊湊,本實驗在blocks之間的過渡層增加了reduce率為0.5的操作,這時稱這個模型為 DenseNet-BC。
之后就是實現細節了。
總結
通過實驗證明了模型在一些數據集上表現達到領先水平,在達成相同準確率的情況下,DenseNet所需的參數和浮點操作數遠小于ResNet。
點評
文章中對于輸入信息流的處理比較特別,算是Resnet中對信息處理的想法的一種擴展,僅僅是這樣的操作使模型表現或許有所提升,但參數數量也會增多,計算量變大。所以文章中一系列的減少參數的操作十分重要,并且難能可貴的是它仍然保證了模型的表現。