DenseNet 論文閱讀筆記


Densely Connected Convolutional Networks

原文鏈接

摘要

研究表明,如果卷積網絡在接近輸入和接近輸出地層之間包含較短地連接,那么,該網絡可以顯著地加深,變得更精確並且能夠更有效地訓練。該論文基於這個觀察提出了以前饋地方式將每個層與其它層連接地密集卷積網絡(DenseNet)

如上所述,所提出的網絡架構中,兩個層之間都有直接的連接,因此該網絡的直接連接個數為\(\frac{L(L+1)}{2}\)。對於每一層,使用前面所有層的特征映射作為輸入,並且使用其自身的特征映射作為所有后續層的輸入

DenseNet的優點: 緩解了消失梯度問題,加強了特征傳播,鼓勵特征重用,並大大減少了參數的數量

引言

當CNNs增加深度的時候,就會出現一個緊要的問題:當輸入或者梯度的信息通過很多層之后,它可能會消失或過度膨脹。在本研究中提出的架構為了確保網絡層之間的最大信息流,將所有層直接彼此連接。為了保持前饋特性,每個層從前面的所有層獲得額外的輸入,並將自己的特征映射傳遞給后面的所有層

示例(一個5層的密集塊)

該架構與ResNet相比,在將特性傳遞到層之前,沒有通過求和來組合特性,而是通過連接它們的方式來組合特性。因此第x層(輸入層不算在內)將有x個輸入,這些輸入是之前所有層提取出的特征信息。因為它的密集連接特性,研究人員將其稱為Dense Convolutional Network (DenseNet)

因為不需要重新學習冗余特征圖,這種密集連接模式相對於傳統的卷積網絡只需要更少的參數。傳統的前饋體系結構可以看作是具有一種狀態的算法,這種狀態從一個層傳遞到另一個層。每個層從其前一層讀取狀態並將其寫入后續層。它改變狀態,但也傳遞需要保留的信息。研究提出的密集網絡體系結構明確區分了添加到網絡的信息和保留的信息。密集網層非常窄(例如,每層12個過濾器),僅向網絡的“集體知識”添加一小組特征映射,並且保持其余特征映射不變,並且最終分類器基於網絡中的所有特征映射做出決策
想法:能不能先學習圖像中能夠區別分類的地方,然后將該圖像信息提取進行學習

除了參數更少,另一個DenseNets的優點是改進了整個網絡的信息流和梯度,這使得它們易於訓練。每個層直接訪問來自損失函數和原始輸入信號的梯度,帶來了隱式深度監控。這使得訓練深層網絡變得更簡單。此外,研究人員觀察到密集連接具有規則化效果,這減少了對訓練集較小的任務的過擬合

相關工作

Highway 網絡是第一批提供了有效訓練具有100多個層的端到端網絡的架構之一。利用旁路和門控單元,可以毫無困難地優化具有數百層的Highway網絡。旁路路徑被認為是簡化這些深層網絡訓練的關鍵因素。ResNets進一步支持這一點,其中純identity映射用作旁路路徑。ResNet表明隨機深度是訓練成功的一種方法,隨機深度通過在訓練過程中隨機丟棄層來改進深度殘差網絡的訓練。這表明,並非所有層都是需要的,並強調在深(剩余)網絡中存在大量的冗余,該研究深受此想法的啟發。使網絡更深(例如,在跳過連接的幫助下)的正交方法是增加網絡寬度,如GoogLeNet

DenseNets沒有從極深或極寬的體系結構中汲取表示能力,而是通過特征重用來開發網絡的潛力,從而產生易於訓練和高參數效率的濃縮模型。由不同層學習的連接特征圖增加了后續層輸入的變化,提高了效率。這構成了DenseNets和ResNets之間的主要區別

DenseNets

對於一個卷積網絡,假設輸入圖像\(x_0\)。該網絡包含 \(L\) 層,每一層都實現了一個非線性變換\(H_i(.)\),其中\(i\)表示第\(i\)層。\(H_i(.)\)可以是一個組合操作,如:BN,ReLU,Pooling或者Conv。將第i層的輸出記作\(x_i\)

Dense connectivity

為了進一步改善層之間的信息流,研究者提出了不同的連接模式:引入從任何層到所有后續層的直接連接

結果,第 \(i\) 層得到了之前所有層的特征映射\(x_0, x_1, ... ,x_{i-1}\)作為輸入

\[x_i = H_i([x_0, x_1, ... , x_{i-1}]) \]

\([x_0, x_1, ... , x_{i-1}]\)表示特征映射的級聯

Composite function

定義\(H_i(.)\)為一個三個連續操作的組合函數:BN, ReLU, 3*3卷積(Conv)

Pooling Layers

當特征映射的大小改變時,上式中使用的連接操作是不可行的。然而,卷積網絡的一個重要部分是改變特征映射大小的下采樣層。為了簡化架構中的下采樣,我們將網絡划分為多個緊密連接的密集塊;將塊之間的層稱為過渡層,它執行卷積和合並。實驗中使用的過渡層由批量歸一化層和1×1卷積層以及2×2平均池化層組成

3個dense blocks組成的一個深度DenseNet

Growth rate

當每個 \(H_i\) 都產生 \(k\) 個特征映射時,它表示第 \(i\) 層有 \(k_0 + k * (i - 1)\)個輸入特征映射, \(k_0\) 表示輸入層的通道數。DenseNet與已存在的架構的不同在於DenseNet可以有很窄的層,eg: \(k = 12\)。將超參數 \(k\) 稱為網絡的 growth rate。下表將顯示一個相對較小的growth rate就能夠獲得很好的結果

\(k = 32\) conv層表示BN-ReLU-Conv

對此的一種解釋是每個層可以訪問其塊中的所有前面的特征映射,因此可以訪問網絡的“集體知識”。人們可以將特征映射看作網絡的全局狀態。每個層將自己的 \(k\) 個特征映射添加到這個狀態。增長速度控制着每一層新信息對全局狀態的貢獻。全局狀態一旦寫入,就可以從網絡內的任何地方訪問,並且與傳統網絡體系結構不同,不需要逐層復制它

Bottleneck layers

雖然每一層只產生k個輸出特征映射,但它通常具有更多的輸入。有文章中指出,在每3×3卷積之前可以引入1×1卷積作為瓶頸層,以減少輸入特征映射的數量,從而提高計算效率。研究發現這種設計對於DenseNet特別有效,並將具有瓶頸層的網絡稱為DenseNet-B,即具有BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本的\(H_i\)

Compression

為了進一步提高模型的緊湊性,可以減少過渡層上的特征映射的數量。如果一個dense block包含 m 個特征映射,可以讓緊跟着的變化層生成 \(\lfloor \theta_m \rfloor\)個輸出特征映射, $ 0 < \theta \leq 1$作為壓縮因子。當 \(\theta = 1\) 時,跨轉換層的特征映射的數量保持不變

Discussion

從表面上看,DenseNets非常類似於ResNets,區別僅在於計算 \(H_i(.)\)時使用的是串聯而不是求和。然而,這個看似很小的修改的含義導致了兩個網絡體系結構的實質上不同的行為

模型緊湊性

作為輸入級聯的直接結果,任何DenseNet層學習的特征映射都可以被所有后續層訪問。這鼓勵在整個網絡中的特性重用,並導致更緊湊的模型

隱性深度監督

對於提高密集卷積網絡精度的一種解釋是,各個層通過較短的連接從損失函數接收額外的監督。可以將DenseNets解釋為執行“深度監管”。深層監控的好處以前在深層監控網絡中已經顯示出來,深層監控網絡具有附加到每個隱藏層的分類器,從而強制中間層學習區分特征

DenseNets以隱式的方式執行類似的深層監控:網絡頂部的單個分類器通過最多兩個或三個過渡層對所有層提供直接監控。然而,由於所有層之間共享相同的損耗函數,因此DenseNets的損耗函數和梯度基本上不那么復雜

隨機與確定性連接

在隨機深度,殘差網絡中的層被隨機丟棄,從而在周圍層之間建立直接連接。由於池化層從未被丟棄,因此網絡產生了與DenseNet類似的連接模式:如果所有中間層被隨機丟棄,那么在同一池化層之間的任何兩層被直接連接的概率都很小。雖然方法最終完全不同,但隨機深度的密集網解釋可能為該正則化器的成功提供見解

特征復用

通過設計,DenseNets允許層訪問來自其所有先前層(盡管有時通過轉換層)的特征圖。通過實驗可以得出以下結果

  1. 所有層將權重分散在同一塊內的許多輸入上。這表明,由非常早期的層提取的特征實際上被整個同一dense block的深層直接使用
  2. 過渡層的權重還將它們的權重分布在前面密集塊內的所有層上,指示信息從DenseNet的第一層到最后一層通過很少的間接流動
  3. 第二密集塊和第三密集塊內的層始終向過渡層的輸出(三角形的頂行)分配最小的權重,指示過渡層輸出許多冗余特征(平均權重較低)
  4. 盡管最終分類層也使用整個密集塊的權重,但是似乎存在對最終特征映射的集中,這表明可能在網絡后期產生一些更高級的特征

結論

提出了一種新的卷積網絡結構,並將其稱之為稠密卷積網絡(DenseNet)。它引入了具有相同特征映射大小的任意兩個層之間的直接連接。我們發現,DenseNets可以自然地擴展到數百個層,而沒有表現出優化困難。在實驗中,DenseNets趨向於隨着參數數量的增加,在精度上產生一致的提高,而沒有任何性能下降或過擬合的跡象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM