网络越深越好?
深度神經(jīng)網(wǎng)絡(luò)的特點是啥?特點就是深,但是越深的網(wǎng)絡(luò)意味著計算復(fù)雜度的加大和更高的延遲,這產(chǎn)生了個疑問?網(wǎng)絡(luò)真的越深越好嗎?有么有"不深又好"的網(wǎng)絡(luò)呢?這篇論文<NON-DEEP NETWORKS>給了我們肯定的答案。這篇論文充分利用了并行子網(wǎng)絡(luò)有效的降低了網(wǎng)絡(luò)的深度并提升了模型的效果。
曾幾何時,越深的網(wǎng)絡(luò)就意味著越好的效果,從Inceptions->ResNets->DenseNet等等,直到現(xiàn)在都被"巨大的"transformer模型所替代。我們都發(fā)現(xiàn)越深的網(wǎng)絡(luò)往往帶來更好的效果但是也帶來了更高的計算復(fù)雜度,更大的內(nèi)存需求,和長達可能數(shù)天的訓(xùn)練時間。Non-Deep Networks因此就誕生了,僅僅用了12層就取得了最好的效果。神經(jīng)網(wǎng)絡(luò)縮放通常增加網(wǎng)絡(luò)深度,分辨率和寬度,但是該論文提出的ParNets選擇了并行子網(wǎng)絡(luò)結(jié)構(gòu)。
主要思想就是使用12層網(wǎng)絡(luò),并使用并行化,如下圖所示,我們會看到一些流(分支),每個分支帶有類似于VGG模型的blocks,這些blocks稱為ParNet blocks。多個3x3卷積分支可合并為單個3x3卷積分支,有效減少推理次數(shù)。
每個ParNet塊由3個主要組件組成,然后在下一個塊之前合并/融合這些組件:
- 1 * 1 convolution
- 3 * 3 convolution
- SSE(Skip-Squeeze-and-Excitation) layer also called the RepVGG-SSE block
SSE如上圖最右側(cè)所示。它所做的基本上是,增加感受域而不增加深度,而不是傳統(tǒng)的Squeeze-Excitation實現(xiàn)。為了在淺網(wǎng)絡(luò)規(guī)模下誘發(fā)比ReLU激活更多的非線性,作者選擇使用較新的SiLU。
下一步是down-sampling和fusion blocks。下采樣導(dǎo)致寬度增加,這有利于多尺度處理。這個block非常簡單,使用Squeeze-Excitation(SE)層和連接到1x1卷積分支的average pooling層。除了一個額外的連接層外,fusion與下采樣沒有什么不同。
該模型在ImageNet上使用SGD優(yōu)化器,batchsize為2048,訓(xùn)練120個epoch。如果batchsize大小不滿足memory,則學(xué)習(xí)率會隨batchsize大小成比例降低。我們可以看到ParNet比ResNets效果更好。
參考文獻:
1.https://arxiv.org/pdf/2110.07641.pdf
2.https://github.com/imankgoyal/NonDeepNetworks
網(wǎng)絡(luò)越"深"越"好"?總結(jié)
- 上一篇: Trapper: Transformer
- 下一篇: 自监督学习和对比学习