日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CNN公式推导

發(fā)布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CNN公式推导 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


CNN公式推導(dǎo)

1 前言

???????? 在看此blog之前,請確保已經(jīng)看懂我的前兩篇blog【深度學(xué)習(xí)筆記1(卷積神經(jīng)網(wǎng)絡(luò))】和【BP算法與公式推導(dǎo)】。并且已經(jīng)看過文獻[1]的論文【Notes on Convolutional Neural Networks】。因為本文就是講解文獻[1]論文前部分公式的推導(dǎo)過程<這里有一個假設(shè),或許公式是錯誤的,如有好的理解請留言>。


2 CNN公式推導(dǎo)

???????? 卷積神經(jīng)網(wǎng)絡(luò)參數(shù)求解的過程與上次筆記【BP算法與公式推導(dǎo)】類似,但是在形式上還是有變化的。文獻[1]的論文直接給出了參數(shù)求解的公式,主要包括:卷積層和subsampling層的殘差以及對應(yīng)的對權(quán)重參數(shù)和偏置參數(shù)的導(dǎo)數(shù)。

注意:這里的卷積核參數(shù)所放在的層與殘差放在了同一層,和上次筆記略有不同,但是沒有影響!


2.1 卷積層:

2.1.1 卷積計算

???????? 假設(shè)第l層為卷積層,第l+1層為subsampling層,則第l層第j個feature map的計算公式如下:


???????? 上面的*號實質(zhì)是讓卷積核k在第l-1層所有關(guān)聯(lián)的feature maps上做卷積運算,然后求和,再加上一個偏置參數(shù),取sigmoid得到最終激勵值的過程。

例子:假設(shè)第l-1層只有兩個feature map,大小為4*4像素。

????? ? ??

一個卷積核K(二維卷積核K11和K12),大小為2*2。

????? ?

則計算第l層的一個feature map結(jié)果如下,大小為3*3像素:



注意:在matlab中可以用convn函數(shù)來實現(xiàn)卷積,如:

image = convn(im, kernel, ‘valid’); 其中計算的過程會先將kernel反轉(zhuǎn)180度,再與im做卷積操作。


因此本文中我們舉例子用的卷積核2*2大小是已經(jīng)旋轉(zhuǎn)180度后的,即


2.1.2 殘差計算

???????? BP算法中殘差計算等于第l+1層與其連接的所有結(jié)點的權(quán)值和殘差的加權(quán)和再乘以該點對z的導(dǎo)數(shù)值。卷積層的下一層是subsampling層,采用的是一對一非重疊采樣,故殘差計算更為簡單。

???????? 第l層第j個feature map的殘差計算公式如下:


其中第l層為卷積層,第l+1層為subsampling層,subsampling層與卷積層是一一對應(yīng)的。其中up(x)是將第l+1層的大小擴展為和第l層大小一樣。舉個簡單的例子,假如第l+1層為2*2的,subsampling的采樣大小為2*2,其中第l+1層的一個feature map所對應(yīng)的殘差為:


那么擴展之后就變?yōu)榱?/p>

直觀上的理解:由于是一對一采樣,故擴展之后第l層的每個節(jié)點只對應(yīng)第l+1層唯一的一個結(jié)點,按照BP算法殘差計算公式可以得出:第l層某結(jié)點殘差就等于權(quán)值w乘以第l+1層對應(yīng)節(jié)點殘差值再乘以f(z)的導(dǎo)數(shù),公式僅僅是矢量化的形式。

?

2.1.3 梯度計算

(1) 論文中給出了偏置參數(shù)b的導(dǎo)數(shù),公式為:


下面我們給出推導(dǎo)公式,(其中第2行到第3行用到了假設(shè),因為這里的zjlbjl都是矩陣,沒有矩陣對矩陣求導(dǎo),這里給出了一個求和公式。我也解釋不了是否正確,有知道的可以留言!)其中njl為第l層第j個feature map中點的個數(shù)。


(2) 論文中給出了偏置參數(shù)k的導(dǎo)數(shù),其中kijl表示第l層第j個feature map與第l-1層第i個feature map相連所對應(yīng)的kernel,是一個矩陣:


公式推導(dǎo)如下:


這里我們給出例子:比如卷積層為3*3的大小,卷積核的大小為2*2上一層feature map大小為4*4






論文中給出其matlab代碼:


由于matlab中先要反轉(zhuǎn)180度,故代碼中先對殘差旋轉(zhuǎn)180度,得到的結(jié)果是, 要想得到最后的結(jié)果K, 故對其結(jié)果再旋轉(zhuǎn)180度。

?

2.2 ?subsampling層:

2.2.1卷積計算

???????? 設(shè)第l層為subsampling層,第l-1為卷積層,由于是一對一采樣,假設(shè)采樣大小為2*2,故計算公式為:


這里的down(x)是將x中2*2的大小中像素值進行求和。計算過程為對上一層卷積層2*2大小進行求和然后乘以權(quán)重w,再加上一個偏置,再求取sigmoid函數(shù)。

?

2.2.2 殘差計算

論文中給出了殘差的計算公式:


其中第l層為subsampling層,第l+1層為卷積層。

直觀上的理解:如下圖:左邊為subsampling層的一個featuremap,右邊是卷積層的一個feature map,

?比如對于當(dāng)前結(jié)點中的7號結(jié)點,其與下一層的連接方式為{k22, 2; k21,3; k12, 5; k11, 6}(這里可以用筆簡單畫下就計算出來了)。故根據(jù)bp算法中殘差計算方法等于第l+1層與其連接的所有結(jié)點的權(quán)值和殘差的加權(quán)和再乘以該點對z的導(dǎo)數(shù)值,就相當(dāng)于用卷積核 直接在下一層卷積層的殘差上做卷積運算,方式為full類型,也就得到公式中的形式,由于matlab自帶的卷積函數(shù)會先旋轉(zhuǎn)對K旋轉(zhuǎn)180度,故我們需要先對其旋轉(zhuǎn)180度,再計算卷積。(當(dāng)然我認為這里的公式有點偏差,的下標(biāo)不應(yīng)該用j,而是用i,而且需要對第l+1層中所有的與該subsampling相連接的featuremap最后的結(jié)果求和—源碼中的確是這樣的。)

?

2.2.2 梯度計算

(1) 偏置b的導(dǎo)數(shù),其公式的推導(dǎo)過程與卷積層是一樣的的。

(2) 權(quán)重w的導(dǎo)數(shù),論文給出的公式如下:



公式推導(dǎo)如下:


這里我們給出一個例子:比如subsampling層feature map大小為2*2,則其上一層卷積層feature map的大小為4*4,如下所示,計算過程為對上一層卷積層2*2大小進行求和然后乘以權(quán)重w,再加上一個偏置,再求取sigmoid函數(shù)。(其中1,2,3,4只是一個標(biāo)號,不是具體的值)

則計算過程為:

wjl = d11*{1+2+3+4} +d12*{5+6+7+8} + d21*{9+10+11+12} + d22*{13+14+15+16}。與公式相符。

注意:公式推導(dǎo)中有一個不那么正確的假設(shè),但有了這個假設(shè),一切結(jié)論都是成立的,這個結(jié)論或許超出了我數(shù)學(xué)的海拔高度,有正確解法的可以留言,謝謝!

?

參考文獻:

1:原始論文:Notes onConvolutional Neural Networks http://cogprints.org/5869/1/cnn_tutorial.pdf

2: 論文翻譯參看:http://blog.csdn.net/zouxy09/article/details/9993371

3:如何正確使用論文中公式(附帶小例子)見:http://www.cnblogs.com/tornadomeet/p/3468450.html

總結(jié)

以上是生活随笔為你收集整理的CNN公式推导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。