通過往期文章的分享,我們了解了神經網絡的結構,一般分為輸入層,隱藏層,輸出層
TensorFlow神經網絡
那什麼是卷積神經網絡呢,這就要我們追溯一下人類識別圖像的原理
人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素 Pixels),接著做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是只氣球)。下面是人腦進行人臉識別的一個示例:
人類識別圖形原理
對於不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:
我們可以看到,在最底層特徵基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特徵(輪子、眼睛、軀幹等),到最上層,不同的高級特徵最終組合成相應的圖像,從而能夠讓人類準確的區分不同的物體。CNN卷積神經網絡就是來源於此識別過程來實現。
卷積神經網絡
卷積神經網絡依舊是層級網絡,只是層的功能和形式做了變化,可以說是傳統神經網絡的一個改進。比如下圖中就多了許多傳統神經網絡沒有的層次。
CNN神經網絡
一般卷積神經網絡有如下結構:
•數據輸入層/ Input layer
•卷積計算層/ CONV layer
•ReLU激勵層 / ReLU layer
•池化層 / Pooling layer
•全連接層 / FC layer
當然卷積層,Relu激勵層與Pooling層可以多次使用
輸入層/ Input layer
該層要做的處理主要是對原始圖像數據進行預處理,其中包括:
•去均值:把輸入數據各個維度都中心化為0,如下圖所示,其目的就是把樣本的中心拉回到坐標系原點上。
•歸一化:維度歸一化到同樣的範圍,如下所示,即減少各維度數據取值範圍的差異而帶來的幹擾,比如,我們有兩個維度的特徵A和B,A範圍是0到10,而B範圍是0到10000,如果直接使用這兩個特徵是有問題的,好的做法就是歸一化,即A和B的數據都變為0到1的範圍。
•PCA/白化:用PCA降維;白化是對數據各個特徵軸上的幅度歸一化
卷積計算層/ CONV layer
這一層是卷積神經網絡最重要的一個層次,也是「卷積神經網絡」的名字來源。
在這個卷積層,有兩個關鍵操作:
•局部關聯。每個神經元看做一個濾波器(filter)
•窗口(receptive field)滑動, filter對局部數據計算
下圖比較簡單的介紹了一個卷積的過程,原始數據是5*5 卷積核為3*3 步長為1
CNN卷積計算
ReLU激勵層 / ReLU layer
這一層也是我們前期分享的激勵函數層
CNN採用的激勵函數一般為ReLU(The Rectified Linear Unit/修正線性單元),它的特點是收斂快,求梯度簡單,但較脆弱,圖像如下。
Relu
池化層 / Pooling layer
池化層夾在連續的卷積層中間, 用於壓縮數據和參數的量,減小過擬合。簡而言之,如果輸入是圖像的話,那麼池化層的最主要作用就是壓縮圖像。池化層用的方法有Max pooling 和 average pooling,而實際用的較多的是Max pooling。
Pooling
對於每個2*2的窗口選出最大的數作為輸出矩陣的相應元素的值,比如輸入矩陣第一個2*2窗口中最大的數是6,那麼輸出矩陣的第一個元素就是6,如此類推。
全連接層 / FC layer
兩層之間所有神經元都有權重連接,通常全連接層在卷積神經網絡尾部。也就是跟傳統的神經網絡神經元的連接方式是一樣的:
FC layer
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.