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