CNN層次分析
簡介cnn:
典型的深度學習模型就是很深層的神經(jīng)網(wǎng)絡惹想,包含多個隱含層编矾,多隱層的神經(jīng)網(wǎng)絡很難直接使用BP算法進行直接訓練庐椒,因為反向傳播誤差時往往會發(fā)散抡四,很難收斂
CNN節(jié)省訓練開銷的方式是權共享weight sharing,讓一組神經(jīng)元使用相同的權值
主要用于圖像識別領域
卷積(Convolution)特征提取
卷積核(Convolution Kernel)举反,也叫過濾器filter懊直,由對應的權值W和偏置b體現(xiàn)
下圖是3x3的卷積核在5x5的圖像上做卷積的過程,就是矩陣做點乘之后的和?
卷積特征提取的原理
卷積特征提取利用了自然圖像的統(tǒng)計平穩(wěn)性火鼻,這一部分學習的特征也能用在另一部分上室囊,所以對于這個圖像上的所有位置,我們都能使用同樣的學習特征魁索。
當有多個filter時融撞,我們就可以學到多個特征,例如:輪廓粗蔚、顏色等
多個過濾器filter(卷積核)
例子如下?
一張圖片有RGB三個顏色通道尝偎,則對應的filter過濾器也是三維的,圖像經(jīng)過每個filter做卷積運算后都會得到對應提取特征的圖像,途中兩個filter:W0和W1,輸出的就是兩個圖像
這里的步長stride為2(一般就取2,3)
在原圖上添加zero-padding致扯,它是超參數(shù)肤寝,主要用于控制輸出的大小
同樣也是做卷積操作,以下圖的一步卷積操作為例:?
與w0[:,:,0]卷積:0x(-1)+0x0+0x1+0x1+0x0+1x(-1)+1x0+1x(-1)+2x0=-2?
與w0[:,:,1]卷積:2x1+1x(-1)+1x1=2?
與w0[:,:,2]卷積:1x(-1)+1x(-1)=-2?
最終結果:-2+2+(-2)+1=-1?(1為偏置)?
池化
也叫做下采樣
Pooling過程?
把提取之后的特征看做一個矩陣抖僵,并在這個矩陣上劃分出幾個不重合的區(qū)域鲤看,
然后在每個區(qū)域上計算該區(qū)域內(nèi)特征的均值或最大值,然后用這些均值或最大值參與后續(xù)的訓練?
-下圖是使用最大Pooling的方法之后的結果?
Pooling的好處?
很明顯就是減少參數(shù)
Pooling就有平移不變性((translation invariant)?
如圖feature map是12x12大小的圖片耍群,Pooling區(qū)域為6x6,所以池化后得到的feature map為2x2,假設白色像素值為1义桂,灰色像素值為0,若采用max pooling之后蹈垢,左上角窗口值為1?
將圖像右移一個像素澡刹,左上角窗口值仍然為1?
將圖像縮放之后,左上角窗口值仍然為1?
Pooling的方法中average方法對背景保留更好耘婚,max對紋理提取更好
深度學習可以進行多次卷積、池化操作
激活層
在每次卷積操作之后一般都會經(jīng)過一個非線性層陆赋,也是激活層
現(xiàn)在一般選擇是ReLu,層次越深沐祷,相對于其他的函數(shù)效果較好,還有Sigmod,tanh函數(shù)等?
sigmod和tanh都存在飽和的問題攒岛,如上圖所示赖临,當x軸上的值較大時,對應的梯度幾乎為0灾锯,若是利用BP反向傳播算法兢榨, 可能造成梯度消失的情況,也就學不到東西了
將多次卷積和池化后的圖像展開進行全連接顺饮,如下圖所示吵聪。?
接下來就可以通過BP反向傳播進行訓練了
所以總結起來,結構可以是這樣的?