卷積的含義
正態(tài)分布
高爾頓板是弗朗西斯·高爾頓發(fā)明的一個(gè)很精巧的裝置絮爷,用來描述正態(tài)分布翼雀,也稱作梅花機(jī)(Quincunx)而姐,或者高爾頓釘板。工作原理是從入口處放進(jìn)一個(gè)直徑略小于兩顆釘子之間的距離的小圓玻璃球芙粱,當(dāng)小圓球向下降落過程中祭玉,碰到釘子后皆以1/2的概率向左或向右滾下,于是又碰到下一層釘子春畔。如此繼續(xù)下去脱货,直到滾到底板的一個(gè)格子內(nèi)為止。把許許多多同樣大小的小球不斷從入口處放下拐迁,只要球的數(shù)目相當(dāng)大蹭劈,它們?cè)诘装鍖⒍殉山朴谡龖B(tài)分布(也稱鐘型分布)的密度函數(shù)圖形。
卷積
以上面的高爾頓板為例线召,假設(shè)我們從高處放下一個(gè)小球铺韧,它下落后走出距離c的概率為多少呢?我們將這個(gè)行為進(jìn)行分解(如下圖)缓淹,如果小球下落后首先走出距離a哈打,然后以這個(gè)為起點(diǎn)再進(jìn)行一次下放塔逃,小球走出了距離b,那么兩次操作后小球總共走的距離為a+b=c料仗,所以得到距離c的概率應(yīng)該為 f(a)?g(b)(兩個(gè)獨(dú)立事件)湾盗。
讓我們列舉更具體的示例,假設(shè)我們想要的距離是3立轧,第一次下落走了a=1格粪,第二次下落走了b=2,所以總距離為3的概率為f(1)?g(2)氛改;但這種情況并非是唯一能達(dá)到總距離為3的情況帐萎,我們只要簡(jiǎn)單想想就能知道達(dá)到總距離為3的情況其實(shí)還有很多種,比如第一次a=0胜卤,第二次b=3疆导,如下圖:
但還有很多其它的可能,所以要得到距離為3的概率葛躏,我們需要考慮到所有可能的情況澈段,然后加總起來:
... f(0)?g(3) + f(1)?g(2) + f(2)?g(1) ...
這其實(shí)就是多項(xiàng)式求和,如果以向量表示就是求向量的內(nèi)積(或稱點(diǎn)積)舰攒,到這里我們就會(huì)發(fā)現(xiàn)往下推導(dǎo)出來的公式其實(shí)就是卷積的標(biāo)準(zhǔn)公式了败富;卷積其實(shí)與積分很類似,本質(zhì)都是一種求和芒率。
卷積在圖像處理中的作用
卷積公式同樣適用于高維數(shù)據(jù)囤耳,圖像數(shù)據(jù)可以看成是一個(gè)二維函數(shù),許多圖像處理操作都用到卷積偶芍,將圖像中某個(gè)區(qū)域的像素?cái)?shù)據(jù)與一個(gè)稱為卷積核的函數(shù)進(jìn)行卷積,就能對(duì)該區(qū)域進(jìn)行一些特殊處理德玫。
模糊化圖像
例如對(duì)圖像數(shù)據(jù)平均乘以1/9匪蟀,可以將圖像模糊化,使用以下卷積核:
找輪廓(定位邊界)
又例如通過對(duì)相鄰的像素點(diǎn)取反宰僧,而清零其它區(qū)域材彪,可以用來檢測(cè)和定位圖像中的輪廓,使用以下卷積核:
CNN中的卷積運(yùn)算
卷積網(wǎng)絡(luò)結(jié)構(gòu)
上圖我們可以看到卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)琴儿,卷積層中由多個(gè)特征矩陣堆疊構(gòu)成段化,卷積層進(jìn)行的處理就是卷積運(yùn)算,也相當(dāng)于圖像處理中的“濾波器運(yùn)算”造成,進(jìn)行特征提取显熏。卷積層的每個(gè)特征矩陣我們稱為深度切片,如果在一個(gè)深度切片中的所有權(quán)重都使用同一個(gè)權(quán)重向量晒屎,那么卷積層的前向傳播在每個(gè)深度切片中可以看做是在計(jì)算神經(jīng)元權(quán)重和輸入數(shù)據(jù)體的卷積(這就是“卷積層”名字由來)喘蟆。這也是為什么總是將這些權(quán)重集合稱為濾波器(filter)(或卷積核(kernel))缓升,因?yàn)樗鼈兒洼斎脒M(jìn)行了卷積。如下圖為對(duì)輸入圖像數(shù)據(jù)進(jìn)行的卷積處理操作:
卷積與矩陣運(yùn)算之間的關(guān)系
用矩陣乘法實(shí)現(xiàn):卷積運(yùn)算本質(zhì)上就是在濾波器和輸入數(shù)據(jù)的局部區(qū)域間做點(diǎn)積蕴轨。在神經(jīng)網(wǎng)絡(luò)中為了快速地進(jìn)行卷積層運(yùn)算港谊,卷積層的常用實(shí)現(xiàn)方式就利用了點(diǎn)積的特點(diǎn),將卷積層的前向傳播變成一個(gè)巨大的矩陣乘法:
-
對(duì)輸入數(shù)據(jù)的處理
在輸入數(shù)據(jù)上橙弱,根據(jù)卷積核大小歧寺,將圖像數(shù)據(jù)三個(gè)通道依次展開為一維數(shù)組,然后再連接為一個(gè)長(zhǎng)的一維數(shù)組棘脐,再根據(jù)步幅斜筐,將輸入數(shù)據(jù)中每個(gè)應(yīng)用卷積核的地方都生成一個(gè)一維數(shù)組:
- 對(duì)卷積核的處理
- 矩陣計(jì)算
輸入圖像的局部區(qū)域被im2col操作拉伸為行。比如荆残,如果輸入是[227x227x3]奴艾,要與尺寸為11x11x3的濾波器以步長(zhǎng)為4進(jìn)行卷積,就取輸入中的[11x11x3]數(shù)據(jù)塊内斯,然后將其拉伸為長(zhǎng)度為11x11x3=363的行向量蕴潦。重復(fù)進(jìn)行這一過程,因?yàn)椴介L(zhǎng)為4俘闯,所以輸出的寬高為(227-11)/4+1=55液斜,所以得到im2col操作的輸出矩陣X_col的尺寸是[363x3025],其中每行是拉伸的感受野焰坪,共有55x55=3,025個(gè)燃领。注意因?yàn)?strong>感受野之間有重疊,所以輸入數(shù)據(jù)體中的數(shù)字在不同的行中可能有重復(fù)遮婶。
卷積層的權(quán)重也同樣被拉伸成列蝗碎。舉例,如果有96個(gè)尺寸為[11x11x3]的濾波器旗扑,就生成一個(gè)矩陣W_row蹦骑,尺寸為[96x363]。
現(xiàn)在卷積的結(jié)果和進(jìn)行一個(gè)大矩陣乘np.dot(W_row, X_col)是等價(jià)的了臀防,能得到每個(gè)濾波器和每個(gè)感受野間的點(diǎn)積眠菇。在我們的例子中,這個(gè)操作的輸出是[96x3025]袱衷,給出了每個(gè)濾波器在每個(gè)位置的點(diǎn)積輸出捎废。
結(jié)果最后必須被重新變?yōu)楹侠淼妮敵龀叽鏪55x55x96]。