摘要:同樣以里的模塊為例,替換前后的卷積分支復雜度如下中使用與卷積級聯替代卷積中提出了卷積的,在確保感受野不變的前提下進一步簡化。
在梳理CNN經典模型的過程中,我理解到其實經典模型演進中的很多創(chuàng)新點都與改善模型計算復雜度緊密相關,因此今天就讓我們對卷積神經網絡的復雜度分析簡單總結一下下。
1.時間復雜度
1.2 卷積神經網絡整體的時間復雜度
示例:用 Numpy 手動簡單實現二維卷積
假設 Stride = 1, Padding = 0, img 和 kernel 都是 np.ndarray.
2. 空間復雜度
空間復雜度即模型的參數數量,體現為模型本身的體積。
可見,網絡的空間復雜度只與卷積核的尺寸 K 、通道數 C 、網絡的深度 D 相關。而與輸入數據的大小無關。
當我們需要裁剪模型時,由于卷積核的尺寸通常已經很小,而網絡的深度又與模型的能力緊密相關,不宜過多削減,因此模型裁剪通常最先下手的地方就是通道數。
3. 復雜度對模型的影響
時間復雜度決定了模型的訓練/預測時間。如果復雜度過高,則會導致模型訓練和預測耗費大量時間,既無法快速的驗證想法和改善模型,也無法做到快速的預測。
空間復雜度決定了模型的參數數量。由于維度詛咒的限制,模型的參數越多,訓練模型所需的數據量就越大,而現實生活中的數據集通常不會太大,這會導致模型的訓練更容易過擬合。
4. Inception 系列模型是如何優(yōu)化復雜度的
通過五個小例子說明模型的演進過程中是如何優(yōu)化復雜度的。
4.1 InceptionV1中的 1×1 卷積降維
InceptionV1 借鑒了 Network in Network 的思想,在一個 Inception Module 中構造了四個并行的不同尺寸的卷積/池化模塊(上圖左),有效的提升了網絡的寬度。但是這么做也造成了網絡的時間和空間復雜度的激增。對策就是添加 1 x 1 卷積(上圖右紅色模塊)將輸入通道數先降到一個較低的值,再進行真正的卷積。
以 InceptionV1 論文中的 (3b) 模塊為例,輸入尺寸為 28×28×256,1×1 卷積核128個,3×3 卷積核192個,5×5 卷積核96個,卷積核一律采用Same Padding確保輸出不改變尺寸。
可見,與真正的卷積層不同,全連接層的空間復雜度與輸入數據的尺寸密切相關。因此如果輸入圖像尺寸越大,模型的體積也就會越大,這顯然是不可接受的。例如早期的VGG系列模型,其 90% 的參數都耗費在全連接層上。
InceptionV1 中使用的全局較大池化 GAP 改善了這個問題。由于每個卷積核輸出的特征圖在經過全局較大池化后都會直接精煉成一個標量點,因此全連接層的復雜度不再與輸入圖像尺寸有關,運算量和參數數量都得以大規(guī)模削減。復雜度分析如下:
4.3 InceptionV2 中使用兩個 3×3 卷積級聯替代 5×5 卷積分支
根據上面提到的二維卷積輸入輸出尺寸關系公式,可知:對于同一個輸入尺寸,單個 5×5 卷積的輸出與兩個 3×3 卷積級聯輸出的尺寸完全一樣,即感受野相同。
同樣根據上面提到的復雜度分析公式,可知:這種替換能夠非常有效的降低時間和空間復雜度。我們可以把辛辛苦苦省出來的這些復雜度用來提升模型的深度和寬度,使得我們的模型能夠在復雜度不變的前提下,具有更大的容量,爽爽的。
同樣以 InceptionV1 里的 (3b) 模塊為例,替換前后的 5×5 卷積分支復雜度如下:
4.4 InceptionV3 中使用 N×1 與 1×N 卷積級聯替代 N×N 卷積
InceptionV3 中提出了卷積的 Factorization,在確保感受野不變的前提下進一步簡化。
復雜度的改善同理可得,不再贅述。
4.5 Xception 中使用 Depth-wise Separable Convolution
我們之前討論的都是標準卷積運算,每個卷積核都對輸入的所有通道進行卷積。
Xception 模型挑戰(zhàn)了這個思維定勢,它讓每個卷積核只負責輸入的某一個通道,這就是所謂的 Depth-wise Separable Convolution。
從輸入通道的視角看,標準卷積中每個輸入通道都會被所有卷積核蹂躪一遍,而 Xception 中每個輸入通道只會被對應的一個卷積核掃描,降低了模型的冗余度。
標準卷積與可分離卷積的時間復雜度對比:可以看到本質上是把連乘轉化成為相加。
5.總結
通過上面的推導和經典模型的案例分析,我們可以清楚的看到其實很多創(chuàng)新點都是圍繞模型復雜度的優(yōu)化展開的,其基本邏輯就是乘變加。模型的優(yōu)化換來了更少的運算次數和更少的參數數量,一方面促使我們能夠構建更輕更快的模型(例如MobileNet),一方面促使我們能夠構建更深更寬的網絡(例如Xception),提升模型的容量,打敗各種大怪獸,歐耶~
歡迎加入本站公開興趣群商業(yè)智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統(tǒng)等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/4681.html
早期成果卷積神經網絡是各種深度神經網絡中應用最廣泛的一種,在機器視覺的很多問題上都取得了當前較好的效果,另外它在自然語言處理,計算機圖形學等領域也有成功的應用。第一個真正意義上的卷積神經網絡由LeCun在1989年提出[1],后來進行了改進,它被用于手寫字符的識別,是當前各種深度卷積神經網絡的鼻祖。接下來我們介紹LeCun在早期提出的3種卷積網絡結構。?文獻[1]的網絡由卷積層和全連接層構成,網絡...
摘要:其實我們在做線性回歸也好,分類邏輯斯蒂回歸也好,本質上來講,就是把數據進行映射,要么映射到一個多個離散的標簽上,或者是連續(xù)的空間里面,一般簡單的數據而言,我們很好擬合,只要線性變化一下,然后學習出較好的就可以了,但是對于一些比較復雜的數據怎 其實我們在做線性回歸也好,分類(邏輯斯蒂回歸)也好,本質上來講,就是把數據進行映射,要么映射到一個多個離散的標簽上,或者是連續(xù)的空間里面,一般簡單的數據...
摘要:其實我們在做線性回歸也好,分類邏輯斯蒂回歸也好,本質上來講,就是把數據進行映射,要么映射到一個多個離散的標簽上,或者是連續(xù)的空間里面,一般簡單的數據而言,我們很好擬合,只要線性變化一下,然后學習出較好的就可以了,但是對于一些比較復雜的數據怎 其實我們在做線性回歸也好,分類(邏輯斯蒂回歸)也好,本質上來講,就是把數據進行映射,要么映射到一個多個離散的標簽上,或者是連續(xù)的空間里面,一般簡單的數據...
摘要:隨著復雜和高效的神經網絡架構的出現,卷積神經網絡的性能已經優(yōu)于傳統(tǒng)的數字圖像處理方法,如和。子網絡由多個卷積層組成,而子網絡由幾個完全連接層組成。結論總而言之,模型用信號分析的角度為我們剖析了卷積神經網絡。 隨著復雜和高效的神經網絡架構的出現,卷積神經網絡(CNN)的性能已經優(yōu)于傳統(tǒng)的數字圖像處理方法,如 SIFT 和 SURF。在計算機視覺領域,學者們開始將研究重點轉移到 CNN,并相信 ...
摘要:將軀干圖像灰度化后經插值運算和歸一化變換為大小的矩陣,作為結構的卷積神經網絡的輸入進行個體識別。卷積神經網絡構建為減少數據量并保證輸入圖像的細節(jié)信息,將奶牛軀干圖像灰度化后通過插值計算變化為的圖像,并除以歸一化后作為輸入數據。 最近看了一個有趣的人工智能應用,給大家分享一下~這是一個人工智能與農業(yè)的結合,在農業(yè)中我們經常需要給個體動物做標記,目的是對奶牛做身份識別,然后可以對動物做養(yǎng)殖和繁殖...
閱讀 1570·2021-11-23 09:51
閱讀 1106·2021-10-12 10:12
閱讀 2826·2021-09-22 16:06
閱讀 3650·2019-08-30 15:56
閱讀 3474·2019-08-30 15:53
閱讀 3119·2019-08-29 16:29
閱讀 2372·2019-08-29 15:27
閱讀 2031·2019-08-26 10:49