卷積函數至少有三層含意,第一層涵義可把卷積看成「不穩定輸入和穩定輸出求系統存量」。用一個例子來舉例的話可想像成假設一個人不停地進食。
上圖 f 函數定義為每個時間點進食的量,g 函數定義為該食物進食之後經過消化在胃裡所剩餘的食物量。假設上圖的 x 時刻是 12 點,t 時刻是 14 點。在 12 點吃了一碗米飯,在 14 點時這碗米飯在胃裡的剩餘量是 f(12)g(14–12). 把每個時間點的胃裡的食物加起來就是上圖右下角的積分, 也是卷積的公式。
f 函數可以理解為「不穩定的輸入」,好比這個例子,在哪個時間點進食多少並不一定;g 函數可理解為「穩定的輸出」,這個例子表明此食物在進食之後的某個時間點會固定剩下多少食物在胃裡。卷積公式則是可以求得系統的存量,在這個例子來說就是求得整個胃裡食物的存量。
上圖 f 函數在 T 時刻進食此食物在胃裡的存量對應到的是 g 函數的起始位置,也就是尚未開始消化。
上圖多了一個時刻的位移,表示在 T 時刻的前一刻,譬如說在 T 時刻前 5 分鐘進食,到達 T 時刻後對應到的 g 函數的位置,也就是在 T 時刻前五分鐘吃進去的食物,在 T 時刻此食物在胃裡的存量。
最後把所有時刻的值都加起來,也就是算積分,就會是我們要的結果,與積分公式唯一不同的是積分的上下界。
把 g 函數翻轉得到上圖。或許這樣翻轉的動作就是卷積函數名稱的由來。
卷積神經網路一般是用來做圖像識別,卷積的第二層涵義是圖像處理時,一個卷積核定義了周圍像素點對當前像素點會產生什麼影響。舉例來說平滑卷積核是在求平均值,讓周圍的像素點不要和自己相差太大,下圖可看到經過圖片平滑卷積核的操作所呈現的視覺效果。
除了平滑卷積核,還有其他的卷積核可選擇。如下圖所示,兩個不同的卷積核可分別篩選出圖片的垂直和水平特徵。
圖像對卷積核的相乘再相加,可看作是周圍像素點對當前像素點的影響,也可視為當前像素點對周圍像素點的試探,卷積核就是試探的模板,當你不想考慮某個位置的時候,就可以設為 0,若是想強調某個位置則可以提高它的數值透過卷積核把需要的特徵保留下來。
如此一來卷積核挑選得合適就可以對圖片進行過濾,把圖片的某些特徵保留下來,這樣的卷積核就叫過濾器。
所以卷積的第三層含意是過濾器,也就是篩選圖像的特徵。
上圖藉由人眼可輕易辨識出兩者都是「X」這樣的符號。但對電腦而言若是將每個像素點逐一比較的話會被判定是不同圖形。分析圖片的局部其實可找到相同的特徵。卷積神經網路的第一步就是把圖像的局部挑出來。
可利用以下這個三個卷積核把上圖框出的三個特徵找出來。
提取局部特徵的方法就是對圖像做卷積操作。
對所有的像素作用產生新的矩陣就包含了這個特徵匹配的全部信息。
神經網路透過這些信息判斷就可以開始進行圖像識別了。
參考資料: