深度学习数学基础(一)~卷积
前言
我在學(xué)習(xí)機(jī)器學(xué)習(xí)和圖像處理的過(guò)程中經(jīng)常會(huì)遇到卷積這個(gè)概念,但我每次遇到這個(gè)概念都有點(diǎn)不甚了解。于是我在學(xué)習(xí)了幾個(gè)博客之后把我理解的做了一個(gè)總結(jié),其不足之處敬請(qǐng)指正。
一、卷積的起源
文獻(xiàn)來(lái)源:-A History of the Convolution Operation
卷積的概念來(lái)源于17世紀(jì)的瑞士數(shù)學(xué)天才歐拉Leonhard Euler(1707-1783),他雙目失明,但疾病沒(méi)有阻礙他對(duì)于數(shù)學(xué)的貢獻(xiàn),他在那些日子里完成了一本關(guān)于積分學(xué)和以定積分求解微分方程的巨著。
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(定積分).
? ?
通過(guò)將K(u)替換為u、Q(x)替換為x,或?qū)(u)替換為-u、Q(x)替換為x,得到與流體力學(xué)、電氣工程、熱傳導(dǎo)、信號(hào)和圖像處理、線性聲學(xué)、機(jī)械工程、光學(xué)、概率與統(tǒng)計(jì)等領(lǐng)域相關(guān)的用積分變換求解微分更通用的形式:
因此,這項(xiàng)操作在某種程度上是輸入函數(shù)和另一個(gè)輸入函數(shù)的revolving。特別是在數(shù)學(xué)、物理和相關(guān)領(lǐng)域,通常用于指定這樣revolving的動(dòng)詞是convolve,這個(gè)動(dòng)詞出自拉丁語(yǔ)系的con和volve?re,這分別意味著“一起”和“卷起”,因此convolving這個(gè)動(dòng)作被稱為卷積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.
二、卷積的定義
卷積是通過(guò)兩個(gè)函數(shù)f和g生成第三個(gè)函數(shù)的一種數(shù)學(xué)運(yùn)算,卷積結(jié)果可以看作是函數(shù)f的修改(過(guò)濾)版本。在這個(gè)定義中,函數(shù)g被稱為過(guò)濾器filter、卷積函數(shù)或卷積核。
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.
卷積是任何物理設(shè)備或計(jì)算過(guò)程執(zhí)行平滑或銳化的核心,應(yīng)用于圖像等二維函數(shù),它也可用于邊緣發(fā)現(xiàn)、特征檢測(cè)、運(yùn)動(dòng)檢測(cè)、圖像檢測(cè)和無(wú)數(shù)其他任務(wù)。
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;?斯坦福大學(xué)CS178課程資料(有一個(gè)卷積的在線Applet演示)
However, 我認(rèn)為結(jié)合例子更容易理解。
source:?我對(duì)卷積的理解-Mengqi’s blog
1. 一維卷積
? 1.1 數(shù)學(xué)定義?
? ? 維基百科上,卷積的形式化定義如下:
? ??? (1)
? 1.2 直觀解釋
? ? 先來(lái)分析一下這個(gè)公式:
? ? (1) f(x)?g(x)表示?f(x)和?g(x)的卷積,注意此處自變量為?x;
? ? (2)它是對(duì)?(?∞,∞)區(qū)間上對(duì)?τ求積分;
? ? (3)積分對(duì)象為兩個(gè)函數(shù)的乘積:f(τ)和?g(x?τ)。
? ? (4)等式右邊只有?g(x?τ)提到了x,其他部分都在關(guān)注?τ
這樣一個(gè)公式恐怕還是難以理解,接下來(lái)將通過(guò)一個(gè)例子來(lái)進(jìn)行解釋。
? 1.3 例子
? ? 試想小明有一段時(shí)間每天都要去輸液,輸?shù)乃帟?huì)在身體里殘留直至失效,藥效隨著時(shí)間是不斷衰落的。 這里為簡(jiǎn)便起見(jiàn),假設(shè)藥效 4 天就失效,而且藥效持續(xù)函數(shù)是離散的。
? ? 如下圖所示:
? ? 圖中,橫坐標(biāo)為天數(shù),縱坐標(biāo)為藥效。輸液當(dāng)天(day=0)藥效為 100%,第二天減弱為 80%,第三天減弱為 40%,第四天減弱為 0。
? ? 現(xiàn)在先定義一些符號(hào):
? ? 記天數(shù)為t,每天輸液的藥量為m(t), 藥效函數(shù)為eff(t),小明身上殘留的藥效為rest(t)。其中藥效函數(shù):
下面觀察一下小明從第一天起,連續(xù)三天輸液后身上所留下的藥效(假設(shè)每天藥量固定為10)。
- 第一天,小明去醫(yī)院輸完液后,藥效為10(rest(t)= m(t)·eff(0))。
- 第二天,小明去醫(yī)院準(zhǔn)備輸液
? ? 輸液前,他身上帶著前一天的藥效,此時(shí)已經(jīng)衰減為 10?80%=8,即?m?(t?1)·eff?(1)。
? ? 輸液后,他身上攜帶的藥效為:8 + 10 = 18(rest?(t)=m?(t?1)?eff?(1)+m?(t-0)?eff?(0))。
- 第三天,小明去醫(yī)院準(zhǔn)備輸液
? ? 輸液前,他身上帶著前兩天的藥效,第一天的此時(shí)已衰減為 10?40%=4(m?(t?2)?eff?(2)),第二天的此時(shí)衰減為 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為藥效有效的最大天數(shù)。我們不難想象,在藥效函數(shù)eff(t)為連續(xù)時(shí),上式中的求和就應(yīng)改為積分;而當(dāng)藥效能無(wú)限期有效時(shí),上式中的n就為。無(wú)限期有效的藥效函數(shù),所對(duì)應(yīng)的(本例中嚴(yán)格來(lái)說(shuō)應(yīng)該是,這里推廣到了(-∞, ∞))。推導(dǎo)到這里,基本就是維基百科上卷積的定義了。
? 1.5 總結(jié)
? ? 我(原文作者)之前對(duì)卷積概念的困惑主要是因?yàn)閷?duì)公式(1)的那個(gè)的意義理解錯(cuò)了,總以為是隨著坐標(biāo)軸變化的量。事實(shí)上,在上面的例子中,是作為沿著縱坐標(biāo)遍歷的量:它的作用是對(duì)縱向上,歷次函數(shù)eff(t)在當(dāng)前點(diǎn)t殘余量rest(t)的求和。積分也是對(duì)縱向上的積分(我理解是積分函數(shù),也就是那個(gè)不規(guī)則函數(shù),按照積分定義無(wú)限細(xì)分之后,是根據(jù)橫坐標(biāo)平移而縱坐標(biāo)不規(guī)則變的函數(shù),如果縱坐標(biāo)規(guī)則變化,那就是常規(guī)函數(shù)了,所以這里說(shuō)縱坐標(biāo)遍歷也可以,只不過(guò)在藥效例子中是有限范圍),而非橫向上沿自變量的積分。
? ? 橫坐標(biāo)變化的量始終為t,而且在卷積中并沒(méi)有明顯體現(xiàn)出t的變化。
? ? 最后重新回顧一下上面的整個(gè)過(guò)程:比較三天以來(lái)的示意圖可以發(fā)現(xiàn),如果我們以當(dāng)天而不是第t天為參考的話,就會(huì)看到eff(t)隨著時(shí)間是在向左平移(深藍(lán)的線表示當(dāng)天,前幾天的線都在其左邊),然后各天衰退后的藥量殘余等于eff(t)乘上初始的藥量值,最后將各天的藥量殘余求個(gè)和。整個(gè)過(guò)程的核心就是(反轉(zhuǎn))、移動(dòng)、乘積、求和,這里面的反轉(zhuǎn)概念也好理解,就是本來(lái)eff(t)是朝著右邊走的函數(shù),t=0, 1, 2...,eff(t)是形容t天后的藥量的,而實(shí)際例子中我們是以當(dāng)天為參考系!我們是在朝著左邊看的,因而要反轉(zhuǎn)。我(原文作者)認(rèn)為這個(gè)反轉(zhuǎn)是一個(gè)很自然的過(guò)程(我之前就很難理解為啥要反轉(zhuǎn),現(xiàn)在起碼有個(gè)例子支撐了),不算事整個(gè)卷積的核心。此外,在計(jì)算機(jī)領(lǐng)域,至少我接觸到的圖像處理、機(jī)器學(xué)習(xí)方面用到的卷積,其卷積核(就是例子中不斷平移的藥效函數(shù)eff(t))一般是對(duì)稱的,所以這個(gè)反轉(zhuǎn)的概念不是那么重要。
??連續(xù)卷積
函數(shù)f和g是定義在R_{n}上關(guān)于連續(xù)變量x的連續(xù)函數(shù),f和g的卷積記做f*g,它是其中一個(gè)函數(shù)經(jīng)過(guò)翻轉(zhuǎn)并平移后,與另一個(gè)函數(shù)乘積的積分,是一個(gè)對(duì)平移量的函數(shù)。
??離散卷積
對(duì)于定義在整數(shù)Z上的離散變量x函數(shù)f,g,卷積的定義是:
2. 二維卷積
? 2.1 數(shù)學(xué)定義
? ? 二維卷積常用于圖像領(lǐng)域,其定義如下:
? ??
? ? 圖像處理中用到的大多是二維卷積的離散形式:
? ??
? 2.2 圖像處理中的二維卷積
?? ?二維卷積就是一維卷積的擴(kuò)展,原理差不多。核心還是反轉(zhuǎn)、移動(dòng)、乘積、求和。這里二維的反轉(zhuǎn)就是將卷積核沿反對(duì)角線(我認(rèn)為反對(duì)角線是分別沿主對(duì)角線和副對(duì)角線翻轉(zhuǎn))翻轉(zhuǎn),比如:
翻轉(zhuǎn)為
? ??之后,卷積核在二維平面上平移,并且卷積核的每個(gè)元素與被卷積圖像對(duì)應(yīng)位置相乘,再求和(全卷積(Full Convolution)做padding就是對(duì)矩陣邊界每個(gè)元素的鄰域(鄰域大小就是卷積核的大小)補(bǔ)充0,使矩陣每個(gè)元素值都可以被卷積函數(shù)平移到)。通過(guò)卷積核的不斷移動(dòng),我們就有了一個(gè)新的圖像,這個(gè)圖像完全由卷積核在各個(gè)位置時(shí)的乘積求和的結(jié)果組成。
? ? 舉一個(gè)最簡(jiǎn)單的均值濾波的例子:
? ? 這是一個(gè)?3x3?的均值濾波核,也就是卷積核(相當(dāng)于藥效函數(shù)):
? ??
? ? 這是被卷積圖像,這里簡(jiǎn)化為一個(gè)二維?5x5?矩陣(實(shí)際情況是三原色的二維數(shù)據(jù)[[255,255,0], [255,0,255], ......]):
? ??
? ??當(dāng)卷積核運(yùn)動(dòng)到圖像右下角處(卷積中心和圖像對(duì)應(yīng)圖像第 4 行第 4 列)時(shí),它和圖像卷積的結(jié)果如下圖所示:
? ??
? ? 可以看出,二維卷積在圖像中的效果是對(duì)圖像每個(gè)元素的鄰域(鄰域大小就是卷積核的大小)加權(quán)求和得到該元素點(diǎn)的輸出值。卷積核在這里是作為一個(gè)權(quán)重表來(lái)使用的。
三、我對(duì)卷積的理解
? 3.1 圖像卷積
? ? 卷積操作:翻轉(zhuǎn)、平移、乘積、求和。?卷積運(yùn)算:卷積運(yùn)算不是矩陣乘積運(yùn)算,而是一種矩陣對(duì)應(yīng)位置相乘相加的加權(quán)運(yùn)算。
? ? 卷積核,相當(dāng)于一個(gè)權(quán)重算子,起到一種加權(quán)作用,距離當(dāng)前點(diǎn)越近的權(quán)重越大,距離當(dāng)前越遠(yuǎn)的權(quán)重越小,類似一個(gè)“逆推”的過(guò)程。
? ? 圖像:卷積是一種積分運(yùn)算,用來(lái)求兩個(gè)曲線重疊區(qū)域面積,可以看作加權(quán)求和,可以用來(lái)消除噪聲、特征增強(qiáng)。加權(quán)求和,權(quán)重w的和為1,以這些權(quán)重相乘相加。
??3.2 卷積衰減
? ? 卷積,就是用來(lái)求一個(gè)衰減函數(shù)g與另一個(gè)函數(shù)f乘積和的。若這兩個(gè)函數(shù)是離散,則卷積是∑求和;若這兩個(gè)函數(shù)連續(xù),則卷積是∫求和。
? ? 在信號(hào)領(lǐng)域,卷積函數(shù)是一個(gè)隨時(shí)間平移強(qiáng)度逐漸衰減的脈沖信號(hào)。
參考文獻(xiàn)
卷積的參考文獻(xiàn)我都嵌入到博客內(nèi)容中,轉(zhuǎn)載文章也已注明來(lái)源。
總結(jié)
以上是生活随笔為你收集整理的深度学习数学基础(一)~卷积的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据挖掘流程(五):数据统计和画图
- 下一篇: python爬虫基础(一)~爬虫概念和架