吴恩达深度学习笔记10-Course4-Week1【卷积神经网络】
卷積神經網絡(Convolutional Neural Networks)
一、計算機視覺(Computer Vision)
計算機視覺處理的輸入都是圖片。當圖片尺寸比較小時,可以采用深度神經網絡的結構來解決問題。但在現實中我們需要處理的圖片尺寸通常比較大,如:500萬像素、800萬像素。這時輸入數據將變得很大,使用神經網絡結構將會有非常多的參數需要去學習,不僅很難訓練,而且數據集不夠大時很容易出現過擬合的問題。
例如:輸入為1000x1000的RGB圖片即3百萬(million)個特征,設第一層隱藏層有1000個unit,這時第一層需要學習的參數有30億個,明顯不合理。而卷積神經網絡就能很好的解決這一問題。
二、邊緣檢測(Edge Detection )
二維卷積:
知乎上有一篇關于 理解卷積 的文章,可以參考一下。
一個大矩陣–圖像,一個小矩陣–濾波器(filter)/ 卷積核(kenel)。濾波器在圖像上有規律的滑動,濾波器的每個元素與對于的圖像區域的每個元素進行相乘然后相加,即得到圖像上該區域中心坐標點的值,最終得到一個新的矩陣。
node:
- filer的尺寸一般為奇數,方便得到中心點。一般選:1x1, 3x3, 5x5
- 在數學上的卷積要把濾波器同時水平垂直旋轉后再進行計算,圖像卷積更準確的名稱是互相關(cross-correlation),但是慣例上我們把它叫做卷積。
邊緣檢測
邊緣檢測就是利用邊緣檢測的濾波器與圖像進行卷積,得到包含邊緣信息的矩陣。下圖是兩種豎直邊緣檢測濾波器和的計算原理,第一種是明到暗計算結果為正數,第二種是暗到明計算結果為負數。
豎直邊緣檢測濾波器旋轉90°可得到水平邊緣檢測濾波器。
多種豎直邊緣檢測濾波器:sobel,scharr
這些濾波器的參數值都是人為設置的,不一定很好。而且如果想檢測45°,30°的邊緣參數值怎么設置呢?我們可以讓神經網絡來學習這些參數,其實這就是卷積神經網絡最主要的思想。
三、填充(Padding)
Padding:
其實就是在原圖像上向外填充像素,填充一層縱向和橫向都增加兩個像素。填充層數p,濾波器尺寸 fxf,圖像尺寸 nxn。填充完圖像的尺寸為 (n+2p)×(n+2p)。卷積運算后的尺寸為 (n+2p?f+1)×(n+2p?f+1) 。
Padding的作用:
因為每次卷積操作,圖片的尺寸都會縮小,這樣角落和邊緣位置的像素進行卷積運算的次數少,可能會丟失有用信息。添加padding可以一定程度上減小這種缺點。
兩種padding:Valid / Same
Valid:p=0,即沒有padding。n×n的矩陣得到 (n?f+1)×(n?f+1) 的矩陣
Same:p=(f?1) / 2,即輸入與輸出矩陣的大小相同。卷積計算時,因為filter一般為奇數,所以p的值也為奇數。
四、跨步的卷積(Strided Convolutions)
步長(Stride): filter在圖像上向右向下移動的步長,即一次移動幾個像素。
計算公式:因為有可能會越界,所以要向下取整。
Valid 和 Same 輸出尺寸的計算:
Valid:floor( (n-f) / s) + 1
Same:ceil (n / s)
五、立體/三維卷積(Convolutions Over Volume)
立體卷積: 濾波器的通道(channel)和圖像的通道一致,然后進行立體的卷積。得到通道為1的結果矩陣。
多個立體濾波器
如果同時想檢測多種特征,可以用多個立體濾波器進行卷積,然后把結果堆疊起來。所以結果矩陣的通道數為立體濾波器的個數,而與單個濾波器的尺寸無關。
六、單層卷積網絡(One Layer of a Convolutional Network)
一層的卷積網絡:
每個立體filter只有一個bias參數。前向傳播時對每個卷積結果進行線性運算,然后進行非線性激活。
本文使用的notations: 對于第l層
多層的CNN例子:
七、池化層(Pooling Layers)
最大池化(Max pooling):
取每一個區域的最大值,只有超參數,沒有參數。可以設置區域尺寸和步長。
以 f=2, p=2 為例:
平均池化(Average pooling):
與最大池化層的區別在于,平均池化是取各區域的平均值。
池化層的超參數:
- f:filter的大小;
- s:stride大小;
- 選擇最大池化還是平均池化,通常用最大池化;
- p:padding,正常不使用即p=0。
八、卷積神經網絡例子
例子: Input >> Conv >> Pool >> Conv >> Pool >> FC >> FC >> FC >> softmax。FC(Fully Connected): 全連接層
通常我們把一個卷積層和一個池化層看作是一層。因為只有卷積層包含網絡參數。
CNN各層的尺寸和參數:
搭建CNN時,每層的激活值個數應該是均勻的下降,不能下降的太快或跳變。
總結,在卷積層僅有少量的參數。在池化層沒有參數。在全連接層存在大量的參數。
九、卷積神經網絡的理解
卷積神經網絡如何減少參數:
卷積神經網絡為什么能有效的減小參數的個數,從而防止過擬合。
- 參數共享:一個濾波器的參數,適用于圖片中各個小區域。
- 稀疏連接:只需要圖像中一小部分元素來計算結果矩陣中的各個元素值,
CNN還有平移不變的特性:即使圖片有輕微的平移,濾波器還是能較好的檢測出特征。
搭建卷積神經網絡
數據集 >> 網絡結構 >> 成本函數 >> 梯度下降
總結
以上是生活随笔為你收集整理的吴恩达深度学习笔记10-Course4-Week1【卷积神经网络】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 为什么要安装gcc和gcc-
- 下一篇: 计算机视觉与深度学习 | 基于MATLA