2020-06-17 對CNN最通俗的理解

卷積神經(jīng)網(wǎng)絡CNN

最通俗的理解


image.png

CNN:

提取特征的過程

先觀察下面兩張圖:


image

image

怎么讓機器進行匹配識別呢斯稳?

觀察這兩張X圖海铆,可以發(fā)現(xiàn)盡管像素值無法一一對應,但也存在著某些共同點挣惰。

image

看到解決思路了沒有卧斟?
如上圖所示,兩張圖中三個同色區(qū)域的結構完全一致憎茂!

從標準的X圖中我們提取出三個特征(feature):


image
image

image

image

只要用這三個feature便可定位到X的某個局部


image

feature在CNN中也被成為卷積核(filter)珍语,一般是3X3,或者5X5的大小竖幔。

執(zhí)行卷積運算:

卷積運算就是將原始圖片的與特定的Feature Detector(filter)做卷積運算(符號?)板乙,卷積運算就是將下圖兩個3x3的矩陣作相乘后再相加


image.png

下面的動圖更好地解釋了計算過程:


image

中間的Feature Detector(Filter)會隨機產(chǎn)生好幾種(ex:16種):


image.png

利用Feature Detector萃取出物體的邊界


image.png

回到本例中螃征,繼續(xù)執(zhí)行卷積運算:


image

9個都計算完了就會變成這樣:

image

這張新的圖我們稱之為 feature map (特征圖)盗忱。


image

進行卷積對應相乘運算并求得均值后,滑動窗便開始向右邊滑動。根據(jù)步長的不同選擇滑動幅度话瞧。比如逊脯,若步長 stride=1究飞,就往右平移一個像素埃疫。若 步長 stride=2,就往右平移兩個像素纠脾。

經(jīng)過一系列卷積對應相乘玛瘸,求均值運算后,終于把一張完整的feature map填滿了.


image

feature map是每一個feature從原始圖像中提取出來的“特征”苟蹈。其中的值糊渊,越接近為1表示對應位置和feature的匹配越完整,越是接近-1慧脱,表示對應位置和feature的反面匹配越完整渺绒,而值接近0的表示對應位置沒有任何匹配或者說沒有什么關聯(lián)。

一個feature作用于圖片產(chǎn)生一張feature map磷瘤,對這張X圖來說芒篷,我們用的是3個feature搜变,因此最終產(chǎn)生3個 feature map采缚。


image

非線性激活層

對原圖運算多個卷積后還要產(chǎn)生一組線性激活響應,而非線性激活層是對之前的結果進行一個非線性的激活響應挠他。

在神經(jīng)網(wǎng)絡中用到最多的非線性激活函數(shù)是Relu函數(shù)扳抽,它的公式定義如下:f(x)=max(0,x)
使用Relu函數(shù)去掉負值殖侵,更能淬煉出物體的形狀:

image.png

保留大于等于0的值贸呢,其余所有小于0的數(shù)值直接改寫為0。
如下圖所示:>=0的值不變


image

而<0的值一律改寫為0


image

得到非線性激活函數(shù)作用后的結果:


image

pooling池化層

池化層的作用是最大的目標就是減少數(shù)據(jù)量拢军。

池化分為兩種楞陷,Max Pooling 最大池化、Average Pooling平均池化茉唉。顧名思義固蛾,最大池化就是取最大值,平均池化就是取平均值度陆。

選擇池化尺寸為2x2艾凯,因為選定一個2x2的窗口,在其內選出最大值更新進新的feature map懂傀。


image

同樣向右依據(jù)步長滑動窗口:


image

image

最終得到池化后的feature map趾诗。可明顯發(fā)現(xiàn)數(shù)據(jù)量減少了很多蹬蚁。
最大池化保留了每一個小塊內的最大值恃泪,相當于保留了這一塊最佳匹配結果(因為值越接近1表示匹配越好)郑兴。

到這里就介紹了CNN的基本配置---卷積層、Relu層贝乎、池化層杈笔。

在常見的幾種CNN中,這三層都是可以堆疊使用的糕非,將前一層的輸入作為后一層的輸出蒙具。比如:


image

也可以自行添加更多的層以實現(xiàn)更為復雜的神經(jīng)網(wǎng)絡。

全連接層

原圖片尺寸為9X9朽肥,在一系列的卷積禁筏、relu、池化操作后衡招,得到尺寸被壓縮為2X2的三張?zhí)卣鲌D篱昔。


image

我們最初和最終的目的到底是什么?是對這張照片進行識別始腾,識別它到底是X還是O呢(其實也算是對它進行一個二分類)州刽。

全連接層要做的,就是對之前的所有操作進行一個總結浪箭,給我們一個最終的結果穗椅。

它最大的目的是對特征圖進行維度上的改變,來得到每個分類類別對應的概率值奶栖。全連接層的部分就是將之前的結果平坦化之后接到最基本的神經(jīng)網(wǎng)絡了.

image.png
image.png
image.png

上圖中得到一些2X2的特征圖后匹表,對其應用全連接網(wǎng)絡,再全連接層中有一個非常重要的函數(shù)----Softmax宣鄙,它是一個分類函數(shù)袍镀,輸出的是每個對應類別的概率值。


image

假設對一張看起來并不標準的圖進行分類冻晤。如下:


image

對于進行一系列操作后苇羡,假設得到的概率值如下所示:


image

對結果進行統(tǒng)計分析后可判斷這張圖片里的字母為X。


image

神經(jīng)網(wǎng)絡的訓練與優(yōu)化

前面說了那么多鼻弧,其實只是一個大致的框架的設計而已设江,里面的參數(shù)具體是多少則是需要訓練的。

針對這個識別X的例子温数,我們可以人為定義三個3X3的卷積核绣硝,便可實現(xiàn)對X的特征提取。但是在實際運用中撑刺,比如識別手寫字母鹉胖,幾乎不可能存在標準的寫法,每個人的字跡都完全不同,因此原來的那三個標準的卷積核就變得不再適用了甫菠,為了提高CNN模型的通用性(機器學習中的“泛化能力”)挠铲,就需要對卷積核進行改寫。經(jīng)過成千上萬的訓練集來訓練寂诱,每一次加入新的數(shù)據(jù)拂苹,都有可能對卷積核里的值造成影響。

那么具體的訓練方法是什么呢痰洒?

就是赫赫有名的BP算法---BackProp反向傳播算法瓢棒。

在訓練時,我們采用的訓練數(shù)據(jù)一般都是帶有標簽label的圖片丘喻。如果圖片中的字母是X脯宿,則label=x,如果圖片中的字母是A泉粉,則label=A连霉。 標簽能直觀地反映圖片。

在最開始嗡靡,訓練前跺撼,我們定義一個大小為3X3的卷積核,那么里面具體的值是多少讨彼,我們都不知道歉井,但又不能為0吧,所以就用隨機初始化法來進行賦值点骑,卷積核獲取到了一個隨機值酣难,便可以開始工作。

卷積神經(jīng)網(wǎng)絡便可以開始工作了黑滴,輸入一張帶有標簽的圖片(假設圖片內容是字母X)。經(jīng)網(wǎng)絡識別后判斷是X的概率為0.3紧索。本來應該是1.0的概率袁辈,現(xiàn)在只有0.3,問題就很明顯了珠漂,存在了很大的誤差晚缩。

一種簡單定義誤差error的計算公式為 error=result-label

訓練的終極目的就是使得這個誤差最小,常用的方法是 梯度下降法媳危。

內部設計的具體復雜公式在此不多做敘述荞彼。

簡單的說可以參照下圖,要使得誤差error最小待笑,就是讓卷積核里的參數(shù)w往梯度下降最小的反向改變鸣皂。


image
image

用這種方法來改變卷積核里的參數(shù)W使得誤差最小。

卷積層是構建卷積神經(jīng)網(wǎng)絡的核心層,它產(chǎn)生了網(wǎng)絡中大部分的計算量寞缝。注意是計算量而不是參數(shù)量癌压。
3個超參數(shù)控制著輸出數(shù)據(jù)體的尺寸:深度(depth),步長(stride)和零填充(zero-padding)荆陆。

  1. 將沿著深度方向排列滩届、感受野相同的神經(jīng)元集合稱為深度列(depth column),也有人使用纖維(fibre)來稱呼它們被啼。
  1. 在滑動濾波器的時候帜消,必須指定步長。當步長為1浓体,意味著濾鏡逐個像素地滑動券犁。通過增加步幅大小,濾波器在輸入上滑動的間隔更大汹碱,因此單元之間的重疊更少粘衬。
    下面的動畫顯示步幅大小為1。當步長為2咳促,濾波器滑動時每次移動2個像素稚新。


    image
  1. 有時候將輸入數(shù)據(jù)體用0在邊緣處進行填充是很方便的。這個零填充(zero-padding)的尺寸是一個超參數(shù)跪腹。零填充有一個良好性質褂删,即可以控制輸出數(shù)據(jù)體的空間尺寸(最常用的是用來保持輸入數(shù)據(jù)體在空間上的尺寸,使得輸入和輸出的寬高都相等)冲茸。

輸出數(shù)據(jù)體在空間上的尺寸W_2*H_2*D_2可以通過輸入數(shù)據(jù)體尺寸 W_1*H_1*D_1屯阀,卷積層中神經(jīng)元的感受野尺寸(F),步長(S)轴术,濾波器數(shù)量(K)和零填充的數(shù)量(P)計算輸出出來难衰。

image

一般說來,當步長S=1時逗栽,零填充的值是P=(F-1)/2盖袭,這樣就能保證輸入和輸出數(shù)據(jù)體有相同的空間尺寸。

image.png

可視化卷積層的一種好方法如下所示彼宠,最后我們以一張動圖解釋下卷積層到底做了什么:


image

CNN架構簡單來說就是:圖片經(jīng)過各兩次的Convolution, Pooling, Fully Connected就是CNN的架構了鳄虱,因此只要搞懂Convolution, Pooling, Fully Connected三個部分的內容就可以完全掌握了CNN!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末凭峡,一起剝皮案震驚了整個濱河市拙已,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摧冀,老刑警劉巖倍踪,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件系宫,死亡現(xiàn)場離奇詭異,居然都是意外死亡惭适,警方通過查閱死者的電腦和手機笙瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癞志,“玉大人往枷,你說我怎么就攤上這事∑啾” “怎么了错洁?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戒突。 經(jīng)常有香客問我屯碴,道長,這世上最難降的妖魔是什么膊存? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任导而,我火速辦了婚禮,結果婚禮上隔崎,老公的妹妹穿的比我還像新娘今艺。我一直安慰自己,他們只是感情好爵卒,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布虚缎。 她就那樣靜靜地躺著,像睡著了一般钓株。 火紅的嫁衣襯著肌膚如雪实牡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天轴合,我揣著相機與錄音创坞,去河邊找鬼。 笑死值桩,一個胖子當著我的面吹牛摆霉,可吹牛的內容都是我干的。 我是一名探鬼主播奔坟,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搭盾!你這毒婦竟也來了咳秉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸯隅,失蹤者是張志新(化名)和其女友劉穎澜建,沒想到半個月后向挖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡炕舵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年何之,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咽筋。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡溶推,死狀恐怖,靈堂內的尸體忽然破棺而出奸攻,到底是詐尸還是另有隱情蒜危,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布睹耐,位于F島的核電站辐赞,受9級特大地震影響,放射性物質發(fā)生泄漏硝训。R本人自食惡果不足惜响委,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窖梁。 院中可真熱鬧赘风,春花似錦、人聲如沸窄绒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彰导。三九已至蛔翅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間位谋,已是汗流浹背山析。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掏父,地道東北人笋轨。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像赊淑,于是被迫代替她去往敵國和親爵政。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355