一、卷積神經(jīng)網(wǎng)絡(luò)要解決的問題
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)與DNN(深度神經(jīng)網(wǎng)絡(luò))不同層神經(jīng)元的連接方式是“全連接”凰盔,也就是這一次層的一個神經(jīng)元的輸入不瓶,會接受上一次每一個神經(jīng)元的輸出,這種方式即為“全連接神經(jīng)網(wǎng)絡(luò)”。
這樣的連接方式有一個的缺點(diǎn):因為權(quán)值與偏置等參數(shù)量大匈棘,導(dǎo)致訓(xùn)練收斂十分緩慢丧慈。特別是對于圖像這樣的訓(xùn)練數(shù)據(jù),動不動就是數(shù)以百萬的像素主卫,理論上雖然可以收斂逃默,但你可能得等上N年才有結(jié)果,而且它的泛化性也會變差簇搅。
二完域、卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)CNN就是為了解決這個問題而生,它的核心特點(diǎn)有三個
2.1局部感受野
一張圖像瘩将,我們實(shí)際上并不需要讓每個神經(jīng)元都接受整個圖片的信息吟税,而是讓不同區(qū)域的神經(jīng)元對應(yīng)一整張圖片的不同局部,最后只要再把局部信息整合到一起就可以了姿现。這樣就相當(dāng)于在神經(jīng)元最初的輸入層實(shí)現(xiàn)了一次降維
這有點(diǎn)像我們的眼鏡肠仪,左右眼各負(fù)責(zé)看到一部分視野,最后只要通過神經(jīng)把視野整合到一起备典,我們看到的依舊是一個相對完整的視野
2.2卷積層的權(quán)值共享
這可以說是卷積神經(jīng)網(wǎng)絡(luò)的最最最重要也是它牛逼之處异旧,剛剛我們說到全連接神經(jīng)網(wǎng)絡(luò)最大的問題就是權(quán)值參數(shù)太多,而卷積神經(jīng)網(wǎng)絡(luò)的卷積層提佣,不同神經(jīng)元的權(quán)值是共享的吮蛹,這使得整個神經(jīng)網(wǎng)絡(luò)的參數(shù)大大減小荤崇,提高了整個網(wǎng)絡(luò)的訓(xùn)練性能,具體的實(shí)現(xiàn)方式我們一會再說
2.3池化層(Pooling Layer)
簡單理解可以看作是對圖像的一次“有損壓縮”潮针,因為在實(shí)際的訓(xùn)練中术荤,我們并不需要對圖像中的每一個細(xì)節(jié)都進(jìn)行特征提取和訓(xùn)練,所以池化的作用就是更進(jìn)一步的信息抽象和特征提取然低,當(dāng)然也會減小數(shù)據(jù)的處理量
三喜每、卷積神經(jīng)網(wǎng)絡(luò)核心概念
我們先來來看看所謂的卷積到底是什么
3.1卷積核
卷積核表達(dá)式: F(x)=wx+b
簡單認(rèn)識一下卷積到底是怎么實(shí)現(xiàn)特征提取的。假設(shè)現(xiàn)在輸入一個圖片作為x(3x3像素)雳攘,一個簡單的卷積核w=【1带兜,1,1吨灭,1刚照,1,1喧兄,1无畔,1,1】吠冤,b為0浑彰,那么這個圖像經(jīng)過一次卷積后,實(shí)現(xiàn)的效果如圖
這樣一個3x3的圖像拯辙,通過卷積后就被壓縮得到一個點(diǎn)“6”郭变,我們就把這個點(diǎn)存儲在卷積層的空間里(即 Feature map)。
當(dāng)然在實(shí)際的訓(xùn)練中涯保,卷積核的w與b也是被隨機(jī)賦值并通過迭代法學(xué)出來的诉濒。而且在卷積后往往還會跟上一個激勵函數(shù)如ReLU或Sigmoid。
3.2步長
剛剛我們所說的是最為簡化的圖像(3x3)夕春,而卷積的工作方式未荒,我們理解為“掃描”,加入一個圖像是9x9像素及志,而卷積核理解為一個3x3的方框片排,那么一次卷積得到一個數(shù)字,而步長即為卷積下次移動掃描挪動的步數(shù)速侈。
假設(shè)stride=1划纽,那么每次就只滑動一個單位,它主要影響卷積對數(shù)據(jù)掃描的細(xì)密程度锌畸,步長越大勇劣,當(dāng)然掃描的越粗糙,通常情況下Stride都會取“1”
3.3卷積濾波器與卷積層
卷積濾波器通常由一個卷積核和激勵函數(shù)構(gòu)成,一個局部圖像經(jīng)過卷積濾波器提取特征后會形成一個Feature map比默,該平面上所有的神經(jīng)元權(quán)值共享
3.4Pooling Layer(池化層)
池化層是在圖像經(jīng)過卷積處理后的又一次有效特征提取和模糊處理幻捏。它和“下采樣”實(shí)際上是一個意思。為什么要在卷積特征提取過后命咐,還要加入池化層呢篡九?
我們來看下兩種不同的卷積過程:
第一種卷積的“stride=2”,一步可以同時完成特征提取和信息壓縮醋奠,但這樣會導(dǎo)致部分有效信息的丟失
那么我們可以采取兩步走的戰(zhàn)略榛臼,先用卷積確保特征提取完整,再用池化層對無效信息進(jìn)行壓縮窜司。這就可以在保證信息處理量減少的同時保留有效特征信息
常見的池化方式有兩種沛善,一種叫Max pooling(最大化),一種為Mean pooling(平均)塞祈,它們都是對前面輸入的數(shù)據(jù)做一次處理金刁,假設(shè)我們用的是2X2的Pooling Filter(池化濾波器)
最大值池化過程
對輸入的數(shù)據(jù)進(jìn)行一次取最大值處理
平均值池化過程
對輸入的數(shù)據(jù)進(jìn)行一次取平均值處理
池化層還有另一個作用就是防止過擬合,想想過擬合的原因就是模型過多開始學(xué)習(xí)數(shù)據(jù)中的細(xì)節(jié)導(dǎo)致其泛化性下降议薪,而這樣的處理剛好可以去除掉不怎么重要的細(xì)節(jié)尤蛮,幫助模型更好地學(xué)習(xí)更為抽象的特征
四、參數(shù)減少和共享權(quán)值
下面我們來看看斯议,CNN到底是以何種方式來完成權(quán)值共享的产捞,要知道這可是它最大的賣點(diǎn)啊哼御!
1.全連接神經(jīng)網(wǎng)絡(luò)
沒有對比就沒有傷害坯临,不妨先來看看全連接的神經(jīng)網(wǎng)絡(luò)處理圖像時候的一番景象!
這密密麻麻交錯縱橫的連接線艇搀,還僅僅是連接到隱含層的一個神經(jīng)元尿扯,連接次數(shù)已經(jīng)紅字標(biāo)出求晶,不要太多焰雕。
2.“局部野”神經(jīng)網(wǎng)絡(luò)效果圖
先聲明本身是沒有這個什么“局部野”神經(jīng)網(wǎng)絡(luò)的,只不過為了能更好地一步一步去理解我們先前說的概念
發(fā)現(xiàn)了沒芳杏,通過不同神經(jīng)元去接受局部圖像的信息矩屁,這樣它們明顯不會有那么多的權(quán)值參數(shù)了!但這還不夠
3.卷積層
如果我們在這個基礎(chǔ)上爵赵,加上卷積濾波和激勵函數(shù)的處理吝秕,最后會得到一層Feature map,在這個層中神經(jīng)元之間的權(quán)值參數(shù)將會共享空幻,完全一致哦
到這里你應(yīng)該已經(jīng)體會到卷積神經(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)然在整個神經(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)
可以看出來坊罢,這是一個識別字母的神經(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é)果對比始衅,計算全局性誤差(即我們之前說的Loss)
得到的誤差反向傳遞給不同層的神經(jīng)元,按照我們之前所說的“迭代法”調(diào)整權(quán)值和偏重缭保,尋找全局性最優(yōu)的結(jié)果
?六汛闸、卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用特點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)目前最廣泛的應(yīng)用場景為圖像識別領(lǐng)域,其中一個原因就是我們最初提到的艺骂,權(quán)值共享使得網(wǎng)絡(luò)在處理圖像的時候大大減少了參數(shù)數(shù)量诸老,使得網(wǎng)絡(luò)的訓(xùn)練速度更快。
當(dāng)然最重要的還不止于此钳恕,我們都知道圖像識別一個很大的問題就是如果圖像中有一些損壞别伏、缺失或變形的話,那么很可能干擾圖像的識別結(jié)果忧额。
卷積神經(jīng)網(wǎng)絡(luò)的卷積層和池化層在圖像的本質(zhì)都是提取更為抽象的特征厘肮,簡單理解就是“模糊化”壓縮處理,把一個圖像中不那么重要的細(xì)節(jié)去掉睦番,找到最為重要的特征進(jìn)行學(xué)習(xí)类茂。
那么圖像中小細(xì)節(jié)的變化,反應(yīng)在神經(jīng)網(wǎng)絡(luò)中也就是一些特征向量的變化,但這這個變化在卷積和池化處理后巩检,對產(chǎn)生的結(jié)果影響幾乎是微乎其微的恬涧,換句話說在CNN看來,這兩張圖片幾乎就完全是“一張圖片”了