深度学习笔记之DenseNets
文章目錄
- 簡介
- DenseNets
- 密集連接(Dense connectivity)
- 復合函數(Composite Function)
- 池化層
- 增長率(Growth rate)
- 瓶頸層(Bottleneck layers)
- 壓縮(Compression)
- 實施細節(Implementation Details)
簡介
在Densely Connected Convolutional Networks這篇文章中作者提出的DenseNet架構明確區分了添加到網絡的信息和保留的信息。 DenseNet層非常窄(例如,每層12個濾波器),只為網絡的“集體知識”添加一小組特征圖,并保持其余的特征圖保持不變 - 最終的分類器根據 網絡中的所有要素圖。 除了更好的參數效率之外,DenseNets的一大優勢是它們改善了整個網絡中的信息流和梯度,這使得它們易于訓練。 每層都可以直接訪問損失函數和原始輸入信號的梯度,從而導致明顯的深層監督[20]。 這有助于培訓更深層次的網絡架構。 此外,他們還觀察到密集連接具有正則化效應,這減少了訓練集大小較小的任務的過度擬合。
他們在四個競爭激烈的基準數據集(CIFAR-10,CIFAR-100,SVHN和ImageNet)上評估DenseNets。 他們的模型比具有可比準確度的網絡需要更少的參數。 此外,他們在大多數基準測試任務中的表現明顯優于當時最先進的結果。
DenseNets不是從極深或寬的架構中獲取代表性功能,而是通過功能重用利用網絡的潛力,獲得易于訓練且參數效率高的模型。 由不同層學習的連接特征圖增加了后續層的輸入的變化并提高了效率。 這構成了DenseNets和ResNets之間的主要區別。與Inception網絡相比,它還可以連接來自不同層的特征,DenseNets更簡單,更高效。
還有其他值得注意的新型網絡架構,它們也有不錯的結果。 Network in Network(NIN)結構包括微多層感知器納入卷積層濾波器,以提取更復雜的特征。 在深度監督網絡(DSN)中,內部層由輔助分類器直接監督,這可以增強早期層獲得的梯度。 Ladder Networks在自動編碼器中引入了橫向連接,在半監督學習任務中有不俗的精度。 在《Deeply-fused nets》中,提出了深度融合網絡(DFN),通過組合不同基礎網絡的中間層來改善信息流。 增強具有最小化重建損失pathways的網絡也被證明可以改進圖像分類模型《Augmenting supervised neural networks with unsupervised objectives for large-scale image classification》。
DenseNets
考慮通過卷積網絡傳遞的單個圖像x0x_0x0?。 該網絡包括LLL層,每層實現非線性變換H(?)H(\cdot)H(?),其中lll為該層的索引。
H(?)H(\cdot)H(?)可以是諸如:
- 批量歸一化(BN)《S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.}》,
- 整流線性單位(ReLU)《X. Glorot, A. Bordes, and Y. Bengio. Deep sparse rectifier neural networks. In AISTATS, 2011. 3》,
- Pooling《Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient- based learning applied to document recognition. Proceed- ings ofthe IEEE, 86(11):2278–2324, 1998. 1》,
- 卷積(Conv)等操作的復合函數。
我們將第lll層的輸出表示為xlx_lxl?。
- ResNets. 傳統的卷積網絡將第lll層的輸出連接為第l+1l+1l+1層的輸入,從而產生以下層轉換xl=Hl(xl?1)x_l = H_l(x_{l-1})xl?=Hl?(xl?1?). ResNets 添加一個跳連接,繞過分類函數的非線性變換:(1)xl=Hl(xl?1)+xl?1x_l = H_l(x_{l-1})+x_{l-1}\tag{1}xl?=Hl?(xl?1?)+xl?1?(1)ResNets的一個優點是梯度可以直接通過分類函數從后面的層傳向前面的層。 但是分類函數和HlH_lHl?的輸出是通過求和來結合起來的,這可能會阻礙網絡中的信息流動。
密集連接(Dense connectivity)
為了進一步改善層之間的信息流動,我們提出了一種不同的連接模式:我們引入了從任何層到所有后續層的直接連接。 圖1給出了所得到的DenseNet的示意圖。 因此,第lll層接收所有在其前面層的特征圖x0,? ,xl?1x_0,\cdots, x_{l-1}x0?,?,xl?1?,作為輸入:
(2)xl=Hl([x0,x1,? ,xl?1])x_l=H_l([x_0,x_1,\cdots,x_{l-1}])\tag{2}xl?=Hl?([x0?,x1?,?,xl?1?])(2)
其中[x0,? ,xl?1][x_0,\cdots, x_{l-1}][x0?,?,xl?1?]是0,? ,l?10,\cdots,l-10,?,l?1層特征圖的合并。因其連接密集,故得名密集網絡。
復合函數(Composite Function)
在殘差網絡推動下,我們將Hl(?)H_l(\cdot)Hl?(?)定義為三個連續運算的復合函數:批量歸一化(BN),其次是整流線性單元(ReLU)和3×3 卷積(Conv)。
池化層
當特征圖的大小改變時,在式子(2)中使用的拼接操作是不可行的。然而,卷積網絡的一個重要部分是下采樣層,這些層改變了特征圖的大小。 為了便于在網絡中進行下采樣,他們將網絡劃分為多個密集連接的Dense Block; 參見圖2.我們將塊之間的層稱為過渡層,它們進行卷積和池化。 在我們的實驗中使用的過渡層包括批量標準化層和1×1卷積層,接著是2×2 avg pooling 層。
增長率(Growth rate)
如果每個函數HlH_lHl?產生k個特征圖,第lll層具有k0+k?(l?1)k_0+k*(l-1)k0?+k?(l?1)個輸入特征圖,其中k0是輸入層中的通道數。 DenseNet與現有網絡架構之間的一個重要區別是,DenseNet可以具有非常窄的層,例如,k = 12.作者將超參數k稱為網絡的增長率。我們在第4節中表明,相對較小的增長率足以在我們測試的數據集上獲得最先進的結果。對此的一種解釋是,每個層都可以訪問其塊中的所有前面的特征圖,因此可以訪問網絡的“集體知識”。可以將特征圖視為網絡的全局狀態。每個層都將自己的k個特征圖添加到此狀態。增長率規定每層有多少新信息對全局狀態有貢獻。一旦寫入全局狀態,就可以從(以后的層中?added by zzw)網絡中的任何地方訪問,并且與傳統網絡體系結構不同,不需要在層與層之間復制它。
瓶頸層(Bottleneck layers)
雖然每個層僅生成k個輸出特征圖,但它通常具有更多輸入。 在《K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 1,》、《C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. In CVPR, 2016.》中已經注意到,在每個3×3卷積之前可以將1×1卷積作為瓶頸層引入,以減少輸入特征圖的數量,從而提高計算效率。 我們發現這種設計對于DenseNet特別有效,我們稱我們的網絡有這樣一個瓶頸層,即BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本的HlH_lHl? ,作為DenseNet-B。 在我們的實驗中,我們讓每個1×1卷積產生4k特征圖。
壓縮(Compression)
為了進一步提高模型的緊湊性,我們可以減少過渡層的特征圖數量。 如果密集塊(dense block)包含 mmm 個特征圖,我們讓接下來的過渡層生成 ?θm?\lfloor \theta m\rfloor?θm? 輸出特征圖,其中 0<θ≤10< \theta \leq10<θ≤1 被稱為壓縮因子。 當 θ=1θ= 1θ=1 時,跨越過渡層的特征圖數量保持不變。 我們將DenseNet的 θ<1θ<1θ<1 稱為DenseNet-C,我們在實驗中設置 θ=0.5θ= 0.5θ=0.5 。 當使用 θ<1θ<1θ<1 的瓶頸和過渡層時,我們將我們的模型稱為DenseNet-BC。
實施細節(Implementation Details)
在除ImageNet之外的所有數據集中,我們實驗中使用的DenseNet有三個密集塊,每個塊具有相同數量的層。在進入第一個密集塊之前,對輸入圖像執行16(或 DenseNet-BC 增長率的兩倍)輸出通道的卷積。對于內核大小為3×3的卷積層,輸入的每個邊都按零填充一個像素,以保持特征圖大小固定。我們使用1×1卷積,然后使用2×2平均池化層作為兩個連續密集塊之間的過渡層。在最后一個密集塊的末尾,執行全局平均池化,然后附加softmax分類器。三個密集塊中的特征圖大小分別為 32×32 , 16×16 和 8×8 。我們嘗試了基本的DenseNet結構,配置為 {L = 40,k = 12} ,{L = 100,k = 12} 和 {L = 100,k = 24} 。對于DenseNet-BC,配置為 {L = 100,k = 12} ,{L = 250,k = 24} 和 {L = 190,k = 40} 的網絡。
總結
以上是生活随笔為你收集整理的深度学习笔记之DenseNets的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deeplearnng.AI第四部分第二
- 下一篇: lesson7 集合set