天天看點

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

2.1 為什麼要進行執行個體探究

神經網絡的基本構件:卷積層,池化層和全連接配接層。通過探究執行個體,可以對如何建構有效的卷積神經網絡更有感覺。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

2.2 經典網絡

Lenet 不用padding

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

這個神經網絡有一種模式至今經常使用,那就是:一個或多個卷積層後面跟着一個池化層。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

AlexNet:用了2塊GPU

作者:Alex Krizhevsky

原文是224,但在推導之後,用227更加合适。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

AlexNet比LeNet表現更為出色的原因是:使用了ReLU函數。

局部響應歸一化層用的不多,且後來證明起不到太大作用。現在并不用LRN來訓練網絡。

VGG-16

沒有那麼多超參數,但參數還是蠻多的,有1.38億。這是一種隻需要專注于建構卷積層的簡單網絡。

same:same padding,進行的是same卷積。

優點:簡化了神經網絡結構,這裡采用的都是大小為3*3,步長為1的filter。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究
4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

也就是

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

乘2表示進行兩次卷積。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

将最後得到的7*7*512的特征圖進行全連接配接操作,得到4096個單元。

VGG-16中的16含義:

指的是這個網絡中,has 16 layers that have to weight.

VGG-16網絡結構規整,a few conv layers + a pooling layer。池化層可以壓縮圖像的大小,卷積層的filter個數也存在着一定的規律。

VGG-16這篇文章揭示了随着網絡的加深,圖像的高度和寬度都在以一定規律不斷縮小。每次pooling後,剛好縮小一半。而chanel數量在不斷增加,而且是在每組卷積操作後,增加一倍。

也就是說,圖像縮小的比例和通道增加的比例是有規律的。

VGG-19:2015年,Very deep convolutional networks for large-scale image recognition.

2.3 殘差網絡

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

非常非常深的網絡是很難訓練的,因為存在梯度消失和梯度爆炸問題。

skip connections(跳遠連接配接),which allows you to take the activation from one layer.(可以從某一網絡層擷取激活),然後迅速回報給另外一層,甚至是神經網絡的更深層。

可以利用skip connections來建構能夠訓練深度網絡的ResNets。

ResNets是由殘差塊建構的。

什麼是殘差塊(Residual block)?

之前:

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

在殘差網絡中,從a[l]到a[l+2]不是這樣的。

通過拷貝的方式走捷徑,a[l]的資訊直接到達神經網絡的深層,不再沿着主路徑傳遞。加上了a[l],産生了一個殘差塊。這條捷徑是在進行ReLU非線性激活之前加上的。位置是線性激活之後,ReLU激活之前。

捷徑還有一個名字,skip connections,就是指a[l]跳過一層或者好幾層,進而将資訊傳遞到神經網絡的更深層。

使用殘差塊能夠訓練更深的神經網絡。是以建構一個ResNet網絡就是通過很多這樣的殘差塊,堆積在一起,形成一個深度神經網絡。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

Plain network:普通網絡

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

把它變成ResNet的方法是加上所有的跳遠連接配接,每兩層添加一個捷徑,構成一個殘差塊。

So,5個殘差塊連接配接在一起,構成了一個殘差網絡。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

殘差網絡有利于解決梯度消失和梯度爆炸問題,讓我們在訓練更深網絡的同時,又能保證良好的性能。

2.4 殘差網絡為什麼有用?

常識:通常來講,網絡在訓練集上表現好,才能在dev和test上表現好。是以,至少在訓練集上訓練好ResNet是第一步。

如何在建構更深層次的ResNet網絡的同時,還不降低它們在訓練集上的效率?

一般而言,一個網絡越深,它在訓練集上訓練網絡的效率會有所減弱。

ResNET學習恒等函數,盡管多了2層,也隻是把a[l]的值賦給a[l+2]。是以,給大型神經網絡增加兩層,不論是把殘差塊添加到神經網絡的中間還是末端位置,it does not hurt performance。

殘差網絡起作用的主要原因是:

這些殘差塊學習恒等函數非常容易,可确定網絡性能不會受到影響,很多時候甚至可以提升效率,至少不會降低網絡效率了。

如果那些隐藏層學到了有用的資訊,那麼性能還能提升了呢!

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

隻需要添加skip connections就可以轉換成為ResNet。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

上圖中注意一點:如果使用L2正則化或weight decay,将會壓縮w[l+2]

w

[

l

+

2

]

的值,如果對b用weight decay,亦可以達到同樣的效果。盡管在實際中,有時會對b應用weight decay,有時不會。w是真正要關注的關鍵項。

same convolution:make it easier to have this short circuit,并輸出兩個相同次元的向量。

如果輸入和輸出有不同的次元,如輸入x是128,a[l]

a

[

l

]

是256,再增加一個矩陣ws(256*128),其參數通過學習獲得。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

2.5 網絡中的網絡以及1*1卷積

1*1convolution = Network in Network

對于6*6*1的圖檔來說,1*1卷積效果不佳。

但是對于6*6*32的圖檔來說,效果就好多了。

乘以32個權重,然後應用ReLU非線性函數,輸出相應的結果。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究
4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究
4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

1*1卷積可以壓縮通道數量并且減少計算。1*1卷積隻是添加了非線性函數,當然,可以讓網絡學習更複雜的函數了

通過1*1卷積的簡單操作來壓縮或保持輸入層的channel數,甚至是增加信道數量。

對于池化層,隻是壓縮了高度和寬度。而1*1卷積層可以壓縮次元(通道數量)。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

2.6谷歌Inception網絡簡介

1*1卷積為神經網絡添加了一個非線性函數(relu),and allow you to decrease, or keep the same ,or increase the number of channels.

Inception network motivation

1*3 or 3*3 or 5*5 ……幫助人們做決定。

建構卷積層時,要決定filter的大小:1*3,3*3,5*5,或者要不要添加池化層,而inception網絡的可以做決定。雖然網絡架構複雜,但表現很好。

inception網絡或者inception層的作用就是代替人工來确定卷積層中的過濾器類型,或者确定是否需要建立卷積層或池化層。

用same convolution,保證次元不變。

如果不想要卷積層,可以使用池化層。為了比對所有的次元,對max pooling進行了padding操作,這是一種特殊的池化形式。

Inception子產品

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

基本思想是inception網絡不需要人為确定使用哪個過濾器size,或者是否需要池化,而是由網絡自行确定這些參數。缺點是有一定的計算成本。

以5*5大小的filter為例,計算計算成本。

對于輸出的每個數字來說,都要執行filter size次乘法運算。是以計算成本是每個輸出值所需的乘法運算次數*輸出值個數。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

接下來,用1*1 convolution來大大降低計算成本。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

2.7 Inception網絡

如果在建構神經網絡時不想決定filter尺寸,可以使用inception網絡,應用各種類型的過濾器,隻需要把輸出結果連接配接起來。

進行池化,通道數量或者深度不變。不過,可以用1*1convolution降低通道數。這樣就可以避免最後幾乎池化層占據了所有的通道。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

這就是一個inception子產品,将這些子產品組合到一起就構成了inception網絡。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

這裡有一些額外的max pooling層,來修改height 和width的次元。

論文中的圖是有一些小分支的。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

這些小分支所做的就是通過隐藏層來做出預測,實際上就是一個softmax輸出,輸出結果的标簽。fc+softmax。該方法確定了即使是隐藏單元和中間層,也參與了特征計算,他們也能預測圖檔的分類。在inception網絡中,起到一種調整的效果,并能防止網絡發生過拟合。

這個網絡實際上就是GoogLeNet。

2.8使用開源的實作方案

如何真正的去使用這些算法來建構自己的計算機視覺系統。

使用開放源碼github

開發應用的常見工作流程:

先選擇一個喜歡的架構,接着尋找一個開源實作,以此為基礎開始建構。

2.9遷移學習

小訓練集

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

當機前面層的參數,隻需要訓練和softmax層有關的參數。為了不訓練前面層的參數,可能會有trainableParamete=0這樣的參數。有時候也會有freeze = 1這樣的參數。不同的架構,都允許指定訓練特定層的權重。

當然,也可以把激活值存儲在disk中,然後再用disk中的值。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

更大的訓練集怎麼辦呢?

這種情況,應該當機更少的層,然後訓練後面的層。如果輸出單元不一,則需要建構自己的輸出單元。可以取後面幾層的權重用作初始化,然後從這裡開始梯度下降。或者直接去掉這幾層,換成自己的隐藏單元和自己的soft max輸出層。

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

規律:如果有越多的資料,需要當機的層數越少,能夠訓練的層數越多。

如果資料量特别大,則把整個網絡的權重當作初始化(代替了随機初始化)。然後用梯度下降法訓練整個網絡,更新網絡所有層的所有的權重。

2.10 資料擴充

資料增強:很少一起使用,因為太複雜了。資料增強

mirroring, random cropping, local warping(變形,扭曲),shearing(剪切),rotation.

色彩轉換(color shifting):

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

在實際中, RGB的值是根據某種機率分布來決定的。用這種color shifting的方法,可以對照片的顔色更改更具魯棒性。

PCA color augmentation:PCA顔色增強,如果圖檔呈現紫色(紅色+藍色,綠色很少),然後PCA顔色增強算法就會對紅色和藍色增減很多,綠色變化相對少些,使得總體的顔色保持一緻。

2.11計算機視覺現狀

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

multi-crop是一種将資料擴充應用到測試圖像的形式。

center crop 和四角crop + 鏡像

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

把這些加起來,就會有10種不同的圖像crop,要做的是,通過分類器來運作這10張圖,然後對結果進行平均。

如果有足夠的計算預算,為提高基準效果可以

4.卷積神經網絡-第二周 深度卷積網絡:執行個體探究

內建,采用不同的網絡,占用了更多的計算機記憶體,不能對權重做平均,而是對最後的結果值做平均。

multi-crop雖然隻有一個網絡,但是運作時間還是比較慢的哦。

注意:

繼續閱讀