卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是人工神經(jīng)網(wǎng)絡(luò)的一種,是當(dāng)下語音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn)。
這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準(zhǔn)備好了嗎?Let’s go——
我們先從最基礎(chǔ)的內(nèi)容說起。
對(duì)二維數(shù)字信號(hào)(圖像)的操作,可以寫成矩陣形式。
比如對(duì)圖像做平滑,一個(gè)典型的8領(lǐng)域平滑,其結(jié)果中的每個(gè)值都來源于原對(duì)應(yīng)位置和其周邊8個(gè)元素與一個(gè)3X3矩陣的乘積:
也就相當(dāng)于對(duì)原矩陣,按照順序?qū)⒏鲄^(qū)域元素與W矩陣相乘,W 矩陣為:
這也被稱作核(Kernel, 3X3)
其處理效果如下:
也就是,這個(gè)核對(duì)圖像進(jìn)行操作,相當(dāng)于對(duì)圖像進(jìn)行了低通濾波。因此這個(gè)核也被稱為濾波器,整個(gè)操作過程按照概念稱為卷積。
擴(kuò)展來講,對(duì)二維圖像的濾波操作可以寫成卷積,比如常見的高斯濾波、拉普拉斯濾波(算子)等。
濾波器跟卷積神經(jīng)網(wǎng)絡(luò)有什么關(guān)系呢。不如我們預(yù)想一個(gè)識(shí)別問題:我們要識(shí)別圖像中的某種特定曲線,也就是說,這個(gè)濾波器要對(duì)這種曲線有很高的輸出,對(duì)其他形狀則輸出很低,這也就像是神經(jīng)元的激活。
我們設(shè)計(jì)的濾波器和想要識(shí)別的曲線如下:
假設(shè)上面的核(濾波器)按照卷積順序沿著下圖移動(dòng):
那么當(dāng)它移動(dòng)到上面的位置時(shí),按照矩陣操作,將這個(gè)區(qū)域的圖像像素值與濾波器相乘,我們得到一個(gè)很大的值(6600):
而當(dāng)這個(gè)濾波器移動(dòng)到其他區(qū)域時(shí),我們得到一個(gè)相對(duì)很小的值:
如此,我們對(duì)整個(gè)原圖進(jìn)行一次卷積,得到的結(jié)果中,在那個(gè)特定曲線和周邊區(qū)域,值就很高,在其他區(qū)域,值相對(duì)低。這就是一張激活圖。對(duì)應(yīng)的高值區(qū)域就是我們所要檢測曲線的位置。
在訓(xùn)練卷積審計(jì)網(wǎng)絡(luò)(CNN)的某一個(gè)卷積層時(shí),我們實(shí)際上是在訓(xùn)練一系列的濾波器(filter)。比如,對(duì)于一個(gè)32x32x3(寬32像素x高32像素xRGB三通道)的圖像,如果我們在CNN的第一個(gè)卷積層定義訓(xùn)練12個(gè)濾波器,那就這一層的輸出便是32X32X12.按照不同的任務(wù),我們可以對(duì)這個(gè)輸出做進(jìn)一步的處理,這包括激活函數(shù),池化,全連接等。
簡單來說,訓(xùn)練CNN在相當(dāng)意義上是在訓(xùn)練每一個(gè)卷積層的濾波器。讓這些濾波器組對(duì)特定的模式有高的激活,以達(dá)到CNN網(wǎng)絡(luò)的分類/檢測等目的。
△一個(gè)實(shí)際CNN(AlexNet)第一個(gè)卷積層的濾波器>
卷積神經(jīng)網(wǎng)絡(luò)的第一個(gè)卷積層的濾波器用來檢測低階特征,比如邊、角、曲線等。隨著卷積層的增加,對(duì)應(yīng)濾波器檢測的特征就更加復(fù)雜(理性情況下,也是我們想要的情況)。
比如第二個(gè)卷積層的輸入實(shí)際上是第一層的輸出(濾波器激活圖),這一層的濾波器便是用來檢測低價(jià)特征的組合等情況(半圓、四邊形等),如此累積,以檢測越來越復(fù)雜的特征。實(shí)際上,我們的人類大腦的視覺信息處理也遵循這樣的低階特征到高階特征的模式。
可參考之前文章《為什么無彩色系(黑白灰色)在色彩搭配中可以和諧地與任何彩色搭配?》:https://www.zhihu.com/question/27380522/answer/36794240
最后一層的濾波器按照訓(xùn)練CNN目的的不同,可能是在檢測到人臉、手寫字體等時(shí)候激活[1]。
所以,在相當(dāng)程度上,構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)的任務(wù)就在于構(gòu)建這些濾波器。也就是,將這些濾波器變成這樣(改變?yōu)V波器矩陣的值,也就是Weight)的——能識(shí)別特定的特征。這個(gè)過程叫做訓(xùn)練。
在訓(xùn)練開始之時(shí),卷積層的濾波器是完全隨機(jī)的,它們不會(huì)對(duì)任何特征激活(不能檢測任何特征)。這就像剛出生的孩子,TA不知道什么是人臉、什么是狗,什么是上下左右。
TA需要學(xué)習(xí)才知道這些概念,也就是通過接觸人臉、狗、上下左右,并被告知這些東西分別是人臉、狗、上下左右。然后TA才能在頭腦中記住這些概念,并在之后的某一次見到之后能準(zhǔn)確的給出結(jié)果。
把一個(gè)空白的濾波其,修改其權(quán)重(weights)以使它能檢測特定的模式,整個(gè)過程就如工程里面的反饋。
想想一下,如果有一只無意識(shí)的猴子,完全隨機(jī)的修改一個(gè)5X5濾波器矩陣的25個(gè)值,那完全可能經(jīng)過一定的輪次之后,這個(gè)濾波器能夠檢測棱角等特征。這是一種無反饋的訓(xùn)練情況。對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練當(dāng)然不能如此,我們不可能靠運(yùn)氣去做這件事情。
舉個(gè)例子,我們要訓(xùn)練一個(gè)用于分類的神經(jīng)網(wǎng)絡(luò),讓它能判定輸入圖像中的物體最可能是十個(gè)類別的哪一類。那么,訓(xùn)練過程就是這樣的:
第一次訓(xùn)練,輸入一張圖像,這個(gè)圖像通過各層卷積處理輸出量一組向量[1,1,1,1,1,1,1,1,1,1], 也就是,對(duì)于完全由隨機(jī)濾波器構(gòu)建的網(wǎng)絡(luò),其輸出認(rèn)為這張圖等概率的是十個(gè)類別中的某一種。
但是對(duì)于訓(xùn)練,我們有一個(gè)Gound Thuth, 也就是這張圖中物體所屬的類別:[0,0,1,0,0,0,0,0,0,0],也就是屬于第三類。這時(shí)候我們可以定義一個(gè)損失函數(shù),比如常見的MSE(mean squared error)。
我們假定L是這個(gè)損失函數(shù)的輸出。這時(shí)候我們的目的就是,讓L的值反饋(這種神經(jīng)網(wǎng)絡(luò)概念下稱為 back propagation, 反向傳輸)給整個(gè)卷積神經(jīng)網(wǎng)絡(luò),以修改各個(gè)濾波器的權(quán)重,使得損失值L最小。
這是一個(gè)典型的最優(yōu)化問題。當(dāng)然地,在工程上我們幾乎不可能一次就把濾波器的權(quán)重W修改到使L最小的情況,而是需要多次訓(xùn)練和多次修改。
如果情況理想的話,權(quán)重修改的方向是使得L的變化收斂的。這也就是說很可能達(dá)到了我們訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò)的目的——讓各個(gè)卷積層的濾波器能夠組合起來最優(yōu)化的檢測特定的模式。
參考文獻(xiàn)
[1] Zeiler, M. D., & Fergus, R. (2014, September). Visualizing and understanding convolutional networks. In European conference on computer vision (pp. 818-833). Springer, Cham.
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100877 -
圖像識(shí)別
+關(guān)注
關(guān)注
9文章
520瀏覽量
38287 -
人工智能
+關(guān)注
關(guān)注
1792文章
47377瀏覽量
238878
原文標(biāo)題:給你一個(gè)卷積神經(jīng)網(wǎng)絡(luò)工作原理最直觀的解釋
文章出處:【微信號(hào):eet-china,微信公眾號(hào):電子工程專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論