互相關(guān)運(yùn)算與卷積運(yùn)算
卷積層得名于卷積運(yùn)算,但卷積層中用到的并非卷積運(yùn)算而是互相關(guān)運(yùn)算。我們將核數(shù)組上下翻轉(zhuǎn)、左右翻轉(zhuǎn),再與輸入數(shù)組做互相關(guān)運(yùn)算,這一過(guò)程就是卷積運(yùn)算。由于卷積層的核數(shù)組是可學(xué)習(xí)的,所以使用互相關(guān)運(yùn)算與使用卷積運(yùn)算并無(wú)本質(zhì)區(qū)別。
特征圖與感受野
二維卷積層輸出的二維數(shù)組可以看作是輸入在空間維度(寬和高)上某一級(jí)的表征,也叫特征圖(feature map)。影響元素xx的前向計(jì)算的所有可能輸入?yún)^(qū)域(可能大于輸入的實(shí)際尺寸)叫做xx的感受野(receptive field)。
以圖1為例,輸入中陰影部分的四個(gè)元素是輸出中陰影部分元素的感受野。我們將圖中形狀為2×22×2的輸出記為YY,將YY與另一個(gè)形狀為2×22×2的核數(shù)組做互相關(guān)運(yùn)算,輸出單個(gè)元素zz。那么,zz在YY上的感受野包括YY的全部四個(gè)元素,在輸入上的感受野包括其中全部9個(gè)元素??梢?,我們可以通過(guò)更深的卷積神經(jīng)網(wǎng)絡(luò)使特征圖中單個(gè)元素的感受野變得更加廣闊,從而捕捉輸入上更大尺寸的特征。
填充和步幅
我們介紹卷積層的兩個(gè)超參數(shù),即填充和步幅,它們可以對(duì)給定形狀的輸入和卷積核改變輸出形狀。
填充
填充(padding)是指在輸入高和寬的兩側(cè)填充元素(通常是0元素),圖2里我們?cè)谠斎敫吆蛯挼膬蓚?cè)分別添加了值為0的元素。
圖2 在輸入的高和寬兩側(cè)分別填充了0元素的二維互相關(guān)計(jì)算
如果原輸入的高和寬是nhnh和nwnw,卷積核的高和寬是khkh和kwkw,在高的兩側(cè)一共填充phph行,在寬的兩側(cè)一共填充pwpw列,則輸出形狀為:
(nh+ph?kh+1)×(nw+pw?kw+1)(nh+ph?kh+1)×(nw+pw?kw+1)
我們?cè)诰矸e神經(jīng)網(wǎng)絡(luò)中使用奇數(shù)高寬的核,比如3×33×3,5×55×5的卷積核,對(duì)于高度(或?qū)挾龋榇笮?k+12k+1的核,令步幅為1,在高(或?qū)挘﹥蓚?cè)選擇大小為kk的填充,便可保持輸入與輸出尺寸相同。
步幅
在互相關(guān)運(yùn)算中,卷積核在輸入數(shù)組上滑動(dòng),每次滑動(dòng)的行數(shù)與列數(shù)即是步幅(stride)。此前我們使用的步幅都是1,圖3展示了在高上步幅為3、在寬上步幅為2的二維互相關(guān)運(yùn)算。
圖3 高和寬上步幅分別為3和2的二維互相關(guān)運(yùn)算
一般來(lái)說(shuō),當(dāng)高上步幅為shsh,寬上步幅為swsw時(shí),輸出形狀為:
?(nh+ph?kh+sh)/sh?×?(nw+pw?kw+sw)/sw??(nh+ph?kh+sh)/sh?×?(nw+pw?kw+sw)/sw?
如果ph=kh?1ph=kh?1,pw=kw?1pw=kw?1,那么輸出形狀將簡(jiǎn)化為?(nh+sh?1)/sh?×?(nw+sw?1)/sw??(nh+sh?1)/sh?×?(nw+sw?1)/sw?。更進(jìn)一步,如果輸入的高和寬能分別被高和寬上的步幅整除,那么輸出形狀將是(nh/sh)×(nw/sw)(nh/sh)×(nw/sw)。
當(dāng)ph=pw=pph=pw=p時(shí),我們稱填充為pp;當(dāng)sh=sw=ssh=sw=s時(shí),我們稱步幅為ss。
多輸入通道和多輸出通道
之前的輸入和輸出都是二維數(shù)組,但真實(shí)數(shù)據(jù)的維度經(jīng)常更高。例如,彩色圖像在高和寬2個(gè)維度外還有RGB(紅、綠、藍(lán))3個(gè)顏色通道。假設(shè)彩色圖像的高和寬分別是hh和ww(像素),那么它可以表示為一個(gè)3×h×w3×h×w的多維數(shù)組,我們將大小為3的這一維稱為通道(channel)維。
多輸入通道
卷積層的輸入可以包含多個(gè)通道,圖4展示了一個(gè)含2個(gè)輸入通道的二維互相關(guān)計(jì)算的例子。
圖4 含2個(gè)輸入通道的互相關(guān)計(jì)算
假設(shè)輸入數(shù)據(jù)的通道數(shù)為cici,卷積核形狀為kh×kwkh×kw,我們?yōu)槊總€(gè)輸入通道各分配一個(gè)形狀為kh×kwkh×kw的核數(shù)組,將cici個(gè)互相關(guān)運(yùn)算的二維輸出按通道相加,得到一個(gè)二維數(shù)組作為輸出。我們把cici個(gè)核數(shù)組在通道維上連結(jié),即得到一個(gè)形狀為ci×kh×kwci×kh×kw的卷積核。
多輸出通道
卷積層的輸出也可以包含多個(gè)通道,設(shè)卷積核輸入通道數(shù)和輸出通道數(shù)分別為cici和coco,高和寬分別為khkh和kwkw。如果希望得到含多個(gè)通道的輸出,我們可以為每個(gè)輸出通道分別創(chuàng)建形狀為ci×kh×kwci×kh×kw的核數(shù)組,將它們?cè)谳敵鐾ǖ谰S上連結(jié),卷積核的形狀即co×ci×kh×kwco×ci×kh×kw。
對(duì)于輸出通道的卷積核,我們提供這樣一種理解,一個(gè)ci×kh×kwci×kh×kw的核數(shù)組可以提取某種局部特征,但是輸入可能具有相當(dāng)豐富的特征,我們需要有多個(gè)這樣的ci×kh×kwci×kh×kw的核數(shù)組,不同的核數(shù)組提取的是不同的特征。