筆者所寫博文皆為自己浏覽學習之後的心得或筆記,想與讀者共同學習進步,歡迎指導交流。若内容有不當或侵權,請聯系筆者修改或删除。緻謝!
今天看到一篇來自公衆号講解深度卷積神經網絡結構的文章,獲益匪淺,結合之前的筆記,自己做一個總結便于查詢,筆者主要是提出各個網絡的創新點等,具體的概念博文中不作解釋,有更多更好詳細的講解。即本文旨在了解網絡結構的變化演進。
先貼連接配接:還有一篇講Inception家族:一文概覽Inception家族的「奮鬥史」
首先放一張圖:
深度卷積神經網絡結構演變
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSdGdVY4x2RhZDZtJGao1WZmZkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5EjM3QzMzUTM3AjMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
上圖表示的即為目前(…不清楚圖源及作圖時間,至少是在17年之後)流行的網絡結構的綜覽圖,其中橫坐标表示一次前向計算需要的計算量,縱坐标表示準确率(一個共同名額),圓的大小表示所含參數的多少。是以根據圖像可以看出,越往左上的圓越小的模型應當效果更好,但根據任務選擇模型時仍應該多加考慮。
一、LeNet 1989
個人認為的深度卷積神經網絡的始祖(雖然圖上沒有),1989年由LeCun大牛提出,被用于手寫字元(數字)的識别,确立了卷積神經網絡的基礎結構,包括卷積層,池化層,激活函數(tanh函數),全連接配接層,損失函數采用了均方誤差即歐式距離的均值,權重由随機數初始化,訓練梯度采用了反向傳播算法。
提出了權值共享和特征圖像的概念,權值共享即一個卷積核對上層圖像(特征圖)進行卷積的權值參數不變,即以同樣的參數處理整張圖像;特征圖像…字面意思,使用卷積核進行卷積後得到的圖像稱為特征圖像。
注:LeNet是指由LeCun提出的在當時新穎的卷積神經網絡的總稱,并不隻有一個,主要就是應用在數字識别,第一個廣為流傳的網絡結構為LeNet-5
結構圖:
二、AlexNet 2012
第一次使用ReLU激活函數,提出了Dropout,提出資料增強擴大訓練集,提出了局部相應歸一化LRN(現在基本不用),提出了重疊池化。
結構圖:
三、ZFNet 2013
提出通過反卷積方法進行卷積網絡可視化的方法,可以了解到圖像“學”到了什麼。以此改進,在AlexNet基礎上取得了更好的成果。
四、VGGNet 2014
提出使用很小的卷積核來代替大的卷積核,大量使用3*3卷積,這樣使得每層參數更少,在相同複雜度下能做到更深的網絡;去掉了LRN,實驗發現其作用不明顯。
結構圖:
從左至右每一列代表着深度增加的不同的模型,從上至下代表模型的深度,其中conv<濾波器大小>-<通道數>
五、GoogleNet 2014
即Inception-V1網絡,緻力于解決增大深度或寬度帶來的計算問題,和參數過多帶來的過拟合問題。提出了Inception子產品;使用了1*1卷積核(作用:升維降維);嘗試去除參數海量的全連接配接層,由平均池化代替。後兩者借鑒了NIN(Network In Network的思想,感興趣可以一觀)
Inception子產品圖:
六、ResNet 2015
目的是為了解決退化問題(:随着網絡層數的增多,與過拟合不同,在訓練集和測試集上的準确率達到一定值都下降,梯度問題;另外一種解釋是可以殘差子產品去除目前特征備援的雜質,使得特征細化),提出了殘差結構如下圖。後來的分析表明殘差網絡并不是一個單一的超深網絡,而是多個網絡指數級的隐式內建,由此引入了多樣性的概念。
殘差結構:
接下來是一些基于GoogleNet-Inception-Like網絡改進系列,包括ResNet
七、Inception - V2 2015
1.基于GoogleNet進行了改進,加入了BN層
2.局部用 3X3 卷積代替了 5X5 卷積(VGG的思想)
八、Inception - V3 2015
1.最重要的改進:卷積核的分解
對卷積進行非對稱分解:7 X 7 → 1 X 7 + 7 X 1; 3 X 3 → 1 X 3 + 3 X 1
作用:既減少了參數,又增加了深度,加深了網絡的非線性
2.對優化算法的改進
①改進了參數優化方法,即學習率的問題,AdaGrad → RMSProp
② 采用了Label Smoothing 政策,是一種正則化的方法(降低了過拟合程度)
子產品結構圖:
九、Inception - V4 2016
相較V3,變得更深
十、Xception
是針對Inception - V3的另一種改進,主要采用Depthwise Separable Convolition替換掉V3中的卷積操作:具體為在卷積操作時,将學習空間相關性核學習通道間相關性分離開。這樣也會在基本不增加複雜度的前提下提高效果。
網絡結構:
十一、Inception - Resnet V1/V2 2016
基于Inception-V3 和 Inception-V4及殘差網絡的思想的融合,提出了兩個模型
Inception - Resnet V2的網絡結構:
十二、NASNet 通過強化學習自動産生結構
略
十三、WRN (Wide Residual Network)2016
提出的原因:認為殘差網絡較深時,并不能保證能有效更新每個殘差子產品,基于此想法,作者想要将細深的網絡變為寬淺(…還沒仔細了解)
WRN子產品:
十四、ResNext 2016
提出原因:對于網絡的改進,傳統的方法主要時增加深度或者增加寬度(通道數),但都會大大增加設計難度和複雜度
方法:同時基于思想,以及Inception的split-transform-merge思想,提出了該擴充性較強的網絡。提到了一個名詞cardinality(基數),個人了解即一個子產品中同時并列多少個子網絡(增加分支)。
結論:Cardinality越大越好,且在同樣的複雜度下,比增加深度和寬度效果要好
十五、DenseNet
對小資料結果較好,特征圖會傳到網絡後面的所有層。
結構圖:
十六、MobileNet及ShuffleNet
用于嵌入式裝置,犧牲較少的精度換取減少大量的計算。