楊博雄, 楊雨綺
1(三亞學院 信息與智能工程學院, 三亞 572022)
2(北京師范大學研究生院 珠海分院, 珠海 519085)
隨著以深度學習為代表的新一代人工智能算法的研究與快速發展, 建立在該方法之上的各種智能應用系統越來越依賴大數據的自主訓練與學習, 特別是在一些復雜的智能應用系統, 如圖像識別、語音識別、視頻檢索、自然語音處理等領域更是如此[1]. 深度學習對數據的依賴導致數據的體量和維度均出現指數級增長. 很明顯, 過高的數據維度會造成維度災難, 既影響了計算效率, 也影響分類性能[2]. 這就有必要采用某種方法來降低數據維度, 以此降低進一步數據處理的復雜度, 提高處理效率[3].
由于深度學習的本質依然是機器學習, 因此在降維處理方面可以借鑒傳統的機器學習方法, 并在此基礎上進行優化以適應深度學習的應用場景. 機器學習中較常采用的降維方法有: 主成分分析法(Principal Component Analysis, PCA)、線性判別分析法(Linear Discriminant Analysis, LDA)、局部線性嵌入法(Locally linear embedding, LLE)、拉普拉斯特征映射法(Laplacian Eigenmaps)等[4-7].
下面, 本文將以卷積神經網絡獲取圖像特征為研究目標, 以 Caltech 101 圖像數據集為實驗對象, 采用 VGG-16深度卷積神經網絡進行圖像的特征提取. 在此基礎上, 通過研究圖像高維特征信息, 選取統計學中的PCA法作為降維處理方法, 并配合SVD分解算法降低處理的復雜度, 進而再通過以相似性對降維后特征進行精度比對, 來分析降維后不同維度圖像特征的精度損失.
主成分分析PCA也稱主分量分析, 它是一種將原有的多個變量通過線性變換轉化為少數幾個新的綜合變量的統計分析方法. 這些新變量(也稱主成分)互不相關, 能有效地表示原變量的信息, 不丟失或盡量少丟失原有變量的信息). PCA追求的是在降維之后依然能夠最大化保持數據的內在信息, 并通過衡量在投影方向上的數據方差的大小來判斷該方向的重要性. 其基本數學原理如下:
設n維向量w是低維映射空間的一個映射向量,則經過最大化數據映射后其方差公式如下:

式(1)中,m是參與降維的數據個數,是隨機數據i具 體向量表達是所有參與降維的數據的平均向量.
定義W為包含所有特征映射向量的列向量組成的矩陣, 該矩陣可以較好地保留數據中的信息, 該矩陣經過代數的線性變換可以得到一個優化的目標函數如下:

式(2)中tr是矩陣的跡,A是協方差矩陣, 表達式如下:

PCA需要計算其特征值和正交歸一化的特征向量, 這兩個向量在實際應用中都會非常大, 直接計算非常困難, 通常會用SVD分解來解決這個問題[8].
SVD 即 Singular Value Decomposition, 它是處理維數很高的矩陣經常用的方法, 通過SVD分解可以有效的將很高維的矩陣分解到低維空間里面來進行求解.通過SVD分解可以很容易的求解出高維矩陣的特征值和其相應的特征向量. SVD分解的基本原理如下:
設A是一個秩為r的維矩陣, 則存在兩個正交矩陣(4)、(5)和一個對角矩陣(6).

式(4)、(5)、(6)三式滿足:

其中, λi(i=1,2,···,r)為矩陣的非零特征值;分別為對應于的特征向量.


因此求出構造矩陣為:


該特征向量通過計算較低維矩陣R的特征值和特征向量而間接求出的, 從而實現從高維到低維的快速計算.
在SVD分解中U一共有M個特征向量. 雖然在很多情況下M要比小很多, 然而在通常情況下,M仍然顯得較大, 所以需要對特征向量進行選取, 在實際應用中并不需要保留所有的特征向量. PCA降維處理的具體流程如下:
1) 首先計算特征平均值構建特征數據的協方差矩陣;
2) 再通過SVD分解求解該協方差矩陣的特征值以及特征向量;
3) 求出來的特征值依次從大到小的排列以便于選出主成分的特征值;
4) 當選出了主成分的特征值后, 這些特征值所對應的特征向量就構成了降維后的子空間.
卷積神經網絡(Convolutional Neural Network, CNN)是深度學習技術中極具代表的網絡結構之一, 在圖像處理領域取得了很大的成功, 許多成功的深度學習模型都是基于CNN的[9,10]. CNN相較于傳統的圖像處理算法的優點之一在于可以直接輸入原始圖像提取人工特征, 避免了對圖像復雜的前期預處理過程[11].
本文選取VGG-16作為CNN特征提取網絡, VGG-16獲得2014年ImageNet比賽的冠軍, 在學界有很廣泛的應用, 而且被驗證為最有效的卷積神經網絡之一[12].VGG-16網絡的總體結構共有16層, 其中包括13個卷積層和3個全連接層[13], 如圖1所示.

圖1 VGG-16結構圖
實驗輸入的圖像像素大小為224×224, 輸出層為1000維. 卷積神經網絡的特點是靠近輸入層的節點表示圖像在低維度上的抽象, 而靠近輸出層的節點表示圖像更高維度的抽象. 低維抽象描述圖像的紋理和風格, 而高維度抽象描述了圖像的布局和整體特征, 因此高維度特征能夠較好的表示圖像的內容. 在本次實驗中, 以卷積神經網絡的fc3層的輸出的高維度特征作為圖像的特征向量, 由于fc3是網絡的第三個全連接層,根據網絡結構, 它具有4096維的輸出, 因此我們獲得的特征維度就是4096.
Caltech 101數據集是加利福尼亞理工學院整理的圖片數據集, Caltch101包括了101類前景圖片和1個背景類, 總共9146張圖片, 其中有動物、植物、卡通人物、交通工具、物品等各種類別. 每個類別包括40-800張左右的圖片, 大部分類別包括50張左右的圖片.圖片的大小不一, 但是像素尺寸在300×200左右[14].
為了減少實驗時的計算量, 本文從102類數據中選擇了25類數據, 每類選擇40張圖片, 總共1000張圖片. 這25類數據都屬于動物(此舉增加判別難度, 動物和動物比動物和其他類別更相近), 每類都選40張.
為使PCA降維后對普遍特征的影響效果進行一個比對, 本文以圖像特征的相似度比對為精確度檢驗指標, 采用歐式距離作為相似度特征度量指標, 檢驗降維后圖像特征與沒有降維前的精度損失變化情況. 實驗軟件環境為Linux操作系統和Keras神經網絡框架,編程語言采用Python 3.5, 硬件為配置有支持支持CUDA的NVIDIA GPU顯卡GeForce GTX 285、至強四核處理器和32 GB內存的PC機. 實驗流程如圖2所示.
采用VGG-16的fc3提取的特征有4096維, 當在1000張圖片的數據集中進行特征比對, 能夠在較快的時間內完成. 但是, 在真實的檢索環境下, 圖片庫中的圖片要遠遠大于1000, 此時數據的維度會顯著的影響檢索效率. 降低數據的維度是檢索中非常重要的一個環節.
先分析降維的可行性, VGG-16原本用于ImageNet圖像分類競賽, 競賽任務是對100多萬張屬于1000個類別的圖片進行識別. 這1000類數據囊括了已知的各種類別的事物, 所以可以將VGG-16定義為一個泛化的神經網絡, 即對于各種類別的事物都具有學習能力.然而實驗的數據集僅僅具有25類, 且均為動物, 可以視為ImageNet數據集的一個子集. 但是使用一個大數據集的特征來描述其子集的特征是會存在冗余的.

圖2 實驗流程圖
本實驗采用PCA去除數據集中的冗余, PCA通過線性映射將高維空間的數據投影到低維空間中, 并且盡量使低維空間上數據的方差盡量大. 這樣在保持原有數據點關系不變的情況下能夠有效的降低維度. 基于此原理, 實驗使用PCA降維, 統計降維后維度與精確度的數據如表1所示.

表1 PCA不同維度的相似度精度比對值
對應的變化折線圖如圖3所示.
從實驗的數據變化和曲線表現來進行分析, 本實驗獲得兩點結論.
1) 進行PCA降維后, 并沒有產生精度的損失, 相反, 當維度降低到 64 的時候, 精度最高, 相比于不降維的情況, 提高了2.7%. 分析折線圖可以看出, 維度從4096降到8維經歷了緩慢上升和快速下降兩個階段. 第一個階段從4096維到64維, 這個階段的緩慢上升, 原因是由于冗余信息的去除導致的. 實驗結果證明, CNN特征也有一定的信息冗余, 信息冗余所帶來的影響比降維所帶來的損失的影響要更大, 因此去除冗余能夠提升準確率. 第二個階段從64維到8維, 這個階段準確率急速下降, 這是因為特征維度小于64后, 降低維度會去除有用信息, 有用信息受損, 導致了準確率的急速下降.

圖3 PCA降維后的比對準確率折線圖
2) 進行PCA降維后, 除歐式距離外, 其他相似性度量的準確率都非常低. 產生這個現象是因為PCA計算時僅僅保證低維空間上數據的方差盡量大. 在僅考慮方差的降維條件下, 其他相似性度量方式失效就不難理解了.
綜合以上實驗得出: 當提取VGG-16神經網絡fc3層的4096維特征, 使用PCA降至64維, 并采用歐氏距離作為相似性度量時依然能夠獲得最高的準確率,保持最佳的圖像特征信息.