董慶偉
(閩南理工學(xué)院信息管理學(xué)院,福建 石獅 362700)
近年來,深度學(xué)習(xí)技術(shù)由于其優(yōu)良的性能受到了各個(gè)領(lǐng)域人們的廣泛關(guān)注[1]。在很多數(shù)據(jù)分類問題中,往往得到的不是圖像、語音等類型的原始數(shù)據(jù),而是每一個(gè)樣本的已經(jīng)提取好的特征向量[2]。因此,對(duì)當(dāng)輸入數(shù)據(jù)是特征向量而不是原始的圖像、語音數(shù)據(jù)的情況下深度卷積神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn)進(jìn)行研究就非常有意義。例如,李文寶等人采集5類山核桃樣本,利用數(shù)據(jù)增廣的方式,得到包含15000個(gè)圖像信息的數(shù)據(jù)集,構(gòu)建深度學(xué)習(xí)模型準(zhǔn)確度達(dá)到99.5%[3]。此外,可以通過改變骨干網(wǎng)絡(luò)、增加視覺感受野、特征融合、級(jí)聯(lián)卷積神經(jīng)網(wǎng)絡(luò)和模型的訓(xùn)練方式提升小目標(biāo)檢測(cè)精度[4]。目前,深度學(xué)習(xí)主要用于解決視頻、圖像、語音和文本這幾種數(shù)據(jù)類型相關(guān)的問題[5],很少關(guān)注面向結(jié)構(gòu)化數(shù)據(jù)的深度學(xué)習(xí)技術(shù)的研究。基于Keras深度學(xué)習(xí)框架[6],構(gòu)造一種面向分類問題的深度卷積神經(jīng)網(wǎng)絡(luò)模型,在5個(gè)UCI數(shù)據(jù)集上(Wine數(shù)據(jù)集、HTRU2數(shù)據(jù)集、seeds數(shù)據(jù)集、ILPD數(shù)據(jù)集和Blood Transfusion數(shù)據(jù)集)分析所建立的深度卷積神經(jīng)網(wǎng)絡(luò)的性能,并運(yùn)用Python語言進(jìn)行仿真,將結(jié)果與支持向量機(jī)方法的結(jié)果進(jìn)行比較分析。
支持向量機(jī)是一種起步較晚的分類器。支持向量機(jī)有非常好的學(xué)習(xí)能力。且它的計(jì)算量復(fù)雜度不高,訓(xùn)練學(xué)習(xí)到的結(jié)果易于解釋。起初支持向量機(jī)是用在二分類問題上的,現(xiàn)在已經(jīng)發(fā)展應(yīng)用與多分類問題上[7]。SVM的實(shí)現(xiàn)方法有很多種,使用較多的一種實(shí)現(xiàn)方法為序列最小優(yōu)化算法。同時(shí),支持向量機(jī)有一個(gè)概念叫做核函數(shù),它可以將當(dāng)前的訓(xùn)練模型擴(kuò)展到更多的數(shù)據(jù)集上,所以支持向量機(jī)的另一個(gè)優(yōu)點(diǎn)就是可以直接使用現(xiàn)成的分類器。支持向量機(jī)的思想就是通過建立一個(gè)超平面,用來作為決策平面,當(dāng)數(shù)據(jù)點(diǎn)距離決策平面的距離越遠(yuǎn),說明分類效果越可靠[6]。那么構(gòu)建支持向量機(jī)的重點(diǎn)就是尋求最大間隔。
卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)就是層級(jí)結(jié)構(gòu),卷積網(wǎng)絡(luò)的層級(jí)結(jié)構(gòu)有數(shù)據(jù)輸入層(Input layer),卷積計(jì)算層(CONV layer),激勵(lì)層(ReLU layer),池化層(Pooling layer),全連接層(FC layer)[3]。
如圖1所示,為CNN的經(jīng)典網(wǎng)絡(luò),經(jīng)過數(shù)據(jù)輸入層輸入圖像大小為128*128,經(jīng)過第一層卷積層,第一層的神經(jīng)元大小為124*124,共5個(gè)神經(jīng)元。其中每次移動(dòng)步伐為1個(gè)像素,第一層輸出為62*62。即5張F(tuán)eature Map,每一個(gè)大小為62*62。第一層的輸入作為下一層的輸入,下一層為池化層,用的矩陣對(duì)輸入進(jìn)行降采樣,得到輸出。然后經(jīng)過第二個(gè)卷積層,局部感受野仍然為,局部平移距離仍為1像素,輸出大小為58*58;再經(jīng)過一個(gè)池化層進(jìn)行降采樣輸出大小降為29*29。第三層和第四層的卷積層的神經(jīng)元大小分別取和,當(dāng)?shù)竭_(dá)第四層卷積層時(shí)輸出大小變?yōu)?3*13。在經(jīng)過全連接層,把每個(gè)的輸出連接成為一個(gè)8的向量,輸入該向量,經(jīng)過全連接層得到輸出。在這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中通過這樣一層一層的定義卷積神經(jīng)網(wǎng)絡(luò)的每一層,就完成了卷積神經(jīng)網(wǎng)絡(luò)的模型構(gòu)造。通常卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)大而深,所以有較高的學(xué)習(xí)能力與識(shí)別能力。對(duì)5個(gè)UCI數(shù)據(jù)集用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行處理,所以構(gòu)造的模型因?yàn)閿?shù)據(jù)的差異參數(shù)不同,不斷的調(diào)整參數(shù)達(dá)到針對(duì)每一個(gè)數(shù)據(jù)集最優(yōu)的分類性能。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
所建的CNN模型算法主要包括數(shù)據(jù)處理階段、模型構(gòu)造與訓(xùn)練階段、調(diào)試階段。在數(shù)據(jù)處理階段,首先收集結(jié)構(gòu)化數(shù)據(jù)集,對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,將結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)成矩陣數(shù)據(jù)集,再通過矩陣運(yùn)算調(diào)整數(shù)據(jù)大小,然后把矩陣轉(zhuǎn)化為圖片數(shù)據(jù)集保存。把處理好的數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集待用;在模型構(gòu)造與訓(xùn)練過程,對(duì)卷積神經(jīng)網(wǎng)絡(luò)的層級(jí)結(jié)構(gòu)以及參數(shù)進(jìn)行構(gòu)造與設(shè)定,把訓(xùn)練集作為構(gòu)造好的卷積神經(jīng)網(wǎng)絡(luò)的輸入,生成對(duì)數(shù)據(jù)集的分類模型;在測(cè)試階段,用測(cè)試集對(duì)生成的模型進(jìn)行評(píng)估,不斷調(diào)整參數(shù)對(duì)生成模型進(jìn)行調(diào)整,知道模型達(dá)到好的性能,對(duì)生成模型進(jìn)行保存。
如圖2所示,構(gòu)建深度學(xué)習(xí)處理結(jié)構(gòu)化數(shù)據(jù)算法,主要包括數(shù)據(jù)轉(zhuǎn)化、卷積神經(jīng)網(wǎng)絡(luò)、分類器模型構(gòu)造三個(gè)主要模塊。
圖2 CNN模型算法整體流程圖
為了探索深度學(xué)習(xí)技術(shù)在結(jié)構(gòu)化數(shù)據(jù)方面的應(yīng)用,從UCI Machine Learning Repository 網(wǎng)站下載了五個(gè)UCI數(shù)據(jù)集(Wine數(shù)據(jù)集、HTRU2數(shù)據(jù)集、seeds數(shù)據(jù)集、ILPD數(shù)據(jù)集和Blood Transfusion數(shù)據(jù)集)。數(shù)據(jù)集的原始數(shù)據(jù)為結(jié)構(gòu)化向量形式,將原始的結(jié)構(gòu)化數(shù)據(jù)集轉(zhuǎn)化圖像集,如圖3所示。
圖3 處理后的部分圖像特征集
每個(gè)數(shù)據(jù)集選取70%的數(shù)據(jù)作為訓(xùn)練集,30%的數(shù)據(jù)作為測(cè)試集。如Wine數(shù)據(jù)集,共有178個(gè)數(shù)據(jù),則選取125張作為訓(xùn)練集,53張作為測(cè)試集。HTRU2數(shù)據(jù)集共有17898個(gè)數(shù)據(jù),選取12528張作為訓(xùn)練集,5370張作為測(cè)試集。其中在模型訓(xùn)練過程中設(shè)置好對(duì)應(yīng)的百分率,就可自動(dòng)劃分訓(xùn)練集與測(cè)試集,即每一次的訓(xùn)練集與測(cè)試集都不一樣,這樣加大實(shí)驗(yàn)結(jié)果的真實(shí)性。
收集到的5個(gè)數(shù)據(jù)集按以下步驟進(jìn)行測(cè)試:1)將原始數(shù)據(jù)進(jìn)行處理,處理轉(zhuǎn)換為對(duì)應(yīng)的圖像數(shù)據(jù)集,并分為訓(xùn)練集與測(cè)試集。2)構(gòu)造卷積神經(jīng)網(wǎng)絡(luò),并用訓(xùn)練集訓(xùn)練卷積神經(jīng)模型。3)調(diào)整參數(shù)與模型的層級(jí)結(jié)構(gòu),使得性能達(dá)到最優(yōu)。4)對(duì)比SVM的實(shí)驗(yàn)結(jié)果,對(duì)模型進(jìn)行分析。利用數(shù)據(jù)集的訓(xùn)練集對(duì)構(gòu)造的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,用測(cè)試集對(duì)構(gòu)造的CNN模型進(jìn)行測(cè)試,結(jié)果如表1所示。為了分析CNN模型的性能,分別利用SVM算法對(duì)五個(gè)數(shù)據(jù)集進(jìn)行分類測(cè)試,結(jié)果見表1。
從表1可以看出,所用的CNN模型的準(zhǔn)確率均高于SVM算法的分類準(zhǔn)確率。其中,對(duì)于seeds數(shù)據(jù)集,雖然準(zhǔn)確率僅為44.05%,但可以看到SVM的準(zhǔn)確率也僅為38.09%,這說明可能數(shù)據(jù)本身的特征不明顯。其余四組數(shù)據(jù)集的準(zhǔn)確率均大于70%,說明本文所構(gòu)建CNN模型分類性能較好。
表1 CNN與SVM實(shí)驗(yàn)結(jié)果對(duì)比
基于Keras深度學(xué)習(xí)框架,實(shí)現(xiàn)了構(gòu)造一種面向分類問題的深度卷積神經(jīng)網(wǎng)絡(luò)模型,并測(cè)試了該模型的應(yīng)用性,在五個(gè)結(jié)構(gòu)化數(shù)據(jù)集上測(cè)試了該模型的準(zhǔn)確率,并且與常用的SVM分類算法的分類準(zhǔn)確率做了對(duì)比,其分類效果較好。結(jié)論如下:
(1)在將原始結(jié)構(gòu)化數(shù)據(jù)集轉(zhuǎn)換到圖像過程中,對(duì)數(shù)據(jù)集的處理過程影響模型的分類效果。
(2)數(shù)據(jù)本身的特征對(duì)于分類結(jié)果具有比較大的影響,數(shù)據(jù)特征差異大分類準(zhǔn)確率更高,反之則準(zhǔn)確率低;
(3)所用的CNN模型的準(zhǔn)確率均高于SVM算法的分類準(zhǔn)確率。