簡介
卷積神經(jīng)網(wǎng)絡(luò)(CNN)最初是為了解決圖像識別等問題設(shè)計的,現(xiàn)在不僅限于圖像和視頻,還可以應(yīng)用于音頻信號、文本數(shù)據(jù)等。
早期研究中,最大的挑戰(zhàn)是如何組織特征,因為 圖像數(shù)據(jù)不像其他類型的數(shù)據(jù)那樣可以通過人工理解來提取特征。譬如股票預(yù)測模型中的許多金融因子等等。在深度學(xué)習(xí)出現(xiàn)之前,大多使用SIFT、HoG算法進行提取具有良好區(qū)分性的特征,但還是很有局限性,錯誤率高,常年難以突破。
卷積神經(jīng)網(wǎng)絡(luò)不需要將特征提取和分類訓(xùn)練兩個過程分開,在訓(xùn)練時就自動提取了最有效的特征。CNN可以直接使用圖像 的原始像素作為輸入,不必使用SIFT等算法進行特征提取,減輕了傳統(tǒng)算法如SVM等所需要做的大量數(shù)據(jù)預(yù)處理工作。同時,CNN具有很強的泛化性,最大的特點在于卷積的權(quán)值共享,可以大幅減少神經(jīng)網(wǎng)絡(luò)的參數(shù)量,防止過擬合的同時又降低了模型的復(fù)雜度。

我們可以看到CNN和基于Affine層的區(qū)別,CNN中新增了Conv層和Pooling層,連接順序變?yōu)榱薱onvolution-ReLu-(Pooling層有時候會省略)。
卷積層
全連接層存在的問題
全連接層會忽略數(shù)據(jù)的“形狀”,在輸入數(shù)據(jù)時,強行將數(shù)據(jù)拉為一維數(shù)據(jù),從而忽視形狀,無法利用與形狀相關(guān)的信息,而卷積層可以保持形狀不變。
CNN中,有時候?qū)⒕矸e層的輸入輸出數(shù)據(jù)稱之為特征圖。
卷積運算
卷積層進行的運算就是卷積運算,卷積運算相當(dāng)于圖像處理中的“濾波器運算”。

如圖所示,卷積運算對輸入數(shù)據(jù)應(yīng)用濾波器,對于輸入數(shù)據(jù),卷積運算以一定間隔滑動濾波器的窗口并應(yīng)用,如圖所示,

將各個位置上對應(yīng)濾波器的元素和輸入的對應(yīng)元素進行相乘,然后再求和(乘積累加運算),然后將結(jié)果保存到輸入的對應(yīng)位置。
CNN中也存在偏置,如圖所示,向應(yīng)用了濾波器的結(jié)果數(shù)據(jù)加上了偏置,偏置通常為1×1的數(shù)據(jù),向濾波器的所有元素上加。

填充
在進行卷積層的處理前,有時候需要向輸入數(shù)據(jù)的周圍填入固定的數(shù)據(jù),稱之為填充,如圖,向輸入數(shù)據(jù)周圍填入0,這樣做主要是為了調(diào)整輸出的大小。

步幅
應(yīng)用濾波器之間位置的間隔稱之為步幅,之前的例子都是步幅為1,如圖所示,將步幅設(shè)置為2,

綜上,增大步幅后,輸出大小會變?。辉龃筇畛浜?,輸出大小會變大。
若設(shè)置輸入大小(H,W),輸出大小(OH,OW),濾波器大小(FH,FW),填充P,步幅S,則有

三維數(shù)據(jù)的卷積運算
這里可以看出,以圖像作為比方,圖像都是三通道的,所以我們也采用一個三通道的濾波器,然后按照通道進行輸入數(shù)據(jù)與濾波器之間的卷積運算,并將結(jié)果相加,注意,每一個通道的大小必須相同,通道數(shù)只能設(shè)定為何輸入數(shù)據(jù)相一致的值。





tip:對于其中的偏置,可以使用numpy的廣播功能進行實現(xiàn)。
批處理
在這個批處理版本的數(shù)據(jù)流中,各個數(shù)據(jù)都加了批用的維度,在這里數(shù)據(jù)以4維進行傳輸,網(wǎng)絡(luò)間傳遞的是4維數(shù)據(jù),對這N個數(shù)據(jù)進行了卷積運算,也就是將這N次處理匯總成了1次。

池化層
池化是縮小高、長方向上空間的運算,如圖所示,將一個2×2的區(qū)域縮小成1個元素的處理。

圖上所示為按照步幅為2的順序,進行2×2范圍的max池化(即為獲取最大值),一般來說,池化的窗口大小會和步幅大小一致。除max池化之外,還有average池化等,在圖像識別領(lǐng)域中主要使用max池化。
池化層有以下特征:
- 沒有需要學(xué)習(xí)的參數(shù),池化并不是一個學(xué)習(xí)過程,只是從目標(biāo)區(qū)域中取出所需要的值,最大值或者平均值;
- 通道數(shù)不發(fā)生變化,池化是按照通道獨立進行的;
- 對微小的位置變化具有魯棒性(健壯性),即輸入數(shù)據(jù)即使發(fā)生微小變化,池化仍會返回相同結(jié)果。