新聞中心
上篇文章中我們講解了卷積神經(jīng)網(wǎng)絡(luò)的基本原理,包括幾個(gè)基本層的定義、運(yùn)算規(guī)則等。本文主要寫卷積神經(jīng)網(wǎng)絡(luò)如何進(jìn)行一次完整的訓(xùn)練,包括前向傳播和反向傳播,并自己手寫一個(gè)卷積神經(jīng)網(wǎng)絡(luò)。如果不了解基本原理的,可以先看看上篇文章:【深度學(xué)習(xí)系列】卷積神經(jīng)網(wǎng)絡(luò)CNN原理詳解(一)——基本原理

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出麻章免費(fèi)做網(wǎng)站回饋大家。
卷積神經(jīng)網(wǎng)絡(luò)的前向傳播
首先我們來(lái)看一個(gè)最簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò):
1. 輸入層---->卷積層
以上一節(jié)的例子為例,輸入是一個(gè)4*4 的image,經(jīng)過(guò)兩個(gè)2*2的卷積核進(jìn)行卷積運(yùn)算后,變成兩個(gè)3*3的feature_map
以卷積核filter1為例(stride = 1 ):
計(jì)算第一個(gè)卷積層神經(jīng)元o11的輸入:
neto11=conv(input,filter)=i11×h11+i12×h12+i21×h21+i22×h22=1×1+0×(?1)+1×1+1×(?1)=1(1)(1) neto11=conv(input,filter)=i11×h11+i12×h12+i21×h21+i22×h22=1×1+0×(?1)+1×1+1×(?1)=1
神經(jīng)元o11的輸出:(此處使用Relu激活函數(shù))
outo11=activators(neto11)=max(0,neto11)=1(2)(2)outo11=activators(neto11)=max(0,neto11)=1
其他神經(jīng)元計(jì)算方式相同
2. 卷積層---->池化層
計(jì)算池化層m11 的輸入(取窗口為 2 * 2),池化層沒(méi)有激活函數(shù)
netm11=max(o11,o12,o21,o22)=1outm11=netm11=1(3)(3)netm11=max(o11,o12,o21,o22)=1outm11=netm11=1
3. 池化層---->全連接層
池化層的輸出到flatten層把所有元素“拍平”,然后到全連接層。
4.全連接層---->輸出層
全連接層到輸出層就是正常的神經(jīng)元與神經(jīng)元之間的鄰接相連,通過(guò)softmax函數(shù)計(jì)算后輸出到output,得到不同類別的概率值,輸出概率值最大的即為該圖片的類別。
卷積神經(jīng)網(wǎng)絡(luò)的反向傳播
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)是全連接形式的,如果進(jìn)行反向傳播,只需要由下一層對(duì)前一層不斷的求偏導(dǎo),即求鏈?zhǔn)狡珜?dǎo)就可以求出每一層的誤差敏感項(xiàng),然后求出權(quán)重和偏置項(xiàng)的梯度,即可更新權(quán)重。而卷積神經(jīng)網(wǎng)絡(luò)有兩個(gè)特殊的層:卷積層和池化層。池化層輸出時(shí)不需要經(jīng)過(guò)激活函數(shù),是一個(gè)滑動(dòng)窗口的最大值,一個(gè)常數(shù),那么它的偏導(dǎo)是1。池化層相當(dāng)于對(duì)上層圖片做了一個(gè)壓縮,這個(gè)反向求誤差敏感項(xiàng)時(shí)與傳統(tǒng)的反向傳播方式不同。從卷積后的feature_map反向傳播到前一層時(shí),由于前向傳播時(shí)是通過(guò)卷積核做卷積運(yùn)算得到的feature_map,所以反向傳播與傳統(tǒng)的也不一樣,需要更新卷積核的參數(shù)。下面我們介紹一下池化層和卷積層是如何做反向傳播的。
在介紹之前,首先回顧一下傳統(tǒng)的反向傳播方法:
1.通過(guò)前向傳播計(jì)算每一層的輸入值neti,jneti,j (如卷積后的feature_map的第一個(gè)神經(jīng)元的輸入:neti11neti11)
2.反向傳播計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng)δi,jδi,j ,δi,j=?E?neti,jδi,j=?E?neti,j,其中E為損失函數(shù)計(jì)算得到的總體誤差,可以用平方差,交叉熵等表示。
3.計(jì)算每個(gè)神經(jīng)元權(quán)重wi,jwi,j 的梯度,ηi,j=?E?neti,j??neti,j?wi,j=δi,j?outi,jηi,j=?E?neti,j??neti,j?wi,j=δi,j?outi,j
4.更新權(quán)重 wi,j=wi,j?λ?ηi,jwi,j=wi,j?λ?ηi,j(其中λλ為學(xué)習(xí)率)
卷積層的反向傳播
由前向傳播可得:
i11 neto11outo11=outi11=activators(neti11)=conv(input,filter)=i11×h11+i12×h12+i21×h21+i22×h22=activators(neto11)=max(0,neto11)(4)(4) i11=outi11=activators(neti11) neto11=conv(input,filter)=i11×h11+i12×h12+i21×h21+i22×h22outo11=activators(neto11)=max(0,neto11)
neti11neti11表示上一層的輸入,outo11outo11表示上一層的輸出
首先計(jì)算卷積的上一層的第一個(gè)元素i11i11的誤差項(xiàng)δ11δ11:
δ11=?E?neti11=?E?i11??i11?neti11δ11=?E?neti11=?E?i11??i11?neti11 (注意這里是
neti11neti11,因?yàn)?br />i11=f(neti11)i11=f(neti11),f表示激活函數(shù),不是
neto11neto11)
注:原來(lái)這里寫的是計(jì)算輸入層的誤差項(xiàng)是不準(zhǔn)確的,這里的i11i11表示的是卷積層的上一層即可。
先計(jì)算?E?i11?E?i11
此處我們并不清楚?E?i11?E?i11怎么算,那可以先把input層通過(guò)卷積核做完卷積運(yùn)算后的輸出feature_map寫出來(lái):
neto11=i11×h11+i12×h12+i21×h21+i22×h22neto12=i12×h11+i13×h12+i22×h21+i23×h22neto12=i13×h11+i14×h12+i23×h21+i24×h22neto21=i21×h11+i22×h12+i31×h21+i32×h22neto22=i22×h11+i23×h12+i32×h21+i33×h22neto23=i23×h11+i24×h12+i33×h21+i34×h22neto31=i31×h11+i32×h12+i41×h21+i42×h22neto32=i32×h11+i33×h12+i42×h21+i43×h22neto33=i33×h11+i34×h12+i43×h21+i44×h22(5)(5)neto11=i11×h11+i12×h12+i21×h21+i22×h22neto12=i12×h11+i13×h12+i22×h21+i23×h22neto12=i13×h11+i14×h12+i23×h21+i24×h22neto21=i21×h11+i22×h12+i31×h21+i32×h22neto22=i22×h11+i23×h12+i32×h21+i33×h22neto23=i23×h11+i24×h12+i33×h21+i34×h22neto31=i31×h11+i32×h12+i41×h21+i42×h22neto32=i32×h11+i33×h12+i42×h21+i43×h22neto33=i33×h11+i34×h12+i43×h21+i44×h22
然后依次對(duì)輸入元素ii,jii,j求偏導(dǎo)
i11i11的偏導(dǎo):
?E?i11=?E?neto11??neto11?i11=δ11?h11(6)(6)?E?i11=?E?neto11??neto11?i11=δ11?h11
i12i12的偏導(dǎo):
?E?i12=?E?neto11??neto11?i12+?E?neto12??neto12?i12=δ11?h12+δ12?h11(7)(7)?E?i12=?E?neto11??neto11?i12+?E?neto12??neto12?i12=δ11?h12+δ12?h11
i13i13的偏導(dǎo):
?E?i13=?E?neto12??neto12?i13+?E?neto13??neto13?i13=δ12?h12+δ13?h11(8)(8)?E?i13=?E?neto12??neto12?i13+?E?neto13??neto13?i13=δ12?h12+δ13?h11
i21i21的偏導(dǎo):
?E?i21=?E?neto11??neto11?i21+?E?neto21??neto21?i21=δ11?h21+δ21?h11(9)(9)?E?i21=?E?neto11??neto11?i21+?E?neto21??neto21?i21=δ11?h21+δ21?h11
i22i22的偏導(dǎo):
?E?i22=?E?neto11??neto11?i22+?E?neto12??neto12?i22+?E?neto21??neto21?i22+?E?neto22??neto22?i22=δ11?h22+δ12?h21+δ21?h12+δ22?h11(10)(10)?E?i22=?E?neto11??neto11?i22+?E?neto12??neto12?i22+?E?neto21??neto21?i22+?E?neto22??neto22?i22=δ11?h22+δ12?h21+δ21?h12+δ22?h11
觀察一下上面幾個(gè)式子的規(guī)律,歸納一下,可以得到如下表達(dá)式:
????????000000δ11δ21δ3100δ12δ22δ3200δ13δ23δ33000000?????????[h22h12h21h11]=??????????E?i11?E?i21?E?i31?E?i41?E?i12?E?i22?E?i32?E?i42?E?i13?E?i23?E?i33?E?i43?E?i14?E?i24?E?i34?E?i44?????????(11)(11)[000000δ11δ12δ1300δ21δ22δ2300δ31δ32δ33000000]?[h22h21h12h11]=[?E?i11?E?i12?E?i13?E?i14?E?i21?E?i22?E?i23?E?i24?E?i31?E?i32?E?i33?E?i34?E?i41?E?i42?E?i43?E?i44]
圖中的卷積核進(jìn)行了180°翻轉(zhuǎn),與這一層的誤差敏感項(xiàng)矩陣deltai,j)deltai,j)周圍補(bǔ)零后的矩陣做卷積運(yùn)算后,就可以得到?E?i11?E?i11,即
?E?ii,j=∑m?∑nhm,nδi+m,j+n?E?ii,j=∑m?∑nhm,nδi+m,j+n
第一項(xiàng)求完后,我們來(lái)求第二項(xiàng)?i11?neti11?i11?neti11
∵i11∴?i11?neti11∴δ11=outi11=activators(neti11)=f′(neti11)=?E?neto11=?E?i11??i11?neti11=∑m?∑nhm,nδi+m,j+n?f′(neti11)(12)(12)∵i11=outi11=activators(neti11)∴?i11?neti11=f′(neti11)∴δ11=?E?neto11=?E?i11??i11?neti11=∑m?∑nhm,nδi+m,j+n?f′(neti11)
此時(shí)我們的誤差敏感矩陣就求完了,得到誤差敏感矩陣后,即可求權(quán)重的梯度。
由于上面已經(jīng)寫出了卷積層的輸入neto11neto11與權(quán)重hi,jhi,j之間的表達(dá)式,所以可以直接求出:
?E?h11=?E?neto11??neto11?h11+...+?E?neto33??neto33?h11=δ11?h11+...+δ33?h11(13)(13)?E?h11=?E?neto11??neto11?h11+...+?E?neto33??neto33?h11=δ11?h11+...+δ33?h11
推論出權(quán)重的梯度:
?E?hi,j=∑m∑nδm,noutoi+m,j+n(14)(14)?E?hi,j=∑m∑nδm,noutoi+m,j+n
偏置項(xiàng)的梯度:
?E?b=?E?neto11?neto11?wb+?E?neto12
文章題目:【深度學(xué)習(xí)系列】卷積神經(jīng)網(wǎng)絡(luò)詳解(二)——自己手寫一個(gè)卷積神經(jīng)網(wǎng)絡(luò)
網(wǎng)頁(yè)網(wǎng)址:http://www.fisionsoft.com.cn/article/cccdpop.html


咨詢
建站咨詢
