深度学习笔记之DenseNets
文章目錄
- 簡(jiǎn)介
- DenseNets
- 密集連接(Dense connectivity)
- 復(fù)合函數(shù)(Composite Function)
- 池化層
- 增長(zhǎng)率(Growth rate)
- 瓶頸層(Bottleneck layers)
- 壓縮(Compression)
- 實(shí)施細(xì)節(jié)(Implementation Details)
簡(jiǎn)介
在Densely Connected Convolutional Networks這篇文章中作者提出的DenseNet架構(gòu)明確區(qū)分了添加到網(wǎng)絡(luò)的信息和保留的信息。 DenseNet層非常窄(例如,每層12個(gè)濾波器),只為網(wǎng)絡(luò)的“集體知識(shí)”添加一小組特征圖,并保持其余的特征圖保持不變 - 最終的分類器根據(jù) 網(wǎng)絡(luò)中的所有要素圖。 除了更好的參數(shù)效率之外,DenseNets的一大優(yōu)勢(shì)是它們改善了整個(gè)網(wǎng)絡(luò)中的信息流和梯度,這使得它們易于訓(xùn)練。 每層都可以直接訪問損失函數(shù)和原始輸入信號(hào)的梯度,從而導(dǎo)致明顯的深層監(jiān)督[20]。 這有助于培訓(xùn)更深層次的網(wǎng)絡(luò)架構(gòu)。 此外,他們還觀察到密集連接具有正則化效應(yīng),這減少了訓(xùn)練集大小較小的任務(wù)的過度擬合。
他們?cè)谒膫€(gè)競(jìng)爭(zhēng)激烈的基準(zhǔn)數(shù)據(jù)集(CIFAR-10,CIFAR-100,SVHN和ImageNet)上評(píng)估DenseNets。 他們的模型比具有可比準(zhǔn)確度的網(wǎng)絡(luò)需要更少的參數(shù)。 此外,他們?cè)诖蠖鄶?shù)基準(zhǔn)測(cè)試任務(wù)中的表現(xiàn)明顯優(yōu)于當(dāng)時(shí)最先進(jìn)的結(jié)果。
DenseNets不是從極深或?qū)挼募軜?gòu)中獲取代表性功能,而是通過功能重用利用網(wǎng)絡(luò)的潛力,獲得易于訓(xùn)練且參數(shù)效率高的模型。 由不同層學(xué)習(xí)的連接特征圖增加了后續(xù)層的輸入的變化并提高了效率。 這構(gòu)成了DenseNets和ResNets之間的主要區(qū)別。與Inception網(wǎng)絡(luò)相比,它還可以連接來(lái)自不同層的特征,DenseNets更簡(jiǎn)單,更高效。
還有其他值得注意的新型網(wǎng)絡(luò)架構(gòu),它們也有不錯(cuò)的結(jié)果。 Network in Network(NIN)結(jié)構(gòu)包括微多層感知器納入卷積層濾波器,以提取更復(fù)雜的特征。 在深度監(jiān)督網(wǎng)絡(luò)(DSN)中,內(nèi)部層由輔助分類器直接監(jiān)督,這可以增強(qiáng)早期層獲得的梯度。 Ladder Networks在自動(dòng)編碼器中引入了橫向連接,在半監(jiān)督學(xué)習(xí)任務(wù)中有不俗的精度。 在《Deeply-fused nets》中,提出了深度融合網(wǎng)絡(luò)(DFN),通過組合不同基礎(chǔ)網(wǎng)絡(luò)的中間層來(lái)改善信息流。 增強(qiáng)具有最小化重建損失pathways的網(wǎng)絡(luò)也被證明可以改進(jìn)圖像分類模型《Augmenting supervised neural networks with unsupervised objectives for large-scale image classification》。
DenseNets
考慮通過卷積網(wǎng)絡(luò)傳遞的單個(gè)圖像x0x_0x0?。 該網(wǎng)絡(luò)包括LLL層,每層實(shí)現(xiàn)非線性變換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)等操作的復(fù)合函數(shù)。
我們將第lll層的輸出表示為xlx_lxl?。
- ResNets. 傳統(tǒng)的卷積網(wǎng)絡(luò)將第lll層的輸出連接為第l+1l+1l+1層的輸入,從而產(chǎn)生以下層轉(zhuǎn)換xl=Hl(xl?1)x_l = H_l(x_{l-1})xl?=Hl?(xl?1?). ResNets 添加一個(gè)跳連接,繞過分類函數(shù)的非線性變換:(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的一個(gè)優(yōu)點(diǎn)是梯度可以直接通過分類函數(shù)從后面的層傳向前面的層。 但是分類函數(shù)和HlH_lHl?的輸出是通過求和來(lái)結(jié)合起來(lái)的,這可能會(huì)阻礙網(wǎng)絡(luò)中的信息流動(dòng)。
密集連接(Dense connectivity)
為了進(jìn)一步改善層之間的信息流動(dòng),我們提出了一種不同的連接模式:我們引入了從任何層到所有后續(xù)層的直接連接。 圖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層特征圖的合并。因其連接密集,故得名密集網(wǎng)絡(luò)。
復(fù)合函數(shù)(Composite Function)
在殘差網(wǎng)絡(luò)推動(dòng)下,我們將Hl(?)H_l(\cdot)Hl?(?)定義為三個(gè)連續(xù)運(yùn)算的復(fù)合函數(shù):批量歸一化(BN),其次是整流線性單元(ReLU)和3×3 卷積(Conv)。
池化層
當(dāng)特征圖的大小改變時(shí),在式子(2)中使用的拼接操作是不可行的。然而,卷積網(wǎng)絡(luò)的一個(gè)重要部分是下采樣層,這些層改變了特征圖的大小。 為了便于在網(wǎng)絡(luò)中進(jìn)行下采樣,他們將網(wǎng)絡(luò)劃分為多個(gè)密集連接的Dense Block; 參見圖2.我們將塊之間的層稱為過渡層,它們進(jìn)行卷積和池化。 在我們的實(shí)驗(yàn)中使用的過渡層包括批量標(biāo)準(zhǔn)化層和1×1卷積層,接著是2×2 avg pooling 層。
增長(zhǎng)率(Growth rate)
如果每個(gè)函數(shù)HlH_lHl?產(chǎn)生k個(gè)特征圖,第lll層具有k0+k?(l?1)k_0+k*(l-1)k0?+k?(l?1)個(gè)輸入特征圖,其中k0是輸入層中的通道數(shù)。 DenseNet與現(xiàn)有網(wǎng)絡(luò)架構(gòu)之間的一個(gè)重要區(qū)別是,DenseNet可以具有非常窄的層,例如,k = 12.作者將超參數(shù)k稱為網(wǎng)絡(luò)的增長(zhǎng)率。我們?cè)诘?節(jié)中表明,相對(duì)較小的增長(zhǎng)率足以在我們測(cè)試的數(shù)據(jù)集上獲得最先進(jìn)的結(jié)果。對(duì)此的一種解釋是,每個(gè)層都可以訪問其塊中的所有前面的特征圖,因此可以訪問網(wǎng)絡(luò)的“集體知識(shí)”。可以將特征圖視為網(wǎng)絡(luò)的全局狀態(tài)。每個(gè)層都將自己的k個(gè)特征圖添加到此狀態(tài)。增長(zhǎng)率規(guī)定每層有多少新信息對(duì)全局狀態(tài)有貢獻(xiàn)。一旦寫入全局狀態(tài),就可以從(以后的層中?added by zzw)網(wǎng)絡(luò)中的任何地方訪問,并且與傳統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)不同,不需要在層與層之間復(fù)制它。
瓶頸層(Bottleneck layers)
雖然每個(gè)層僅生成k個(gè)輸出特征圖,但它通常具有更多輸入。 在《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.》中已經(jīng)注意到,在每個(gè)3×3卷積之前可以將1×1卷積作為瓶頸層引入,以減少輸入特征圖的數(shù)量,從而提高計(jì)算效率。 我們發(fā)現(xiàn)這種設(shè)計(jì)對(duì)于DenseNet特別有效,我們稱我們的網(wǎng)絡(luò)有這樣一個(gè)瓶頸層,即BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本的HlH_lHl? ,作為DenseNet-B。 在我們的實(shí)驗(yàn)中,我們讓每個(gè)1×1卷積產(chǎn)生4k特征圖。
壓縮(Compression)
為了進(jìn)一步提高模型的緊湊性,我們可以減少過渡層的特征圖數(shù)量。 如果密集塊(dense block)包含 mmm 個(gè)特征圖,我們讓接下來(lái)的過渡層生成 ?θm?\lfloor \theta m\rfloor?θm? 輸出特征圖,其中 0<θ≤10< \theta \leq10<θ≤1 被稱為壓縮因子。 當(dāng) θ=1θ= 1θ=1 時(shí),跨越過渡層的特征圖數(shù)量保持不變。 我們將DenseNet的 θ<1θ<1θ<1 稱為DenseNet-C,我們?cè)趯?shí)驗(yàn)中設(shè)置 θ=0.5θ= 0.5θ=0.5 。 當(dāng)使用 θ<1θ<1θ<1 的瓶頸和過渡層時(shí),我們將我們的模型稱為DenseNet-BC。
實(shí)施細(xì)節(jié)(Implementation Details)
在除ImageNet之外的所有數(shù)據(jù)集中,我們實(shí)驗(yàn)中使用的DenseNet有三個(gè)密集塊,每個(gè)塊具有相同數(shù)量的層。在進(jìn)入第一個(gè)密集塊之前,對(duì)輸入圖像執(zhí)行16(或 DenseNet-BC 增長(zhǎng)率的兩倍)輸出通道的卷積。對(duì)于內(nèi)核大小為3×3的卷積層,輸入的每個(gè)邊都按零填充一個(gè)像素,以保持特征圖大小固定。我們使用1×1卷積,然后使用2×2平均池化層作為兩個(gè)連續(xù)密集塊之間的過渡層。在最后一個(gè)密集塊的末尾,執(zhí)行全局平均池化,然后附加softmax分類器。三個(gè)密集塊中的特征圖大小分別為 32×32 , 16×16 和 8×8 。我們嘗試了基本的DenseNet結(jié)構(gòu),配置為 {L = 40,k = 12} ,{L = 100,k = 12} 和 {L = 100,k = 24} 。對(duì)于DenseNet-BC,配置為 {L = 100,k = 12} ,{L = 250,k = 24} 和 {L = 190,k = 40} 的網(wǎng)絡(luò)。
總結(jié)
以上是生活随笔為你收集整理的深度学习笔记之DenseNets的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deeplearnng.AI第四部分第二
- 下一篇: 深度学习stride_深度学习圣经“花书