五分鐘了解卷積神經(jīng)網(wǎng)絡(luò)
經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)和全連接的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)上的差異還是比較大的,全連接的網(wǎng)絡(luò),相鄰兩層的節(jié)點都有邊相連,而卷積神經(jīng)網(wǎng)絡(luò),相鄰節(jié)點只有部分節(jié)點相連。
全連接神經(jīng)網(wǎng)絡(luò)處理圖像的最大問題在于全連接層的參數(shù)太多,參數(shù)太多的話容易發(fā)生過擬合而且會導(dǎo)致計算速度減慢,卷積神經(jīng)網(wǎng)絡(luò)可以減小參數(shù)個數(shù)的目的。
假設(shè)輸入是一張圖片大小為28*28*3,第一層隱藏層有500個節(jié)點,那么第一層的參數(shù)就有28*28*3*500+500=1176000個參數(shù),當(dāng)圖片更大時,參數(shù)就更多了,而且這只是第一層。
那么為什么卷積神經(jīng)網(wǎng)絡(luò)可以達(dá)到減小參數(shù)的目的呢?
卷積神經(jīng)網(wǎng)絡(luò)最為關(guān)鍵的有卷積層,池化層,全連接層。
卷積層卷積層中每個節(jié)點的輸入只是上一層神經(jīng)網(wǎng)絡(luò)的一小塊,通常由卷積核來實現(xiàn),卷積核是一個過濾器,可以想象成一個掃描窗口,扣到每張圖片上,然后根據(jù)設(shè)置好的大小步長等等掃描圖片,計算規(guī)則是被扣的圖像像素矩陣跟卷積核的權(quán)重對應(yīng)位置相乘然后求和,每掃描一次得到一個輸出。卷積層所做的工作可以理解為對圖像像素的每一小塊進(jìn)行特征抽象??梢酝ㄟ^多個不同的卷積核對同一張圖片進(jìn)行卷積,卷積核的個數(shù),其實就是卷積之后輸出矩陣的深度。卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)個數(shù)與圖片大小無關(guān),只跟過濾器的尺寸、深度以及卷積核的個數(shù)(輸出矩陣的深度)有關(guān)。假設(shè)是還是28*28*3的圖片,卷積核的大小設(shè)為3*3*3,輸出矩陣的深度為500,那么參數(shù)個數(shù)為3*3*3*500+500=14000個參數(shù),對比全連接層,參數(shù)減少了很多。
圖3 形象的卷積層示例
池化層池化層可以認(rèn)為是將一張高分辨率的圖片轉(zhuǎn)化為低分辨率的圖片??梢苑浅S行У目s小矩陣的尺寸,從而減小全連接層的參數(shù)個數(shù),這樣可以加快計算速率同時又防止過擬合,池化,可以減小模型,提高速度,同時提高所提取特征的魯棒性。
使用2*2的過濾器步長為2,最大池化如下圖所示:
圖4 2*2過濾器最大池化示例圖
我們可以將卷積層和池化層看成是自動特征提取就可以了。
通過上面直觀的介紹,現(xiàn)在我們就知道為什么卷積神經(jīng)網(wǎng)絡(luò)可以達(dá)到減小參數(shù)的目的了?
和全連接神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢在于共享權(quán)重和稀疏連接。共享權(quán)重在于參數(shù)只與過濾器有關(guān)。卷積神經(jīng)網(wǎng)絡(luò)減少參數(shù)的另外一個原因是稀疏連接。輸出節(jié)點至于輸入圖片矩陣的部分像素矩陣有關(guān),也就是跟卷積核扣上去的那一小塊矩陣有關(guān)。這就是稀疏連接的概念。
卷積神經(jīng)網(wǎng)絡(luò)通過權(quán)重共享和稀疏連接來減少參數(shù)的。從而防止過度擬合。
訓(xùn)練過程卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程大致可分為如下幾步:
第一步:導(dǎo)入相關(guān)庫、加載參數(shù)
第二步:歸一化,有利于加快梯度下降
第三步:定義參數(shù)及卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
第四步:前行傳播過程
第五步:成本函數(shù)
第六步:梯度下降更新參數(shù)
第七步:訓(xùn)練模型