CNN入門講解:卷積層是如何提取特徵的?

各位看官老爺們

好久不見

這裡是波波給大家帶來的CNN卷積神經網路入門講解

每周我將給大家帶來絕對原創,腦洞大開,幽默風趣的深度學習知識點入門講解

希望大家多多支持,多多關注

本人微信公眾號:follow_bobo

知乎賬號:蔣竺波

對了,本期我們的贊助商是

讓你愛情事業雙豐收的

最近一直忙於工作和看《獵場》

所以沒時間更新,不好意思啊

獵場看得我三觀盡毀

這哪是獵場啊,分明是綠場

一個個給對方戴綠帽子

一個個都是綠巨人啊

算了,我們來接著上一期說吧

上一期,我們得出了一個結構

這個最簡單的卷積神經網路說到底,終究是起到一個分類器的作用

卷積層負責提取特徵,採樣層負責特徵選擇,全連接層負責分類

『這位同學,你說的簡單,其實我對卷積層怎麼實現特徵提取完全不懂』

問的好,卷積神經網路的出現,以參數少,訓練快,得分高,易遷移的特點全面碾壓之前的簡單神經網路

而其中的卷積層可以說是這個卷積神經網路的靈魂

我們接下來會分兩節來分析,卷積層到底是怎麼充當「靈魂伴侶」這個角色的

正常情況下,我們輸入圖片是RGB格式,也就對紅(R)、綠(G)、藍(B)三個顏色

讓我們來看藍藍的天空

什麼,你看這天空是綠的?

那這位兄弟,你該去休息休息

RGB格式大家自己谷歌吧,這也不多說了

總的來說,也就是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色, 這三個顏色通道疊加之後,就是我們看到的RGB圖片了

如下圖

圖片來自網路,侵刪

我們假設,這三個分量的pixels 分別如下表示:

紅色分量

綠色分量

藍色分量

沒錯,這才是機器真正看到的東西,只能看到這些值,它看不到這個小姐姐

假設我們已經有合適的濾波器了

我們下一步幹什麼

沒錯,提取特徵

上次我們講到,卷積核(濾波器,convolution kernel)是可以用來提取特徵的

圖像和卷積核卷積,就可以得到特徵值,就是destination value

卷積核放在神經網路里,就代表對應的權重(weight)

卷積核和圖像進行點乘(dot product), 就代表卷積核里的權重單獨對相應位置的Pixel進行作用

這裡我想強調一下點乘,雖說我們稱為卷積,實際上是位置一一對應的點乘,不是真正意義的卷積

比如圖像位置(1,1)乘以卷積核位置(1,1),仔細觀察右上角你就會發現了

至於為什麼要把點乘完所有結果加起來,實際上就是把所有作用效果疊加起來

就好比前面提到的RGB圖片,紅綠藍分量疊加起來產生了一張真正意義的美女圖

我們現在再來看這三個分量的pixels:

紅色分量

綠色分量

藍色分量

對應的三個卷積核,裡面的數字即相當於權重,卷積核裡面的權值是怎麼來的,後面我會在反向傳播演算法(backpropagation)中講到

假設我們已經知道對應分量以及卷積核

我們知道輸入,知道神經元的權值(weights)了,根據神經網路公式:

Output =

我們還需要定義bias, 不過懶得管它了,給它設為零吧,b = 0

於是

我們發生如下過程

(誒,我為什麼要說我們)

因為卷積核是3x3的

所以我們分別對三個分量的其中一個3x3的九宮格進行卷積

比如我們在分量的中間找一個3x3九宮格

所以,結果為:

W1output = 1*(-1) +1*1+1*0+0*(-1)+1*0+2*1+0*(-1)+1*1+2*(-1) =1

W2output = 2*1+2*0+1*1+1*1+0*1+0*2+0*1+0*0+1*1=5

W3output = 1*(-1)+1*(-1)+0*(-1)+0*2+0*(1)+0*2+1*0+1*1+0*1 = -1

Bias = 0

Final_output =W1output + W2output+W3output+bias= 1+5-1+0 = 5

三個卷積核的輸出為什麼要疊加在一起呢

你可以理解為三個顏色特徵分量疊加成RGB特徵分量

我們在這已經知道卷積可以提取特徵

但是我們也不能隨機找圖像的pixels進行卷積吧

上一次我們講到,我們卷積輸出的特徵圖(feature map),除了特徵值本身外,還包含相對位置信息

比如人臉檢測,眼睛,鼻子,嘴巴都是從上到下排列的

那麼提取出的相應的特徵值也是按照這個順序排列的

再舉個例子

我們按順序去看這三個方塊

沒問題,你能看出是「2」

這樣,你就看不出是『2』啦

所以,我們卷積的方式也希望按照正確的順序

因此

我們實現卷積運算最後的方式

就是從左到右,每隔x列Pixel,向右移動一次卷積核進行卷積(x可以自己定義)

黃---藍---紫,就是卷積核移動的順序,這裡x =1

當已經到最右

從上到下,每隔X行pixel,向下移動一次卷積核,移動完成,再繼續如上所述,從左到右進行

就這樣,我們先從左到右,再從上到下,直到所有pixels都被卷積核過了一遍,完成輸入圖片的第一層卷積層的特徵提取

這裡的x我們叫作stride,就是步長的意思,如果我們x = 2, 就是相當每隔兩行或者兩列進行卷積

好了

你有沒有發現,分量的pixel 外面還圍了一圈0,這是什麼鬼

我們稱之為補0(zero padding)

因為添了一圈0,實際上什麼信息也沒有添,但是

同樣是stride x=1 的情況下,補0比原來沒有添0 的情況下進行卷積,從左到右,從上到下都多賺了2次卷積,這樣第一層卷積層輸出的特徵圖(feature map)仍然為5x5,和輸入圖片的大小一致

而沒有添0的第一層卷積層輸出特徵圖大小為3x3

這樣有什麼好處呢

(1)我們獲得的更多更細緻的特徵信息,上面那個例子我們就可以獲得更多的圖像邊緣信息

(2)我們可以控制卷積層輸出的特徵圖的size,從而可以達到控制網路結構的作用,還是以上面的例子,如果沒有做zero-padding以及第二層卷積層的卷積核仍然是3x3, 那麼第二層卷積層輸出的特徵圖就是1x1,CNN的特徵提取就這麼結束了。

同樣的情況下加了zero-padding的第二層卷積層輸出特徵圖仍然為5x5,這樣我們可以再增加一層卷積層提取更深層次的特徵

最近比較忙,而且心情不好,你看我連表情包都不用了,就寫這麼多了吧

下一次,我將著重介紹估計困擾大家的問題:

(1)一張圖片的特徵千千萬,卷積核也有千千萬,我們是怎樣來確定卷積核的數值是可以提取我們想要的特徵,或者說能提取使得最後分類正確的特徵呢?

(2)卷積核裡面的權值是如何更新的呢?

CNN 入門講解:什麼是卷積

CNN入門講解:如何理解卷積神經網路的解構

機器學習入門講解:什麼是特徵和特徵選擇

機器學習入門講解:信息熵(Shannon』s Entropy Model)


推薦閱讀:

遺傳演算法能幫你破解同事的密碼?| 入門教程,附代碼
拋棄移動業務,全面轉戰 AI,微軟將與谷歌、Facebook 開啟三足鼎立時代?
AI在閱讀理解領域開始「跑分」,這個「人類好幫手」還能去哪炫技
在人機關係中採用「機本位」視角
為什麼霍金說真正的人工智慧將是人類最偉大的發明?

TAG:人工智能 | 卷积神经网络CNN | 卷积 |