王德文,魏波濤
(華北電力大學 控制與計算機工程學院,河北 保定 071000)
大量的圖像樣本數據和強大的計算資源,使得深度學習在圖像處理領域有著廣闊的應用前景。深度學習從大量的樣本中學習樣本的特征分布,然后經過多次迭代優化各層權重,最后通過分類器實現圖像分類[1-3]。但是在一些特殊或者難以復現的場景中,難以獲得足夠的樣本[4]。由于樣本數量很少,使用深層神經網絡往往會導致過擬合的現象出現,減少網絡層數則會影響特征提取,導致分類正確率下降[5]。小樣本圖像分類現在仍是深度學習中一個重要的研究問題[6]。
小樣本學習問題由李飛飛等[7]于2006年提出,使用貝葉斯的方法在一個或少數幾個圖像學習問題中成功提取出了信息模型。文獻[8]于2015年提出分層貝葉斯模型,該模型能從少量樣本中完成計算任務,并且達到了相當于人類水平的識別率。隨后遷移學習的提出給小樣本學習帶來了新的處理方法[9]。文獻[10]提出一種基于堆棧降噪自編碼與支持向量回歸機的混合模型,在相似源域大數據上預訓練混合模型借助對該知識的遷移,在目標域微調該混合模型,從而提升支持向量回歸機在小樣本噪聲數據上的學習預測精度。
目前對于小樣本圖像分類問題,主要有增加樣本數量和根據問題選擇特定算法兩種方式[11-12]。最初的樣本數量增強技術,例如原始樣本的旋轉、翻轉和增加對比度等方法,在一定程度上解決了樣本的數量問題,但是往往因為相似度過大,產生過擬合現象。如今,統計學上的各種采樣方法、生成對抗網絡的提出,為樣本的數量增強提供了新的解決思路[13]。文獻[14]采用Bootstrap法來解決電力負荷數據少的問題,利用放回重復抽樣的方法得到新的樣本,利用一種類比關系來進行統計推斷,將小樣本轉換為大樣本問題,但是該方法會造成被估參數的均值過分依賴樣本子集的情況,不利于參數估計的穩健性。根據研究問題的不同,選擇特定的算法也可以顯著地提高實驗效果[15-16]。文獻[17]提出了利用蒙特卡洛隨機試驗可以對特征參量進行統計估計的特性,計算高光譜圖像的最優降維特征數,對小樣本的高光譜圖像進行降維,實驗證明使用該方法后圖像的分類精度有了較大提高。但是,蒙特卡羅的結果和準確性很大程度依賴于母體所建立的數學模型。
2005年Chopra等[18]第一次提出了孿生網絡的結構,該方法在人臉識別數據集上進行訓練和測試,取得了很好的識別效果。孿生網絡創新地采用了兩個樣本組成一對作為神經網絡的輸入的結構。在不改變樣本數量的條件下,增加了整體樣本循環一個批次的訓練次數,更有效地完成特征的提取,減少因樣本少帶來的過擬合問題。在處理類別較多、每個類別樣本少的分類任務有著極強的優勢。
為了解決小樣本圖像分類問題,采用以變分自編碼器為核心的孿生網絡結構來實現對小樣本圖像數據的分類。特征提取通過變分自編碼器來實現,無需人工提取,而孿生網絡的相似度匹配結構,可以有效地提高分類的正確率。
孿生網絡是一種特殊類型的神經網絡結構,與傳統一個學習過程對應一個輸入然后進行分類的模型不同,該神經網絡每個學習過程具有兩個輸入,使用相同權重的神經網絡對兩個輸入數據進行處理,計算提取到的特征的相似度來分辨兩個數據的是否為同一類別。孿生網絡結構如圖1所示。

圖 1 孿生網絡結構Fig. 1 Siamese network
最初的孿生網絡基于全連接網絡。網絡有L個全連接層,每層有Nl個神經元,h1,l表示在第一個孿生網絡分支l層的隱向量,h2,l表示在第二個孿生網絡分支l層的隱向量,網絡在前L-1 層中使用ReLU作為激活函數,對于l∈{1,2,···,L-1}層網絡中隱向量h1,m、h2,m按式(1)和式(2)計算:

式中:Wl-1為Nl-1×Nl共享的權值矩陣;bl為l層向量的偏置;max為求最大值。
經過輸入層和隱藏層的前饋操作后,在距離層按式(3)比較孿生網絡生成的特征的距離E(W),用來評估特征的相似程度。

孿生網絡結構具有兩個權重相同、結構相同的姐妹網絡。輸入圖像兩兩組成一對,圖像對中的兩個圖像將分別送到兩個姐妹網絡中,然后使用對比損失函數來優化網絡。原始的姐妹網絡使用的是全連接結構,全連接網絡參數眾多,訓練效率低。文獻[19]對網絡的特征提取過程進行改進,使用卷積神經網絡作為姐妹網絡來提取圖像特征,取得了很好的效果。但是,卷積神經網絡在樣本數據量小時,易于產生過擬合現象。
使用孿生網絡訓練時,由于其逐對訓練的原理,將有平方級別對的數據可以來訓練模型,這讓模型很難過擬合。假設數據集樣本有E類,每類有C個樣本,則一共有C×E張圖片,總共可組成的樣本對數計算公式為

以Omniglot數據集為例,對于數據集中的964類(每類20個樣本),剔除其中相同類別的配對,仍有183 160對組合。孿生網絡在不增加樣本的前提下,通過輸入對匹配的方式,增加了樣本的訓練次數,從而提高了網絡的學習能力,避免出 現過擬合問題。
變分自編碼器是2014年提出的一種基于變分貝葉斯推斷的生成式結構模型[20]。變分自編碼器總體上分為兩個神經網絡:Encoder和Decoder。Encoder通過變分參數的不斷迭代、更新來最大化觀測數據的邊緣似然函數的下界,近似不可觀測變量的后驗概率,輸出隱變量的概率分布。Decoder則是根據Encoder輸出的隱變量概率分布還原生產原始數據的近似概率分布。
變分自編碼器具有和Dropout類似正則化作用的隱層采樣過程,這使得模型的整個訓練過程不容易發生過擬合問題[21],與傳統特征提取模型相比,更加適合解決樣本數量較少的問題。變分自編碼器現在已經廣泛應用于高維數據降維、特征 提取等方面[17-24]。
綜合變分自編碼器減少過擬合問題和孿生網絡擴大樣本訓練次數的優點,對孿生網絡進行改進,使用變分自編碼器的Encoder結構代替全連接網絡提取樣本特征,減少了網絡參數,提高訓練效率。孿生變分自編碼器首先建立變分自編碼器網絡進行特征提取的無監督學習,然后使用兩個權重完全相同的變分自編碼器Encoder結構搭建孿生網絡用于提取樣本特征,在距離層計算特征向量的相似度,得到輸入樣本的分類結果。最后,對神經網絡權重進行訓練、調整。孿生變分自編碼器結構如圖2所示。

圖 2 孿生變分自編碼器結構Fig. 2 Siamese variational auto-encoder
Input_1、Input_2是樣本數據的一組組合輸入,特征提取功能由變分自編碼器的Encoder實現,(x1,l)、 (x2,l) 為Input_1、Input_2展開得到的輸入向量。(h1,l) 為Input_1輸入第一個Encoder結構得到的隱向量,(h2,l) 為Input_2輸入第二個Encoder結構后得到的隱向量。β1T及 β2T為Encoder的權重,并且兩個Encoder結構的權重完全相同。μ、σ為輸入數據經由Encoder結構提取到的期望與方差,該部分的計算原理同變分自編碼器相同,z1、z2分別為Input_1、Input_2提取到的特征向量。d為距離層,針對獲得的特征選擇歐式距離計算相似度,最后將輸出歸一化到[0,1]之間,使用sigmoid函數使之成為一個概率。
根據圖2的孿生變分自編碼器結構,給出相應 孿生變分自編碼器的計算流程,如圖3所示。

圖 3 孿生變分自編碼器的計算流程Fig. 3 Computation process of S-VAE
圖3中X1、X2為輸入樣本對展開后得到的一維向量;h1、h2為網絡第1層的輸出;μenc、σenc為網絡第2層的輸出。z1、z2為輸入對經由變分自編碼器提取到的特征向量;E(W) 在距離層計算兩個特征向量的歐式距離;p為歸一化后得到的分類準確率。輸入樣本對經過兩個權重相同的Encoder結構提取到特征,組建成孿生網絡,通過相似度匹配算法,得到最終分類的類別以及正確率。
利用上述孿生變分自編碼器的結構和計算流程對小樣本圖片進行分類的具體過程如下:
1)將數據集以適當的比例分為訓練數據集和測試數據集,對訓練數據集使用變分自編碼器進行無監督的學習,訓練特征提取模型。
2)初始化孿生變分自編碼器結構,載入訓練好的特征提取模型,將訓練數據集作為輸入對網絡進行訓練,調整網絡各層權值。
3)將測試數據集作為輸入,利用訓練好的網絡 來進行分類任務。
孿生變分自編碼器特征提取采用的是變分自編碼器的Encoder結構。變分自編碼器是一個無監督學習的神經網絡,本質上是構建了一個從隱變量z(隱含特征)生成目標數據Y的模型,通過縮小原始輸入X與輸出Y之間的重構誤差進行學習。變分自編碼器的“瓶頸”的結構可以有效地降低原始數據的維數,提取樣本特征,實現對原始樣本的表示學習。變分自編碼器結構如圖4所示。

圖 4 變分自編碼器Fig. 4 Variational auto-encoder
對于原始樣本集X,定義其特征值為隱變量z,根據貝葉斯準則,z的后驗概率密度函數為

但是,邊緣似然概率密度函數p(x) 計算復雜,因此變分貝葉斯推理中,通過引入近似分布函數q(z|x) 來擬合真實后驗分布p(z|x),并利用Kullback-Leibler (KL)散度來比較兩個分布的相似程度。

根據變分貝葉斯方法,樣本數據x的邊緣似然函數可以簡化為

式中:φ 為真實后驗分布參數;θ 為隱層的近似分布參數;式(7)中第一項為隱層的近似分布與真實后驗分布之間的KL散度,由于KL散度為非負值,僅當兩個分布完全一致時,KL散度為0,因此,可以展開為

通過最大化變分下界,即可以得到樣本集的最優估計。同時,可以(將式()8)重寫為

式中:μenc、σenc為編碼器的輸出;μdec、σdec為解碼器的輸出;j為隱變量z的維度;L為隱變量z在后驗分布上的采樣次數。然后,選擇隨機梯度下降法(stochastic gradient descent,SGD)來優化神經網絡的參數,當式(9)收斂,編碼器部分的輸出即為提取的特征值,解碼器的輸出為重構的原始樣本。
針對圖3孿生變分自編碼器的計算流程,孿生變分自編碼器特征提取過程可以表示為

式中:W、b為各層的權重和偏置項;x為輸入數據,實際使用的是變換為一維數據的Omniglot圖像;h1為網絡第1層的輸出;μenc、σenc為網絡第二層的輸出;f是激活函數,基于高斯分布參數μ、σ,利用qφ(z|x(i)) 采樣得到隱層輸出z, 其中,N(0,1)為 標準正態分布。
兩個原始數據成對輸入Encoder,通過訓練好的編碼器網絡進行分布參數提取,可以得到兩個輸入數據的特征向量z1、z2,在距離層計算兩個特征向量的歐式距離,EW為兩個樣本對輸出特征的歐式距離。

使用sigmoid函數將匹配度映射到[0,1]之間成為一個分類結果的概率,同時方便使用交叉熵作為訓練網絡的代價函數。相似度為

孿生網絡的對比損失函數為

式(13)可以展開為

式中:p 表示輸入的總樣本數;i 為當前樣本的下標。其中 Y 表示樣本對的標簽,Y ∈{1,0}。 當Y=0時,表明本次輸入樣本對是同一類圖片。此時的樣本對的損失函數 L(W) 越小說明模型的參數越合理。若 L (W) 很大,則需要網絡使用反向傳播機制,對模型參數進行優化。當 Y =1 時,表明本次輸入樣本對 X1、X2不是同一類。此時,優化損失函數 L(W) 會使使得來自不類別圖像的損失盡可能變大。(結合式(12)),本文模型的(代價函)數為

式中:Y為輸入對是否是同類的標簽;p(z1,z2)i為第i個樣本對輸入網絡后得到的歸一化后的特征距離。代價函數可以使用標準反向傳播算法進行模 型訓練。
實驗使用Tensorflow框架設計神經網絡并進行訓練和測試,實驗的硬件環境為i5-8300H處理器,8 GB內存,軟件環境為Windows 10操作系統。
Omniglot數據集擁有50種文字,1 623類手寫字符。對于每類字符僅有20個樣本,每個樣本分別由不同的人繪制而成,分辨率為 10 5×105。圖5為數據集的4個示例。

圖 5 Omniglot數據集Fig. 5 Omniglot dataset
針對Omniglot數據集的測試實驗主要圍繞N-way K-shot展開:每種方法利用未經訓練的N類中的K個已標記的樣本進行訓練,然后對一組屬于N類中不相交的未標記樣本進行分類。本文進行的實驗是5-way 1-shot、5-way 5-shot、20-w ay 1-shot和20-way 5-shot。
整個模型分為5層,特征提取部分網絡層數為3層。第1層輸入層為22 050個節點,第2層為2 048個節點,第3層為4個節點,第4層為4個節點,第5層輸出層為1個節點。訓練該模型提取樣本圖像的高層語義特征,然后再針對樣本圖像提取的高層語義特征利用孿生變分自編碼器模型進一步進行訓練,最后使用分類器進行分類。
通過Omniglot數據集對孿生變分自編碼器進行測試,與原始孿生網絡以及其他針對小樣本圖像分類方法實驗結果進行對比。實驗中用于對比的小樣本分類方法主要有文獻[25]中引用的原始孿生網絡實驗結果、文獻[19]中提出的卷積孿生網絡、文獻[26]提出的分層貝葉斯學習方法(HBPL)以及文獻[27]提出的預采樣匹配網絡(SSMN)。實驗結果如表1所示。

表 1 Omniglot 數據集N-way K-shot 平均正確率 Table 1 Average accuracy of N-way K-shot of Omniglot dataset
從表1中可以看出,S-VAE實驗結果中,4種條件下孿生變分自編碼器分類結果均高于卷積孿生神經網絡。20-way 1-shot情況下略微低于HBPL模型,較其他方法,孿生變分自編碼器具有更高的分類正確率。20-way 5-shot 情況下本文提出的模型正確率最高,為98.9%。從表中可以看出,S-VAE相較于原始的孿生網絡分類正確率在4個對比實驗下均有所提高,平均提高3.1%。
由于HBPL模型是一種針對Omniglot進行特定處理的方法,在Omniglot筆畫層次上進行圖像的分割,繼而進行學習,缺乏在其他問題上的拓展能力。因此,對余下3種算法和本文提出的模型,進行訓練時間的比較,結果如表2所示。
從表2的訓練時間來看,孿生變分自編碼器在訓練接近2個小時后,可以完成訓練,并且訓練用時最短,這說明孿生變分自編碼器可以實現對小樣本數據的快速分類,相較于另外3種算法,效率更高。

表 2 Omniglot 數據集N-way K-shot 訓練時間 Table 2 Training time of N-way K-shot of Omniglot dataset
圖6~9為本文提出模型的實驗結果,主要包括5-way 1-shot、5-way 5-shot、20-way 1-shot和20-way 5-shot的測試錯誤率以及損失函數值的結果。結合表1中的平均正確率,從圖6中5-way 1-shot的測試實驗結果可以看出,整體樣本正確率達到98.0%,一部分樣本可以100%地識別出來,與原始孿生網絡相比,分類正確率提高了4.3%。結合圖8可以看出,當樣本類別數量增加到20類時,20-way 1-shot場景下整體測試樣本正確率達到了94.1%,與原始孿生網絡相比,分類正確率提高了 5.9%。

圖 6 5-way 1-shot測試正確率和損失函數值Fig. 6 Test accuracy and loss of 5-way 1-shot

圖 7 5-way 5-shot測試正確率和損失函數值Fig. 7 Test accuracy and loss of 5-way 5-shot

圖 8 20-way 1-shot測試正確率和損失函數值Fig. 8 Test accuracy and loss of 20-way 1-shot

圖 9 20-way 5-shot測試正確率和損失函數值Fig. 9 Test accuracy and loss of 20-way 5-shot
圖10~12是以20-way 1-shot和5-way 1-shot為例,反映了不同類別,相同的訓練樣本數據集經過測試后的結果有著明顯差距。當訓練數據集樣本數相同時,隨著訓練樣本類別的增加,最終識別難度變大,分類正確率下降。當樣本類別達到20,訓練樣本只有一個時,訓練難度最大,圖10體現出20-way 1-shot收斂速度明顯慢于5-way 1-shot 條件下的收斂速度,正確率也略微下降。結合圖7以及表1中的平均正確率可以看出在難度最大的20-way 1-shot條件下,樣本在迭代700次之后收斂,測試正確率達到94.1%。

圖 10 different-way 1-shot訓練損失函數值Fig. 10 Training loss of different-way 1-shot

圖 11 different-way 1-shot訓練正確率Fig. 11 Training accuracy of different-way 1-shot

圖 12 different-way 1-shot測試正確率Fig. 12 Test accuracy of different-way 1-shot
圖13~15是以20-way 5-shot和20-way 1-shot為例,反映了相同類別,不同的訓練樣本數據集經過測試后的結果。當訓練數據集樣本數相同時,隨著訓練樣本類別的增加,最終識別難度變大,分類正確率下降。結合表1中平均正確率的實驗結果對比,與原始的Siamese Net[25]相比,在難度最高的20-way 1-shot情況下,孿生變分自編碼器分類正確率提高了5.9%,其他情況下最低提高了0.3%,可以在說明本文所提出的混合模型的先進性。與Lake等[26]提出的分層貝葉斯學習結構相比,孿生變分自編碼器正確率低0.9%,但是Lake的方法使用的不是原始圖像的像素,而是Omniglot的筆畫數據,雖然在Omniglot數據集上具有極高的分類正確率卻失去了向其他數據集拓展的能力,本文所提出的模型與之相比具有更好的泛化能力。從4種條件下的損失函數結合表2中幾個方法的訓練時間對比,孿生變分自編碼器可以很快速的收斂,在訓練1 000次后就已經達到了比較不錯的分類效果。

圖 13 20-way different-shot訓練損失函數值Fig. 13 Training loss of 20-way different-shot

圖 14 20-way different-shot訓練正確率Fig. 14 Training accuracy of 20-way different-shot

圖 15 20-way different-shot測試正確率Fig. 15 Test accuracy of 20-way different-shot
針對小樣本圖像分類問題,本文提出了孿生變分自編碼器網絡模型。首先對訓練樣本數據使用變分自編碼器進行降維處理,提取樣本的隱含特征,然后通過孿生網絡,對成對輸入的兩個樣本進行相似度匹配,返回與待測樣本標簽為同類的樣本類別以及正確率,完成物體的分類。通過Omniglot數據集對模型效果進行4組實驗驗證,本文提出的改進模型與原始孿生神經網絡相比最高提高了5.9%,平均提高3.1%。
下一步工作將本文方法拓展應用到實際問題中。在電力設備故障診斷中,只有很少的實際采集樣本,因此,通常會額外生成模擬數據進行實驗,本文下一步工作即通過孿生變分自編碼器在僅使用實際采集樣本的情況下對故障類型進行分類。