1. 程式人生 > >經典卷積神經網路介紹

經典卷積神經網路介紹

AlexNet

這裡寫圖片描述
2012年,Hinton的學生Alex Krizhevsky提出了深度卷積神經網路模型AlexNet,獲得當年ILSVRC(Image Large Scale Visual Recognition Challenge)比賽分類專案的冠軍。

AlexNet主要使用到的新技術如下:

a) 成功使用ReLU作為CNN的啟用函式,並驗證了其在較深網路中的有效性,解決了Sigmod在網路較深時的梯度彌散問題。
b) 訓練時在最後幾個全連線層使用Dropout隨機忽略一部分神經元以避免模型過擬合,
c) 使用重疊的最大池化。AlexNet全部使用最大池化,避免平均池化的模糊效果;並提出讓步長比池化核的尺寸小,這樣池化層的輸出之間會有重疊覆蓋,特升了特徵的豐富性。
d) 提出LRN(Local Response Normalization,區域性響應歸一化)層,如今已很少使用。
e) 使用CUDA加速深度卷積神經網路的訓練。當初用的還是兩塊GRX 580 GPU,發展的好快呀。
f) 資料增強

,隨機從256*256的原始影象中擷取224*224大小的區域作為網路輸入。

整個AlexNet有5個卷積層和3個全連線層。

使用tensorflow實現AlexNet

VGGNet

這裡寫圖片描述

VGGNet結構非常簡潔,其特點如下:

a) 通過反覆堆疊3*3的小型卷積核和2*2的最大池化層構建。
b) VGGNet擁有5段卷積,每一段卷積網路都會將影象的邊長縮小一半,但將卷積通道數翻倍:64 —>128 —>256 —>512 —>512 。這樣影象的面積縮小到1/4,輸出通道數變為2倍,輸出tensor的總尺寸每次縮小一半。
c) 經常多個完全一樣的3*3

的卷積層堆疊在一起。這其實是非常有用的設計:3個3*3的卷積層串聯相當於1個7*7的卷積層,即一個畫素會跟周圍7*7的畫素產生關聯,可以說感受野大小是7*7。而且前者擁有比後者更少的引數量3×3×37×7=55%。更重要的是,3個3*3的卷積層擁有比1個7*7的卷積層更多的線性變換(前者可以使用三次ReLU啟用函式),使得CNN對特徵的學習能力更強。

d) 訓練時有個小技巧:先訓練級別A的簡單網路,再複用A網路的權重初始化後幾個複雜模型,這樣訓練收斂的速度更快。

使用tensorflow實現VGGNet

Google Inception Net

這裡寫圖片描述

具有如下特點:

a) 在控制了計算量和引數量的同時,獲得了非常好的分類效能。Inception V1有22層深,但其計算量只有15億次浮點運算,同時只有500萬的引數量,即為AlexNet引數量(6000萬)的1/12。為什麼要降低引數量?第一,引數越多模型越龐大,(同樣深度下)需要供模型學習的資料量就越大,而目前高質量的資料又很貴;第二,引數越多,耗費的計算資源也越大。Inception V1引數少但效果好的原因之一就在於其模型引數更深、表達能力更強。
b) 去除了最後的全連線層,使用1*1的卷積層來替代,這樣是模型訓練更快並減輕了過擬合。關於這方面可參見:為什麼使用卷積層替代CNN末尾的全連線層
c) 精心設計的Inception Module(Network In Network的思想)有選擇地保留不同層次的高階特徵,最大程度地豐富網路的表達能力。一般來說卷積層要提升表達能力,主要依靠增加輸出通道數(副作用是計算量大和過擬合)。因為每一個輸出通道對應一個濾波器,同一個濾波器共享引數只能提取一類特徵,因此一個輸出通道只能做一種特徵處理。Inception Module一般情況下有4個分支:第一個分支為1*1卷積(價效比很高,低成本(計算量小)的跨通道特徵變換,同時可以對輸出通道升維和降維),第二個分支為1個1*1卷積再接分解後(factorized)的1*nn*1卷積 (Factorization into small convolutions的思想),第三個分支和第二個類似但一般更深一些,第四個分支為最大池化(增加了網路對不同尺度的適應性,Multi-Scale的思想)。因此Inception Module通過比較簡單的特徵抽象(分支1)、比較複雜的特徵抽象(分支2和分支3)和一個簡化結構的池化層(分支4)有選擇地保留不同層次的高階特徵,這樣可以最大程度地豐富網路的表達能力。


d) Inception V2提出了著名的Batch Normalization方法。BN用於神經網路某層時,會對每一個mini-batch資料內部進行標準化(normalization)處理,是輸出規範化到N(0, 1)的正態分佈,減少了Internal Covariate shift。關於這方面可參見: 為什麼會出現Batch Normalization層
e) Inception V3引入了Factorization into small convolutions的思想,將一個較大的二維卷積拆成兩個較小的一維卷積。比如,將7*7卷積拆成1*77*1兩個卷積。這樣做節約了大量引數,加速運算並減輕了過擬合(比將7*7卷積拆成3個3*3卷積更節約引數);並且論文指出這種非對稱的卷積結構拆分比對稱地拆分為幾個相同的小卷積核效果更明顯,可以處理更多、更豐富的空間特徵,增加特徵多樣性。

使用tensorflow實現inception_v3

ResNet

這裡寫圖片描述

這是一種新的網路思想,說一下我自己的理解。

為什麼會出現Residual Learning

人們觀察到一個典型現象:當網路一直加深時,準確率會趨於峰值,然後再加深網路準確率反而會下降(在訓練集和測試集上均是如此,這顯然就不是過擬合了)。ResNet作者把這種現象稱為degradation problem。

然後大家開始想,前向傳播過程中資訊量越來越少是不錯,但也不至於逼近效果越來越差呀。聰明的小夥子(嚴肅來講應該是大神)He提出:把新增加的層變為恆等對映(identity mappings),這樣至少效果不會越來越差吧。既然網路能擬合函式H(x),是不是也能同樣擬合H(x)-x。說幹就幹,實驗是檢驗真理的唯一標準。於是得出結論“擬合H(x)-x比直接擬合H(x)更簡單”(當然理論上他也有一套自己的解釋:如果我們想要得到的最優結果是x,擬合前者顯然更簡單,權重直接為0即可;雖然現實中我們想要的並非x,但我們想要的更應該接近x而非接近0吧)。哈哈,深度殘差網路就這樣誕生了。

ResNet單元模組

這裡寫圖片描述
如上圖所示為兩種型別的block,block定義如下:

y=F(x,Wi)+x
對於block裡只有兩個卷積的情況,
F=W2σ(W1x)
上述公式裡兩者相加存在一個問題:
1. 各個維度相同,直接相加即可
2. 維度不同(在第一張圖網路的虛線處,feature map尺寸大小和通道數均發生變化),論文中說給x加個Ws的對映。我的理解是對x加個池化(stride=2)即可滿足尺寸變化,然後再利用1*1小卷積升維即可。

ResNet網路特點

a) 網路較瘦,控制了引數數量;
b) 存在明顯層級,特徵圖個數逐層遞進,保證輸出特徵表達能力;
c) 沒有使用Dropout,利用BN和全域性平均池化進行正則化,加快了訓練速度;
d) 層數較高時減少了3x3卷積個數,並用1x1卷積控制了3x3卷積的輸入輸出特徵圖數量,稱這種結構為“瓶頸”(bottleneck)。
參考:https://zhuanlan.zhihu.com/p/22447440

使用tensorflow實現Resnet_v2

參考:
1.以上相關模型的論文,這裡就不貼了
2.書籍《Tensorflow實戰》

相關推薦

經典神經網路介紹

AlexNet 2012年,Hinton的學生Alex Krizhevsky提出了深度卷積神經網路模型AlexNet,獲得當年ILSVRC(Image Large Scale Visual Recognition Challenge)比賽分類專案的冠軍。

機器學習筆記(十五):TensorFlow實戰七(經典神經網路:VGG)

1 - 引言 之前我們介紹了LeNet-5和AlexNet,在AlexNet發明之後,卷積神經網路的層數開始越來越複雜,VGG-16就是一個相對前面2個經典卷積神經網路模型層數明顯更多了。 VGGNet是牛津大學計算機視覺組(Visual Geometry Group)和Google

機器學習筆記(十四):TensorFlow實戰六(經典神經網路:AlexNet )

1 - 引言 2012年,Imagenet比賽冠軍的model——Alexnet [2](以第一作者alex命名)。這個網路算是一個具有突破性意義的模型 首先它證明了CNN在複雜模型下的有效性,然後GPU實現使得訓練在可接受的時間範圍內得到結果,讓之後的網路模型構建變得更加複雜,並且通過

機器學習筆記(十三):TensorFlow實戰五(經典神經網路: LeNet -5 )

1 - 引言 之前我們介紹了一下卷積神經網路的基本結構——卷積層和池化層。通過這兩個結構我們可以任意的構建各種各樣的卷積神經網路模型,不同結構的網路模型也有不同的效果。但是怎樣的神經網路模型具有比較好的效果呢? 下圖展示了CNN的發展歷程。 經過人們不斷的嘗試,誕生了許多有

機器學習筆記(十七):TensorFlow實戰九(經典神經網路:ResNet)

1 - 引言 我們可以看到CNN經典模型的發展從 LeNet -5、AlexNet、VGG、再到Inception,模型的層數和複雜程度都有著明顯的提高,有些網路層數更是達到100多層。但是當神經網路的層數過高時,這些神經網路會變得更加難以訓練。 一個特別大的麻煩就在於訓練的時候會產

機器學習筆記(十六):TensorFlow實戰八(經典神經網路:GoogLeNet)

1 - 引言 GoogLeNet, 在2014年ILSVRC挑戰賽獲得冠軍,將Top5 的錯誤率降低到6.67%. 一個22層的深度網路 論文地址:http://arxiv.org/pdf/1409.4842v1.pdf 題目為:Going deeper with convolu

TensorFlow實戰:Chapter-4(CNN-2-經典神經網路(AlexNet、VGGNet))

引言 AlexNet AlexNet 簡介 AlexNet的特點 AlexNet論文分析 引言

【基於tensorflow的學習】經典神經網路、模型的儲存和讀取

 CNN發展史: 1.經典卷積神經網路 以下僅列出關於CNN的深層次理解: 卷積層 tensorflow中卷積層的建立函式:_conv1 = tf.nn.conv2d(_input_r, tf.Variable(tf.random_normal([3, 3, 1, 6

DeepLearning | 經典神經網路VGG_Net

VGGNet是牛津大學計算機視覺組和Google DeepMind 公司的研究員一起研發的深度卷積神經網路。VGGNet探索了卷積神經網路的深度與效能之間的關係,通過反覆堆疊3x3的小型卷積核和2x2的最大池化層,VGGNet成功地構築了16~19層深的卷積神經

經典神經網路總結:Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet等

本文為總結今年來的卷積神經網路,主要按照時間線和方法類似程度的順序總結。 開篇先前說下概要,然後展開詳細介紹,主要是在densenet、resnext、senet這三個網路上介紹,前面的一系列網路大概講一下思想。 1、時間軸 時間

Cs231n課堂內容記錄-Lecture 5 神經網路介紹

Lecture 5 CNN 課堂筆記參見:https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit 不錯的總結筆記:https://blog.csdn.net/sugar_girl/article/details/79108709 1.卷積核

TensorFlow實戰之實現AlexNet經典神經網路

本文根據最近學習TensorFlow書籍網路文章的情況,特將一些學習心得做了總結,詳情如下.如有不當之處,請各位大拿多多指點,在此謝過。 一、AlexNet模型及其基本原理闡述 1、關於AlexNet             2012年,AlexKrizhevsky提出

TensorFlow實戰:經典神經網路(AlexNet、VGGNet)

下面表格是兩個網路的簡單比較: 特點 AlexNet VGGNet 論文貢獻 介紹完整CNN架構模型(近些年的許多CNN模型都是依據此模型變種來的)和多種訓練技巧 CNN模型復興的開山之作 使用GPU加速

Tensorflow實戰(五)經典神經網路之實現VGGNet

演算法原理:       VGGNet探索了卷積神經網路深度與其效能之間的關係,通過反覆的堆疊3*3的小型卷積核和2*2的最大池化層,VGGNet成功的構建了16-19層深的卷積神經網路。。        VGGNet擁有5段卷積,每一段內有2-3個卷積層,同時尾部會連線一

TensorFlow實戰:Chapter-6(CNN-4-經典神經網路(ResNet))

ResNet ResNet簡介 ResNet(Residual Neural Network)由微軟研究院的何凱明大神等4人提出,ResNet通過使用Residual Unit成功訓練152層神經網路,在ILSCRC2015年比賽中獲得3.75%的

Tensorflow 實現經典神經網路AlexNet

AlexNet將CNN的基本原理應用到很深很廣的網路中,AlexNet主要使用到的新技術點如下: (1)成功使用ReLU作為CNN的啟用函式,並驗證其效果在較深網路中超過了Sigmoid成功解決了Sigmoid在網路較深時的梯度彌散問題。 (2)訓練時使用Dropout隨

神經網路介紹(GCNs)

之前承諾要寫一個關於graph network的介紹,因為隨著deep learning的發展達到一個很高的水平,reasoning(推理)能力的具備變得異常迫切。而knowledge graph則是實現reasoning的重要途徑之一,如何從複雜的graph中

TensorFlow實戰:Chapter-5(CNN-3-經典神經網路(GoogleNet))

GoogleNet GoogleNet 簡介 本節講的是GoogleNet,這裡面的Google自然代表的就是科技界的老大哥Google公司。 Googe Inceptio

經典神經網路演算法(2):AlexNet

  上文中實現了LeNet-5卷積網路,不可否認這是一個十分經典的網路結構,但是迫於種種複雜的現實場景限制,只能在一些領域應用,所以在接下來的10年間,卷積網路的鋒芒一度被SVN演算法覆蓋,直到2012年AlexNet的提出。2012年Image

經典神經網路演算法(5):ResNet

  1 引言¶ 神經網路演算法有時候又被稱為深度學習,究其原因就是因為神經網路模型可以通過新增網路層數來擴充套件網路的深度以獲得更優越的效能。以CNN網路為例,卷積層數越多,模型越能夠提取到更高層次的特徵,資訊更加豐富。所以,我們不禁要