CNN卷積神經網絡的理解

斯坦福大學CS231N這門課真的不錯,網易雲公開課上有,視頻筆記集合:
http://baijiahao.baidu.com/sid=1570790793398706&wfr=spider&for=pc

一般神經網絡結構和CNN卷積神經網絡的對比

這裏寫圖片描述

從左圖我們可以很容易理解神經網絡的結構,對於一般神經網絡而言,對於每一個節點,其輸出爲 y = f( (w1x1 + b1 +) + (w2x2 + b2 ) …)。其中w表示x對應的權重,b表示bias偏置量,即w,x,b構成了關於x的直線方程,f(x)表示激活/響應函數,一般是將神經元的輸出壓縮至[0,1]範圍,例如f(0.6)=1,f(-0.6)=0。

CNN卷積神經網絡

這裏寫圖片描述

  • 卷積層Convolution layer:

假設一個彩色圖片的數據集爲32*32*(紅+綠+藍)即32*32*3:

這裏寫圖片描述

卷積的含義可以理解爲迴旋疊加兩個部分,通常將5x5或者3x3的小塊(過濾器,也叫卷積核作爲一個神經元的輸入參數,圖片上對應大小的局部作爲輸入並從整個圖片上滑過來得到所有局部數據映射後組成的激活圖,可稱爲迴旋,對於32x32的圖片進行這樣的操作需要28*28個神經元;使用多個(上圖爲2個)不同濾波器得到激活圖,可稱爲疊加。即通常假設3x3的數據庫可以作爲一個判別單元。

這裏寫圖片描述

btw,爲什麼要這樣做呢?我們生活中判斷某張圖片是什麼,是從圖片的局部特徵來判斷的,比圖我們看到一張圖片中有大象鼻子這個特徵那麼我們可以判斷其爲大象,但是我們是怎麼知道“象鼻”是象鼻呢,答案是經驗。我們回想一下機器學習的定義:利用經驗E來來提升在任務T中的性能P。這就和我們的認知過程很類似了。同一個類別的圖片可能有很大差異,計算機很難去歸類,但是其局部特徵卻可能有很多相似的地方,根據所有局部特徵和各個類別的符合度就可以做出較爲有效的分類。提取局部特徵並嘗試將所有局部特徵組合成許多更具有類別代表性的激活圖,這就是卷積過程要做的事情。

這裏寫圖片描述

爲什麼要使用多個濾波器呢,因爲我們不知道得到的激活圖是否按照有效的抽象過程去提取特徵,使用多個濾波器我們可以利用權重參數w和b來嘗試在提取過程中得到不同的具有代表性的特徵組來進行訓練,在訓練過程具有積極意義的特徵組在在後續的處理過程通過放大w權重可以擴大其對結果的影響,提高識別率。(如上圖)

那爲什麼一般第一層卷積的濾波器在6個左右而不是更多呢?那是因爲避免在卷積的時候過快的損失數據信息,特徵提取程度很小,激活圖之間的差異空間也相對較小,但是這時候的“局部”仍然很大,很難判斷是否對分類結果是否具有積極意義,因此通常的做法是增加網絡的深度,進行多次局部特徵提取,使得局部面積越小而數量越多。通過多次卷積操作,激活圖變得小而多,此時將全部激活圖和label進行映射,即全連接層的操作,進行訓練,即可知道哪一個子激活圖更爲有效(權值w越大),從而得到上一級應當w組的值。

  • 局部連接:
    每個激活圖後續的卷積和池化(匯聚)操作和其他激活圖無關,和一般的神經網絡後一層的神經元與前一層神經元全部連接不同,稱爲局部連接。

  • 共享參數:
    一個過濾器從圖片滑過抓取局部單元特徵的過程使用的參數是一樣的,即一個激活圖上的所有神經元的參數是一致的。

  • 池化層Pooling layer(也稱匯聚層):

這裏寫圖片描述

說實話,叫匯聚層比較容易理解吧,就是把相對無用的信息去掉,也就相對的匯聚了有用的信息。例如上圖中將圖片信息分爲四塊,只保留每塊中最大的數值,叫最大池化(最大值匯聚法),還有一種去平均值的叫平均池化(平均值匯聚大法:))。

  • 卷基層和池化層(匯聚層)的差異
    卷積層是通過局部映射來縮小圖片,可以理解爲按照一定抽象分類方向進行,有時候爲了得到更多可計算的類別,甚至使用1x1的過濾器來進行,而池化層(匯聚層)是通過保留或去除相關數據來達到使某個局部的信息塊縮小,有利於通過更爲顯著的特徵來產生激活圖。

涉及的計算:超參數

卷積層:

這裏寫圖片描述

池化層

這裏寫圖片描述

S表示滑塊的起點距離上一個起點的單位,即滑過的距離。

另外:圖片一般爲正方形,且最好可以被滑塊”滑完”,如果不能則在周邊填0。

發佈了53 篇原創文章 · 獲贊 44 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章