深度學習入門教程:卷積神經網絡的直觀解釋

本教程由深度學習中文社區(dl.tustcs.com)持續發佈與更新, 本系列其餘教程地址見文章末尾.

卷積神經網絡的歷史

1990年Yann Lecun開發出第一個卷積神經網絡LeNet5,是第7層卷積神經網絡,最早用於卷積手寫字體的識別,因此,他被稱為CNN之父。之後,經過1990年~2012年的萌芽期,在2012年開始,相繼提出一些具有代表性的網絡,

AlexNet(2012)

ZFNet(2013)

GoogleNet(2014)

VGGNet(2014)

ResNets(2015)

DenseNet(2016)

這次詳細介紹一下LeNet5的網絡結構,在粗略介紹一下其他的網絡結構。

這些網絡結構的提出都是ImageNet歷屆的冠軍網絡結構,具有一定的代表性。ImageNet是一個計算機視覺系統識別項目,是世界上最大的圖像識別數據庫,它擁有1500萬張帶標籤的圖像,這些圖像分別屬於22000個類別,圖片都是從網上收集的(如貓,狗,其他動物等),使用工具來人工貼上標籤,在這個數據上,每年都會有個比賽叫做大型視覺識別挑戰賽(ILSVRC),其中使用的是120萬張圖像,將其中的圖像分成1000個類別。

卷積神經網絡的直觀解釋

一張圖片對於計算機來說,它看到就是一個矩陣,其值從0~255之間,0表示黑色,255表示白色。

深度學習入門教程:卷積神經網絡的直觀解釋

整個神經網絡一共有4個主要的操作,分別是1 convolution, 2 Non linearity (Relu),3 Pooling or sub Sampling , 4 Classification (Fully connected layer)。

第一步 Convolution

將輸入的圖像類比為如下的綠色的5*5的矩陣,實際上是0~255之間的值,為了方便我們其中的像素值用0 ,1 表示,黃色表示卷積核,

深度學習入門教程:卷積神經網絡的直觀解釋

那麼卷積的計算過程就是,3*3的卷積核在綠色5*5的輸入圖像上不斷從左往右開始掃描,分別對應相乘,如1*1+1*0+0*1+1*0+1*1+1*0+0*1+1*0+1*1=3,依次得到右邊的3*3的卷積後的圖像,叫做特徵圖(Feature Map),也就是卷積後提取的特徵。

深度學習入門教程:卷積神經網絡的直觀解釋

對於不同的卷積核提取到的是不同的特徵,如下圖,

深度學習入門教程:卷積神經網絡的直觀解釋

深度學習入門教程:卷積神經網絡的直觀解釋

對右邊的輸入圖像,分別使用中間不同的卷積核去進行濾波處理,得到提取到不同的特徵圖,如:邊緣提取卷積核提取到的是edge特徵,銳化卷積核提取到的是Sharpen特徵,box blur 和Gaussian blur 就相當於opencv中的均值濾波和高斯濾波函數處理的結果。這些濾波器使用的是固定的卷積核,所以提取的是固定的特徵。而卷積神經網絡的卷積核是通過學習不斷更新的,當網絡訓練結束時,神經網絡的卷積核也就確定了,卷積核中的每一個值都是一個神經元,神經網絡的訓練過程就是卷積核中權重不斷更新的過程。如下圖所示,卷積核從左往右,從上往下不斷掃描後得到的Feature Map,也就是提取到的特徵。

深度學習入門教程:卷積神經網絡的直觀解釋

卷積核通過在輸入圖像上不斷滑動來產生特徵圖(Feature Map),不同的卷積核可以生成不同的Feature Map。

卷積核相關參數介紹:

1、卷積核深度(depth),也就是卷積核的數量。

2、步長(stride),就是卷積核在輸入圖片上每次移動的像素個數,stride越大,得到的Feature Map越小,默認是Stride=(1,1)。

3、補零(Zero-Padding),由於以stride從左到右移動最後時,可能出現移動到圖片以外,所以出現補零操作,默認是0.。

第二步 激活函數Relu

Relu 是Rectified Linear Unit的簡稱,稱為修正線性單元,它的作用是增加捲積神經網絡的非線性結構,它將卷積後得到的Feature Map中的負數值變成0,正數不變。其函數如下所示:

深度學習入門教程:卷積神經網絡的直觀解釋

其效果圖如下:

深度學習入門教程:卷積神經網絡的直觀解釋

第三部:池化操作Max Pooling

pooling操作有幾種形式,分別是取Max ,Average,Sum函數,以Max為例,下圖右上角中取得是1,1,5,6中最大的6作為MaxPooling的輸出。其作用依舊是減小神經網絡的複雜程度,避免過擬合。

深度學習入門教程:卷積神經網絡的直觀解釋

不同的Pooling函數得到的是不同效果,如下圖所示:

深度學習入門教程:卷積神經網絡的直觀解釋

第四步:全連接層(Fully Connected layer)

全連接層在網絡中的並沒有實際的作用,主要使用輸出的,常常去除幾個全連接層對網絡的影響不明顯。

深度學習入門教程:卷積神經網絡的直觀解釋

算法流程

step1:使用隨機的值初始化所有的卷積核和參數,默認為0 或者1.

step2:輸入圖片,正向傳播(convolution ,relu,pooling,fully connected layer),此時輸出的概率可能是[0.2,0.4,0.1,0.3]

step3:計算損失函數

深度學習入門教程:卷積神經網絡的直觀解釋

step4:通過反向傳播去更新權重和梯度,使得損失函數的值最小。此時的輸出是[0.1,0.1,0.7,0.1]更加接近目標向量[0,0,1,0].

step5:不斷在訓練集圖片上重複步驟2-4。

深度學習入門教程:卷積神經網絡的直觀解釋


分享到:


相關文章: