王德文,魏波濤
(華北電力大學 控制與計算機工程學院,河北 保定 071000)
大量的圖像樣本數(shù)據(jù)和強大的計算資源,使得深度學習在圖像處理領域有著廣闊的應用前景。深度學習從大量的樣本中學習樣本的特征分布,然后經(jīng)過多次迭代優(yōu)化各層權重,最后通過分類器實現(xiàn)圖像分類[1-3]。但是在一些特殊或者難以復現(xiàn)的場景中,難以獲得足夠的樣本[4]。由于樣本數(shù)量很少,使用深層神經(jīng)網(wǎng)絡往往會導致過擬合的現(xiàn)象出現(xiàn),減少網(wǎng)絡層數(shù)則會影響特征提取,導致分類正確率下降[5]。小樣本圖像分類現(xiàn)在仍是深度學習中一個重要的研究問題[6]。
小樣本學習問題由李飛飛等[7]于2006年提出,使用貝葉斯的方法在一個或少數(shù)幾個圖像學習問題中成功提取出了信息模型。文獻[8]于2015年提出分層貝葉斯模型,該模型能從少量樣本中完成計算任務,并且達到了相當于人類水平的識別率。隨后遷移學習的提出給小樣本學習帶來了新的處理方法[9]。文獻[10]提出一種基于堆棧降噪自編碼與支持向量回歸機的混合模型,在相似源域大數(shù)據(jù)上預訓練混合模型借助對該知識的遷移,在目標域微調(diào)該混合模型,從而提升支持向量回歸機在小樣本噪聲數(shù)據(jù)上的學習預測精度。
目前對于小樣本圖像分類問題,主要有增加樣本數(shù)量和根據(jù)問題選擇特定算法兩種方式[11-12]。最初的樣本數(shù)量增強技術,例如原始樣本的旋轉(zhuǎn)、翻轉(zhuǎn)和增加對比度等方法,在一定程度上解決了樣本的數(shù)量問題,但是往往因為相似度過大,產(chǎn)生過擬合現(xiàn)象。如今,統(tǒng)計學上的各種采樣方法、生成對抗網(wǎng)絡的提出,為樣本的數(shù)量增強提供了新的解決思路[13]。文獻[14]采用Bootstrap法來解決電力負荷數(shù)據(jù)少的問題,利用放回重復抽樣的方法得到新的樣本,利用一種類比關系來進行統(tǒng)計推斷,將小樣本轉(zhuǎn)換為大樣本問題,但是該方法會造成被估參數(shù)的均值過分依賴樣本子集的情況,不利于參數(shù)估計的穩(wěn)健性。根據(jù)研究問題的不同,選擇特定的算法也可以顯著地提高實驗效果[15-16]。文獻[17]提出了利用蒙特卡洛隨機試驗可以對特征參量進行統(tǒng)計估計的特性,計算高光譜圖像的最優(yōu)降維特征數(shù),對小樣本的高光譜圖像進行降維,實驗證明使用該方法后圖像的分類精度有了較大提高。但是,蒙特卡羅的結果和準確性很大程度依賴于母體所建立的數(shù)學模型。
2005年Chopra等[18]第一次提出了孿生網(wǎng)絡的結構,該方法在人臉識別數(shù)據(jù)集上進行訓練和測試,取得了很好的識別效果。孿生網(wǎng)絡創(chuàng)新地采用了兩個樣本組成一對作為神經(jīng)網(wǎng)絡的輸入的結構。在不改變樣本數(shù)量的條件下,增加了整體樣本循環(huán)一個批次的訓練次數(shù),更有效地完成特征的提取,減少因樣本少帶來的過擬合問題。在處理類別較多、每個類別樣本少的分類任務有著極強的優(yōu)勢。
為了解決小樣本圖像分類問題,采用以變分自編碼器為核心的孿生網(wǎng)絡結構來實現(xiàn)對小樣本圖像數(shù)據(jù)的分類。特征提取通過變分自編碼器來實現(xiàn),無需人工提取,而孿生網(wǎng)絡的相似度匹配結構,可以有效地提高分類的正確率。
孿生網(wǎng)絡是一種特殊類型的神經(jīng)網(wǎng)絡結構,與傳統(tǒng)一個學習過程對應一個輸入然后進行分類的模型不同,該神經(jīng)網(wǎng)絡每個學習過程具有兩個輸入,使用相同權重的神經(jīng)網(wǎng)絡對兩個輸入數(shù)據(jù)進行處理,計算提取到的特征的相似度來分辨兩個數(shù)據(jù)的是否為同一類別。孿生網(wǎng)絡結構如圖1所示。
圖 1 孿生網(wǎng)絡結構Fig. 1 Siamese network
最初的孿生網(wǎng)絡基于全連接網(wǎng)絡。網(wǎng)絡有L個全連接層,每層有Nl個神經(jīng)元,h1,l表示在第一個孿生網(wǎng)絡分支l層的隱向量,h2,l表示在第二個孿生網(wǎng)絡分支l層的隱向量,網(wǎng)絡在前L-1 層中使用ReLU作為激活函數(shù),對于l∈{1,2,···,L-1}層網(wǎng)絡中隱向量h1,m、h2,m按式(1)和式(2)計算:
式中:Wl-1為Nl-1×Nl共享的權值矩陣;bl為l層向量的偏置;max為求最大值。
經(jīng)過輸入層和隱藏層的前饋操作后,在距離層按式(3)比較孿生網(wǎng)絡生成的特征的距離E(W),用來評估特征的相似程度。
孿生網(wǎng)絡結構具有兩個權重相同、結構相同的姐妹網(wǎng)絡。輸入圖像兩兩組成一對,圖像對中的兩個圖像將分別送到兩個姐妹網(wǎng)絡中,然后使用對比損失函數(shù)來優(yōu)化網(wǎng)絡。原始的姐妹網(wǎng)絡使用的是全連接結構,全連接網(wǎng)絡參數(shù)眾多,訓練效率低。文獻[19]對網(wǎng)絡的特征提取過程進行改進,使用卷積神經(jīng)網(wǎng)絡作為姐妹網(wǎng)絡來提取圖像特征,取得了很好的效果。但是,卷積神經(jīng)網(wǎng)絡在樣本數(shù)據(jù)量小時,易于產(chǎn)生過擬合現(xiàn)象。
使用孿生網(wǎng)絡訓練時,由于其逐對訓練的原理,將有平方級別對的數(shù)據(jù)可以來訓練模型,這讓模型很難過擬合。假設數(shù)據(jù)集樣本有E類,每類有C個樣本,則一共有C×E張圖片,總共可組成的樣本對數(shù)計算公式為
以Omniglot數(shù)據(jù)集為例,對于數(shù)據(jù)集中的964類(每類20個樣本),剔除其中相同類別的配對,仍有183 160對組合。孿生網(wǎng)絡在不增加樣本的前提下,通過輸入對匹配的方式,增加了樣本的訓練次數(shù),從而提高了網(wǎng)絡的學習能力,避免出 現(xiàn)過擬合問題。
變分自編碼器是2014年提出的一種基于變分貝葉斯推斷的生成式結構模型[20]。變分自編碼器總體上分為兩個神經(jīng)網(wǎng)絡:Encoder和Decoder。Encoder通過變分參數(shù)的不斷迭代、更新來最大化觀測數(shù)據(jù)的邊緣似然函數(shù)的下界,近似不可觀測變量的后驗概率,輸出隱變量的概率分布。Decoder則是根據(jù)Encoder輸出的隱變量概率分布還原生產(chǎn)原始數(shù)據(jù)的近似概率分布。
變分自編碼器具有和Dropout類似正則化作用的隱層采樣過程,這使得模型的整個訓練過程不容易發(fā)生過擬合問題[21],與傳統(tǒng)特征提取模型相比,更加適合解決樣本數(shù)量較少的問題。變分自編碼器現(xiàn)在已經(jīng)廣泛應用于高維數(shù)據(jù)降維、特征 提取等方面[17-24]。
綜合變分自編碼器減少過擬合問題和孿生網(wǎng)絡擴大樣本訓練次數(shù)的優(yōu)點,對孿生網(wǎng)絡進行改進,使用變分自編碼器的Encoder結構代替全連接網(wǎng)絡提取樣本特征,減少了網(wǎng)絡參數(shù),提高訓練效率。孿生變分自編碼器首先建立變分自編碼器網(wǎng)絡進行特征提取的無監(jiān)督學習,然后使用兩個權重完全相同的變分自編碼器Encoder結構搭建孿生網(wǎng)絡用于提取樣本特征,在距離層計算特征向量的相似度,得到輸入樣本的分類結果。最后,對神經(jīng)網(wǎng)絡權重進行訓練、調(diào)整。孿生變分自編碼器結構如圖2所示。
圖 2 孿生變分自編碼器結構Fig. 2 Siamese variational auto-encoder
Input_1、Input_2是樣本數(shù)據(jù)的一組組合輸入,特征提取功能由變分自編碼器的Encoder實現(xiàn),(x1,l)、 (x2,l) 為Input_1、Input_2展開得到的輸入向量。(h1,l) 為Input_1輸入第一個Encoder結構得到的隱向量,(h2,l) 為Input_2輸入第二個Encoder結構后得到的隱向量。β1T及 β2T為Encoder的權重,并且兩個Encoder結構的權重完全相同。μ、σ為輸入數(shù)據(jù)經(jīng)由Encoder結構提取到的期望與方差,該部分的計算原理同變分自編碼器相同,z1、z2分別為Input_1、Input_2提取到的特征向量。d為距離層,針對獲得的特征選擇歐式距離計算相似度,最后將輸出歸一化到[0,1]之間,使用sigmoid函數(shù)使之成為一個概率。
根據(jù)圖2的孿生變分自編碼器結構,給出相應 孿生變分自編碼器的計算流程,如圖3所示。
圖 3 孿生變分自編碼器的計算流程Fig. 3 Computation process of S-VAE
圖3中X1、X2為輸入樣本對展開后得到的一維向量;h1、h2為網(wǎng)絡第1層的輸出;μenc、σenc為網(wǎng)絡第2層的輸出。z1、z2為輸入對經(jīng)由變分自編碼器提取到的特征向量;E(W) 在距離層計算兩個特征向量的歐式距離;p為歸一化后得到的分類準確率。輸入樣本對經(jīng)過兩個權重相同的Encoder結構提取到特征,組建成孿生網(wǎng)絡,通過相似度匹配算法,得到最終分類的類別以及正確率。
利用上述孿生變分自編碼器的結構和計算流程對小樣本圖片進行分類的具體過程如下:
1)將數(shù)據(jù)集以適當?shù)谋壤譃橛柧殧?shù)據(jù)集和測試數(shù)據(jù)集,對訓練數(shù)據(jù)集使用變分自編碼器進行無監(jiān)督的學習,訓練特征提取模型。
2)初始化孿生變分自編碼器結構,載入訓練好的特征提取模型,將訓練數(shù)據(jù)集作為輸入對網(wǎng)絡進行訓練,調(diào)整網(wǎng)絡各層權值。
3)將測試數(shù)據(jù)集作為輸入,利用訓練好的網(wǎng)絡 來進行分類任務。
孿生變分自編碼器特征提取采用的是變分自編碼器的Encoder結構。變分自編碼器是一個無監(jiān)督學習的神經(jīng)網(wǎng)絡,本質(zhì)上是構建了一個從隱變量z(隱含特征)生成目標數(shù)據(jù)Y的模型,通過縮小原始輸入X與輸出Y之間的重構誤差進行學習。變分自編碼器的“瓶頸”的結構可以有效地降低原始數(shù)據(jù)的維數(shù),提取樣本特征,實現(xiàn)對原始樣本的表示學習。變分自編碼器結構如圖4所示。
圖 4 變分自編碼器Fig. 4 Variational auto-encoder
對于原始樣本集X,定義其特征值為隱變量z,根據(jù)貝葉斯準則,z的后驗概率密度函數(shù)為
但是,邊緣似然概率密度函數(shù)p(x) 計算復雜,因此變分貝葉斯推理中,通過引入近似分布函數(shù)q(z|x) 來擬合真實后驗分布p(z|x),并利用Kullback-Leibler (KL)散度來比較兩個分布的相似程度。
根據(jù)變分貝葉斯方法,樣本數(shù)據(jù)x的邊緣似然函數(shù)可以簡化為
式中:φ 為真實后驗分布參數(shù);θ 為隱層的近似分布參數(shù);式(7)中第一項為隱層的近似分布與真實后驗分布之間的KL散度,由于KL散度為非負值,僅當兩個分布完全一致時,KL散度為0,因此,可以展開為
通過最大化變分下界,即可以得到樣本集的最優(yōu)估計。同時,可以(將式()8)重寫為
式中:μenc、σenc為編碼器的輸出;μdec、σdec為解碼器的輸出;j為隱變量z的維度;L為隱變量z在后驗分布上的采樣次數(shù)。然后,選擇隨機梯度下降法(stochastic gradient descent,SGD)來優(yōu)化神經(jīng)網(wǎng)絡的參數(shù),當式(9)收斂,編碼器部分的輸出即為提取的特征值,解碼器的輸出為重構的原始樣本。
針對圖3孿生變分自編碼器的計算流程,孿生變分自編碼器特征提取過程可以表示為
式中:W、b為各層的權重和偏置項;x為輸入數(shù)據(jù),實際使用的是變換為一維數(shù)據(jù)的Omniglot圖像;h1為網(wǎng)絡第1層的輸出;μenc、σenc為網(wǎng)絡第二層的輸出;f是激活函數(shù),基于高斯分布參數(shù)μ、σ,利用qφ(z|x(i)) 采樣得到隱層輸出z, 其中,N(0,1)為 標準正態(tài)分布。
兩個原始數(shù)據(jù)成對輸入Encoder,通過訓練好的編碼器網(wǎng)絡進行分布參數(shù)提取,可以得到兩個輸入數(shù)據(jù)的特征向量z1、z2,在距離層計算兩個特征向量的歐式距離,EW為兩個樣本對輸出特征的歐式距離。
使用sigmoid函數(shù)將匹配度映射到[0,1]之間成為一個分類結果的概率,同時方便使用交叉熵作為訓練網(wǎng)絡的代價函數(shù)。相似度為
孿生網(wǎng)絡的對比損失函數(shù)為
式(13)可以展開為
式中:p 表示輸入的總樣本數(shù);i 為當前樣本的下標。其中 Y 表示樣本對的標簽,Y ∈{1,0}。 當Y=0時,表明本次輸入樣本對是同一類圖片。此時的樣本對的損失函數(shù) L(W) 越小說明模型的參數(shù)越合理。若 L (W) 很大,則需要網(wǎng)絡使用反向傳播機制,對模型參數(shù)進行優(yōu)化。當 Y =1 時,表明本次輸入樣本對 X1、X2不是同一類。此時,優(yōu)化損失函數(shù) L(W) 會使使得來自不類別圖像的損失盡可能變大。(結合式(12)),本文模型的(代價函)數(shù)為
式中:Y為輸入對是否是同類的標簽;p(z1,z2)i為第i個樣本對輸入網(wǎng)絡后得到的歸一化后的特征距離。代價函數(shù)可以使用標準反向傳播算法進行模 型訓練。
實驗使用Tensorflow框架設計神經(jīng)網(wǎng)絡并進行訓練和測試,實驗的硬件環(huán)境為i5-8300H處理器,8 GB內(nèi)存,軟件環(huán)境為Windows 10操作系統(tǒng)。
Omniglot數(shù)據(jù)集擁有50種文字,1 623類手寫字符。對于每類字符僅有20個樣本,每個樣本分別由不同的人繪制而成,分辨率為 10 5×105。圖5為數(shù)據(jù)集的4個示例。
圖 5 Omniglot數(shù)據(jù)集Fig. 5 Omniglot dataset
針對Omniglot數(shù)據(jù)集的測試實驗主要圍繞N-way K-shot展開:每種方法利用未經(jīng)訓練的N類中的K個已標記的樣本進行訓練,然后對一組屬于N類中不相交的未標記樣本進行分類。本文進行的實驗是5-way 1-shot、5-way 5-shot、20-w ay 1-shot和20-way 5-shot。
整個模型分為5層,特征提取部分網(wǎng)絡層數(shù)為3層。第1層輸入層為22 050個節(jié)點,第2層為2 048個節(jié)點,第3層為4個節(jié)點,第4層為4個節(jié)點,第5層輸出層為1個節(jié)點。訓練該模型提取樣本圖像的高層語義特征,然后再針對樣本圖像提取的高層語義特征利用孿生變分自編碼器模型進一步進行訓練,最后使用分類器進行分類。
通過Omniglot數(shù)據(jù)集對孿生變分自編碼器進行測試,與原始孿生網(wǎng)絡以及其他針對小樣本圖像分類方法實驗結果進行對比。實驗中用于對比的小樣本分類方法主要有文獻[25]中引用的原始孿生網(wǎng)絡實驗結果、文獻[19]中提出的卷積孿生網(wǎng)絡、文獻[26]提出的分層貝葉斯學習方法(HBPL)以及文獻[27]提出的預采樣匹配網(wǎng)絡(SSMN)。實驗結果如表1所示。
表 1 Omniglot 數(shù)據(jù)集N-way K-shot 平均正確率 Table 1 Average accuracy of N-way K-shot of Omniglot dataset
從表1中可以看出,S-VAE實驗結果中,4種條件下孿生變分自編碼器分類結果均高于卷積孿生神經(jīng)網(wǎng)絡。20-way 1-shot情況下略微低于HBPL模型,較其他方法,孿生變分自編碼器具有更高的分類正確率。20-way 5-shot 情況下本文提出的模型正確率最高,為98.9%。從表中可以看出,S-VAE相較于原始的孿生網(wǎng)絡分類正確率在4個對比實驗下均有所提高,平均提高3.1%。
由于HBPL模型是一種針對Omniglot進行特定處理的方法,在Omniglot筆畫層次上進行圖像的分割,繼而進行學習,缺乏在其他問題上的拓展能力。因此,對余下3種算法和本文提出的模型,進行訓練時間的比較,結果如表2所示。
從表2的訓練時間來看,孿生變分自編碼器在訓練接近2個小時后,可以完成訓練,并且訓練用時最短,這說明孿生變分自編碼器可以實現(xiàn)對小樣本數(shù)據(jù)的快速分類,相較于另外3種算法,效率更高。
表 2 Omniglot 數(shù)據(jù)集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的測試錯誤率以及損失函數(shù)值的結果。結合表1中的平均正確率,從圖6中5-way 1-shot的測試實驗結果可以看出,整體樣本正確率達到98.0%,一部分樣本可以100%地識別出來,與原始孿生網(wǎng)絡相比,分類正確率提高了4.3%。結合圖8可以看出,當樣本類別數(shù)量增加到20類時,20-way 1-shot場景下整體測試樣本正確率達到了94.1%,與原始孿生網(wǎng)絡相比,分類正確率提高了 5.9%。
圖 6 5-way 1-shot測試正確率和損失函數(shù)值Fig. 6 Test accuracy and loss of 5-way 1-shot
圖 7 5-way 5-shot測試正確率和損失函數(shù)值Fig. 7 Test accuracy and loss of 5-way 5-shot
圖 8 20-way 1-shot測試正確率和損失函數(shù)值Fig. 8 Test accuracy and loss of 20-way 1-shot
圖 9 20-way 5-shot測試正確率和損失函數(shù)值Fig. 9 Test accuracy and loss of 20-way 5-shot
圖10~12是以20-way 1-shot和5-way 1-shot為例,反映了不同類別,相同的訓練樣本數(shù)據(jù)集經(jīng)過測試后的結果有著明顯差距。當訓練數(shù)據(jù)集樣本數(shù)相同時,隨著訓練樣本類別的增加,最終識別難度變大,分類正確率下降。當樣本類別達到20,訓練樣本只有一個時,訓練難度最大,圖10體現(xiàn)出20-way 1-shot收斂速度明顯慢于5-way 1-shot 條件下的收斂速度,正確率也略微下降。結合圖7以及表1中的平均正確率可以看出在難度最大的20-way 1-shot條件下,樣本在迭代700次之后收斂,測試正確率達到94.1%。
圖 10 different-way 1-shot訓練損失函數(shù)值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為例,反映了相同類別,不同的訓練樣本數(shù)據(jù)集經(jīng)過測試后的結果。當訓練數(shù)據(jù)集樣本數(shù)相同時,隨著訓練樣本類別的增加,最終識別難度變大,分類正確率下降。結合表1中平均正確率的實驗結果對比,與原始的Siamese Net[25]相比,在難度最高的20-way 1-shot情況下,孿生變分自編碼器分類正確率提高了5.9%,其他情況下最低提高了0.3%,可以在說明本文所提出的混合模型的先進性。與Lake等[26]提出的分層貝葉斯學習結構相比,孿生變分自編碼器正確率低0.9%,但是Lake的方法使用的不是原始圖像的像素,而是Omniglot的筆畫數(shù)據(jù),雖然在Omniglot數(shù)據(jù)集上具有極高的分類正確率卻失去了向其他數(shù)據(jù)集拓展的能力,本文所提出的模型與之相比具有更好的泛化能力。從4種條件下的損失函數(shù)結合表2中幾個方法的訓練時間對比,孿生變分自編碼器可以很快速的收斂,在訓練1 000次后就已經(jīng)達到了比較不錯的分類效果。
圖 13 20-way different-shot訓練損失函數(shù)值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
針對小樣本圖像分類問題,本文提出了孿生變分自編碼器網(wǎng)絡模型。首先對訓練樣本數(shù)據(jù)使用變分自編碼器進行降維處理,提取樣本的隱含特征,然后通過孿生網(wǎng)絡,對成對輸入的兩個樣本進行相似度匹配,返回與待測樣本標簽為同類的樣本類別以及正確率,完成物體的分類。通過Omniglot數(shù)據(jù)集對模型效果進行4組實驗驗證,本文提出的改進模型與原始孿生神經(jīng)網(wǎng)絡相比最高提高了5.9%,平均提高3.1%。
下一步工作將本文方法拓展應用到實際問題中。在電力設備故障診斷中,只有很少的實際采集樣本,因此,通常會額外生成模擬數(shù)據(jù)進行實驗,本文下一步工作即通過孿生變分自編碼器在僅使用實際采集樣本的情況下對故障類型進行分類。