摘要:本文先介紹淺層神經(jīng)網(wǎng)絡(luò)的特點(diǎn)和應(yīng)用,并指出其發(fā)展的瓶頸及不足之處;然后引入深度學(xué)習(xí)的概念,以卷積神經(jīng)網(wǎng)絡(luò)為例,詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)的關(guān)鍵技術(shù)特點(diǎn),最后通過(guò)一個(gè)實(shí)例說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)在深度學(xué)習(xí)方面的應(yīng)用。
關(guān)鍵詞:多層感知機(jī);深度學(xué)習(xí);卷積神經(jīng)網(wǎng)絡(luò);人工智能
中圖分類號(hào):TP183:文獻(xiàn)標(biāo)識(shí)碼:A
0 引言
在上世紀(jì)80年代,基于生物神經(jīng)元數(shù)學(xué)模型的多層感知機(jī)(Multi-Layer Perceptron,簡(jiǎn)稱 MLP)實(shí)現(xiàn)的網(wǎng)絡(luò)模型就被叫作神經(jīng)網(wǎng)絡(luò)。由于當(dāng)時(shí)的計(jì)算能力受限、數(shù)據(jù)規(guī)模較小等因素,神經(jīng)網(wǎng)絡(luò)一般只能訓(xùn)練到很少的層數(shù),這種小規(guī)模的神經(jīng)網(wǎng)絡(luò)叫做淺層神經(jīng)網(wǎng)絡(luò)(Shallow Neural Network)。淺層神經(jīng)網(wǎng)絡(luò)不太容易輕松提取數(shù)據(jù)的高層特征,表達(dá)能力一般,雖然在諸如數(shù)字圖片識(shí)別等簡(jiǎn)單任務(wù)上取得不錯(cuò)效果,但很快被90年提出的支持向量機(jī)超越。同時(shí),淺層神經(jīng)網(wǎng)絡(luò)的發(fā)展遇到了很大的發(fā)展瓶頸。
1 深度學(xué)習(xí)簡(jiǎn)介
加拿大多倫多大學(xué)教授 Geoffrey Hinton長(zhǎng)期堅(jiān)持神經(jīng)網(wǎng)絡(luò)的研究,但由于當(dāng)時(shí)支持向量機(jī)的流行,神經(jīng)網(wǎng)絡(luò)相關(guān)的研究工作遇到了重重阻礙。2006 年,Geoffrey Hinton 在 [1]
提出了一種逐層預(yù)訓(xùn)練的算法,可以有效地初始化Deep Belief Networks(DBN)網(wǎng)絡(luò),從而
使得訓(xùn)練大規(guī)模、深層數(shù)(上百萬(wàn)的參數(shù)量)的神經(jīng)網(wǎng)絡(luò)成為可能。在論文中,Geoffrey
Hinton 把深層的神經(jīng)網(wǎng)絡(luò)叫做Deep Neural Network,這一塊的研究也因此稱為 Deep
Learning(深度學(xué)習(xí))。
2 卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介
2.1淺層神經(jīng)網(wǎng)絡(luò)的特點(diǎn)分析
前面本文提到淺層神經(jīng)網(wǎng)絡(luò)是采用全連接形式的一種神經(jīng)網(wǎng)絡(luò),這種淺層神經(jīng)網(wǎng)絡(luò)一般層數(shù)不多,但參數(shù)量在當(dāng)時(shí)的計(jì)算機(jī)硬件的條件來(lái)說(shuō)是非常龐大的。訓(xùn)練一個(gè)淺層的神經(jīng)網(wǎng)絡(luò)計(jì)算代價(jià)并不小,由此可見(jiàn),全連接層較高的內(nèi)存占用量嚴(yán)重限制了神經(jīng)網(wǎng)絡(luò)朝著更大規(guī)模、更深層數(shù)方向的發(fā)展。
2.2 卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的一個(gè)典型網(wǎng)絡(luò),通過(guò)充分利用局部相關(guān)性和權(quán)值共享的思想,大大地減少了網(wǎng)絡(luò)的參數(shù)量,從而提高訓(xùn)練效率,更容易實(shí)現(xiàn)超大規(guī)模的深層網(wǎng)絡(luò)[1]。2012年,加拿大多倫多大學(xué)Alex Krizhevsky 將深層卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用在大規(guī)模圖片識(shí)別挑戰(zhàn)賽ILSVRC-2012上,在ImageNet數(shù)據(jù)集上取得了15.3%的Top-5錯(cuò)誤率,排名第一,相對(duì)于第二名在Top-5錯(cuò)誤率上降低了10.9%,這一巨大突破引起了業(yè)界強(qiáng)烈關(guān)注,卷積神經(jīng)網(wǎng)絡(luò)迅速成為計(jì)算機(jī)視覺(jué)領(lǐng)域的新寵,隨后在一系列的任務(wù)中,基于卷積神經(jīng)網(wǎng)絡(luò)的形形色色的模型相繼被提出,并在原有的性能上取得了巨大提升。
2.3 卷積神經(jīng)網(wǎng)絡(luò)的基本原理
在數(shù)字圖像處理中有一種基本的處理方法叫線性濾波[2]。它將待處理的二維數(shù)字看作一個(gè)大型矩陣,圖像中的每個(gè)像素可以看作矩陣中的每個(gè)元素,像素的大小就是矩陣中的元素值。而使用的濾波工具是另一個(gè)小型矩陣,這個(gè)矩陣就被稱為卷積核。卷積核的大小遠(yuǎn)遠(yuǎn)小于圖像矩陣,具體的計(jì)算方式就是對(duì)于圖像大矩陣中的每個(gè)元素,計(jì)算周圍的像素和卷積核對(duì)應(yīng)位置的乘積,之后將結(jié)果相加最終得到的終值就是該像素的值,這樣就完成了一次卷積。
如果采用卷積神經(jīng)網(wǎng)絡(luò)來(lái)替代以上提到的手寫數(shù)字識(shí)別淺層神經(jīng)網(wǎng)絡(luò),采用三個(gè)卷積層,和兩個(gè)全連接層,一共只需要13450個(gè)參數(shù),而且識(shí)別的準(zhǔn)確率大幅上升。經(jīng)過(guò)測(cè)試,可由原來(lái)的91%上升到98%以上。由此可見(jiàn),卷積層的參數(shù)量非常少,主要的參數(shù)量集中在全連接層。由于卷積層將輸入特征維度降低很多,從而使得全連接層的參數(shù)量不至于過(guò)大,因此通過(guò)卷積神經(jīng)網(wǎng)絡(luò)可以顯著降低網(wǎng)絡(luò)參數(shù)量,同時(shí)增加網(wǎng)絡(luò)深度,大幅提高了識(shí)別的準(zhǔn)確率。
3 卷積神經(jīng)網(wǎng)絡(luò)的具體應(yīng)用
卷積神經(jīng)網(wǎng)絡(luò)可以應(yīng)用在人工智能的很多領(lǐng)域[3],比如圖像和自然語(yǔ)言處理等等。其結(jié)合特征提取和目標(biāo)訓(xùn)練為一體的模型,能夠很好地利用已有的信息對(duì)結(jié)果進(jìn)行反饋訓(xùn)練。對(duì)圖像識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),同樣也是充分利用特征提取時(shí)提取的圖像特征,來(lái)計(jì)算圖像特征權(quán)重的大小,然后歸一化處理需要處理的數(shù)據(jù)。這樣使得原來(lái)的圖像信息抽象成一個(gè)向量化的樣本集,之后將樣本集和訓(xùn)練好的模板輸入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行處理。下面以圖像處理為例,說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)具體的編程方法和步驟。
3.1 MNIST數(shù)據(jù)集介紹
MNIST數(shù)據(jù)集是一個(gè)手寫數(shù)字的數(shù)據(jù)庫(kù),它有60000個(gè)28*28像素的訓(xùn)練樣本集和10000個(gè)28*28像素的測(cè)試樣本集[4]。樣本中包含了各個(gè)訓(xùn)練數(shù)據(jù)和相應(yīng)的標(biāo)簽,其中標(biāo)簽集包含了0,1,2,3,4,5,6,7,8,9一共10個(gè)分類數(shù)據(jù)。通過(guò)對(duì)數(shù)據(jù)集的若干次訓(xùn)練,實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)輸入數(shù)字圖片的數(shù)字預(yù)測(cè)。
3.2 數(shù)據(jù)獲取及預(yù)處理
本文使用的編程環(huán)境是TensorFlow 2.3,采用GTX1080 GPU進(jìn)行訓(xùn)練,具體步驟如下:
(1)數(shù)據(jù)獲取
首先使用TensorFlow 2.3本身自帶的數(shù)據(jù)獲取方式獲得MNIST數(shù)據(jù)集并進(jìn)行預(yù)處理。
(2)數(shù)據(jù)預(yù)處理
mnist數(shù)據(jù)集中每個(gè)實(shí)例的標(biāo)簽對(duì)應(yīng)于0-9之間的任意一個(gè)數(shù)字,用來(lái)對(duì)圖片進(jìn)行標(biāo)注,但這種標(biāo)注方法并不能使得損失函數(shù)獲得一個(gè)好的結(jié)果,因此數(shù)據(jù)預(yù)處理主要是先對(duì)數(shù)據(jù)標(biāo)簽(label)進(jìn)行one-hot轉(zhuǎn)換處理,處理之后就把常規(guī)的數(shù)字表示成0,1的形式,這種形式更適合進(jìn)行損失函數(shù)的求解最小化。然后使用TensorFlow自帶的data API進(jìn)行打包,組合成訓(xùn)練集(train)和標(biāo)簽(label)的配對(duì)數(shù)據(jù)集。
3.3 建立卷積神經(jīng)網(wǎng)絡(luò)模型和結(jié)果分析
基本的卷積神經(jīng)網(wǎng)絡(luò)模型是由卷積層、池化層、BatchNormalization層、dropout層以及作為分類的全連接層構(gòu)成,同時(shí)每一層使用relu激活函數(shù)做分割。主要代碼如下:
(1)輸入的初始化
輸入的初始化使用的是Input類,根據(jù)輸入的數(shù)據(jù)大小,將輸入的數(shù)據(jù)維度做成[28,28,1]的三維數(shù)據(jù)。
(2)建立卷積層
使用TensorFlow自帶的卷積層實(shí)現(xiàn)類對(duì)卷積進(jìn)行計(jì)算,通過(guò)設(shè)定卷積核的數(shù)量、卷積核的大小、padding方式和激活函數(shù)初始化卷積類。
(3)建立BatchNormalization層和MaxPooling層
BatchNormalization層和MaxPooling層的目的是輸入數(shù)據(jù)正則化,增大模型的泛化能力。
(4)建立分類的全連接層
全連接層的作用是對(duì)卷積層所提取的特征做最終分類,先使用flat函數(shù)進(jìn)行扁平化,最后使用softmax函數(shù)進(jìn)行分類。
(5)實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)結(jié)果分析來(lái)看,經(jīng)過(guò)15個(gè)epochs訓(xùn)練后,訓(xùn)練集的效果非常好,準(zhǔn)確率達(dá)到了98.91%,但測(cè)試集在第4個(gè)epoch訓(xùn)練結(jié)束后準(zhǔn)確率達(dá)到92.3%,以后就基本沒(méi)有得到提高,說(shuō)明存在一定程度的過(guò)擬合問(wèn)題。
(6)解決過(guò)擬合常規(guī)的辦法
a.正則化
正則化是機(jī)器學(xué)習(xí)中最常見(jiàn)的過(guò)擬合解決方法,在損失函數(shù)中加入正則項(xiàng)來(lái)懲罰模型的參數(shù),以此來(lái)降低模型的復(fù)雜度,常見(jiàn)的添加正則項(xiàng)的正則化技術(shù)有L1,L2正則化。
b. Dropout
Dropout是深度學(xué)習(xí)中最常用的控制過(guò)擬合的方法,主要用在全連接層處。Dropout方法是在一定的概率上(通常設(shè)置為0.5)隱式的去除網(wǎng)絡(luò)中的神經(jīng)元。
c.Batch Normalization
BM算法是一種非常有用的正則化方法,可以讓大型的卷積神經(jīng)網(wǎng)絡(luò)快速收斂,同時(shí)還能提高分類的準(zhǔn)確率,不需要使用局部響應(yīng)歸一化處理。BM算法會(huì)將每一層的輸入值做歸一化處理,并且會(huì)重構(gòu)歸一化處理之后的數(shù)據(jù),確保數(shù)據(jù)的分布不會(huì)發(fā)生變化。
d.增加噪聲
增加噪聲是深度學(xué)習(xí)中的一種避免過(guò)擬合的方法,可以在輸入數(shù)據(jù)上添加,增大數(shù)據(jù)的多樣性,也可以在權(quán)值上添加噪聲,這種方法類似于L2正則化。
本實(shí)驗(yàn)采用了L2正則化和Dropout的處理過(guò)擬合方案,經(jīng)過(guò)過(guò)擬合處理和參數(shù)調(diào)節(jié)后,使得訓(xùn)練集和測(cè)試集的曲線基本擬合,達(dá)到了預(yù)期的目標(biāo)。
4 總結(jié)
本文先介紹淺層神經(jīng)網(wǎng)絡(luò)的特點(diǎn)和不足之處,進(jìn)而引入深度學(xué)習(xí)的概念,并詳細(xì)介紹了深度學(xué)習(xí)的典型網(wǎng)絡(luò)-卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)和應(yīng)用,最后通過(guò)使用TensorFlow2.3建立卷積神經(jīng)網(wǎng)絡(luò),對(duì)mnist數(shù)據(jù)集進(jìn)行識(shí)別,從數(shù)據(jù)獲取、數(shù)據(jù)預(yù)處理、建立卷積神經(jīng)網(wǎng)絡(luò)等一系列步驟進(jìn)行說(shuō)明,從運(yùn)行的結(jié)果來(lái)看,卷積神經(jīng)網(wǎng)絡(luò)比傳統(tǒng)的淺層神經(jīng)網(wǎng)絡(luò)大幅度提高了識(shí)別的準(zhǔn)確率。
參考文獻(xiàn)
[1] 王宇石等.一種基于卷積神經(jīng)網(wǎng)絡(luò)的違禁品探測(cè)系統(tǒng)及部署方法[J],科技創(chuàng)新與應(yīng)用,2020(7).
[2] 曹華軍,吳宗民等.噪聲圖像的線性濾波分析與仿真[J],信息技術(shù)與信息華,2017(8).
[3] 閆濤. 深度學(xué)習(xí)算法實(shí)踐 [M]. 電子工業(yè)出版社出版社,2020.
作者簡(jiǎn)介:翟高粵,男(1975-11)廣西欽州,漢,碩士,副教授,研究方向:軟件理論,人工智能。