吴恩达卷积神经网络课程——第一周笔记
Week 1
?
目錄
Week 1
1-1、計算機視覺
1-2、邊緣檢測示例
1-3、更多關于邊緣檢測內容
1-4、Padding
1-5、卷積步長
1-6、卷積為何有效
1-7、單層卷積網絡
1-8、簡單卷積網絡示例
1-9、池化層
1-10、卷積神經網絡示例
1-11、為什么使用卷積?
?
1-1、計算機視覺
1-2、邊緣檢測示例
卷積運算就是卷積神經網絡最基本的組成部分,在這里用邊緣檢測示例講解卷積運算。給一張圖片,要讓電腦搞清楚圖片里面有什么,做的第一件事就是檢測圖片中的垂直邊緣(vertical edges):比如說這張圖片里的欄桿、人的輪廓等,然后也要檢測水平邊緣(horizontal edges):比如水平的欄桿等。
那么問題來了,如何在圖片中檢測這些邊緣呢?舉個例子:給個6×6的灰度圖像,因為他是灰度圖像,所以它實際就是個6×6×1的矩陣(而不是6×6×3的,一位沒有RGB三個通道)。我們會構造一個3×3的過濾器和這個6×6的矩陣進行卷積運算。那么這個卷積運算的輸出,會得到一個4×4的矩陣,也可以把她看成一個4×4的圖像。輸出為什么是4×4的呢?
卷積運算就是從圖像的左上角開始,用一個過濾器(像這個例子中的3×3的過濾器),圖像與過濾器對應起來相乘再相加,并用計算結果代替輸出結果的左上角第一個的值。然后,過濾器向右移動一列,并作同樣的運算。以此類推,從左到右、從上到下,即可得到一幅新圖像。下圖為一些卷積運算的動圖:
為什么這個能做垂直邊緣檢測器呢?看個例子:
輸入為左邊一半10,右邊一半0,代表的圖像大概是白+灰(0代表黑,255代表白)然后經過卷積運算,得到的結果是中間白,左右兩邊灰,中間白色區域就是說明表示在圖像中間有個特別明顯的 垂直邊緣。
1-3、更多關于邊緣檢測內容
當數字反轉時,輸出結果也會發生相應的變化。
也許會很好奇,為什么垂直濾波器中的數字是這幾個,能不能換其他數字?答案是可以的,例如:以下都是垂直濾波器。
水平濾波器就是把垂直濾波器翻轉90°:
1-4、Padding
為了構建深度神經網絡,我們需要做的一個基本的卷積操作就是Padding。在上面,我們知道:3×3的過濾器和這個6×6的矩陣進行卷積運算,那么這個卷積運算的輸出,會得到一個4×4的矩陣。但是我們發現,這樣的話,每次檢測完邊緣特征,圖片就縮小了,所以到后期圖片可能變得很小了,這是第一個缺點。第二個缺點是,我們發現,用過濾器與圖片進行卷積運算時,位于角落的像素,過濾器只經過一次,而像其他中間的像素值,過濾器會有好幾次經過他,這就說明那些角落的像素值在輸出中采用較少,意味著你丟掉了圖像的邊緣位置的許多信息。
為了解決以上兩個缺點:輸出縮小和圖像邊緣大部分信息丟失。所以引進了Padding,也就是擴充邊緣,也就是說,在剛開始時,我們給圖片填充一層像素(用0填充),按之前例子來說,就在6×6的圖像邊緣加上一層像素,就變成了8×8的圖像。如果再用3×3的卷積進行運算,那么輸出結果就不是4×4的矩陣,而是6×6的矩陣,也就意味著輸入輸出大小不變了。
output size:
N: 輸入的維度
F:卷積核大小
stride: 步長
有pad:擴充邊緣的情況之下,pad的取值:
pad的作用就是保持全尺寸輸出,不會改變圖片大小。
有pad時計算output size:
()
1-5、卷積步長
N: 輸入的維度
F:卷積核大小
stride: 步長
pad: 擴充邊緣
()當商不是一個整數時就向下取整
1-6、卷積為何有效
通過前面的知識,我們已經知道了如何對二維圖像做卷積了,現在我們要學習的是在三維立體上做卷積——Converlutional on RGB images
下圖就是在三維圖像上做卷積運算:6×6×3,其中3代表通道數RGB,過濾器為3×3×3,3代表通道數,最后的輸出為4×4的矩陣。
如果想只檢測紅色通道的特征,那就讓過濾器的G、B通道均為0。
如果想要獲得垂直邊緣和水平邊緣,那就分別用兩種過濾器,然后將卷積后的結果結合在一起,結果就變成了4×4×2的矩陣。
總結:輸入的圖片為n×n×n1,過濾器為f×f×n1,其中n1就是通道數。結果為(n-f+1)×(n-f+1)×n2,其中n2為卷積核的個數
1-7、單層卷積網絡
這節的內容是如何構建卷積神經網絡的卷積層。上節課我們已經學會:如何通過兩個過濾器(兩個過濾器就是兩個特征),卷積處理一個三維圖像,并且輸出兩個4×4的矩陣。
我們之前在神經網絡的前向傳播中學過:
在這里,我們將輸入圖片也就是6×6×3的圖片看成a[0] (x),將兩個過濾器看成w[1],那么我們的輸出結果4×4的矩陣就是w[1]×a[0],再對兩個4×4的矩陣加上偏差,分別是b1、b2,最后再應用非線性函數relu,再把這兩個疊在一起成為4×4×2矩陣,那么它(4×4×2的矩陣)就成為了神經網絡的下一層,也就是激活層,也就是a[1],上述過程就體現了a[0]到a[1]的過程。總結流程就是:首先執行線性函數,然后所有元素相乘做卷積,再加上偏差,然后應用激活函數relu。這樣就把一個6×6×3的a[0]變成了一個4×4×2的a[1]
練習:
一些符號規定:
1-8、簡單卷積網絡示例
上節我們學了如何為卷積網絡構建一個卷積層。現在來看一個深度卷積網絡的具體示例。
經過以上圖所示,到此,這張39×39×3的圖像就處理完畢了,結果是再圖片中提取了7×7×40=1960個特征。
然后對該卷積層進行處理可以將其展開成1960個單元,也就是把他展成一個向量,其填充內容是logistic回歸或是softmax回歸,最后用y_hat來表示神經網絡的預測輸出。
設計神經網絡時,確定這些超級參數比較費工夫,比如說:步長,padding,過濾器的大小,以及多少個過濾器等等。
一個典型的卷積網絡通常由三層:卷積層(convolution或者Conv)、池化層(Pooling)、全連接層(Fully connected或者FC)
1-9、池化層
除了卷積層,卷積網絡也經常使用池化層來縮減模型的大小,提高計算速度。同時提高所提取特征的魯棒性。先看個池化層的例子:
輸入為4×4的矩陣,用到的池化類型是最大池化(max pooling),輸出結果是一個2×2的矩陣:
來看執行過程:把4×4的矩陣分成不同的區域,如圖中的四種顏色區域,對于2×2的輸出,輸出的每個元素都是其對應顏色區域中的最大元素值。如下圖所示。我們可以把這4×4的區域看成是某些特征的集合。
我們來看一個由若干個超級參數的示例,輸入是一個5×5的矩陣我們采用最大池化法,他的過濾器的參數為3×3,步幅為1,輸出矩陣是3×3:
還有一種池化叫平均池化,選取的不是過濾器的最大值,而是平均值:
超級參數的常用值:f=2;s=2效果相當于高度和寬度縮減一半。最大池化時,往往很少用到padding
1-10、卷積神經網絡示例
池化層和最大池化層沒有參數,卷積層的參數較少,大多數參數都存在于全連接層中。隨著神經網絡的加深,激活值會逐漸變小。
1-11、為什么使用卷積?
和只用全連接層相比,卷積層的兩個優勢在于參數共享和稀疏連接。
總結
以上是生活随笔為你收集整理的吴恩达卷积神经网络课程——第一周笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达神经网络和深度学习——第四周笔记
- 下一篇: 2018目标检测最新算法+经典目标检测算