當前位置:
首頁 > 最新 > 吳恩達深度學習工程師微專業筆記之課程四第一周

吳恩達深度學習工程師微專業筆記之課程四第一周

本文總結的是課程四《卷積神經網路》的第一周《卷積神經網路》,共11小節,本文涵蓋所有小節。阿蒙將自以為重要的知識點整理成筆記,並不是逐句翻譯不足之處請大家斧正。視頻請訪問deeplearning.ai或者網易雲課堂。

1.1 計算機視覺

計算機視覺的高速發展可以產生新的產品和應用,計算機視覺領域的網路結構和演算法也可以應用在其他領域中,因此計算機視覺是一個重要的深度學習研究領域。

計算機視覺包括圖像分類、目標檢測、神經風格轉換等。由於圖像輸入向量的維度巨大,參數眾多,所以是計算機視覺領域的挑戰。卷積可以解決這個問題。

1.2 邊緣檢測

如圖所示是一種垂直邊緣檢測器,將輸入大小為6*6的圖片經過一個3*3的filter或者叫kernel的卷積操作,輸出一個4*4的矩陣。

輸出的矩陣中的每一個元素,是將filter里的元素和輸入矩陣中同樣大小的3*3部分逐個元素相乘,得到的一個標量。這個操作叫做卷積。Filter在數據矩陣中左右上下按格移動,就可以得到不同的計算結果,填寫在輸出矩陣的對應位置。

之所以說上述的filter是垂直邊緣檢測器,是因為filter的3*3矩陣里,左邊是亮色像素,右邊是暗色像素,可以檢測出輸入圖像在垂直方向的明暗變化分界線。

1.3 其他的邊緣檢測

如圖是垂直邊緣卷積核和水平邊緣卷積核。水平邊緣卷積核第一行的像素亮,最後一行的像素暗,因此可以檢測出輸入圖片的水平邊緣。

如圖所示是sobel卷積核,它增加了中間一行元素的權重,結果的魯棒性更高。還有一種卷積核叫Scharr卷積核,有著不一樣的特性。

如果把卷積核的9個元素都當作參數,通過反向傳播進行訓練,可以學習到各種不一樣的檢測效果的檢測器。

1.4填充

填充(padding)是一個基本的卷積操作。如果輸入圖像維度是n*n,卷積核的維度是f*f,那麼輸出圖像的維度是(n-f+1)* (n-f+1)。這會帶來兩個問題,首先輸出圖像的維度在減小,其次輸入圖像四個角或者邊緣的像素點在卷積過程中用的較少,會丟失信息。

對輸入圖像填充可以解決這個問題,得到和輸入圖像相同維度的輸出圖像。一般地,用像素填充,令各邊填充的像素點數為p,則輸出圖像的維度為(n+2p-f+1)* (n+2p-f+1)。

填充方式有兩種,一種是valid卷積,一種是same卷積。valid的意思是不填充,same的意思是輸出圖像和輸入圖像的維度相同。令n+2p-f+1=n,可以求解出p的值為(f-1)/2。當f是奇數時,p有整數解。

按照計算機視覺的慣例,卷積核大多為奇數,是因為避免不對稱填充的出現,且奇數卷積核有中心像素點,便於定位。

1.5 卷積步長

Stride,也叫步長,是指卷積操作時卷積核在輸入圖像上每次移動的像素距離。令步長為s,那麼容易知輸出圖像的維度為((n+2p-f)/s+1)* ((n+2p-f)/s+1)。如果(n+2p-f)/s+1不是整數,那麼向下取整。

數學上卷積的定義和深度學習領域有所不同。數學上例如《信號與系統》課程里,卷積核需要做水平翻轉和垂直翻轉的雙重鏡像操作後才開始卷積,但是深度學習領域不需要做么做。深度學習領域的卷積在數學上嚴格定義為互相關。

1.6 三維圖像上的卷積

如果輸出圖像有RGB三個通道,那麼維度為三維,卷積核也必須是三維的,可視為立方體,輸出圖像的則是二維的。如圖所示。

如果有一個n*n*n_c的輸入,卷積核的維度為f*f*n_c,輸出的維度則為(n-f+1)*(n-f+1)。一張輸入圖像可以作用多個卷積核。

1.7 單層卷積網路

將卷積核看成普通神經網路中的w,對上節輸出的二維圖像加上b,並用relu激活函數作用,就形成了單層卷積神經網路。

假設卷積核維度為f*f*n_c,某層中卷積核數目為n_f,那麼這一層中的參數數量為(f*f*n_c+1)* n_f,其中1代表b的值。此時不論輸入圖像的大小為多大,這些卷積核的參數數量是固定不變的。

下圖總結了卷積神經網路中的各種維度,包括輸出圖像維度的計算公式,卷積核的維度,激活函數的維度,權重的維度,偏差的維度。

假設輸入圖像維度為nh*nw*nc,卷積核的維度為f*f*nc,填充為p,步長為s,卷積核數量為nf,那麼輸出圖像的維度為((nh+2p-f)/s+1)* ((nw+2p-f)/s+1)* nf,激活函數的維度同輸出圖像的維度,權重的維度為f*f*nc*nf,b的維度為1*1*1*nf。

1.8 卷積神經網路示例

下圖展示了卷積神經網路的一種應用。輸入圖像經過三種不同維度的卷積核卷積後,形成了7*7*40的輸出。隨著網路層數的加深,卷積核的通道也在變多,寬高在不斷變小。將7*7*40的立方體平攤成一個長度為1960的向量,將該向量運用softmax函數,即形成一個分類器的網路架構。

卷積神經網路中有三種層,分別是卷積層(conv layer)、池化層(pool layer)和全連接層(FC layer),後兩種的構造比卷積層簡單,將於下兩節講述。

1.9 池化層

池化層的作用是縮減模型大小,提高計算速度,提高所提取特徵的魯棒性。

最大池化的執行過程如圖所示。輸出的每一個元素為對應輸入圖像色塊中的最大值。池化層的超參數為核大小f和步長s。

最大池化的作用是:對於指定的特徵(例如貓眼探測器)而言,如果檢測到這個特徵,會保留最大值到輸出圖像,否則輸出圖像就沒有這個特徵。

池化層雖然有超參數,但是反向傳播時沒有參數需要學習,常用值是f=2,s=2,相當於寬高減半,很少用到填充。池化層輸出圖像的維度計算方法同卷積過程。

還有一種池化是平均池化,使用頻率沒有最大池化高。

1.10 基於lenet-5的卷積神經網路示例

網路輸入是32*32*3的手寫數字圖像,首先遇到的是卷積層CONV1,卷積核的f=5,s=1,數量為6,輸出維度為28*28*6;下一層是最大池化層POOL1,f=2,s=2,輸出維度為14*14*6。CONV1和POOL1合在一起叫做layer1,看成是1個卷積層。

繼續構建一個卷積層CONV2,f=5,s=1,數量為16,輸出維度10*10*16;下一層是最大池化層POOL2,f=2,s=2,輸出維度為5*5*16。CONV2和POOL2合在一起叫做layer2,看成是1個卷積層。

將5*5*16的矩陣平鋪成一個大小為400的一維向量,下一層是一個大小為120的一維向量,叫做全連接層FC3,和課程一介紹的普通的神經網路層相同。之所以叫全連接,是因為這層的每一個單元都和上一層的每一個單元連接。然後對這120個單元再添加一個全連接層FC4,包含84個單元,最後再連接一個softmax層,實現對手寫數字分類。

隨著深度的加深,輸出圖像的高度和寬度都在減少,但是通道數在增加。

卷積神經網路的另外一種形式是多個卷積層後緊跟池化層。

上面網路的激活值大小和參數數量見下表。激活值的大小(也就是各層輸出圖像的大小)逐層減小,不可下降過快。池化層沒有參數,卷積層參數較少,大多數的參數集中在全連接層。

1.11 卷積的優勢

卷積的優勢在於參數共享和稀疏連接。特徵提取器對於圖像的不同部位同樣有用,卷積層輸出圖像的每一個像素值只和特定的輸入像素相關。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 阿蒙的副刊 的精彩文章:

吳恩達深度學習工程師微專業筆記之課程一第三周

TAG:阿蒙的副刊 |