天天看點

吳恩達深度學習課程筆記之卷積神經網絡基本操作詳解

吳恩達深度學習課程筆記之卷積神經網絡基本操作詳解

卷積層

CNN中卷積層的作用:

CNN中的卷積層,在很多網絡結構中會用conv來表示,也就是convolution的縮寫。

卷積層在CNN中扮演着很重要的角色——特征的抽象和提取,這也是CNN差別于傳統的ANN或SVM的重要不同。

對于圖檔而言,圖檔是一個二次元的資料,我們怎樣才能通過學習圖檔正确的模式來對于一張圖檔有正确的對于圖檔分類呢?這個時候,有人就提出了一個觀點,我們可以這樣,對于所有的像素,全部都連接配接上一個權值,我們也分很多層,然後最後進行分類,這樣也可以,但是對于一張圖檔來說,像素點太多,參數太多了。然後就有人提出來,我們隻看一部分怎麼樣,就是對于一張圖檔來說,我們隻看一個小視窗就可以了,對于其他的地方,我們也提供類似的小視窗,我們知道,當我們對圖檔進行卷積的時候,我們可以對圖檔進行很多操作,比如說圖檔整體模糊,或者是邊緣的提取,卷積操作對于圖檔來說可以很好的提取到特征,而且通過BP誤差的傳播,我們可以根據不同任務,得到對于這個任務最好的一個參數,學習出相對于這個任務的最好的卷積核,之是以權值共享的邏輯是:如果說一個卷積核在圖檔的一小塊兒區域可以得到很好的特征,那麼在其他的地方,也可以得到很好的特征。

填充(Padding)

valid:也就是不填充。 same:在圖像邊緣填充,使得輸入和輸出大小相同。

不采用padding的後果:

邊緣資訊采樣小

輸出圖像變小

而paddding通常可以保證卷積過程中輸入和輸出的次元是一樣的。它還可以使圖像邊緣附近的幀對輸出的貢獻和圖像中心附近的幀一樣。

假設輸入的圖像大小為:n*n,過濾器大小為f*f,填充的大小為p,步長為s;

那麼,輸出的大小為

①假設步長stride大小為1,并且沒有填充,則輸出為:

(n−f+1)∗(n−f+1)

②假設步長stride大小為1,并且填充的大小為p,則輸出為:

(n+2p−f+1)∗(n+2p−f+1)

根據以上公式可以看出,加入我們沒有填充的話,輸出的大小會小于輸入的大小,然而在實際中,我們往往希望,輸出的大小能夠與輸入的大小相同,于是,我們可以得到下面這個等式:

(n+2p−f+1)∗(n+2p−f+1)=n∗n

解得:

p=f−12

由以上式子可知,當f為奇數時,填充的大小也随之确定。也許你會問,難道過濾器的大小一定要為奇數嗎?理論上,f為偶數也是可以的。但是在實際工程應用中,f一般會取奇數(很多情況下取3),原因如下:

若為偶數,則有可能是不對稱填充,顯然我們不喜歡這樣的操作

奇數有中心像素點,便于我們定位過濾器的位置

步長(Stride)

③假設步長大小為s,并且填充的大小為p,則輸出為:

⌊n+2p−fs⌋+1

需要注意的是,當結果不為整數時,我們一般采取下取整操作!

池化(Pooling):卷積層是對圖像的一個鄰域進行卷積得到圖像的鄰域特征,池化層就是使用pooling技術将小鄰域内的特征點整合得到新的特征。

優點:

顯著減少參數數量

池化單元具有平移不變性

在實際中經常使用的是最大池化。

卷積神經網絡減少參數的手段:

1)稀疏連接配接

一般認為人對外界的認知是從局部到全局的,而圖像的空間聯系也是局部的像素聯系較為緊密,而距離較遠的像素相關性則較弱。因而,每個神經元其實沒有必要對全局圖像進行感覺,隻需要對局部進行感覺,然後在更高層将局部的資訊綜合起來就得到了全局的資訊。網絡部分連通的思想,也是受啟發于生物學裡面的視覺系統結構。視覺皮層的神經元就是局部接受資訊的(即這些神經元隻響應某些特定區域的刺激)。如下圖所示:左圖為全連接配接,右圖為稀疏連接配接。

吳恩達深度學習課程筆記之卷積神經網絡基本操作詳解

在上右圖中,假如每個神經元隻和10×10個像素值相連,那麼權值資料為1000000×100個參數,減少為原來的千分之一。而那10×10個像素值對應的10×10個參數,其實就相當于卷積操作。

2)參數共享

但其實這樣的話參數仍然過多,那麼就啟動第二級神器,即權值共享。在上面的局部連接配接中,每個神經元都對應100個參數,一共1000000個神經元,如果這1000000個神經元的100個參數都是相等的,那麼參數數目就變為100了。

怎麼了解權值共享呢?我們可以這100個參數(也就是卷積操作)看成是提取特征的方式,該方式與位置無關。這其中隐含的原理則是:圖像的一部分的統計特性與其他部分是一樣的。這也意味着我們在這一部分學習的特征也能用在另一部分上,是以對于這個圖像上的所有位置,我們都能使用同樣的學習特征。

更直覺一些,當從一個大尺寸圖像中随機選取一小塊,比如說 8×8 作為樣本,并且從這個小塊樣本中學習到了一些特征,這時我們可以把從這個 8×8 樣本中學習到的特征作為探測器,應用到這個圖像的任意地方中去。特别是,我們可以用從 8×8 樣本中所學習到的特征跟原本的大尺寸圖像作卷積,進而對這個大尺寸圖像上的任一位置獲得一個不同特征的激活值。

如下圖所示,展示了一個33的卷積核在55的圖像上做卷積的過程。每個卷積都是一種特征提取方式,就像一個篩子,将圖像中符合條件(激活值越大越符合條件)的部分篩選出來。

吳恩達深度學習課程筆記之卷積神經網絡基本操作詳解

參考文獻:

<a href="https://www.cnblogs.com/nsnow/p/4562308.html">技術向:一文讀懂卷積神經網絡CNN</a>

<a href="https://www.zhihu.com/question/39022858/answer/81026163">卷積神經網絡工作原理直覺的解釋?</a>

繼續閱讀