【feature extractor 系列文章3】VGGNet核心貢獻解讀

問題的提出:如何增加捲積神經網絡的深度

【feature extractor 系列文章2】裏介紹了ZFNet,該論文裏面試圖分析卷積層的作用,通過轉置卷積對卷積層進行了可視化,使我們知道了隨着層的增加,得到的特徵越來越複雜,深層的卷積操作會將淺層的特徵進行重組得到更接近object級別的特徵。

這裏就提出了一個問題:卷積層的深度應該多少合適呢?而且層數太少肯定不太好。
於是有了一個關鍵的問題:怎樣提高卷積網絡的深度。這與後面很多論文相關,也是閱讀論文的關鍵。
本博客的主角——VGGNet——就是針對這個問題的。

問題的本質:爲什麼在這之前增加深度不可行

在介紹這篇論文關鍵點之前,我們需要明白爲什麼增加深度在這之前不太可行:

1. 增加深度,在卷積設置不變化的前提下參數則會增加很多。
2. 增加深度,可能會導致梯度消失。

VGGNet主要針對第二個問題,至於第二個問題我們後面會介紹到。我們說到第一個問題,顯然VGGNet就是要改變卷積層的設置來減少參數。畢竟參數過多會有兩個直接性的問題——過擬合的傾向和訓練時間加長(參數變多導致計算量加大)

VGGNet

增加深度這個問題在VGGNet問題中就變成了儘量減少參數,進一步轉變成了如何設置卷積層

在介紹之前,我們必須要介紹一下卷積層的基本概念:
1. 卷積核大小和卷積核數量的計算
2. 感受野的計算
3. 深度

我們倒着來說,深度好理解,就是每一層卷積層就是一層。我這裏從兩方面來細說一下每一層卷積意味着什麼。第一也就是感受野增加了,卷積核只要大於1就是有空間特徵的,下一層的特徵圖的每一個元素對應到原始圖像看的空間就大了。這是有好處的,就好比盲人摸象,只摸到耳朵不夠好,只摸到腿也不好,要是每個地方都摸得到,這樣的全局視野是重要的。至於感受野怎麼計算,可以完全參照感受野的計算

第二,卷積計算也綜合了每一個特徵圖或者原始圖像中每個通道之間的關係。我們知道每一個通道是可以提取一個特徵,通道之間的合併就意味着前一層特徵之間的組合。這就是新特徵的產生,可以得到更高級的特徵,更復雜的。就如同積木,單個積木很簡單的形狀,但是即使簡單的積木的多次組合就可以得到很漂亮的物體。

介紹了深度和感受野的計算,我們再來看看卷積核大小和數量。基本或經典卷積核主要有三個參數:大小size,步長stride,填充padding。卷積核本身可以認爲是四維的,Cin,H,W,CoutC_{in}, H, W, C_{out} 依此分別爲輸入通道數,卷積核高度,卷積核寬度,輸出特徵圖的通道數。或者也可以理解成CoutC_{out}個三維Cin,H,WC_{in}, H, W。 卷積核的參數就是:CinHWCoutC_{in}*H*W*C_{out}.

可以知道,卷積核的四個參數裏面,寬度和高度是更容易控制的,它與各層之間沒有關係,而兩外兩個則對前後層也有要求。大部分的寬度和高度都是相同的,這裏就可以變成一個參數了。而這個參數在之前的文章裏都比較高,AlexNet裏面是11,7;ZFNet裏面也都是7(雖然他們發現了減小這個參數的好處)。

我們再重新來定義問題本身:減少參數的含義。我們不希望降低感受野,但是可以通過設置卷積核的空間大小來增加深度。也就是說:降低卷積核空間大小(主要是變成3*3),而通過另一種方法而不降低感受野。應該知道減少卷積核空間大小直接減少了該層的感受野大小。

因此可以理解成,VGGNet並不是主觀上增加深度,而是爲了維持感受野大小。在降低卷積核大小的情況,我們可以通過增加深度來維持感受野大小

主要利用的idea就是:兩個333*3的卷積核疊加得到的感受野和一個777*7卷積核得到的感受野相同,但是參數量減少,深度也增加一倍

寫道這裏VGGNet的主要貢獻就基本上說清楚了。
重新總結一下:VGG實際上沒有解決網絡太深的問題,而是解決了卷積核設定的問題,也就是參數量和感受野之間的問題。而深度的問題還需要我們進一步去了解。

再就是1*1卷積的作用,這個特殊卷積層不改變感受野,但是可以用來減少和增加通道數,還可以增加特徵之間的非線性(因爲一般來說,卷積層之後都會有激活層)。具體細節可以看系統分析1*1卷積的作用

後續論文列表:

1 AlexNet, ZFNet - ImageNet Classification with Deep Convolutional Neural Networks - Visualizing and Understanding Convolutional Networks
2 GoogleNet (Inception, Inception v2-v3) - Going Deeper with Convolutions - Rethinking the Inception Architecture for Computer Vision
3 VGGNet Very deep convolutional networks for large-scale image recognition
4 ResNet Deep Residual Learning for Image Recognition
5 Inception v4, Inception-ResNet Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
6 PolyNet PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
7 ResNeXt Aggregated Residual Transformations for Deep Neural Networks
8 Residual Attention Net Residual Attention Network for Image Classification
9 DenseNet Densely Connected Convolutional Networks
10 FractalNet FractalNet: Ultra-deep neural networks without residuals
11 DualPath Net Dual Path Networks
12 SENet Squeeze-and-Excitation Networks
13 FPNet Feature Pyramid Networks for Object Detection
14 NASNet, PNASNet - Learning Transferable Architectures for Scalable Image Recognition - Progressive Neural Architecture Search
15 Dilated Convolutions Dilated Residual Networks
16 Deformable Convolutions Deformable Convolutional Networks
17 DiCENet DiCENet: Dimension-wise Convolutions for Efficient Networks
18 XceptionNet
19 ShuffleNet
20 MobileNets

爲何要點贊?

如果本文解決了你的困惑,不妨點個贊鼓勵一下。
不管你信不信,也不管你同不同意,實際上,你的每一次點贊都標誌着你自身的進步。而打賞乃是點讚的高級形式
曾經有無數個點讚的機會,但是我都沒有好好珍惜,假如時光可以倒流,我一定爲他們也爲自己點贊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章