【深度學習之美】卷地風來忽吹散,積得飄零美如畫(入門系列之十)

在前面的章節中,我們簡要地介紹了卷積神經網絡的來龍去脈。接下來我們逐一來解釋它之所以成功的幾個核心要素。卷積神經網絡的名字就來自於其中的卷積操作。因此說到卷積神經網絡,它最核心概念可能莫過於“什麼是卷積”?

10.1 卷積的數學定義

脫離卷積神經網絡這個應用背景,“卷積”其實是一個標準的數學概念。早在3.4節中,我們已經提及到“卷積”的概念:所謂卷積,不過是一個函數和另一個函數在某個維度上的加權“疊加”作用而已[1]。爲了更好地理解卷積操作的數學意義,下面我們列舉一個具體的案例來加以說明[2]。
假設我們的任務是實時監控一艘宇宙飛船。這艘宇宙飛船帶有激光發射器。激光發射器在任意時刻t 都實時輸出信號 f(t) ,這裏 f(t) 表示飛船在任意時刻 t 所處的位置。通常來說,激光信號中都會夾雜有一定的噪音信號 g(t) 。爲了能更加準確地測量飛船的位置,就需要減少噪音的影響,因此我們就需要對獲取的距離信號x(t)進行平滑處理。
很顯然,對於相鄰時間的輸出結果,距離當前時間較近的輸出,它們對結果的輸出影響也較大(分配較大的權值)。反之,距離當前時間越遠,它們對當前結果的影響也就越小(分配較小的權值)。因此,加權平均後的飛船位置s(t) 可以用如公式(10.1)表示:


663660a98a27e39dff94d0b6963502e74e625e80

這樣的操作就被稱爲連續域上的卷積操作。這種操作通常也簡單記爲公式(10.2):

bae252078a77e310c87dbd4c5d0ab0776c18907c

在公式(10.2)中,通常把函數f稱爲輸入函數, g 稱爲濾波器或卷積核(kernel),這兩個函數的疊加結果稱爲特徵圖或特徵圖譜(feature map)
在理論上,輸入函數可以是連續的,因此通過積分可以得到一個連續的卷積。但實際上,目前基本上所有計算機都是數字計算機,這樣的計算機是不能處理連續(模擬)信號的。因此需要把連續函數離散化。
一般情況下,我們並不需要記錄任意時刻的數據,而是以一定的時間間隔(也即頻率)採樣即可。這麼說是有理論根據的,根據香農採樣定理,當採樣頻率應不小於模擬信號頻譜中最高頻率的2倍時,可以不失真地恢復模擬信號。對於離散信號,卷積操作可用如公式(10.3)表示:


ae23ff4975858757ff917956d2e34fdbbc2733d5

當然,對於離散卷積的定義推廣到更高維度的空間上。例如二維的公式可表示爲公式(10.4)所示:


58c1181e785968b206981358b39e7ef32822c4e3

10.2生活中的卷積

卷積的概念好像比較抽象。好在理論來源於現實的歸納和抽象。爲了便於理解這個概念,我們可以藉助現實生活中案例,來反向演繹說明這個概念。
在前面章節的描述中,我們已經提到,函數(function)就是功能(function),功能就是函數。函數的加權疊加作用,更通俗點講,就是功能的疊加作用。如果是函數是抽象的,那麼功能則是具體的。我們很容易從生活中找到“卷積”影子,從而能更加形象地解釋這個概念。在這方面,李德毅院士是高手。
在2015中國計算機大會特邀報告上,筆者有幸聆聽了中國人工智能學會理事長李德毅院士的主題報告。在報告中,李院士便提到了卷積的理解問題,非常有意思[3]。
他講到,什麼叫卷積呢?舉例來說,在一根鐵絲某處不停地彎曲,假設發熱函數是f(t) ,散熱函數是 g(t) ,此時此刻的溫度就是 f(t) 跟g(t)的卷積。在一個特定環境下,發聲體的聲源函數是f(t) ,該環境下對聲源的反射效應函數是 g(t) ,那麼這個環境下的接受到聲音就是 f(t) 和 g(t) 的卷積。
類似地,記憶其實也是一種卷積的結果。假設認知函數是 f(t) ,它代表對已有事物的理解和消化,隨時間流逝而產生的遺忘函數是g(t),那麼人腦中記憶函數 h(t) 就是函數是 f(t) 跟g(t) 的卷積,可用如下公式表示。


41fbb1d8ff8a0cd983dc81c85f04796260bf233e

最後,李院士講到,我們計算機工作者要了解卷積,就要了解卷積神經網絡。這個觀點和今天講到的主題很應景,下面我們就言歸正“卷”,接着聊卷積神經網絡。

10.3在圖像處理中的卷積

圖像識別是卷積神經網絡發威的“聖地”。所以下面我們就以圖像處理爲例,來說明卷積的作用。
對於如圖10-1所示的左側的圖像,正常人很容易判定出,圖像中分別是一個數字“8”和一隻貓。但是,對於計算機而言,它們看到數字矩陣(每個元素都是0到255之間像素值),至於它們據此能不能判定出是數字“8”和貓,這要依賴於計算機算法,這也是人工智能的研究方向。


89a7feae31e8c15bd630c945c6d50e760f166abe


圖10-1 計算機“眼中”的圖像

在如圖10-1所示的矩陣中,每個元素表示的都是像素的亮度強度。在這裏,0表示黑色,255表示白色,數字越小,越接近黑色。在灰度圖像中,每個像素值僅表示一種顏色的強度。也就是說,它只有一個通道。而在彩像中,可以有3個通道,即RGB(紅,綠,藍)。在這種情況下,把三個不同通道的像素矩陣堆疊在一起,即可描述彩色圖像。
在圖像處理中應用卷積操作,主要目的就是從圖像中提取特徵。卷積可以很方便地通過從輸入的一小塊數據矩陣(也就是一小塊圖像)中學到圖像的特徵,並能保留像素間的空間關係。下面舉例說明在二維圖像使用卷積過程。
在圖10-2中,爲了便於讀者理解,圖像數據矩陣的像素值分別用諸如a-b-c-d這樣的字母代替,卷積核是一個2×2的小矩陣。需要注意的是,在其他場合,這個小矩陣,也被稱爲“濾波器(filter)”或“特徵檢測器(feature detector)”。
如果把卷積核應用到輸入圖像的數據矩陣上,依次按照從左到右、從上到下的順序分別執行卷積運算,就可以得到這個圖像的特徵圖譜(feature map)。在不同的學術論文中,這個術語特徵圖譜也被稱呼爲做“卷積特徵(convolved feature)”或 “激活圖(activation map)”。


1e1bec45ef59eca75a34a233e6e4464b6f377977


圖10-2 二維圖像數據上的卷積操作實例

從圖10-2體現出來的計算可以看到,在本質上,離散卷積就是一個線性運算。因此,這樣的卷積操作也被稱爲線性濾波。這裏的“線性”是指,我們用每個像素的鄰域的線性組合來代替這個像素。其實,卷積操作還具有平移不變性(shift-invariant)。這個“平移不變性”是指,在圖像的每個位置都執行相同的操作。
這個過程好像並不容易理解,下面我們就用更爲淺顯易懂的動態圖來說明這個卷積過程。正如前文所說,每張圖片都可視爲關於像素值的數字矩陣。對於灰度圖像而言,像素值的範圍是0 ~255。爲了簡單起見,我們考慮一個給定5×5 的極簡圖像,其像素值僅爲或0 或 1。類似地,卷積核是一個3×3的極簡矩陣,如圖10-3所示。


0b77571fa00cf589b4a653454defe74ab9329e25


圖10-3 簡化版本的圖像矩陣核卷積核

下面我們來卷積計算是怎麼完成的。我們用橙色的矩陣在原始圖像(綠色所示矩陣)上從左到右、從上到下滑動,每次滑動一個像素,滑動的距離稱爲“步幅(stride)”。在每個位置上,我們可以計算出兩個矩陣間的相應元素乘積,並把點乘結果之和,存儲在輸出矩陣(粉色所示)中的每一個單元格中,這樣就得到了特徵圖譜(或稱爲卷積特徵)矩陣[5]。


05c0c84c210f5d25a8250ff1455d897f74aa372d


圖10-4 卷積的實現過程 

10.4卷積在圖像處理中的應用

到目前爲止,我們只是做了一些簡單的矩陣運算而已,它的好處體現在哪裏,好像還不十分明確。簡單來說,這樣做的用途在於,將圖像相鄰子區域的像素值與卷積核執行“卷積”操作,可以獲取相鄰數據之間的統計關係,從而可挖掘出圖像中的某些重要特徵。
這樣說來,還是非常地抽象,這些特徵到底是什麼?下面我們還是用幾個圖像的案例來形象說明這個概念[6],如圖10-5所示。


5156e30492ece9f36288c1481e359058650d93b5


圖10-5 “神奇”的卷積核

下面我們簡單介紹一下常用的“久經考驗”的卷積核。
(1)同一化核(Identity)。從圖10-5可見,這個濾波器什麼也沒有做,卷積後得到的圖像和原圖一樣。因爲這個核只有中心點的值是1。鄰域點的權值都是0,所以對濾波後的取值沒有任何影響。
(2)邊緣檢測核(Edge Detection),也稱爲高斯-拉普拉斯算子。需要注意的是,這個核矩陣的元素總和爲0(即中間元素爲8,而周圍8個元素之和爲-8),所以濾波後的圖像會很暗,而只有邊緣位置是有亮度的。
(3)圖像銳化核(Sharpness Filter)。圖像的銳化和邊緣檢測比較相似。首先找到邊緣,然後再把邊緣加到原來的圖像上面,如此一來,就強化了圖像的邊緣,使得圖像看起來更加銳利。
(4)均值模糊(Box Blur /Averaging)。這個核矩陣的每個元素值都是1,它將當前像素和它的四鄰域的像素一起取平均,然後再除以9。均值模糊比較簡單,但圖像處理得不夠平滑。因此,還可以採用高斯模糊核(Gaussian Blur),這個核被廣泛用在圖像降噪上。
事實上,還有很多有意思的卷積核,比如說浮雕核(embossing Filter),它可以給圖像營造一種比較藝術化的3D陰影效果,如圖10-6所示。浮雕核將中心一邊的像素值減去另一邊的像素值。這時,卷積出來的像素值可能是負數,我們可以將負數當成陰影,而把正數當成光,然後再對結果圖像加上一定數值的偏移即可。


730ab62588968595285a96c75008f964a74912be


圖10-6 浮雕核的應用

10.5 小結

現在我們小結一下本章的內容,我們首先給出了卷積的數學定義,接着用生活中的相近的案例來反向演繹解釋了這個概念。最後我們用幾個著名的卷積核演示了卷積在圖像處理中的應用。
在後面的章節中,我們將詳細介紹卷積神經網絡的重要結構,包括卷積層(Convolutional Layer)、激活層(Activation Layer,涉及到ReLU的概念)、池化層(Pooling Layer)及全連接層(Full Connected Layer)。
請你關注。

10.6 請你思考

通過前面的學習,請你思考如下問題:
(1)我們常說的分佈式特徵表示,在卷積神經網絡中是如何體現的?
(2)除了本文中描述的常見卷積核,你還知道哪些常用於圖像處理的卷積核?
(3)現在非常流行計算機來作畫,不論是谷歌團隊的Inceptionism(“盜夢主義”[7]),還是David Aslan正在使用的“深度風格(Deep Style)”[8](如圖10-7所示),都是一種基於神經網絡的藝術畫風。你知道他們都使用了什麼樣的卷積核嗎?


b8e65f50619f81d178296a33ef091a1a1e9b4936


圖10-7 深度風格的畫風

參考文獻

[1] 張玉宏.雲棲社區. 神經網絡不勝語, M-P模型似可尋(深度學習入門系列之三)
[2]黃安埠. 深入淺出深度學習.中國工信出版社.2017.6
[3] 李德毅.從腦認知到人工智能.中國計算機大會.2015.10
[4] Savan Visalpara. How do computers see an image ?
[5] Feature extraction using convolution
[6] Ujjwal Karn. An Intuitive Explanation of Convolutional Neural Networks
[7] Alexander Mordvintsev, Christopher Olah, Mike Tyka.
Inceptionism: Going Deeper into Neural Networks.
[8] David Aslan. How Artists Can Use Neural Networks to Make Art


文章作者:張玉宏,著有《品味大數據》一書。
本文節選自《深度學習之美》一書,電子工業出版社2018年7月出版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章