ConvNet推理過程的說明
在最左邊是我們的輸入,原始的圖像像素,我們可以用一個3維矩陣來表示它。例如,一個分辨率為256x256的圖像可以用一個256x256x3的矩陣來表示(這里的3表示RGB三個顏色)。接下去,我們就開始做卷積,聽上去很神奇,但實際上就是我們用一個小型濾波器從圖像的一頭滑動到另一頭,一行滑動到另一行。不同的濾波器對圖像中不同的特征有不同的反應(yīng):有一些濾波器看到一個很小的水平邊緣就會很激動,還有一些會對紅色的區(qū)域很敏感,等等等等。
假設(shè),我們有10種不同的濾波器,通過這種方式我們可以將原始(256,256,3)的圖像轉(zhuǎn)換成另一個(256,256,10)的“圖像”。在這個經(jīng)過變換后的“圖像”中,我們已經(jīng)將原始圖像中的信息舍去了,留下的是原始圖像每一個位置上對這10個濾波器的響應(yīng)。這就好像是我們將原始圖像的3個顏色通道(紅綠藍(lán))變成10個濾波響應(yīng)通道(在動圖中,原始圖像的右側(cè)第一列就是經(jīng)過變換后的圖像)。
上面解釋了原始圖像右側(cè)第一列是怎么來的,那么,后面這些列又是怎么出來的呢?很簡單,繼續(xù)用濾波器對第一列的結(jié)果進行濾波得到第二列,對第二列濾波得到第三列,以此類推。不同的列會使用不同的濾波器組合對上一列進行操作,目的是漸進地去發(fā)現(xiàn)越來越復(fù)雜的視覺模式,而最后一組濾波器則是用來計算圖片的視覺分類概率(是汪星人還是癩蛤蟆)。當(dāng)然,中間省略了一些細(xì)節(jié),只保留了基本思想:將卷積進行到底。
剛才介紹了卷積神經(jīng)網(wǎng)絡(luò)就是一個大型濾波器疊濾波器的集合。一個問題是,我們怎么知道該用什么樣的濾波器組合才能達到目的呢?實際上我們并不知道——最開始的時候我們完全隨機地選擇濾波器,然后一遍遍地訓(xùn)練他們,讓他們變得更好。
下面開始舉例,我們給一個采用隨機濾波器的卷積神經(jīng)網(wǎng)絡(luò)輸入一張圖片,最后它會告訴我們這個圖里有54%的可能含有狗。接著,我們可以告訴它,這實際是一只癩蛤蟆,通過一個數(shù)學(xué)過程,這個卷積神經(jīng)網(wǎng)絡(luò)會小幅度地去調(diào)整它使用的濾波器,目的是為了當(dāng)它下一次看到相同的圖是會告訴我們這張圖更可能有癩蛤蟆。我們要做的就是用數(shù)百萬的圖像重復(fù)這個過程數(shù)千萬次甚至數(shù)億次。下面就是見證奇跡的時刻,在卷積計算過程中所使用的不同濾波器會漸漸地調(diào)整自己去響應(yīng)圖像中重要的東西,例如眼睛,頭部,甚至整個身體等等。
上圖是從一個經(jīng)過訓(xùn)練后的卷積神經(jīng)網(wǎng)絡(luò)中隨機選出12個濾波器,可以看看它們對圖像的什么部分響應(yīng)強烈。圖是從Matthew Zeiler的Visualizing and Understanding Convolutional Networks里借來的。這里展示的濾波器處于卷積的第三階段,看上去像是在尋找蜂窩狀的模式,或者是輪子/軀干/文字等等。再次強調(diào),這并不是我們特意設(shè)置的。一切都是模型自發(fā)形成的,我們只能來檢視。
另一組非常優(yōu)秀的卷積神經(jīng)網(wǎng)絡(luò)可視化的例子可以從Jason Yosinki等人的Deepvis項目中找到。其中包含了一個非常有趣的演示,用你電腦上的攝像頭來實時地演示卷積神經(jīng)網(wǎng)絡(luò)的工作原理,Jason在下面這個視頻中還配上了非常棒的解說:
深度可視化工具箱
總結(jié)一下,卷積神經(jīng)網(wǎng)絡(luò)的整個訓(xùn)練過程就好像是給一個小孩看許多物體的圖像,然后小孩要從中逐漸發(fā)現(xiàn)該在圖像中看什么以及怎么把這些物體找到。假如你更喜歡技術(shù)一點說法,那卷積神經(jīng)網(wǎng)絡(luò)是一個從圖像像素到分類概率的函數(shù),濾波器是它的參數(shù),我們采用隨機梯度下降法來優(yōu)化一個分類損失函數(shù)。如果你對什么人工智能,大腦,奇點著迷,那可以把這個函數(shù)說成是一個“深度神經(jīng)網(wǎng)絡(luò)”,這些濾波器是神經(jīng)元,而整個卷積神經(jīng)網(wǎng)絡(luò)就是一種自適應(yīng)的模擬視覺皮層組織。