當前位置:
首頁 > 最新 > 給你一個卷積神經網路工作原理最直觀的解釋

給你一個卷積神經網路工作原理最直觀的解釋

作者:Owl of Minerva

量子位 已獲授權編輯發布

轉載請聯繫原作者

卷積神經網路(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)第一個卷積層的濾波器>

卷積神經網路的第一個卷積層的濾波器用來檢測低階特徵,比如邊、角、曲線等。隨著卷積層的增加,對應濾波器檢測的特徵就更加複雜(理性情況下,也是我們想要的情況)。

比如第二個卷積層的輸入實際上是第一層的輸出(濾波器激活圖),這一層的濾波器便是用來檢測低價特徵的組合等情況(半圓、四邊形等),如此累積,以檢測越來越複雜的特徵。實際上,我們的人類大腦的視覺信息處理也遵循這樣的低階特徵到高階特徵的模式。

可參考之前文章《為什麼無彩色系(黑白灰色)在色彩搭配中可以和諧地與任何彩色搭配?》:

最後一層的濾波器按照訓練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.


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

高精地圖對自動駕駛有多重要?和一般導航地圖有何區別?
美國交通部發布新版自動駕駛汽車指南,簡化流程、降低門檻
這個AI正在解碼我們的大腦,它比人類更適合當「科學家」
AI都干過什麼讓人細思極恐的事?
深度學習入門該用PyTorch還是Keras?熱門公開課換框架背後的學問

TAG:量子位 |