深度学习数学基础(一)~卷积
前言
我在學習機器學習和圖像處理的過程中經常會遇到卷積這個概念,但我每次遇到這個概念都有點不甚了解。于是我在學習了幾個博客之后把我理解的做了一個總結,其不足之處敬請指正。
一、卷積的起源
文獻來源:-A History of the Convolution Operation
卷積的概念來源于17世紀的瑞士數學天才歐拉Leonhard Euler(1707-1783),他雙目失明,但疾病沒有阻礙他對于數學的貢獻,他在那些日子里完成了一本關于積分學和以定積分求解微分方程的巨著。
he suffered complete blindness, but this illness did not prevent him from contributing to mathematics. In fact, in those years, he wrote a memorable book about integral calculus and the solution of differential equations (DEs, 微分方程) by certain definite integrals(定積分).
? ?
通過將K(u)替換為u、Q(x)替換為x,或將K(u)替換為-u、Q(x)替換為x,得到與流體力學、電氣工程、熱傳導、信號和圖像處理、線性聲學、機械工程、光學、概率與統計等領域相關的用積分變換求解微分更通用的形式:
因此,這項操作在某種程度上是輸入函數和另一個輸入函數的revolving。特別是在數學、物理和相關領域,通常用于指定這樣revolving的動詞是convolve,這個動詞出自拉丁語系的con和volve?re,這分別意味著“一起”和“卷起”,因此convolving這個動作被稱為卷積convolution。
Therefore, the operation is in some sense the “revolving” of one of the input functions with the other one. Particularly in mathematics, physics, and related areas, the verb commonly used to designate such a revolving is “to convolve.” This verb comes from the Latin words con and volve?re, which mean “together” and “roll up,” respectively; thus, convolve means “roll up together.” Accordingly, the action of convolving is called convolution.
二、卷積的定義
卷積是通過兩個函數f和g生成第三個函數的一種數學運算,卷積結果可以看作是函數f的修改(過濾)版本。在這個定義中,函數g被稱為過濾器filter、卷積函數或卷積核。
Convolution is an operation on two functions f and g, which produces a third function that can be interpreted as a modified (“filtered”) version of f. In this interpretation we call g the filter.
卷積是任何物理設備或計算過程執行平滑或銳化的核心,應用于圖像等二維函數,它也可用于邊緣發現、特征檢測、運動檢測、圖像檢測和無數其他任務。
Applied to two dimensional functions like images, it’s also useful for edge finding, feature detection, motion detection, image matching, and countless other tasks.
圖解卷積參考博客:?Understanding Convolutions;?斯坦福大學CS178課程資料(有一個卷積的在線Applet演示)
However, 我認為結合例子更容易理解。
source:?我對卷積的理解-Mengqi’s blog
1. 一維卷積
? 1.1 數學定義?
? ? 維基百科上,卷積的形式化定義如下:
? ??? (1)
? 1.2 直觀解釋
? ? 先來分析一下這個公式:
? ? (1) f(x)?g(x)表示?f(x)和?g(x)的卷積,注意此處自變量為?x;
? ? (2)它是對?(?∞,∞)區間上對?τ求積分;
? ? (3)積分對象為兩個函數的乘積:f(τ)和?g(x?τ)。
? ? (4)等式右邊只有?g(x?τ)提到了x,其他部分都在關注?τ
這樣一個公式恐怕還是難以理解,接下來將通過一個例子來進行解釋。
? 1.3 例子
? ? 試想小明有一段時間每天都要去輸液,輸的藥會在身體里殘留直至失效,藥效隨著時間是不斷衰落的。 這里為簡便起見,假設藥效 4 天就失效,而且藥效持續函數是離散的。
? ? 如下圖所示:
? ? 圖中,橫坐標為天數,縱坐標為藥效。輸液當天(day=0)藥效為 100%,第二天減弱為 80%,第三天減弱為 40%,第四天減弱為 0。
? ? 現在先定義一些符號:
? ? 記天數為t,每天輸液的藥量為m(t), 藥效函數為eff(t),小明身上殘留的藥效為rest(t)。其中藥效函數:
下面觀察一下小明從第一天起,連續三天輸液后身上所留下的藥效(假設每天藥量固定為10)。
- 第一天,小明去醫院輸完液后,藥效為10(rest(t)= m(t)·eff(0))。
- 第二天,小明去醫院準備輸液
? ? 輸液前,他身上帶著前一天的藥效,此時已經衰減為 10?80%=8,即?m?(t?1)·eff?(1)。
? ? 輸液后,他身上攜帶的藥效為:8 + 10 = 18(rest?(t)=m?(t?1)?eff?(1)+m?(t-0)?eff?(0))。
- 第三天,小明去醫院準備輸液
? ? 輸液前,他身上帶著前兩天的藥效,第一天的此時已衰減為 10?40%=4(m?(t?2)?eff?(2)),第二天的此時衰減為 10?80%=8(m?(t?1)?eff?(1))。
? ? 輸液后,他身上攜帶的藥效為:4 + 8 + 10 = 22(rest?(t)=m?(t?2)?eff?(2)+m?(t?1)?eff?(1)+m?(t-0)?eff?(0))。
? 1.4 分析
? ? 從上面的分析我們可以得到,小明第t天身上殘留的藥效,其中n為藥效有效的最大天數。我們不難想象,在藥效函數eff(t)為連續時,上式中的求和就應改為積分;而當藥效能無限期有效時,上式中的n就為。無限期有效的藥效函數,所對應的(本例中嚴格來說應該是,這里推廣到了(-∞, ∞))。推導到這里,基本就是維基百科上卷積的定義了。
? 1.5 總結
? ? 我(原文作者)之前對卷積概念的困惑主要是因為對公式(1)的那個的意義理解錯了,總以為是隨著坐標軸變化的量。事實上,在上面的例子中,是作為沿著縱坐標遍歷的量:它的作用是對縱向上,歷次函數eff(t)在當前點t殘余量rest(t)的求和。積分也是對縱向上的積分(我理解是積分函數,也就是那個不規則函數,按照積分定義無限細分之后,是根據橫坐標平移而縱坐標不規則變的函數,如果縱坐標規則變化,那就是常規函數了,所以這里說縱坐標遍歷也可以,只不過在藥效例子中是有限范圍),而非橫向上沿自變量的積分。
? ? 橫坐標變化的量始終為t,而且在卷積中并沒有明顯體現出t的變化。
? ? 最后重新回顧一下上面的整個過程:比較三天以來的示意圖可以發現,如果我們以當天而不是第t天為參考的話,就會看到eff(t)隨著時間是在向左平移(深藍的線表示當天,前幾天的線都在其左邊),然后各天衰退后的藥量殘余等于eff(t)乘上初始的藥量值,最后將各天的藥量殘余求個和。整個過程的核心就是(反轉)、移動、乘積、求和,這里面的反轉概念也好理解,就是本來eff(t)是朝著右邊走的函數,t=0, 1, 2...,eff(t)是形容t天后的藥量的,而實際例子中我們是以當天為參考系!我們是在朝著左邊看的,因而要反轉。我(原文作者)認為這個反轉是一個很自然的過程(我之前就很難理解為啥要反轉,現在起碼有個例子支撐了),不算事整個卷積的核心。此外,在計算機領域,至少我接觸到的圖像處理、機器學習方面用到的卷積,其卷積核(就是例子中不斷平移的藥效函數eff(t))一般是對稱的,所以這個反轉的概念不是那么重要。
??連續卷積
函數f和g是定義在R_{n}上關于連續變量x的連續函數,f和g的卷積記做f*g,它是其中一個函數經過翻轉并平移后,與另一個函數乘積的積分,是一個對平移量的函數。
??離散卷積
對于定義在整數Z上的離散變量x函數f,g,卷積的定義是:
2. 二維卷積
? 2.1 數學定義
? ? 二維卷積常用于圖像領域,其定義如下:
? ??
? ? 圖像處理中用到的大多是二維卷積的離散形式:
? ??
? 2.2 圖像處理中的二維卷積
?? ?二維卷積就是一維卷積的擴展,原理差不多。核心還是反轉、移動、乘積、求和。這里二維的反轉就是將卷積核沿反對角線(我認為反對角線是分別沿主對角線和副對角線翻轉)翻轉,比如:
翻轉為
? ??之后,卷積核在二維平面上平移,并且卷積核的每個元素與被卷積圖像對應位置相乘,再求和(全卷積(Full Convolution)做padding就是對矩陣邊界每個元素的鄰域(鄰域大小就是卷積核的大小)補充0,使矩陣每個元素值都可以被卷積函數平移到)。通過卷積核的不斷移動,我們就有了一個新的圖像,這個圖像完全由卷積核在各個位置時的乘積求和的結果組成。
? ? 舉一個最簡單的均值濾波的例子:
? ? 這是一個?3x3?的均值濾波核,也就是卷積核(相當于藥效函數):
? ??
? ? 這是被卷積圖像,這里簡化為一個二維?5x5?矩陣(實際情況是三原色的二維數據[[255,255,0], [255,0,255], ......]):
? ??
? ??當卷積核運動到圖像右下角處(卷積中心和圖像對應圖像第 4 行第 4 列)時,它和圖像卷積的結果如下圖所示:
? ??
? ? 可以看出,二維卷積在圖像中的效果是對圖像每個元素的鄰域(鄰域大小就是卷積核的大小)加權求和得到該元素點的輸出值。卷積核在這里是作為一個權重表來使用的。
三、我對卷積的理解
? 3.1 圖像卷積
? ? 卷積操作:翻轉、平移、乘積、求和。?卷積運算:卷積運算不是矩陣乘積運算,而是一種矩陣對應位置相乘相加的加權運算。
? ? 卷積核,相當于一個權重算子,起到一種加權作用,距離當前點越近的權重越大,距離當前越遠的權重越小,類似一個“逆推”的過程。
? ? 圖像:卷積是一種積分運算,用來求兩個曲線重疊區域面積,可以看作加權求和,可以用來消除噪聲、特征增強。加權求和,權重w的和為1,以這些權重相乘相加。
??3.2 卷積衰減
? ? 卷積,就是用來求一個衰減函數g與另一個函數f乘積和的。若這兩個函數是離散,則卷積是∑求和;若這兩個函數連續,則卷積是∫求和。
? ? 在信號領域,卷積函數是一個隨時間平移強度逐漸衰減的脈沖信號。
參考文獻
卷積的參考文獻我都嵌入到博客內容中,轉載文章也已注明來源。
總結
以上是生活随笔為你收集整理的深度学习数学基础(一)~卷积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘流程(五):数据统计和画图
- 下一篇: 深度学习在CTR预估的应用