楊博雄, 楊雨綺
1(三亞學院 信息與智能工程學院, 三亞 572022)
2(北京師范大學研究生院 珠海分院, 珠海 519085)
隨著以深度學習為代表的新一代人工智能算法的研究與快速發(fā)展, 建立在該方法之上的各種智能應用系統(tǒng)越來越依賴大數(shù)據(jù)的自主訓練與學習, 特別是在一些復雜的智能應用系統(tǒng), 如圖像識別、語音識別、視頻檢索、自然語音處理等領域更是如此[1]. 深度學習對數(shù)據(jù)的依賴導致數(shù)據(jù)的體量和維度均出現(xiàn)指數(shù)級增長. 很明顯, 過高的數(shù)據(jù)維度會造成維度災難, 既影響了計算效率, 也影響分類性能[2]. 這就有必要采用某種方法來降低數(shù)據(jù)維度, 以此降低進一步數(shù)據(jù)處理的復雜度, 提高處理效率[3].
由于深度學習的本質(zhì)依然是機器學習, 因此在降維處理方面可以借鑒傳統(tǒng)的機器學習方法, 并在此基礎上進行優(yōu)化以適應深度學習的應用場景. 機器學習中較常采用的降維方法有: 主成分分析法(Principal Component Analysis, PCA)、線性判別分析法(Linear Discriminant Analysis, LDA)、局部線性嵌入法(Locally linear embedding, LLE)、拉普拉斯特征映射法(Laplacian Eigenmaps)等[4-7].
下面, 本文將以卷積神經(jīng)網(wǎng)絡獲取圖像特征為研究目標, 以 Caltech 101 圖像數(shù)據(jù)集為實驗對象, 采用 VGG-16深度卷積神經(jīng)網(wǎng)絡進行圖像的特征提取. 在此基礎上, 通過研究圖像高維特征信息, 選取統(tǒng)計學中的PCA法作為降維處理方法, 并配合SVD分解算法降低處理的復雜度, 進而再通過以相似性對降維后特征進行精度比對, 來分析降維后不同維度圖像特征的精度損失.
主成分分析PCA也稱主分量分析, 它是一種將原有的多個變量通過線性變換轉化為少數(shù)幾個新的綜合變量的統(tǒng)計分析方法. 這些新變量(也稱主成分)互不相關, 能有效地表示原變量的信息, 不丟失或盡量少丟失原有變量的信息). PCA追求的是在降維之后依然能夠最大化保持數(shù)據(jù)的內(nèi)在信息, 并通過衡量在投影方向上的數(shù)據(jù)方差的大小來判斷該方向的重要性. 其基本數(shù)學原理如下:
設n維向量w是低維映射空間的一個映射向量,則經(jīng)過最大化數(shù)據(jù)映射后其方差公式如下:
式(1)中,m是參與降維的數(shù)據(jù)個數(shù),是隨機數(shù)據(jù)i具 體向量表達是所有參與降維的數(shù)據(jù)的平均向量.
定義W為包含所有特征映射向量的列向量組成的矩陣, 該矩陣可以較好地保留數(shù)據(jù)中的信息, 該矩陣經(jīng)過代數(shù)的線性變換可以得到一個優(yōu)化的目標函數(shù)如下:
式(2)中tr是矩陣的跡,A是協(xié)方差矩陣, 表達式如下:
PCA需要計算其特征值和正交歸一化的特征向量, 這兩個向量在實際應用中都會非常大, 直接計算非常困難, 通常會用SVD分解來解決這個問題[8].
SVD 即 Singular Value Decomposition, 它是處理維數(shù)很高的矩陣經(jīng)常用的方法, 通過SVD分解可以有效的將很高維的矩陣分解到低維空間里面來進行求解.通過SVD分解可以很容易的求解出高維矩陣的特征值和其相應的特征向量. SVD分解的基本原理如下:
設A是一個秩為r的維矩陣, 則存在兩個正交矩陣(4)、(5)和一個對角矩陣(6).
式(4)、(5)、(6)三式滿足:
其中, λi(i=1,2,···,r)為矩陣的非零特征值;分別為對應于的特征向量.
因此求出構造矩陣為:
該特征向量通過計算較低維矩陣R的特征值和特征向量而間接求出的, 從而實現(xiàn)從高維到低維的快速計算.
在SVD分解中U一共有M個特征向量. 雖然在很多情況下M要比小很多, 然而在通常情況下,M仍然顯得較大, 所以需要對特征向量進行選取, 在實際應用中并不需要保留所有的特征向量. PCA降維處理的具體流程如下:
1) 首先計算特征平均值構建特征數(shù)據(jù)的協(xié)方差矩陣;
2) 再通過SVD分解求解該協(xié)方差矩陣的特征值以及特征向量;
3) 求出來的特征值依次從大到小的排列以便于選出主成分的特征值;
4) 當選出了主成分的特征值后, 這些特征值所對應的特征向量就構成了降維后的子空間.
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)是深度學習技術中極具代表的網(wǎng)絡結構之一, 在圖像處理領域取得了很大的成功, 許多成功的深度學習模型都是基于CNN的[9,10]. CNN相較于傳統(tǒng)的圖像處理算法的優(yōu)點之一在于可以直接輸入原始圖像提取人工特征, 避免了對圖像復雜的前期預處理過程[11].
本文選取VGG-16作為CNN特征提取網(wǎng)絡, VGG-16獲得2014年ImageNet比賽的冠軍, 在學界有很廣泛的應用, 而且被驗證為最有效的卷積神經(jīng)網(wǎng)絡之一[12].VGG-16網(wǎng)絡的總體結構共有16層, 其中包括13個卷積層和3個全連接層[13], 如圖1所示.
圖1 VGG-16結構圖
實驗輸入的圖像像素大小為224×224, 輸出層為1000維. 卷積神經(jīng)網(wǎng)絡的特點是靠近輸入層的節(jié)點表示圖像在低維度上的抽象, 而靠近輸出層的節(jié)點表示圖像更高維度的抽象. 低維抽象描述圖像的紋理和風格, 而高維度抽象描述了圖像的布局和整體特征, 因此高維度特征能夠較好的表示圖像的內(nèi)容. 在本次實驗中, 以卷積神經(jīng)網(wǎng)絡的fc3層的輸出的高維度特征作為圖像的特征向量, 由于fc3是網(wǎng)絡的第三個全連接層,根據(jù)網(wǎng)絡結構, 它具有4096維的輸出, 因此我們獲得的特征維度就是4096.
Caltech 101數(shù)據(jù)集是加利福尼亞理工學院整理的圖片數(shù)據(jù)集, Caltch101包括了101類前景圖片和1個背景類, 總共9146張圖片, 其中有動物、植物、卡通人物、交通工具、物品等各種類別. 每個類別包括40-800張左右的圖片, 大部分類別包括50張左右的圖片.圖片的大小不一, 但是像素尺寸在300×200左右[14].
為了減少實驗時的計算量, 本文從102類數(shù)據(jù)中選擇了25類數(shù)據(jù), 每類選擇40張圖片, 總共1000張圖片. 這25類數(shù)據(jù)都屬于動物(此舉增加判別難度, 動物和動物比動物和其他類別更相近), 每類都選40張.
為使PCA降維后對普遍特征的影響效果進行一個比對, 本文以圖像特征的相似度比對為精確度檢驗指標, 采用歐式距離作為相似度特征度量指標, 檢驗降維后圖像特征與沒有降維前的精度損失變化情況. 實驗軟件環(huán)境為Linux操作系統(tǒng)和Keras神經(jīng)網(wǎng)絡框架,編程語言采用Python 3.5, 硬件為配置有支持支持CUDA的NVIDIA GPU顯卡GeForce GTX 285、至強四核處理器和32 GB內(nèi)存的PC機. 實驗流程如圖2所示.
采用VGG-16的fc3提取的特征有4096維, 當在1000張圖片的數(shù)據(jù)集中進行特征比對, 能夠在較快的時間內(nèi)完成. 但是, 在真實的檢索環(huán)境下, 圖片庫中的圖片要遠遠大于1000, 此時數(shù)據(jù)的維度會顯著的影響檢索效率. 降低數(shù)據(jù)的維度是檢索中非常重要的一個環(huán)節(jié).
先分析降維的可行性, VGG-16原本用于ImageNet圖像分類競賽, 競賽任務是對100多萬張屬于1000個類別的圖片進行識別. 這1000類數(shù)據(jù)囊括了已知的各種類別的事物, 所以可以將VGG-16定義為一個泛化的神經(jīng)網(wǎng)絡, 即對于各種類別的事物都具有學習能力.然而實驗的數(shù)據(jù)集僅僅具有25類, 且均為動物, 可以視為ImageNet數(shù)據(jù)集的一個子集. 但是使用一個大數(shù)據(jù)集的特征來描述其子集的特征是會存在冗余的.
圖2 實驗流程圖
本實驗采用PCA去除數(shù)據(jù)集中的冗余, PCA通過線性映射將高維空間的數(shù)據(jù)投影到低維空間中, 并且盡量使低維空間上數(shù)據(jù)的方差盡量大. 這樣在保持原有數(shù)據(jù)點關系不變的情況下能夠有效的降低維度. 基于此原理, 實驗使用PCA降維, 統(tǒng)計降維后維度與精確度的數(shù)據(jù)如表1所示.
表1 PCA不同維度的相似度精度比對值
對應的變化折線圖如圖3所示.
從實驗的數(shù)據(jù)變化和曲線表現(xiàn)來進行分析, 本實驗獲得兩點結論.
1) 進行PCA降維后, 并沒有產(chǎn)生精度的損失, 相反, 當維度降低到 64 的時候, 精度最高, 相比于不降維的情況, 提高了2.7%. 分析折線圖可以看出, 維度從4096降到8維經(jīng)歷了緩慢上升和快速下降兩個階段. 第一個階段從4096維到64維, 這個階段的緩慢上升, 原因是由于冗余信息的去除導致的. 實驗結果證明, CNN特征也有一定的信息冗余, 信息冗余所帶來的影響比降維所帶來的損失的影響要更大, 因此去除冗余能夠提升準確率. 第二個階段從64維到8維, 這個階段準確率急速下降, 這是因為特征維度小于64后, 降低維度會去除有用信息, 有用信息受損, 導致了準確率的急速下降.
圖3 PCA降維后的比對準確率折線圖
2) 進行PCA降維后, 除歐式距離外, 其他相似性度量的準確率都非常低. 產(chǎn)生這個現(xiàn)象是因為PCA計算時僅僅保證低維空間上數(shù)據(jù)的方差盡量大. 在僅考慮方差的降維條件下, 其他相似性度量方式失效就不難理解了.
綜合以上實驗得出: 當提取VGG-16神經(jīng)網(wǎng)絡fc3層的4096維特征, 使用PCA降至64維, 并采用歐氏距離作為相似性度量時依然能夠獲得最高的準確率,保持最佳的圖像特征信息.