深度神经网络经典模型介绍
經典模型的特點介紹
VGG,GoogleNet,ResNet,Inception-ResNet-v2
1. VGG模型
VGG又分為VGG16和VGG19, 分別在AlexNet的基礎上將層數增加到16和19層, 它除了在識別方面很優秀之外, 對圖像的目標檢測也有很好的識別效果, 是目標檢測領域的較早期模型。
2. GoogLeNet模型
GoogLeNet除了層數加深到22層以外, 主要的創新在于它的Inception, 這是一種網中網(Network In Network) 的結構, 即原來的節點也是一個網絡。 用了Inception之后整個網絡結構的寬度和深度都可擴大, 能夠帶來2到3倍的性能提升。
3. ResNet模型
ResNet直接將深度拉到了152層, 其主要的創新在于殘差網絡, 其實這個網絡的提出本質上是要解決層次比較深時無法訓練的問題。 這種借鑒了Highway Network思想的網絡, 相當于旁邊專門開個通道使得輸入可以直達輸出, 而優化的目標由原來的擬合輸出H(x) 變成輸出和輸入的差H(x) -x, 其中H(x) 是某一層原始的期望映射輸出, x是輸入。
4. Inception-ResNet-v2模型
Inception-ResNet-v2: 是目前比較新的經典模型, 將深度和寬帶融合到一起, 在當下ILSVRC圖像分類基準測試中實現了最好的成績, 是將Inception v3與ResNet結合而成的。接下來主要對當前比較前沿的GoogLeNet、 ResNet、 Inception-ResNet-v2幾種網絡結構進行詳細介紹。
GoogLeNet模型介紹
前面已經介紹過GoogLeNet, 其中最核心的亮點就是它的Inception, GoogLeNet網絡最大的特點就是去除了最后的全連接層, 用全局平均池化層(即使用與圖片尺寸相同的過濾器來做平均池化) 來取代它。
這么做的原因是: 在以往的AlexNet和VGGNet網絡中, 全連接層幾乎占據90%的參數量, 占用了過多的運算量內存使用率, 而且還會引起過擬合。
GoogLeNet的做法是去除全連接層, 使得模型訓練更快并且減輕了過擬合。
之后GoogLeNet的Inception還在繼續發展, 目前已經有v2、 v3和v4版本, 主要針對解決深層網絡的以下3個問題產生的。
(1)·參數太多, 容易過擬合, 訓練數據集有限。
(2)·網絡越大計算復雜度越大, 難以應用。
(3)·網絡越深, 梯度越往后傳越容易消失(梯度彌散) , 難以優化模型。
Inception的核心思想是通過增加網絡深度和寬度的同時減少參數的方法來解決問題。Inception v1有22層深, 比AlexNet的8層或者VGGNet的19層更深。 但其計算量只有15億次浮點運算, 同時只有500萬的參數量, 僅為AlexNet參數量(6000萬) 的1/12, 卻有著更高的準確率。下面沿著Inception的進化來一步步了解Inception網絡。 Inception是在一些突破性的研究成果之上推出的, 所以有必要從Inception的前身理論開始介紹。 下面先介紹MLP卷積層。
MLP卷積層
MLP卷積層(Mlpconv) 源于2014年ICLR的一篇論文《Network In Network》 。 它改進了傳統的CNN網絡, 在效果等同的情況下, 參數只是原有的Alexnet網絡參數的1/10。卷積層要提升表達能力, 主要依靠增加輸出通道數, 每一個輸出通道對應一個濾波器,同一個濾波器共享參數只能提取一類特征, 因此一個輸出通道只能做一種特征處理。 所以在傳統的CNN中會使用盡量多的濾波器, 把原樣本中盡可能多的潛在的特征提取出來, 然后再通過池化和大量的線性變化在其中篩選出需要的特征。 這樣的代價就是參數太多, 運算太慢, 而且很容易引起過擬合。
MLP卷積層的思想是將CNN高維度特征轉成低維度特征, 將神經網絡的思想融合在具體的卷積操作當中。 直白的理解就是在網絡中再放一個網絡, 即, 使每個卷積的通道中包含一個微型的多層網絡, 用一個網絡來代替原來具體的卷積運算過程(卷積核的每個值與樣本對應的像素點相乘, 再將相乘后的所有結果加在一起生成新的像素點的過程) 。 其結構如圖1所示。圖1 MLP結構圖1中a為傳統的卷積結構, 圖1 b為MLP結構。 相比較而言, 利用多層MLP的微型網絡, 對每個局部感受野的神經元進行更加復雜的運算, 而以前的卷積層, 局部感受野的運算僅僅只是一個單層的神經網絡。 在MLP網絡中比較常見的是使用一個三層的全連接網絡結構, 這等效于普通卷積層后再連接1∶1的卷積和ReLU激活函數。
圖1
Inception 原始模型
Inception的原始模型是相對于MLP卷積層更為稀疏, 它采用了MLP卷積層的思想, 將中間的全連接層換成了多通道卷積層。 Inception與MLP卷積在網絡中的作用一樣, 把封裝好的Inception作為一個卷積單元, 堆積起來形成了原始的GoogLeNet網絡。Inception的結構是將1×1、 3×3、 5×5的卷積核對應的卷積操作和3×3的濾波器對應的池化操作堆疊在一起, 一方面增加了網絡的寬度, 另一方面增加了網絡對尺度的適應性, 如圖2所示。
圖2
Inception模型中包含了3種不同尺寸的卷積和一個最大池化, 增加了網絡對不同尺度的適應性, 這和Multi-Scale的思想類似。 早期計算機視覺的研究中, 受靈長類神經視覺系統的啟發, Serre使用不同尺寸的Gabor濾波器處理不同尺寸的圖片, Inception v1借鑒了這種思想。Inception v1的論文中指出, Inception模型可以讓網絡的深度和寬度高效率地擴充, 提升了準確率且不致于過擬合。形象的解釋就是Inception模型本身如同大網絡中的一個小網絡, 其結構可以反復堆疊在一起形成更大網絡。
Inception v1模型
Inception v1模型在原有的Inception模型基礎上做了一些改進, 原因是由于Inception的原始模型是將所有的卷積核都在上一層的所有輸出上來做, 那么5×5的卷積核所需的計算量就比較大, 造成了特征圖厚度很大。為了避免這一現象, Inception v1模型在3×3前、 5×5前、 最大池化層后分別加上了1×1的卷積核, 起到了降低特征圖厚度的作用(其中1×1卷積主要用來降維) , 網絡結構如圖3所示。圖3 Inception v1模型Inception v1模型中有以下4個分支:
第1個分支對輸入進行1×1的卷積, 這其實也是NIN中提出的一個重要結構。 1×1的卷積可以跨通道組織信息, 提高網絡的表達能力, 同時可以對輸出通道升維和降維。
第2個分支先使用了1×1卷積, 然后連接3×3卷積, 相當于進行了兩次特征變換。·
第3個分支與第2個分支類似, 先是1×1的卷積, 然后連接5×5卷積。
第4個分支則是3×3最大池化后直接使用1×1卷積。
可以發現4個分支都用到了1×1卷積, 有的分支只使用1×1卷積, 有的分支在使用了其他尺寸的卷積的同時會再使用1×1卷積, 這是因為1×1卷積的性價比很高, 增加一層特征變換和非線性轉化所需的計算量更小。Inception v1模型的4個分支在最后再通過一個聚合操作合并(使用tf.concat函數在輸出通道數的維度上聚合) 。圖3
Inception v2模型
Inception v2模型在Inception v1模型基礎上應用當時的主流技術, 在卷積之后加入了BN層, 使每一層的輸出都歸一化處理, 減少了內變協變量的移動問題; 同時還使用了梯了度截斷技術, 增加了訓練的穩定性。另外, Inception學習了VGG, 用2個3×3的conv替代inception模塊中的5×5, 這既降低了參數數量, 也提升了計算速度。 其結構如圖4所示
圖4
Inception v3模型
Inception v3模型沒有再加入其他的技術, 只是將原有的結構進行了調整, 其最重要的一個改進是分解, 將圖5中的卷積核變得更小。具體的計算方法是: 將7×7分解成兩個一維的卷積(1×7, 7×1) , 3×3的卷積操作也一樣(1×3, 3×1) 。 這種做法是基于線性代數的原理, 即一個[n, n]的矩陣, 可以分解成矩陣[n,
1]×矩陣[1, n], 得出的結構如圖5所示。
圖5
假設有256個特征輸入, 256個特征輸出, 如果Inception 層只能執行3×3的卷積, 即總共要完成256×256×3×3的卷積(將近589 000次乘積累加運算) 。
如果需要減少卷積運算的特征數量, 將其變為64(即256/4) 個。 則需要先進行256→64 1×1的卷積, 然后在所有Inception的分支上進行64次卷積, 接著再使用一個來自64→256的特征的1×1卷積, 運算的公式如下:
256×64 × 1×1 = 16 000s
64×64 × 3×3 = 36 000s
64×256 × 1×1 = 16 000s
相比于之前的60萬, 現在共有7萬的計算量, 幾乎原有的1/10。
在實際測試中, 這種結構在前幾層處理較大特征數據時的效果并不太好, 但在處理中間狀態生成的大小在12~20之間的特征數據時效果會非常明顯, 也可以大大提升運算速度。 另外, Inception v3還做了其他的變化, 將網絡的輸入尺寸由224×224變為了299×299, 并增加了卷積核為35×35/17×17/8×8的卷積模塊。
Inception v4模型
Inception v4是在Inception模塊基礎上, 結合殘差連接(Residual Connection) 技術的特點進行了結構的優化調整。 Inception-ResNet v2網絡與Inception v4網絡, 二者性能差別不大, 結構上的區別在于Inception v4中僅僅是在Inception v3基礎上做了更復雜的結構變化(從Inception v3的4個卷積模型變為6個卷積模塊等) , 但沒有使用殘差連接。
總結
以上是生活随笔為你收集整理的深度神经网络经典模型介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VR头显价格天差地别,究竟哪一款最适合你
- 下一篇: 深度神经网络的主要模型有哪几种类型