深度學習

卷積(convolution)

/ kon-vuh-LOO-shun /

「卷積」這個詞聽著唬人,做的事卻很簡單:把一塊小模板在一幅大圖上滑動,每停一處,就看看底下那一小塊與模板上的圖案有多吻合。想像一張透明的小卡片,上面畫著一道斜線。你讓它在照片上滑過;凡是照片裡也有斜線的地方,卡片就亮起來;其餘地方則暗淡無光。把這件事滑遍整張圖,你就得到一幅新圖,顯示出那一種圖案出現在哪些位置。

說得更準一點,這塊小模板叫作濾鏡(或稱卷積核),其實就是一個小小的數字方格,常見的是 3×3 或 5×5。在每個位置上,你把濾鏡裡的數字與它下面的像素值相乘,再把結果加成一個數。往旁邊滑一步,重複一遍。所有這些輸出數字組成的方格,就是卷積的結果,它把某一種特徵——一道邊緣、一團模糊、某種紋理——出現的每一處都標了出來。在深度網路裡,濾鏡裡的數字不是由人挑的,而是在訓練中學出來的,於是網路自己琢磨出哪些圖案值得去偵測。

有兩點讓卷積在處理影像時特別強大。第一,同一塊濾鏡在每個位置上都重複使用,於是一種圖案無論出現在哪裡都能被認出——這一性質叫作「平移等變性」,它意味著要學的數字比「把每個像素都連到所有東西」少得多。第二,每塊濾鏡只看一小片鄰域,這正合「相鄰的像素才構成邊緣和形狀」這個事實。要老實說出它的侷限:卷積內置了一個假設——局部的、與位置無關的圖案最要緊。這個假設對照片和聲音是金科玉律,但對那些沒有這種網格狀鄰域結構的資料,就並不合身了。

一個 3×3 的豎直邊緣濾鏡,左列全是 +1,中列全是 0,右列全是 −1。把它滑過一張照片,凡是左暗右亮的地方,它都會給出一個很大的數——從而標出每一條豎直邊緣。

一個小小的數字方格,滑遍全圖,搜尋同一種圖案。

把一塊小濾鏡在各處重複使用,正是讓卷積既省又能不分位置地認出圖案的訣竅——比起普通全連接網路那樣「把每個像素都接到每個神經元」,要划算得多。

又稱
卷积运算卷積運算convolution operationfiltering