神經網絡的復雜度分析


本博客主要轉載於如下鏈接:
https://zhuanlan.zhihu.com/p/31575074 卷積神經網絡的復雜度分析
http://www.360doc.com/content/17/0719/14/10408243_672570496.shtml vgg16參數量與計算量

首先分析vgg:
網絡圖

vgg16詳細參數

將所有的memory加起來:大約就是24M,卷積的時候是float32格式,所以,要乘以4bytes.將所有的parameters:即weights加起來,大約是138M floats。

把參數量的最后的三個全連接層相加除以總參數量:(102760448+16777216+4096000)/138342976 = 0.8937
可以看出:vgg16的約90%的參數量都在最后的三個全連接層。

卷積神經網絡的復雜度分析--時間與空間

1.時間復雜度

即模型的運算次數,可用 [公式] 衡量,也就是浮點運算次數(FLoating-point OPerations)。
1.1 單個卷積層的時間復雜度

M:每個卷積核輸出特征圖(feature map)的邊長
K:每個卷積核Kernel的邊長
C_in每個卷積核的通道數,也即輸入通道數,也即上一層的輸出通道數。
C_out本卷積層具有的卷積核個數,也即輸出通道數。

2.空間復雜度

3.復雜度對模型的影響

時間復雜度決定了模型的訓練/預測時間。如果復雜度過高,則會導致模型訓練和預測耗費大量時間,既無法快速的驗證想法和改善模型,也無法做到快速的預測。空間復雜度決定了模型的參數數量。由於維度詛咒的限制,模型的參數越多,訓練模型所需的數據量就越大,而現實生活中的數據集通常不會太大,這會導致模型的訓練更容易過擬合。當我們需要裁剪模型時,由於卷積核的空間尺寸通常已經很小(3x3),而網絡的深度又與模型的表征能力緊密相關,不宜過多削減,因此模型裁剪通常最先下手的地方就是通道數。

4.Inception 系列模型是如何優化復雜度的

通過五個小例子說明模型的演進過程中是如何優化復雜度的。
4.1 InceptionV1中的1*1卷積降維同時優化時間復雜度和空間復雜度



4.2 InceptionV1中使用GAP(Global Average Pooling)代替Flatten。






5. 總結
通過上面的推導和經典模型的案例分析,我們可以清楚的看到其實很多創新點都是圍繞模型復雜度的優化展開的,其基本邏輯就是乘變加。模型的優化換來了更少的運算次數和更少的參數數量,一方面促使我們能夠構建更輕更快的模型(例如MobileNet),一方面促使我們能夠構建更深更寬的網絡(例如Xception),提升模型的容量,打敗各種大怪獸,歐耶~
參考論文
1.《Convolutional Neural Networks at Constrained Time Cost》Kaiming He, Jian Sun
https://arxiv.org/abs/1412.1710
2.《Going Deeper with Convolutions》
https://arxiv.org/abs/1409.4842
3.《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
https://arxiv.org/abs/1502.03167
4.《Rethinking the Inception Architecture for Computer Vision》
https://arxiv.org/abs/1512.00567
5.《Xception: Deep Learning with Depthwise Separable Convolutions》
https://arxiv.org/abs/1610.02357


免責聲明!

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



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