邢世宏,施聞明,任薈潔
(1.海軍潛艇學院,山東 青島 266199;2.中國人民解放軍92763部隊,遼寧 大連 116000)
深度學習是近十年來人工智能領域取得的重要突破。它在語音識別、自然語言處理、計算機視覺、圖像與視頻分析、多媒體等諸多領域的應用取得了巨大成功。現有的深度學習模型屬于卷積神經網絡。神經網絡的起源可追溯到20世紀40年代,曾在八九十年代流行。神經網絡試圖通過模擬大腦認知的機理解決各種機器學習問題。1986年,Rumelhart,Hinton和Williams[1]發表了著名的反向傳播算法用于訓練神經網絡,該算法直到今天仍被廣泛應用。
隨著2012年Alex Krizhevsky的AlexNet[2]在ILSVRC2012[3](ImageNet大規模視覺識別挑戰賽競賽)中獲得冠軍,深度卷積神經網絡在大數據及高速GPU計算的推動下迅猛發展,到2015年,ResNet[4]以Top5錯誤率為3.57%的成績獲取ILSVRC冠軍;在人臉識別領域,DeepID[5]采用人臉辨識作為監督信號,在LFW[6]上取得了97%的識別率;在物體檢測領域,以深度神經網絡為基礎的檢測模型R-CNN[7],Fast RCNN[8],Faster R-CNN[9],R-FCN[10]在物體檢測方面獲得了很好的成績,上述的深度神經網絡都是基于像ImageNet一樣的大數據樣本才能獲取較好的效果。此外,壓縮的卷積神經網絡如SqueezeNet[11],MobileNets[12]XNOR-Net[13], Deep compression[14],Deep Model Compression[15], Perforated CNNs[16],Binarized Neural Networks[17]等網絡模型的訓練都是建立在大數據的基礎上,數據容量的多少成為能否訓練出一個好模型的關鍵因素。但上述各領域應用的模型對模型的建立與數據集容量間的關系沒有進行深入分析,僅停留在大數據集容量上。因此在采用深度學習方法解決現實問題時會出現需要多少訓練數據的問題。目前關于訓練網絡所需的數據集容量的理論研究還處于空白狀態,還沒有相應的機器學習理論能解釋兩者直接的關系。本文在深入研究機器學習的相關理論后推導出深度卷積神經網絡的復雜度與數據集容量之間的關系,并用實驗驗證了兩者關系的有效性,為卷積神經網絡的構建與訓練提供相應的理論及經驗依據。
機器學習相關理論中,雖然沒有直接給出數據集容量與卷積神經網絡參數量之間的關系,但明確闡述了VC維理論。根據Hoeffding[18]不等式:


同理可以將式(1)表示為:



根據上述理論Vapnik-Chervonenkis[19]引入了Vapnik-Chervonenkis dimension(VC維)。VC維度量二元分類器的容量。VC維被定義為該分類器能夠分類的訓練樣本的最大數目。VC維的邊界表示如下:

式(8)不等號右端即為VC維邊界。


表1 B(N,k)邊界值Tab.1 B(N,k)boundary value
表2邊界值Tab.2 Nk-1 boundary value

表2邊界值Tab.2 Nk-1 boundary value
images/BZ_195_313_525_376_558.pngk 1 2 3 4 5 N 1 1 2 2 2 2 2 1 3 4 8 16 3 1 4 9 27 81 4 1 5 16 64 256 5 1 6 36 216 1 296 6 1 7 22 42 57
由于深度神經網絡特征是稀疏的,并且網絡中包含了規范化及特征選擇技術,實際訓練模型過程中真實輸入的特征數應少于原始特征數量,因此在估算深度神經網絡在訓練中所需的數據容量時,可以根據網絡隱藏層的參數量來代替,并且通過計算時,容量為的數據集可以滿足網絡模型的需求,然而實際中有很多領域很難獲取如此大的數據集,并且的容量太寬松。在此基礎之上,通過實驗來緊縮數據容量,得到一個比更緊湊關系。
受Hubel和Wiesel[20]對貓視覺皮層生理研究啟發,有人提出卷積神經網絡(CNN)[21],Yann LeCun[22]最早將CNN用于手寫數字識別。卷積神經網絡與普通神經網絡的區別在于,卷積神經網絡包含了一個由卷積層和子采樣層構成的特征抽取器。在卷積神經網絡的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特征平面(featureMap),每個特征平面由一些矩形排列的神經元組成,同一特征平面的神經元共享權值,這里共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網絡的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網絡各層之間的連接,同時又降低了過擬合的風險。子采樣也叫做池化(pooling),通常有均值子采樣(mean pooling)和最大值采樣(max pooling)兩種形式。子采樣可以看作一種特殊的卷積過程。
構建網絡需要上述相關層的組合,可能相似的層會出現多次,具體需要多少層或者需要什么功能的層與網絡的復雜度、解決問題的復雜度相關,目前還沒有針對構建網絡層數的相關理論,所有網絡的搭建停留在經驗的基礎上。本文在研究數據集容量與卷積神經網絡參數量之間的關系時也是在LeNet,AlexNet的經驗基礎上進行的。
由于卷積神經網絡的訓練對計算機的硬件性能要求較高,因此考慮到實驗條件的限制,這里選取手寫數字識別的數據集mnist[23]及Cifar10[24]。Mnist是由Google實驗室的Corinna Cortes和紐約大學柯朗研究所的Yann LeCun建立的手寫數字數據庫,訓練庫有60 000張手寫數字圖像,驗證庫有10 000張,另外通過其他途徑獲取了包含有10 000張的測試集,相應的各標簽下的容量如表3所示,數據集中的部分數據圖像如圖1所示。

表3 Mnist數據集容量Tab.3 Mnist data set capacity

圖1 Mnist數據集Fig.1 Mnist data set
Cifar10數據集共有60 000張彩色圖像,尺寸為32*32,分為10個類,每類6 000張圖。這里面有50 000張用于訓練,構成了5個訓練批,每一批10 000張圖;另外10 000用于驗證,單獨構成一批。測試批的數據里,取自10類中的每一類,每一類隨機取1 000張。剩下的隨機排列組成了訓練批。一個訓練批中的各類圖像數量并不一定相同,總的來看訓練批,每一類都有5 000張圖,部分Cifar10圖像如圖2所示。
根據手寫數字識別及Cifar10識別的復雜度,并參考LeNet及AlexNet網絡構建經驗,搭建了DigitNet及Cifar10Net網絡,網絡結構包括輸入層、卷積層、ReLU、Pooling層、全連接層、Softmax層、輸出層,結構如表4和表5所示。給出相應數據集容量及網絡模型的參數量的比值,如表6所示。

圖2 Cifar10數據集Fig.2 Cifar10 data set
網絡模型的訓練收斂速度很大程度上取決于bachsize,因此為了使網絡模型在不同容量的數據集上更快收斂,將DigitNet在訓練數據容量為57 000到6 000之間的bachsize設定為256,容量為5 100到600間的bachsize設定為20。在不同容量的訓練集中分別訓練DigitNet的3個模型,訓練得到的準確率如表7所示。

表4 DigitNet卷積神經網絡Tab.4 DigitNet convolutional neural network

表5 Cifar10Net卷積神經網絡Tab.5 Cifar10Net convolutional neural network

表6 數據集容量與參數量比值Tab.6 Ratio of data set capacity and parameter amount

表7 不同訓練數據集下DigitNet模型的識別準確率Tab.7 The recognition accuracy of digitnet model under different training data sets
3個DigitNet網絡模型分別在不同容量的數據集上訓練并在驗證集及測試集上分別實驗了識別性能,根據表8的識別正確率繪制了不同訓練數據集容量與網絡模型識別正確率之間的關系曲線,如圖3所示。

圖3 不同訓練數據集下DigitNet模型的識別準確率曲線Fig.3 The recognition accuracy curve of digitnet model under different training data sets
從表7及圖3中可以看出,隨著訓練數據容量的減少,驗證集及測試集上的識別正確率呈現下降趨勢,同時可以看出容量超過20 000的識別情況并沒有太大的變化,在驗證集上的識別率幾乎與最大容量時相同,只是在測試集上表現不太穩定,但總體上沒有超過0.1。隨著容量的繼續減少,到6 000到5 100時出現了一個較大的波動,這是因為在這里調整了batchsize的大小,從調整完之后可以看出,數據集容量減少到3 200時識別率才呈現出明顯的下降趨勢。
Cifar10只有訓練集及驗證集,沒有收集相關的測試集,因此訓練好的模型只在驗證集上進行測試,訓練過程中設置batchsize為100,測試的結果如表8所示。
根據訓練得到的測試數據,繪制訓練數據容量集與識別準確率曲線如圖4所示。從圖中可以看在容量為17 500時,曲線下降趨勢開始明顯,在容量50 000到17 500之間識別率沒有大的變化,只是有較小的波動。
在上述進行的實驗中發現,DigitNet雖然在調節batchsize時曲線有較大的波動,但這種波動可以通過調節batchsize的大小來獲取較好的訓練網絡,也就是說真正由訓練集容量導致識別率快速下降的容量為3 200到2 400的時候,如表7,圖3所示。在Cifar10Net訓練識別過程中,由于沒有調整batchsize的大小,因此在識別過程中沒有出現大的波動,但是隨著訓練集容量的變化,在容量為12 500到10 000時識別率下降開始明顯。根據上述分析分別選取DigitNet與Cifar10Net識別曲線上容量為3 200及17 500兩個容量值作為網絡在保持較好識別率的容量下限,并計算其與對應的模型參數量的比值,如表9所示。

表8 不同訓練數據集下Cifar10Net模型的識別準確率Tab.8 The recognition accuracy of cifar10net model under different training data sets

圖4 不同訓練數據集下Cifar10Net識別準確率曲線Fig.4 The recognition accuracy curve of Cifar10Net model under different training data sets
通過mnist及cifar10識別實驗中發現有實際數據量沒有達到10 000時也可以獲取較好的結果,這是因為實際給出的訓練樣本容量較為寬松。因此實際中使用深度卷積神經網絡時可以根據解決問題的復雜程度準備相應的訓練數據集。從本文的實驗數據表8可以推斷出,在解決較為簡單的識別問題時,數據集容量的下限為,如果解決問題的復雜度較大時可以適量增加數據集容量。

表9 容量下限與模型參數量比Tab.9 The ratio of lower limit of capacity and model parameters
本文根據Vapnik-Chervonenkis的VC維理論,得到了對應于二分類的寬松數據集容量為。然后根據LeNet及AlexNet網絡的搭建經驗,搭建了適合研究mnist及cifar10數據的DigitNet及Cifar10Net網絡,通過6個不同的網絡在不同容量數據集的訓練后,測試了對應網絡模型的識別率,繪制了訓練數據集容量對構建的卷積神經網絡識別性能的影響曲線,從中發現,卷積神經網絡的訓練并不是訓練數據越多越好,在一定模型下,訓練數據也沒有必要達到模型參數量的10 000倍,根據VC維理論,過于寬松,因此實際中無需的訓練數據。本文實驗結果給出了在解決mnist及cifar10數據集識別的問題無需很大的數據集容量,僅需要模型參數量的10倍為下限即可達到很好的識別效果。本文為無法獲取大量數據情況下使用卷積神經網絡解決實際問題提供了一些實踐指導,也為接下來的艦船識別提供了相應的依據。