1.1 卷積神經網絡基礎

卷積神經網絡
CNN(Convolutional Neural Network)
它的雛形是1998年LeCun的LeNet網絡結構,卷積神經網絡發(fā)展歷程中的第一個卷積神經網絡
只要包含了卷基層的神經網絡都可以理解為卷積神經網絡
- Convolutions:卷積層
- Subsampling:下采樣層
- Full connection:全連接層
卷積神經網絡的發(fā)展
卷積神經網絡無處不在
- Classification
- Retrieval
- Detection
- Segmentation
全連接層
由許許多多的神經元共同連接得來的
神經元

- x1,x2,x3是這個神經元的三個激勵,w1,w2,w3是這三個激勵對應的權重
- -1是這個神經元的偏置
BP神經網絡

- 從左到右的正向傳播過程中能夠得到一個輸出值,將這個輸出值和所期望的輸出值進行對比就能得到一個誤差值
- 通過計算每個節(jié)點的偏導數就能夠計算得到每個節(jié)點的誤差梯度
- 將得到的損失值反向應用到損失梯度上,就達到了誤差的反向傳播過程
實例:利用BP神經網絡做車牌數字識別
1.首先讀入一張彩色的RGB圖像,每一個像素里面都包含3個值(RGB分量)

- 首先將它進行灰度化,得到中間的圖,發(fā)現(xiàn)每個像素值就只剩下一個分量了
- 再進行二值化處理,得到一個最右側黑白圖像
2、用一個5行3列的滑動窗口在二值化后的黑白圖像上進行滑動,每滑動到一個地方就計算這個滑動窗口中白色的像素占整個滑動窗口所覆蓋的像素比例
- 當滑動窗口滑動到到最右邊的時候,此時列數不夠了,可以進行補零處理,也可以進行一個判斷,當滑動窗口快越界的時候就暫時把它變成一個5行2列的滑動窗口
- 通過這個方法遍歷整個圖像就得到一個5*5的矩陣
3、將所得到的5*5的矩陣按行進行展開,并將其拼接成一個行向量(1行25列),這樣就可以把這個行向量當成輸入神經網絡的輸入層
4、輸入層有了之后,再看輸出層
one-hot獨熱編碼是常用的對標簽進行編碼的方式
- 上圖展示了0-9每個數字對應的one-hot編碼,沒有重復
5、有了輸入和輸出之后,就可以對神經網絡進行訓練了。在實際訓練過程中,可以將輸入層的輸入節(jié)點數設為25,將輸出層的輸出節(jié)點數設為10,中間的隱藏層按實際情況進行設置
卷積層
卷積層是卷積神經網路中獨特的網絡結構
卷積:一個滑動窗口在特征圖上進行滑動,并計算
卷積的計算方式
(將卷積核上的值與特征圖上的值對應 相乘再進行相加 ,就得到最后矩陣中的一個值,每滑動一步計算一個值,最終得到卷積結果)
卷積的特性
- 擁有局部感知機制:以滑動窗口的形式在特征圖上進行滑動計算,所以具有局部感知能力
- 權值共享:滑動過程中,卷積核的值不會發(fā)生變化,所以又具有權值共享的特性
對比普通BP網絡得到權值共享的優(yōu)勢
- 這里的參數指的是神經元的權重
- 權值的共享使得卷積神經網絡的參數個數大幅度減少
卷積的過程
卷積核的深度(channel 通道數)要和輸入特征矩陣一致,(RGB分為R G B三維,卷積核也要為三維)都是三維的,最終卷積得到的矩陣是由三通道的輸入特征矩陣和三通道的卷積核分別對應卷積,再對應相加后得到一個卷積矩陣
方法:卷積核和特征層相乘再相加
PS:
1.卷積核的cahnnel與輸入特征層的channel相同(都是三通道)
2.輸出的特征矩陣channel與卷積核的個數相同(通過卷積核1和卷積核2最終得到一個兩通道的輸出特征矩陣)
1、如果加上偏移量bias該如何計算?
將每個最終得到的卷積內每個元素都加上偏移量
2.加上激活函數該如何計算?
常用的激活函數
- 為什么要使用激活函數?在線性的計算過程中引入非線性因素,使其具備解決非線性問題的能力
- Relu激活函數實際上是將負值全部過濾掉,只保留了正值不變,在實際應用中使用較多,求導方便
- 在反向傳播誤差的過程中,如果使用sigmoid激活函數,導數的求解非常麻煩
- 如果使用Relu激活函數,權重如果進入失活狀態(tài)后無法被再次激活,所以在訓練的過程中,建議不要一開始就使用特別大的學習率進行學習,否則很容易導致大量神經元失活
3、如果在卷積的過程中出現(xiàn)越界的情況該如何處理?
- 一般強況下,可以使用padding的方式在圖像的周圍直接補零進行處理,補零(padding)后就能夠正常地進行卷積,而不會出現(xiàn)越界的情況了
例:
- padding的像素p:一般實際應用過程中是兩邊同時補零,即左右上下進行對稱的:補零操作
- 上圖中只補了一邊,所以只用加上一個p就夠了
- N = ( 4 - 3 + 1 )/ 2 + 1 = 2 ,所以最后得到一個2*2的特征矩陣
池化層
池化層的目的就是對特征圖進行稀疏處理,減少數據運算量
maxpooling下采樣:尋找池化核對應范圍內的最大值來進行最大下采樣操作
averagepooling下采樣層:尋找池化核對應范圍內的平均值來進行平均下采樣操作
池化層的特點
1、沒有訓練參數,只是在原始的特征圖上進行求最大值或者平均值的操作
2、它只會改變特征矩陣的寬度(w)和高度(h),并不會改變深度(channel)
3、一般池化核的大?。╬oolsize)和步長(stride)相同,可以將特征圖進行一定比例的縮小,計算更加方便(這只是一般情況下,但并不絕對)
end.