一和敬、為什么需要CNN
在全連接神經(jīng)網(wǎng)絡(luò)中,每相鄰兩層之間的每個神經(jīng)元之間都是有邊相連的洞渤。當(dāng)輸入層的特征維度變得很高時况既,這時全連接網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)就會增大很多这溅,計算速度就會變得很慢,例如一張黑白的 28×28 的手寫數(shù)字圖片棒仍,輸入層的神經(jīng)元就有784個悲靴,如下圖所示:
全連接
若在中間只使用一層15個神經(jīng)元的隱藏層,那么參數(shù) w 就有 784 × 15 = 11760 多個莫其;若輸入的是 28×28 帶有顏色的RGB格式的手寫數(shù)字圖片癞尚,那么參數(shù) w 的個數(shù)還需要再乘以 3。這很容易看出使用全連接神經(jīng)網(wǎng)絡(luò)處理圖像中的需要訓(xùn)練參數(shù)過多的問題榜配。
而在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)中否纬,卷積層的神經(jīng)元只與前一層的部分神經(jīng)元節(jié)點相連,即它的神經(jīng)元間的連接是非全連接的蛋褥,且同一層中某些神經(jīng)元之間的連接的權(quán)重 w 和偏移 b 是共享的(Shared Weights),這樣大量地減少了需要訓(xùn)練參數(shù)的數(shù)量睛驳。
二烙心、CNN的卷積層
在卷積層中有幾個重要的概念:
1膜廊、Local receptive fields(感受視野)
假設(shè)輸入的是一個 28×28 的的二維神經(jīng)元,我們定義5×5 的 一個 Local receptive fields(感受視野)淫茵,即 隱藏層的神經(jīng)元與輸入層的 5×5 個神經(jīng)元相連爪瓜,這個 5×5 的區(qū)域就稱之為 Local Receptive Fields,如下圖所示:
Local receptive fields
2匙瘪、Shared weights(共享權(quán)值)
我們知道铆铆,隱含層的每一個神經(jīng)元都連接 5x5 個圖像區(qū)域,也就是說每一個神經(jīng)元存在 5x5=25 個連接權(quán)值參數(shù)丹喻。那如果對下一層的每個神經(jīng)元來說薄货,這 25 個參數(shù)是相同的呢?也就是說下一層的每個神經(jīng)元用的是同一個卷積核去卷積圖像碍论。這樣我們就只有多少個參數(shù)谅猾??只有 25 個參數(shù)镑⒂啤税娜!不管你隱層的神經(jīng)元個數(shù)有多少,兩層間的連接我只有 25 個參數(shù)安匮小敬矩!這就是卷積神經(jīng)網(wǎng)絡(luò)的主打賣點。
但是蠢挡,你就會想弧岳,這樣提取特征也忒不靠譜吧,這樣你只提取了一種特征疤桓纭缩筛?我們需要提取多種特征對不?假如一種濾波器堡称,也就是一種卷積核就是提出圖像的一種特征瞎抛,那么我們需要提取不同的特征,怎么辦却紧,加多幾種濾波器不就行了嗎桐臊?對了。所以假設(shè)我們加到 100 種濾波器晓殊,每種濾波器的參數(shù)不一樣断凶,表示它提出輸入圖像的不同特征。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映巫俺,我們稱之為Feature Map认烁。所以 100 種卷積核就有 100 個 Feature Map。這 100 個 Feature Map 就組成了一層神經(jīng)元。到這個時候明了了吧却嗡。我們這一層有多少個參數(shù)了舶沛?100 種卷積核 x 每種卷積核共享 25 個參數(shù)= 100 x 25 = 2500,也就是2500個參數(shù)窗价。
需要注意的一點是如庭,上面的討論都沒有考慮每個神經(jīng)元的偏置部分。所以權(quán)值個數(shù)需要加1 撼港。這個也是同一種濾波器共享的坪它。
因此在CNN的卷積層,我們需要訓(xùn)練的參數(shù)大大地減少到了 (5×5+1)×100=2600個帝牡。
圖片卷積
三往毡、“卷積”操作
當(dāng)給一張新的圖時,CNN并不能準(zhǔn)確地知道這些 Features 到底要匹配原圖的哪些部分否灾,所以它會在原圖中每一個可能的位置進(jìn)行嘗試卖擅。這樣在原始整幅圖上每一個位置進(jìn)行匹配計算。這個我們用來匹配的過程就被稱為卷積操作墨技,這也就是卷積神經(jīng)網(wǎng)絡(luò)名字的由來惩阶。
這個卷積操作背后的數(shù)學(xué)知識其實非常的簡單。要計算一個濾波器和其在原圖上對應(yīng)的某一小塊的結(jié)果扣汪,只需要簡單地將兩個小塊內(nèi)對應(yīng)位置的像素值進(jìn)行乘法運算断楷,然后將整個小塊內(nèi)乘法運算的結(jié)果累加起來,最后再除以小塊內(nèi)像素點總個數(shù)即可崭别。具體過程如下:
卷積操作
最后整張圖算完冬筒,大概就像下面這個樣子:
卷積完成
然后換用其他濾波器進(jìn)行同樣的操作,最后得到的結(jié)果就是這樣了:
多卷積和
四茅主、池化(Pooling)
當(dāng)輸入經(jīng)過卷積層時舞痰,若感受視野比較小,步長stride比較小诀姚,得到的feature map (特征圖)還是比較大响牛,可以通過池化層來對每一個 feature map 進(jìn)行降維操作,輸出的深度還是不變的赫段,依然為 feature map 的個數(shù)呀打。
池化可以將一幅大的圖像縮小,同時又保留其中的重要信息糯笙。池化背后的數(shù)學(xué)頂多也就是小學(xué)二年級水平贬丛。它就是將輸入圖像進(jìn)行縮小,減少像素信息给涕,只保留重要信息豺憔。通常情況下额获,池化都是 2×2 大小,比如對于 max-pooling 來說焕阿,就是取輸入圖像中 2×2 大小的塊中的最大值咪啡,作為結(jié)果的像素值首启,相當(dāng)于將原始圖像縮小了 4 倍暮屡。(注:同理,對于average-pooling來說毅桃,就是取 2×2 大小塊的平均值作為結(jié)果的像素值褒纲。)
池化
所以,池化的實質(zhì)就是把圖片變模糊了钥飞,相當(dāng)于給圖片打了馬賽克莺掠,如下圖:
馬賽克
通過加入池化層,可以很大程度上減少計算量读宙,降低機(jī)器負(fù)載彻秆。
到現(xiàn)在為止,已經(jīng)講了從輸入到池化的過程结闸,圖片也從原來的 28 × 28 變成了 12 × 12唇兑,如下圖
輸入->卷積->池化
五、激活函數(shù)Relu (Rectified Linear Units)
這里桦锄,我們用Relu作為激活函數(shù):
Relu激活函數(shù)
六扎附、全連接層(Fully connected layers)
到這里,卷積神經(jīng)網(wǎng)絡(luò)基本介紹完畢结耀,總結(jié)(敲黑板)留夜,卷積神經(jīng)網(wǎng)絡(luò)的目的就是降低網(wǎng)絡(luò)復(fù)雜度,減少權(quán)值W和偏置值b的個數(shù)图甜,它不是一個完整的網(wǎng)絡(luò)碍粥,所以,在最后還須加入普通的神經(jīng)網(wǎng)絡(luò)(全連接層)黑毅。
卷積神經(jīng)網(wǎng)絡(luò)總體圖
參考:
http://blog.csdn.net/v_JULY_v/article/details/51812459
http://www.reibang.com/p/fe428f0b32c1#comment-21577884
http://blog.csdn.net/u012641018/article/details/52238169
http://blog.csdn.net/cxmscb/article/details/71023576
http://blog.csdn.net/u010555688/article/details/24848367
作者:小道蕭兮
鏈接:http://www.reibang.com/p/d813215b27fc
來源:簡書
簡書著作權(quán)歸作者所有嚼摩,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。