我對卷積的理解

本文轉載自個人博客html


在學習機器學習和圖像處理的過程當中,常常會遇到卷積這個概念。我每次遇到這個概念都有點似懂非懂的樣子。有時候清楚它的直觀解釋,但又搞不清公式中是如何體現的。究其緣由,仍是我沒有徹底搞懂這個概念。git

維基百科上有一個動態圖來演示這個概念,但對於我來講仍是有些複雜。因而本身在網上找了不少文章來研究,終於有了比較直觀的印象,這裏就趁熱把我理解的解釋一下,做爲總結。github

1、一維卷積

1.1 數學定義

維基百科上,卷積的形式化定義以下:app

$$ f(x)*g(x) = \int_{-\infty}^{\infty} f(\tau)g(x-\tau) d\tau \tag{1}\label{1} $$機器學習

1.2 初步解釋

先來分析一下這個公式:函數

  1. $f(x)*g(x)$ 表示 $f(x)$ 和 $g(x)$ 的卷積,注意此處自變量爲 $x$;post

  2. 它是對 $(-\infty, \infty)$ 區間上對 $\tau$ 求積分;學習

  3. 積分對象爲兩個函數的乘積:$f(\tau)$ 和 $g(x-\tau)$。spa

  4. 等式右邊只有 $g(x-\tau)$ 提到了 $x$,其餘部分都在關注 $\tau$rest

這樣一個公式恐怕仍是難以理解,接下來將經過一個例子來進行解釋。

1.3 例子

試想小明有一段時間天天都要去輸液,輸的藥會在身體裏殘留直至失效,藥效隨着時間是不斷衰落的。 這裏爲簡便起見,假設藥效 4 天就失效,並且藥效持續函數是離散的。以下圖所示:

藥效持續函數

圖中,橫座標爲天數,縱座標爲藥效。輸液當天(day=0)藥效爲 100%,次日減弱爲 80%,第三天減弱爲 40%,第四天減弱爲 0。

如今先定義一些符號:
記天數爲 $t$,天天輸液的藥量爲 $\operatorname{m}(t)$, 藥效函數爲 $\operatorname{eff}(t)$,小明身上殘留的藥效爲 $\operatorname{rest}(t)$
其中藥效函數:

$$\operatorname{eff}(t) =
\begin{cases} 100 \% & \text{t=0} \\\
80 \% & \text{t=1} \\\
40 \% & \text{t=2} \\\
0 \% & \text{t>=3} \end{cases} \\\
$$

下面觀察一下小明從第一天起,連續三天輸液後身上所留下的藥效(假設天天藥量固定爲10)。

  • 第一天,小明去醫院輸完液後,藥效爲 10($ \operatorname{rest}(t) = \operatorname{m}(t)\cdot \operatorname{eff}(0) $)。

第一天累積的藥效示意
第一天累積的藥效示意

  • 次日,小明去醫院準備輸液

    • 輸液前,他身上帶着前一天的藥效,此時已經衰減爲 10$\cdot$ 80%=8,即 $ \operatorname{m}(t-1)\cdot \operatorname{eff}(1) $。

    • 輸液後,他身上攜帶的藥效爲:8 + 10 = 18($ \operatorname{rest}(t) = \operatorname{m}(t-1)\cdot \operatorname{eff}(1) + \operatorname{m}(t)\cdot \operatorname{eff}(0) $)

次日累積的藥效示意
次日累積的藥效示意

  • 第三天,小明去醫院準備輸液

    • 輸液前,他身上帶着前兩天的藥效,第一天的此時已衰減爲 10$\cdot$ 40%=4($ \operatorname{m}(t-2)\cdot \operatorname{eff}(2) $),次日的此時衰減爲 10$\cdot$ 80%=8($ \operatorname{m}(t-1)\cdot \operatorname{eff}(1) $)。

    • 輸液後,他身上攜帶的藥效爲:4 + 8 + 10 = 22($ \operatorname{rest}(t) = \operatorname{m}(t-2)\cdot \operatorname{eff}(2) + \operatorname{m}(t-1)\cdot \operatorname{eff}(1) + \operatorname{m}(t)\cdot \operatorname{eff}(0) $)。

第三天累積的藥效示意
第三天累積的藥效示意

1.4 分析

從上面的分析咱們能夠獲得,小明第 t 天身上殘留的藥效 $\operatorname{rest}(t) = \sum_{i=1}^n \operatorname{m}(t-i) \operatorname{eff}(i)$,其中 $n$ 爲藥效有效的最大天數。 咱們不難想象,但藥效函數 $\operatorname{eff}(t)$ 爲連續時,上式中的求和就應改成積分;而當藥效能無限期有效時,上式中 $n$ 就爲 $\infty$。 無限期有效的藥效函數,所對應的 $\operatorname{rest}(t) = \int_{-\infty}^\infty \operatorname{m}(t-\tau) \operatorname{eff}(\tau) \,d\tau$(本例中嚴格來講應該是 $\int_0^\infty$ ,這裏推廣到了 $(-\infty, \infty)$)。推導到這裏,基本就是維基百科上卷積的定義了。

1.5 總結

我以前對卷積概念的困惑主要是由於對公式 $\ref{1}$ 的那個 $\tau$ 的意義理解錯了,總覺得 $\tau$ 是隨着座標軸變化的量。 事實上,在上面舉的例子中,$\tau$ 是做爲沿着縱座標遍歷的量:它的做用是對「縱向」上,歷次函數 $\operatorname{eff}(t)$ 在當前點($t$)殘餘量($\operatorname{rest}(t)$)的求和。積分也是對縱向上的積分,而非橫向上沿自變量的積分

橫座標變化的量始終爲 $t$,並且在卷積中並無明顯體現出 $t$ 的變化。

最後從新回顧一下上面的整個過程:

比較三天以來的示意圖能夠發現,若是咱們以「當天」而不是第 $t$ 天爲參考的話,就會看到 $\operatorname{eff}(t)$ 隨着時間是在向左平移(深藍的線表示當天,前幾天的線都在其左邊),而後各天衰落後的藥量殘餘等於 $\operatorname{eff}(t)$ 值乘上初始的藥量值,最後將各天的藥量殘餘求個和。

整個過程的核心就是「(反轉),移動,乘積,求和」,這裏面「反轉」的概念也好理解,就是原本 $\operatorname{eff}(t)$ 是「朝着右邊」走的函數,$t=0,t=1,\cdots$,$\operatorname{eff}(t)$ 是形容t 天后的藥量的,然而實際例子中咱們是以當天爲參考系,咱們是在「朝着左邊」看的,於是要「反轉」。我認爲這個「反轉」是一個很天然的過程,不算是整個卷積的核心。 此外,在計算機領域,至少我接觸到的圖像處理、機器學習方面用到的卷積,其卷積核(就是例子中不斷平移的函數 $\operatorname{eff}(t)$)通常是對稱的,因此這個反轉的概念也不是那麼必要。

2、二維卷積

2.1 數學定義

$$ f(x, y)* g(x, y) = \int_{\tau_1=-\infty}^\infty \int_{\tau_2=-\infty}^{\infty} f(\tau_1, \tau_2) \cdot g(x-\tau_1, y-\tau_2)\,d\tau_1 d\tau_2 \tag{2} $$

二維卷積在圖像處理中會常常遇到,圖像處理中用到的大可能是二維卷積的離散形式:

$$ f[x,y] * g[x,y] = \sum_{n_1=-\infty}^\infty \sum_{n_2=-\infty}^\infty f[n_1, n_2] \cdot g[x-n_1, y-n_2] \tag{3} $$

2.2 圖像處理中的二維卷積

二維卷積就是一維卷積的擴展,原理差很少。核心仍是(反轉),移動,乘積,求和。這裏二維的反轉就是將卷積核沿反對角線翻轉,好比矩陣

a b c
d e f
g h i

翻轉爲

i h g
f e d
c b a

以後,卷積核在二維平面上平移,而且卷積核的每一個元素與被卷積圖像對應位置相乘,再求和。經過卷積核的不斷移動,咱們就有了一個新的圖像,這個圖像徹底由卷積核在各個位置時的乘積求和的結果組成。

舉一個最簡單的均值濾波的例子:

一個 3x3 的均值濾波核(卷積核):

1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9

和被卷積圖像(這裏簡化爲一個二維 5x5 矩陣):

3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
7 7 7 7 7

當卷積核運動到圖像右下角處(卷積中心和圖像對應圖像第 4 行第 4 列)時,它和圖像卷積的結果以下圖所示:

二維卷積示例

能夠看出,二維卷積在圖像中的效果就是:
對圖像的每一個像素的鄰域(鄰域大小就是核的大小)加權求和獲得該像素點的輸出值。
濾波器核在這裏是做爲一個「權重表」來使用的。

參考資料:

  1. 中文維基百科/卷積

  2. 斯坦福大學CS178課程資料(有一個卷積的在線Applet演示)

  3. Understanding Convolution(用圖和例子從一維卷積一直講到了CNN)

歡迎到個人博客查看更多文章

相關文章
相關標籤/搜索