天天看點

讀書筆記(12)卷積神經網絡CNN及應用

一、CNN算法導入

CNN∈深度學習

在前面推文我們曾介紹過兩種算法在手寫數字識别方面的應用:K近鄰算法(KNN)和支援向量機(SVM);本期,我們介紹一種更為強大的算法來識别手寫數字——卷積神經網(CNN)。卷積神經網絡屬于深度學習的範疇,是一種前饋型人工神經網絡,已成功地應用于圖像識别。說到這裡,大家可能會疑惑,對于同一個分類任務,我們既然可以用機器學習的算法來做,為什麼要用神經網絡呢?大家回顧一下,一個分類任務,如果用機器學習算法來做,首先要明确feature和label,然後把這個資料'灌'到算法裡去訓練,最後儲存模型,再來預測分類的準确性。但這就會出現問題,即我們需要确定好特征。如果特征數目過少,我們可能無法實作精确的分類(欠拟合);如果特征數目過多,可能會導緻我們在分類過程中過于注重某個特征導緻分類錯誤(過拟合)。然而神經網絡的出現使我們不需要做大量的特征工程就可以直接把資料灌進去,讓資料自己訓練,自我“修正”,最終就可得到一個較好的效果。

二、CNN原理

2.1 簡介

CNN和普通的神經網絡具有許多相似之處,它們都是模仿人類神經的結構,由具有可學習的權重和偏置常數的神經元組成。每一個神經元可以接收輸入信号,經過運算後輸出每一個分類的分數。但是,CNN的輸入一般是圖像,卷積網絡通過一系列方法,成功将資料量龐大的圖像識别問題不斷降維,最終使其能夠被訓練。CNN利用該特點,把神經元設計成具有三個次元:width(圖像寬度), height(圖像長度), depth(紅、綠、藍3種顔色通道)。

讀書筆記(12)卷積神經網絡CNN及應用

傳統神經網絡(左)和卷積神經網絡(右)

下面我們簡單地介紹一下卷積神經網絡基本結構。

2.2 CNN基本結構

卷積神經網絡通常包括以下幾種"層":

(1)卷積層(Convolutional layer),卷積神經網路中每層卷積層由若幹卷積單元組成,每個卷積單元的參數都是通過反向傳播算法優化得到的。卷積運算的目的是提取輸入的不同特征,第一層卷積層可能隻能提取一些低級的特征如邊緣、線條和角等層級,更多層的網絡能從低級特征中疊代提取更複雜的特征。

讀書筆記(12)卷積神經網絡CNN及應用

4*4 image與兩個2*2的卷積核操作結果

(2)池化層(Pooling layer),即層下采樣的過程,目的是為了減少特征圖。通常在卷積層之後會得到次元很大的特征,将特征切成幾個區域,取其最大值或平均值,得到新的、次元較小的特征。

讀書筆記(12)卷積神經網絡CNN及應用

保證畫質的前提下減少參數(圖檔尺寸3*3→2*2)

(3)全連接配接層( Fully-Connected layer), 把所有局部特征結合變成全局特征,用來計算最後每一類的得分。

讀書筆記(12)卷積神經網絡CNN及應用

實作最終分類

三.CNN應用—手寫數字識别

上面我們了解了卷積神經網絡的基本結構和工作原理,現在我們回到最開始的例子,應用CNN來實作手寫數字識别。我們利用一個五層的卷積神經網絡,在進行代碼介紹之前,我們通過一個簡潔的例子對手寫識别的原理進行三維展示:

http://scs.ryerson.ca/~aharley/vis/conv/(大家可自行至該網站進行實踐,通過對該3D圖形進行旋轉,了解其原理)。

讀書筆記(12)卷積神經網絡CNN及應用

3.1導入所需子產品

讀書筆記(12)卷積神經網絡CNN及應用

3.2讀取檔案并做相應處理:

A.讀取檔案

讀書筆記(12)卷積神經網絡CNN及應用

B.做直方圖

讀書筆記(12)卷積神經網絡CNN及應用

輸出結果為

讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用

C.歸一化處理

讀書筆記(12)卷積神經網絡CNN及應用

D.Reshape & Encode

訓練集與測試集中的圖檔像素為28*28。而計算機在讀取圖檔時,讀取結果是一個具有784個數值的一維矩陣,是以我們需要将所有的資料轉化為28*28*1的三維矩陣。(對于RGB圖檔來說,則需要轉化為28*28*3的三維矩陣)。

原始圖檔的标簽是數字0-9,我們需要對這些标簽進行one-hot編碼使其成為一個十維的向量。(例如:标簽為數字2,進行one-hot編碼後變為[0,0,1,0,0,0,0,0,0,0])。

讀書筆記(12)卷積神經網絡CNN及應用

E.對訓練集進行分割

将訓練集進行分割,其中10%作為驗證集進行模型評估,90%用于訓練模型。在2.A部分的直方圖可以看到我們的資料較為平衡,是以可以直接對資料進行分割。

讀書筆記(12)卷積神經網絡CNN及應用

3.3 CNN

A.定義模型

從之前的介紹中,我們應該已經對卷積層和池化層的作用及原理有了大概的了解。将二者結合使用,CNN就可以更準确地學習到最主要的特征。

讀書筆記(12)卷積神經網絡CNN及應用

B.設定優化器

讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用
讀書筆記(12)卷積神經網絡CNN及應用