AI產(chǎn)品:淺談CNN(卷積神經(jīng)網(wǎng)絡(luò))
![](http://image.woshipm.com/wp-files/img/36.jpg)
文章對卷積神經(jīng)網(wǎng)絡(luò)CNN核心特點(diǎn)以及它的基本原理展開簡要的解讀,希望能夠加深你對卷積神經(jīng)網(wǎng)絡(luò)的解。
一、卷積神經(jīng)網(wǎng)絡(luò)概述
1.卷積神經(jīng)網(wǎng)絡(luò)要解決的問題
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)與DNN(深度神經(jīng)網(wǎng)絡(luò))不同層神經(jīng)元的連接方式是“全連接”,也就是這一次層的一個(gè)神經(jīng)元的輸入,會(huì)接受上一次每一個(gè)神經(jīng)元的輸出,這種方式即為“全連接神經(jīng)網(wǎng)絡(luò)”。
這樣的連接方式有一個(gè)的缺點(diǎn):因?yàn)闄?quán)值與偏置等參數(shù)量大,導(dǎo)致訓(xùn)練收斂十分緩慢。特別是對于圖像這樣的訓(xùn)練數(shù)據(jù),動(dòng)不動(dòng)就是數(shù)以百萬的像素,理論上雖然可以收斂,但你可能得等上N年才有結(jié)果,而且它的泛化性也會(huì)變差。
2.卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)CNN就是為了解決這個(gè)問題而生,它的核心特點(diǎn)有三個(gè)
局部感受野
一張圖像,我們實(shí)際上并不需要讓每個(gè)神經(jīng)元都接受整個(gè)圖片的信息,而是讓不同區(qū)域的神經(jīng)元對應(yīng)一整張圖片的不同局部,最后只要再把局部信息整合到一起就可以了。這樣就相當(dāng)于在神經(jīng)元最初的輸入層實(shí)現(xiàn)了一次降維
這有點(diǎn)像我們的眼鏡,左右眼各負(fù)責(zé)看到一部分視野,最后只要通過神經(jīng)把視野整合到一起,我們看到的依舊是一個(gè)相對完整的視野
卷積層的權(quán)值共享
這可以說是卷積神經(jīng)網(wǎng)絡(luò)的最最最重要也是它牛逼之處,剛剛我們說到全連接神經(jīng)網(wǎng)絡(luò)最大的問題就是權(quán)值參數(shù)太多,而卷積神經(jīng)網(wǎng)絡(luò)的卷積層,不同神經(jīng)元的權(quán)值是共享的,這使得整個(gè)神經(jīng)網(wǎng)絡(luò)的參數(shù)大大減小,提高了整個(gè)網(wǎng)絡(luò)的訓(xùn)練性能,具體的實(shí)現(xiàn)方式我們一會(huì)再說
池化層(Pooling Layer)
簡單理解可以看作是對圖像的一次“有損壓縮”,因?yàn)樵趯?shí)際的訓(xùn)練中,我們并不需要對圖像中的每一個(gè)細(xì)節(jié)都進(jìn)行特征提取和訓(xùn)練,所以池化的作用就是更進(jìn)一步的信息抽象和特征提取,當(dāng)然也會(huì)減小數(shù)據(jù)的處理量
二、卷積神經(jīng)網(wǎng)絡(luò)核心概念
我們先來來看看所謂的卷積到底是什么
1.卷積核
卷積核表達(dá)式: F(x)=wx+b
簡單認(rèn)識(shí)一下卷積到底是怎么實(shí)現(xiàn)特征提取的。假設(shè)現(xiàn)在輸入一個(gè)圖片作為x(3×3像素),一個(gè)簡單的卷積核w=【1,1,1,1,1,1,1,1,1】,b為0,那么這個(gè)圖像經(jīng)過一次卷積后,實(shí)現(xiàn)的效果如圖
這樣一個(gè)3×3的圖像,通過卷積后就被壓縮得到一個(gè)點(diǎn)“6”,我們就把這個(gè)點(diǎn)存儲(chǔ)在卷積層的空間里(即 Feature map)。
當(dāng)然在實(shí)際的訓(xùn)練中,卷積核的w與b也是被隨機(jī)賦值并通過迭代法學(xué)出來的。而且在卷積后往往還會(huì)跟上一個(gè)激勵(lì)函數(shù)如ReLU或Sigmoid。
2.步長
剛剛我們所說的是最為簡化的圖像(3×3),而卷積的工作方式,我們理解為“掃描”,加入一個(gè)圖像是9×9像素,而卷積核理解為一個(gè)3×3的方框,那么一次卷積得到一個(gè)數(shù)字,而步長即為卷積下次移動(dòng)掃描挪動(dòng)的步數(shù)。
假設(shè)stride=1,那么每次就只滑動(dòng)一個(gè)單位,它主要影響卷積對數(shù)據(jù)掃描的細(xì)密程度,步長越大,當(dāng)然掃描的越粗糙,通常情況下Stride都會(huì)取“1”
3.卷積濾波器與卷積層
卷積濾波器通常由一個(gè)卷積核和激勵(lì)函數(shù)構(gòu)成,一個(gè)局部圖像經(jīng)過卷積濾波器提取特征后會(huì)形成一個(gè)Feature map,該平面上所有的神經(jīng)元權(quán)值共享
4.Pooling Layer(池化層)
池化層是在圖像經(jīng)過卷積處理后的又一次有效特征提取和模糊處理。它和“下采樣”實(shí)際上是一個(gè)意思。下面我們來看看所謂的“池化處理”或“下采樣過程”到底是怎么回事。
常見的方式有兩種,一種叫Max pooling(最大化),一種為Mean pooling(平均),它們都是對前面輸入的數(shù)據(jù)做一次處理,假設(shè)我們用的是2X2的Pooling Filter(池化濾波器)
最大值池化過程
對輸入的數(shù)據(jù)進(jìn)行一次取最大值處理
平均值池化過程
對輸入的數(shù)據(jù)進(jìn)行一次取平均值處理
池化(下采樣)的作用
這樣的池化處理,在處理圖像的時(shí)候是可以提取更為抽象的特征,減少數(shù)據(jù)處理量的同時(shí)保留有效信息。
當(dāng)然它還可以防止過擬合,想想過擬合的原因就是模型過多開始學(xué)習(xí)數(shù)據(jù)中的細(xì)節(jié)導(dǎo)致其泛化性下降,而這樣的處理剛好可以去除掉不怎么重要的細(xì)節(jié),幫助模型更好地學(xué)習(xí)更為抽象的特征
三、參數(shù)減少和共享權(quán)值
下面我們來看看,CNN到底是以何種方式來完成權(quán)值共享的,要知道這可是它最大的賣點(diǎn)?。?/p>
1.全連接神經(jīng)網(wǎng)絡(luò)
沒有對比就沒有傷害,不妨先來看看全連接的神經(jīng)網(wǎng)絡(luò)處理圖像時(shí)候的一番景象!
這密密麻麻交錯(cuò)縱橫的連接線,還僅僅是連接到隱含層的一個(gè)神經(jīng)元,連接次數(shù)已經(jīng)紅字標(biāo)出,不要太多。
2.“局部野”神經(jīng)網(wǎng)絡(luò)效果圖
先聲明本身是沒有這個(gè)什么“局部野”神經(jīng)網(wǎng)絡(luò)的,只不過為了能更好地一步一步去理解我們先前說的概念
發(fā)現(xiàn)了沒,通過不同神經(jīng)元去接受局部圖像的信息,這樣它們明顯不會(huì)有那么多的權(quán)值參數(shù)了!但這還不夠
3.卷積層
如果我們在這個(gè)基礎(chǔ)上,加上卷積濾波和激勵(lì)函數(shù)的處理,最后會(huì)得到一層Feature map,在這個(gè)層中神經(jīng)元之間的權(quán)值參數(shù)將會(huì)共享,完全一致哦
到這里你應(yīng)該已經(jīng)體會(huì)到卷積神經(jīng)網(wǎng)絡(luò)思想的核心所在:通過局部感受野、卷積層權(quán)值共享的方法,大大降低了網(wǎng)絡(luò)參數(shù)的數(shù)量,減小網(wǎng)絡(luò)的空間復(fù)雜程度。這就解決了我們最開始引出的問題,面對圖像這樣數(shù)以百萬像素維度的數(shù)據(jù),全連接神經(jīng)網(wǎng)絡(luò)無法有效對其進(jìn)行處理,而卷積神經(jīng)網(wǎng)絡(luò)則剛好是對癥下藥!
當(dāng)然在整個(gè)神經(jīng)網(wǎng)絡(luò)的宏觀結(jié)構(gòu)上,不同局部對應(yīng)不同的卷積濾波器,以提取不同的特征。
?四、CNN網(wǎng)絡(luò)架構(gòu)及訓(xùn)練過程
1.LeNet-5CNN的網(wǎng)絡(luò)模型架構(gòu)
可以看出來,這是一個(gè)識(shí)別字母的神經(jīng)網(wǎng)絡(luò)(大寫的“A”有木有)
首先經(jīng)過一次卷積濾波處理,得到了C1(卷積層 Feature map),然后又經(jīng)過了一次下采樣(池化)處理得到了S2(下采樣層),之后又是一次卷積濾波得到C3卷積層,依次處理至途中的C5位全連接層,至此卷積的過程結(jié)束,被抽象的特征輸入至傳統(tǒng)的全連接神經(jīng)網(wǎng)絡(luò),之后就又是熟悉的節(jié)奏了。
2.訓(xùn)練過程(有監(jiān)督學(xué)習(xí))
向前傳播階段
- 選取訓(xùn)練樣本(x,y),將x輸入網(wǎng)絡(luò)中
- 隨機(jī)初始化權(quán)值(一般情況下選取小數(shù)),信息從輸入層經(jīng)過一層一層的特征提取和轉(zhuǎn)換,最后到達(dá)輸出層,得到輸出結(jié)果
反向傳播階段
- 輸出結(jié)果與理想結(jié)果對比,計(jì)算全局性誤差(即我們之前說的Loss)
- 得到的誤差反向傳遞給不同層的神經(jīng)元,按照我們之前所說的“迭代法”調(diào)整權(quán)值和偏重,尋找全局性最優(yōu)的結(jié)果
?五、場景應(yīng)用
卷積神經(jīng)網(wǎng)絡(luò)目前最廣泛的應(yīng)用場景為圖像識(shí)別領(lǐng)域,其中一個(gè)原因就是我們最初提到的,權(quán)值共享使得網(wǎng)絡(luò)在處理圖像的時(shí)候大大減少了參數(shù)數(shù)量,使得網(wǎng)絡(luò)的訓(xùn)練速度更快。
當(dāng)然最重要的還不止于此,我們都知道圖像識(shí)別一個(gè)很大的問題就是如果圖像中有一些損壞、缺失或變形的話,那么很可能干擾圖像的識(shí)別結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)的卷積層和池化層在圖像的本質(zhì)都是提取更為抽象的特征,簡單理解就是“模糊化”壓縮處理,把一個(gè)圖像中不那么重要的細(xì)節(jié)去掉,找到最為重要的特征進(jìn)行學(xué)習(xí)。
那么圖像中小細(xì)節(jié)的變化,反應(yīng)在神經(jīng)網(wǎng)絡(luò)中也就是一些特征向量的變化,但這這個(gè)變化在卷積和池化處理后,對產(chǎn)生的結(jié)果影響幾乎是微乎其微的,換句話說在CNN看來,這兩張圖片幾乎就完全是“一張圖片”了
以上就是對卷積神經(jīng)網(wǎng)絡(luò)CNN核心特點(diǎn)以及它的基本原理,是不是并沒有想象中的那么難以理解呢?最后給大家一個(gè)小彩蛋,希望可以幫助你們梳理卷積神經(jīng)網(wǎng)絡(luò)的知識(shí)結(jié)構(gòu):
本文由 @free 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash ,基于 CC0 協(xié)議
產(chǎn)品經(jīng)理居然要懂這么多技術(shù)知識(shí)???