周 非,李 陽,范馨月
(重慶郵電大學 通信與信息工程學院,重慶 400065)(重慶郵電大學 光通信與網絡重點實驗室,重慶 400065)
誕生于上世紀80年代末的卷積神經網絡(Convolutional Neural Networks,CNN)目前廣泛應用于計算機視覺領域[1],在最近十幾年里不斷刷新著圖像分類精度的極限,并同時在目標檢測[2,3],目標跟蹤[4,5],圖像分割[6],以及人臉識別等領域取得豐碩的研究成果[7].在應用于圖像分類的過程中,卷積神經網絡經歷了從1998年Lecun Y等人提出的LeNet[8],到2012年Krizhevsky等人提出的AlexNet[9],再到2015年Szegedy等人提出的GoogLeNet和2016年Kaiming等人提出的ResNet[10,11],以及后來的改進版本[12,13].這期間出現了ReLu等新型激活函數[14,15],Inception和殘差結構等卷積神經網絡結構[10,11],與Batch Normalization等優化算法[12].整體而言,卷積神經網絡在朝著“更深”和“更寬”的方向發展.
“更深”指通過增加CNN的層數,來提高卷積神經網絡分類性能.泛逼近定理指出,當給定足夠的容量,一個單層的前饋網絡就足以表示任何函數,但是,這個層可能會非常大,并且網絡容易出現過擬合等問題,所以實際上構建一個單層CNN并不可行,學術界對此的主要解決辦法就是增加CNN的深度.2012年論文[9]提出的AlexNet卷積神經網絡僅有8個參數層,而2015年發表的論文[10]提出的GoogLeNet就已經增加到22層.但是研究人員發現在逐漸增加網絡深度的同時,梯度消失問題越來越嚴重,導致CNN隨著層數的增加,性能反而有所下降.而ResNet卷積神經網絡所采用的一種殘差網絡結構,在一定程度上緩解了這一難題,使得卷積神經網絡層數的進一步加深成為可能,論文[11]已經實現了一個超過1000層的圖像分類卷積神經網絡.
但“更深”并不是提高圖像分類卷積神經網絡性能的唯一途徑,研究發現“更寬”也能提高CNN的性能.論文[16]指出,對于ResNet所提出的殘差網絡結構,隨著模型的加深,并不能保證梯度在反饋訓練過程中能夠流經每一個殘差模塊,甚至在整個訓練過程中,可能只有很少的幾個殘差模塊能夠學習到有用的特征表達,大部分殘差模塊對圖像分類能力的提升影響并不大.為此該論文提出了一種網絡層數較少,但每層的通道數更多的CNN結構.即所謂的“更寬”,通過擴展卷積層的通道數,優化參數利用效率,從而提升卷積神經網絡對圖片的分類能力.
受“更寬”思路的啟發,本文提出通過提高卷積神經網絡輸出向量的維度,同時增加不同類別訓練樣本標簽間的漢明距離,從而提高卷積神經網絡對圖像的分類能力.即在卷積神經網絡的訓練過程中,使用維度更高、不同類別間最小漢明距離更大的標簽進行訓練,以此增大網絡對不同類別圖片的輸出距離.更大的輸出距離能夠提高卷積神經網絡判決時的容錯能力,提升網絡對圖片的分類性能.
當前用于圖像分類的卷積神經網絡主要通過獨熱編碼處理訓練樣本的標簽,然后結合softmax激活函數和對數似然損失函數計算訓練過程中CNN的實際輸出與理論輸出之間的誤差,并通過隨機梯度下降算法(Stochastic Gradient Descent,SGD)更新權重和偏置.其權重和偏置的更新過程遵循的原則如公式(1)和公式(2)所示,公式中C為反饋誤差,η為更新步長.
(1)
(2)
本節主要分析這種傳統圖像分類卷積神經網絡存在的缺陷以及改進的思路.
對數似然損失函數常被用來衡量訓練樣本圖片通過CNN后的實際輸出與理論輸出之間的誤差,其定義如公式(3)所示.
C=-∑kyklogak
(3)
其中y表示CNN的理論輸出,a表示實際輸出,C表示實際輸出與理論輸出之間的誤差.由于權重w與本層輸入x間存在關系z=wx+b,定義激活函數的表達式為a=σ(z),則可得到對數似然損失函數關于權重w和偏置b的導數如下.
(4)
(5)
softmax激活函數為圖像分類卷積神經網絡引入非線性化操作,其數學表達式如公式(6)所示.
(6)
當i=j時,可得到該激活函數的導數為

(7)
當i≠j時,可得到該激活函數的導數為

(8)
將softmax激活函數的導數帶入公式(4)和(5)中,可將對數似然損失函數關于權重和偏移的導數公式化簡如下.
(9)
(10)
用于訓練圖像分類卷積神經網絡的樣本標簽通常使用獨熱編碼進行預處理.經過處理后的每個樣本標簽只有一個數位上的值為1,其余數位上的值均為0.因此公式(9)和公式(10)中∑kyk=1,即可將這兩個公式進一步化簡如下.

(11)

(12)
當圖像分類卷積神經網絡使用對數似然損失函數、softmax激活函數和獨熱編碼計算訓練過程中的反饋損失時,其權重更新公式(公式(1))和偏置更新公式(公式(2))的最終結果如公式和公式所示.
(wj)new=(wj)old-ηxj(aj-yj)
(13)
(bj)new=(bj)old-η(aj-yj)
(14)
公式(13)和(14)公式表明,當訓練過程中實際輸出與理論輸出的誤差較大時,權重和偏置的更新速度較快,當誤差較小時,更新速度較慢,這樣的特性有利于提高網絡訓練時的收斂速度.
以上推導的就是傳統圖像分類卷積神經網絡在訓練過程中普遍使用的反饋損失計算方法.測試時,只需要找出輸出向量的最大值所處位置,即可判斷出測試樣本所屬類別.這種判決方式存在的問題是,由于卷積神經網絡最終的分類結果僅依靠輸出向量的最大值進行判定,當輸出向量的某一位置受到較大的干擾時,容易造成最終結果的誤判.為此本文提出充分利用卷積神經網絡輸出向量在各個維度上的信息.訓練時,通過增大不同類別間標簽的維度和最小碼間距離,從而提高卷積神經網絡對不同類別樣本的區分能力.測試時,根據先前標簽的制定規則,計算出卷積神經網絡的輸出與標簽集合中對應的最小歐幾里德距離,該最小距離所對應的標簽即為最優的判決結果.
本文提出通過增加不同類別的圖片經過CNN后輸出向量間的最小距離,從而提高卷積神經網絡判決時的容錯能力.對此,本文的具體解決方案是增加CNN輸出向量的維度并使用信道編碼中的分組碼處理訓練樣本的標簽,同時選擇合適的激活函數和損失函數計算反饋損失.
分組碼是通信中廣泛使用的一種信道編碼方式,其通過增加編碼冗余來提高信道的容錯能力,并且其能夠糾正的錯誤位數t與碼組的最小漢明距離d之間存在的關系如公式(15)所示.
d≥2t+1
(15)
當分組碼能夠糾正的錯誤位數越多,其最小碼距就越大.使用最小碼距越大的分組碼來做訓練樣本的標簽時,不同類別的圖片經過CNN后輸出向量的區分度就越大.因此,設計CNN訓練樣本標簽的問題就轉化成求解分組碼的監督矩陣問題.
對于(n,k)線性分組碼,其監督矩陣的典型矩陣如公式所示,其中I為(n-k)階單位矩陣.
H=(I|P)
(16)
并且對于線性分組碼,最小碼距為d的充要條件是監督矩陣H中任意d-1列線性無關.因為I是單位矩陣,為了使得d盡可能大,P的每一列所含1的個數需要盡可能多,同時需要保證矩陣P線性無關的列數盡可能大.
例如對于一個10分類的圖片數據集,使用4比特的信息位就能夠表示其全部類別,如果設定卷積神經網絡的輸出向量維度為10,那么訓練樣本標簽的編碼問題就轉化為求解一個(10,4)分組碼問題.通過設計監督矩陣,然后轉換為對應的生成矩陣,就能夠生成一組最小碼距較大的訓練樣本標簽集.本文在設計監督矩陣的時候,采用了一種類似列舉編碼的方法[17].對于(10,4)線性分組碼,其監督矩陣的行數為6,列數為10,并且其前6列構成一個單位矩陣.本文構造的監督矩陣如下所示.

設生成矩陣為G=(I|Q),并且由于監督矩陣和生成矩陣存在的關系如公式所示.
H·GT=0T
(17)
可以將生成矩陣轉換為公式所示.
G=(I|PT)
(18)
對于上文所描述的(10,4)線性分組碼,可以得到其生成矩陣如下.

因此,根據c=u·G,可以得到卷積神經網絡10分類訓練樣本的一組標簽如下所示(每行為一個標簽類別).

通過觀察許用碼組C可以看出,該組標簽的最小碼距為4.并且通過觀察監督矩陣H,可以發現監督矩陣H的任意4列線性無關,這也符合前面所提到的最小碼距為d的充要條件是監督矩陣H中任意d-1列線性無關這一約束條件.下文的仿真還會使用一種(20,4)的線性分組碼,其構造步驟與上述方法一致.
本文分別使用softmax和sigmoid兩種激活函數來計算卷積神經網絡訓練時的反饋誤差,并對比分析這兩種激活函數在圖像分類應用中的優劣.
為保證權值與偏置的更新快慢與反饋誤差的大小保持一致,當使用softmax激活函數作為CNN最后一層的激活函數時,本文使用對數似然損失函數計算反饋誤差.但不同于獨熱編碼,當使用分組碼處理樣本標簽時,存在
即每個樣本標簽的碼重不再為1,所以反饋損失關于權重和偏置的導數變為如下所示.
(19)
(20)
盡管公式(19)和公式(20)中輸出向量a前面有標簽的碼重作為系數,但并未改變權重和偏置的更新快慢和反饋誤差大小保持一致這一特性,這樣的特性能夠讓CNN取得較快的收斂速度,基于這個原因,本文選擇了這一組合作為卷積神經網絡反饋誤差的計算方式之一.
sigmoid激活函數的定義和導數如公式(21)和公式(22)所示.
(21)
(22)
當選擇sigmoid作為卷積神經網絡最后一層的激活函數時,本文使用交叉熵作為對應的損失函數.下面分析這樣選擇的合理性.
交叉熵的數學表達式如公式(23)所示,其中y為訓練樣本的標簽,a為網絡的實際輸出.
(23)
由于a=σ(z),z=wx+b,可以推導出交叉熵對權重w和偏置b的導數如下.
結合sigmoid激活函數的導數,可以得到交叉熵損失關于權重和偏置的導數,如公式(24)和公式(25)所示.
(24)
(25)
然后可以得到對應的權重和偏置的更新表達式如公式(26)和公式(27)所示.
(26)
(27)
從公式(26)和公式(27)可以看出,當卷積神經網絡使用分組碼處理樣本標簽,并結合sigmoid激活函數和交叉熵計算訓練過程中的反饋誤差時,同樣具備權重和偏置的更新快慢與反饋誤差大小保持一致這一特性.因此,本文選擇這一組合作為驗證本文算法的另一種反饋損失計算方式.
本文使用三種不同的卷積神經網絡結構,并結合三種不同的數據集來驗證CNN輸出維度和標簽集的最小碼距對系統分類精度的影響.
圖1和圖2是ResNet卷積神經網絡兩種殘差模塊的網絡結構.圖3所示為本文仿真使用的三種CNN結構,每種網絡結構對應使用圖4的一種圖像分類數據集.圖3的(a)和(b)為一個二分類的卷積網絡模型,這兩個網絡模型在LeNet網絡的基礎上進行了改進[8],使得輸出維度可以在2、10和20中進行選擇,用于探究CNN輸出維度與分類精度的關系.圖3(c)為一個10分類的卷積網絡模型,其在21層的ResNet網絡的基礎上改進而來,用來探究CNN標簽集合的最小碼距與分類精度的關系.

圖1 恒等殘差模塊Fig.1 Constantresidualmodule圖2 卷積殘差模塊Fig.2 Convolutionresidualmodule

圖3 本文仿真所用CNN結構圖Fig.3 CNN structure in simulation
本文的仿真實驗使用了3個數據集(如圖4所示),分別作為圖3的三種網絡模型的訓練和測試數據.圖4(a)所示的Wider Faces數據集為32×32像素的RGB彩色圖像,訓練樣本中人臉圖片和非人臉圖片各有15000張,測試樣本中人臉圖片和非人臉圖片各有6000張.圖4(b)所示的Dogs vs.Cats 數據集為64×64像素的RGB彩色圖像,訓練樣本中貓狗圖片各10000張,測試樣本中貓狗圖片各5000張.圖4(c)所示的Cifar-10數據集為32×32像素的RGB彩色圖像,數據集共10個類別,其中訓練集有50000張圖片,測試集有10000張圖片.
圖5所示仿真圖探究了輸出維度對卷積神經網絡分類精度的影響.圖5(a)為使用圖3(a)所示網絡模型,對圖4(a)所示的Wider Faces數據集進行訓練和測試所得到的仿真結果;圖5(b)為使用圖3(b)所示網絡模型,對圖4(b)所示的Dogs vs.Cats數據集進行訓練和測試所得到的仿真結果;圖5(c)為使用圖3(c)所示網絡模型,對圖4(c)所示的Cifar-10數據集進行訓練和測試所得到的仿真結果.

圖4 部分圖片數據集Fig.4 Partial image database
在圖5(a)中,sigmoid-2、sigmoid-10和sigmoid-20所標記的曲線對應的模型在訓練時都使用sigmoid激活函數和交叉熵損失函數計算反饋損失.三條曲線的不同之處在于,sigmoid-2曲線對應的CNN模型使用獨熱編碼處理訓練樣本的標簽,而sigmoid-10曲線和sigmoid-20曲線對應的模型使用分組碼處理訓練樣本的標簽.sigmoid-10曲線對應的模型使用(10,4)分組碼,而sigmoid-20曲線對應的模型使用(20,4)分組碼.softmax-2和softmax-20所標記的曲線對應的模型在訓練時使用softmax激活函數和對數似然損失函數計算反饋損失.不同之處是,softmax-2曲線對應的模型使用獨熱編碼處理訓練樣本的標簽,而softmax-20對應的模型使用(20,4)分組碼處理訓練樣本的標簽.圖5(b)和圖5(c)中各條曲線所代表的含義與圖5(a)類似,三幅仿真圖的不同點在于圖5(a)、圖5(b)和圖5(c)所使用的數據集和網絡結構不同.表1是圖5中每條曲線對應的最大準確率.

圖5 輸出維度對CNN性能的影響Fig.5 Simulation results in different output dimensions
從圖5和表1中的sigmoid-2(sigmoid-5)、sigmoid-10和sigmoid-20,以及softmax-2(softmax-10)和softmax-20的對比分析中可以看出,當增加卷積神經網絡輸出維度時,卷積神經網絡的分類精度會隨之提高.同時從sigmoid-20曲線和softmax-20曲線的對比分析中還可以發現,當使用分組碼處理訓練樣本的標簽時,卷積神經網絡的最后一層使用sigmoid激活函數比使用softmax激活函數對CNN的分類精度提高得更多一些.

表1 圖5所示曲線對應的最大準確率Table1 Maximum accuracy of each curve in Fig.5
本文的4.2節探討了CNN輸出維度對分類精度的影響,接下來,圖6所示的仿真圖探究標簽的最小碼距對卷積神經網絡分類精度的影響.

圖6 標簽的最小碼距對CNN性能的影響Fig.6 Simulation results with different minimum code space
同圖5類似,圖6(a)為使用圖3(a)所示網絡模型,對圖4(a)所示的Wider Faces數據集進行訓練和測試所得到的仿真結果;圖6(b)為使用圖3(b)所示網絡模型,對圖4(b)所示的Dogs vs.Cats數據集進行訓練和測試所得到的仿真結果;圖6(c)為使用圖3(c)所示網絡模型,對圖4(c)所示的Cifar-10數據集進行訓練和測試所得到的仿真結果.并且圖6(a)和圖6(b)對應CNN的輸出維度為10,圖6(c)對應CNN的輸出維度為20.圖6中的softmax-dis-2和softmax-dis-10(9)所標記曲線對應的CNN模型在訓練時都使用softmax激活函數和對數似然損失函數計算反饋損失,這兩條曲線的區別在于softmax-dis-2曲線對應訓練樣本標簽的最小碼距為2,而softmax-dis-10(9)對應的訓練樣本標簽的最小碼距為10(9).sigmoid-dis-2、sigmoid-dis-5和sigmoid-dis-10所標記曲線對應的CNN模型在訓練時都使用sigmoid激活函數和交叉熵損失函數計算反饋損失,區別在于sigmoid-dis-2曲線對應訓練樣本標簽的最小碼距為2,而sigmoid-dis-5曲線和sigmoid-dis-10曲線對應的訓練樣本標簽的最小碼距分別為5和10.為便于進行對比,表2列出了圖6中各條曲線對應的最大準確率.

表2 圖6所示曲線對應的最大準確率Table 2 Maximum accuracy of each curve in Fig.6
圖6和表1證明,當增加訓練樣本標簽的最小碼距時,圖像分類卷積神經網絡的分類精度會隨之提高.并且從圖6(c)的sigmoid-dis-9曲線和softmax-dis-9曲線的對比中可以發現,當使用分組碼處理樣本標簽時,使用sigmoid激活函數比使用softmax激活函數的效果更好,這與從圖5的仿真結果中得出的結論是一致的.
本文提出通過增加圖像分類卷積神經網絡的輸出維度,并使用最小碼距更大的分組碼代替獨熱編碼處理訓練樣本的標簽,同時利用sigmoid激活函數和交叉熵計算訓練過程中的反饋損失.實驗結果表明,改進后的CNN性能比傳統中使用softmax激活函數結合對數似然損失函數計算反饋損失的CNN性能更好.但同時仿真結果也表明,相比于二分類任務,改進后的CNN對于圖片的多分類任務的精度提高幅度要小一些,本文認為造成多分類任務性能提升不夠顯著的原因是沒有選擇最佳的標簽組合方式.即對于不同的數據集,其最優的標簽組合方式可能不同,在以后的工作中將考慮通過訓練的方式獲得最優的標簽組合,以此提高改進CNN對圖片的多分類任務的分類精度.