經典DNN論文簡讀:AlexNet、VGGNet、GooLeNet、ResNet

本文主要介紹四種經典的卷積神經網絡,分別是AlexNet、VGGNet、GooLeNet、ResNet,這四種網絡都是爲了圖像分類而設計,而且其分別獲得ILSVRC比賽分類項目2012年冠軍、2014年亞軍、2014年冠軍、2015年冠軍。這四個網絡算是卷積神經網絡最經典的四個網絡框架,其中包含着許多影響深遠的新技術和新結構,網絡的深度也逐步的加深,對本文主要簡單介紹着四種網絡框架,以及各自的創新之處。

1、AlexNet

原文:click here:ImageNet Classification with Deep Convolutional Neural Networks

這篇文章的網絡是在2012年的ImageNet競賽中取得冠軍的一個模型整理後發表的文章。作者是多倫多大學的Alex Krizhevsky等人。Alex Krizhevsky其實是深度學習三巨頭之一、2018年圖領獎得主Hinton。

AlexNet主要有8層,其中分爲5層卷積層以及3層全連接層,整個網絡有六億多個連接以及有六千萬個參數、六十五萬個神經元,網絡輸入爲224*224像素的Image,網絡框架如下:

該網絡之所以成爲經典是因爲其首次應用了許多新的技術,例如ReLu、Dropout、MaxPool等等:

  • 使用ReLu(Rectified Linear Units)作爲卷積層的激活函數

如下圖所示,實線爲ReLu激活函數,虛線爲tanh激活函數由圖可以看出,在梯度下降訓練時間方面,使用飽和非線性激活函數比非飽和非線性慢得多,採用ReLu作爲激活函數的DNN的訓練過程要快得多。雖然Relu激活函數在很早之前就已經被提出,但是直到AlexNet的出現纔將其發揚光大。同時該激活函數也解決了一直以來採用Sigmoid激活函數存在的梯度彌散的問題,這也爲後續深度網絡的不斷加深做了鋪墊。

  • LRN層的提出

局部歸一化,對局部神經元的活動創建競爭機制,使得其中響應較大的值變得相對更大,並且抑制響應較小的神經元,作者認爲這麼做可以提高模型的泛化能力,但是這種方法被後續(VGGNet)證明作用其實不大。

  • 使用overlapping Pool

在卷積神經網絡中採用可重疊的最大池化,此前的神經網絡中普遍使用平均池化。最大池化和平均池化的優點在於:其避免了平均池化的模糊化效果,池化層之間的重疊也進一步提升特徵的豐富性。

  • 爲避免過擬合,在訓練過程採用數據增強以及Dropout

所謂的數據增強是指,利用當前數據集,通過一些人爲的操作,增加訓練集的數量,比如說對圖像進行切割、旋轉、加入噪聲等。本文的數據增強主要採用兩種方式:生成圖像平移和水平反射;改變訓練圖像中RGB通道的強度。

Dropout操作是指在訓練的過程中隨機性的讓神經元失活,從而促使盡可能多的神經元學習到其更爲本質的特徵,從而避免模型的過擬合。

2、VGGNet

原文:click here:Very Deep Convolutional Networks for Large-Scale Image Recognition

VGGNet是由牛津大學計算機視覺組參加圖像分類競賽時提出的,VGG即Visual Geometry Group,VGGNet相對於AlexNet來說,其在深度上翻了一番,最深可達19層,所以叫做Very Deep,但是和ResNet比起來,這個深度簡直小兒科。

插播一條,我很認同GooLeNet論文中的一句話想要改善DNN的最直接的方法就是增加網絡的size,有兩種方式,一種是增加網絡的深度,比如增加網絡層數;另一種是增加網絡的寬度,如單層的神經元數目等;本文VGGNet就是以增加網絡深度來實現分類精度的提升。VGGNet框圖如下:

該網絡主要分爲5段卷積層+3個全連接層組成,之所以說是“5段”,可以通過上表也可以看出來,VGGNet的網絡結構類似於AlexNet(5卷積層+3全連接層),只不過VGGNet的卷積採用的是類似於封裝好的多次卷積操作作爲1個卷積段,共五段。爲什麼要採取這種操作?因爲作者認爲對於卷積操作來說,5*5卷積核的卷積層效果相當於2個3*3卷積核的卷積層,7*7卷積核的卷積層效果相當於3個3*3卷積核的卷積層,及通過小卷積核的多次卷積操作實現類似大卷積覈對更大區域特徵提取效果。

這麼替換有什麼好處?首先多個卷積層的串聯使得卷積網絡對特徵的學習能力更強;其次這也減少了參數的數量,3*3*3<7*7;當然,我覺得最重要的是其通過減小卷積核,增加捲積層數,使得非線性激活函數的使用次數增加(非線性激活函數使用次數增加了2-3倍),使得網絡的非線性增強,這也是增加1*1卷積層的主要原因。

論文在此基礎上設計了A~E 5中網絡框架,證明了:

  • LRN層的作用其實不大;
  • 越深的網絡效果相對來說越好;
  • 3*3的卷積核優於1*1,因爲其可學習更大空間的特徵。

3、GooLeNet

原文:click here:Going deeper with convolutions

如題目所說,該網絡的一大特點是“更深”,該網絡框架的網絡層數達到了22層,同時該網絡的另一大特點是雖然層數更多了但是參數量更少,只有大概五百萬的參數數量。

GooLeNet ,這個名字也可以看出其對於卷積網絡的開山之作LeNet的慢慢敬意,該網絡基本特點總結如下:

  • 模型更深,表達能力更強;
  • 去除全連接層而是利用全局平均池化,將最終維度變爲1*1;
  • 設計Inception Module,提高參數的利用率。

網絡框架如下圖:

Inception Module:

我的理解是,這麼做的好處在於,即增加了網絡的深度(類似於VGGNet卷積段操作),由增加了網絡的寬度。這一部分是借鑑了NIN的思想,總的來說就是Inception Module就類似於大網絡中的小網絡,其結構可以反覆的堆疊在一起形成大網絡,但他和NIN相比優點在於增加了分支。之前的網絡寬度增加主要是通過增加網絡層的通道數,這麼做一大缺點是計算量加大同時容易過擬合;此外一個通道對應一個卷積核,每一個卷積核又只能提取一種特徵,所以一個通道只能做一種特徵處理。

再看Inception Module,這麼 做好處在於其擁有更強的能力,允許在輸出通道之間進行信息組合,所以效果更明顯。看(b)網絡結構:四個分支都用到了1*1卷積進行低成本的跨通道特徵變化;第二和第三分支先進行1*1卷積,後進行3*3或者5*5卷積,相當於兩次特徵變換;第四個分支先進行3*3最大池化操作後進行1*1卷積操作。不同尺寸的卷積以及最大池化增加了網絡對不同尺度的適應性。最後四個分支通過聚合操作合併(在通道數維度上聚合)。

此外通過表格網絡框架,我們可以看出,越靠後,3*3和5*5這兩個大面積卷積核的佔比越來越大,這是因爲作者希望越靠後,其可以捕捉更高階的抽象特徵。

4、ResNet

原文:click here:Deep Residual Learning for Image Recognition

這篇論文就比較強了,首先對於網絡深度來說,其可以達到逆天的152層,其次ResNet網絡還獲得2016 CVPR best paper,獲得了ILSVRC2015的分類任務第一名,足見其性能的強悍。文章的卓越之處也就是目前很對網絡中都引入了的Skip connection.

都知道神經網絡的深度對於其性能的提升至關重要,但是爲什麼之前沒有人無腦增加網絡深度呢?因爲一味的增加網絡深度會出現很多的問題,網絡層數越多越深其訓練難度就越大,其次還面臨着梯度消散以及梯度爆炸等問題。ResNet 借鑑了發明LSTM網絡的Schmidhuber教授提出的Highway Network,網絡中的skip connection就像是一條信息的告訴公路,直接將前段的信息傳輸到後層,避免了由於網絡深度增加造成的信息損失。此外網絡深度的增加會出現Degradation問題,即網絡準確率會先上升達到飽和,再持續增加深度的話會導致精度不升反降。

基本原理如圖:

這麼設計的優點在於傳統的卷積層或者全連接層串聯,在信息傳遞時或多或少會存在着信息損耗,ResNet這種連接方式,將輸入信息繞道直接送到輸出,保證了信息的完整性。

基本公式(每個block):

H(x) = F(x) + x

對於輸入x 與block輸出H(x) 同維度的情況下,H(x) = F( x, {Wi}) + x

對於輸入x 與block輸出H(x) 不同維度的情況下,H(x) = F( x, {Wi}) + Ws * x ,  Ws爲線性映射,將x與H(x)同維度。

 

至此,這幾個經典的神經網絡算是有多瞭解了

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