不懂卷積神經(jīng)網(wǎng)絡(luò)?別怕,看完這幾張萌圖你就明白了!
這篇文章用最簡(jiǎn)明易懂的方式解釋了卷積神經(jīng)網(wǎng)絡(luò)(CNN)的基本原理,并繞開了里面的數(shù)學(xué)理論。
同時(shí),如果想對(duì)從頭開始構(gòu)建CNN網(wǎng)絡(luò)之類的問(wèn)題感興趣,作者推薦去讀《 Artificial Intelligence for Humans Volume 3: Deep Learning and Neural Networks》中第10章節(jié)的內(nèi)容。
不多說(shuō)了,開始CNN之旅——
網(wǎng)絡(luò)結(jié)構(gòu)
CNN的模型通常建立在前饋神經(jīng)網(wǎng)絡(luò)模型之上,它的結(jié)構(gòu)你也應(yīng)該不陌生。不同是的,“隱藏層”將被以下這些層取代:
- 卷積層(Convolutional Layers)
- 池化層(Pooling Layers)
全連接層(稠密層,Dense Layers)
結(jié)構(gòu)類似下圖:
卷積
在此階段,輸入圖像被一個(gè)grid掃描,并作為輸入傳遞到網(wǎng)絡(luò)。之后,這個(gè)網(wǎng)絡(luò)將一層卷積層應(yīng)用于輸入的圖像,將它分割成包含3張圖像的三維立方體結(jié)構(gòu)。這3三張圖像個(gè)框架分別呈現(xiàn)原圖的紅色、綠色和藍(lán)色信息。
隨后,它將卷積濾波器(也稱神經(jīng)元)應(yīng)用到圖像中,和用PhotoShop中的濾鏡突出某些特征相似。例如在動(dòng)畫片《Doc And Mharti》中,用羅伯茨交叉邊緣增強(qiáng)濾波器處理過(guò)的效果如下圖所示:
原圖
處理后
可以想象,擁有100多個(gè)不同濾波器的神經(jīng)網(wǎng)絡(luò)篩選復(fù)雜特征的能力有多強(qiáng)大,這將大大助力它識(shí)別現(xiàn)實(shí)世界中事物。一旦神經(jīng)網(wǎng)絡(luò)已經(jīng)將卷積濾波器應(yīng)用到圖像中,我們就能得到特征/激活圖。
特征圖譜會(huì)被指定區(qū)域內(nèi)的特定神經(jīng)元激活,比如我們將邊緣檢測(cè)濾波器添加到下面左圖中,則它的激活圖如右圖所示:
這些點(diǎn)代表0的行(表明這些區(qū)域可能是邊緣)。在二維數(shù)組中,“30”的值表明圖像區(qū)域存在邊緣的可能性很高。
激活層
當(dāng)我們有了激活圖,就能在其中讓激活函數(shù)大顯身手了,我們用研究人員的***函數(shù)——ReLU激活函數(shù)(修正線性單元)舉個(gè)例子。然而,一些研究人員仍然認(rèn)為用Sigmoid函數(shù)或雙曲切線能得到提供***的訓(xùn)練結(jié)果,但我不這么認(rèn)為。
使用激活層是在系統(tǒng)中引入非線性,這樣可以提高輸入和輸出的一般性。ReLU(x)函數(shù)只返回max(0、x)或簡(jiǎn)單地返回激活圖中的負(fù)權(quán)值。
池化層
之后的***做法通常是在特征圖中應(yīng)用***池化(或任何其他類型的池)。應(yīng)用***池化層的原理是掃描小型grid中的圖像,用一個(gè)包含給定grid中***值的單個(gè)單元替換每個(gè)grid:
這樣做的重要原因之一是,一旦我們知道給定特征在一個(gè)給定的輸入?yún)^(qū)域,我們可以忽略特征的確切位置將數(shù)據(jù)普遍化,減少過(guò)擬合。舉個(gè)例子,即使訓(xùn)練精度達(dá)到99%,但拿到?jīng)]見過(guò)的新數(shù)據(jù)上測(cè)試時(shí),它的精確度也只有50%。
輸出層
***池化層后我們講講剩下的另一個(gè)激活圖,這是傳遞給全連接網(wǎng)絡(luò)的一部分信息。它包含一個(gè)全連接層,將上一層中每個(gè)神經(jīng)元的輸出簡(jiǎn)單映射到全連接層的一個(gè)神經(jīng)元上,并將softmax函數(shù)應(yīng)用到輸出中,就是和我們之前提到的ReLU函數(shù)類似的激活函數(shù)。
因?yàn)槲覀儗⒂蒙窠?jīng)網(wǎng)絡(luò)將圖片分類,因此這里使用了softmax函數(shù)。softmax輸出返回列表的概率求和為1,每個(gè)概率代表給定圖像屬于特定輸出類的概率。但后來(lái)涉及到圖像預(yù)測(cè)和修復(fù)任務(wù)時(shí),線性激活函數(shù)的效果就比較好了。
值得注意的是,講到這里我們只考慮了單卷積層和單池層的簡(jiǎn)單情況,如果要實(shí)現(xiàn)***精度通常需要它們多層堆疊。經(jīng)過(guò)每個(gè)完整的迭代后,通過(guò)網(wǎng)絡(luò)反向根據(jù)計(jì)算損失更新權(quán)重。