王格格,郭 濤,余 游,蘇 菡
(四川師范大學 計算機科學學院,成都 610101)
隨著信息技術的飛速發(fā)展,人們能夠以更加快速、廉價的方式來獲取大量缺少標記的數據,而為這些數據提供標記則相對困難.因為標記數據的過程成本較高,并且需要大量的人力物力,甚至必須依賴于少數領域專家來完成.傳統(tǒng)的以標記數據為基礎的機器學習模型已經遠不能滿足數據分析和處理的要求,數據量大而所獲知識和價值甚少是機器學習領域的一大困境[1].半監(jiān)督學習(Semi-Supervised Learning,SSL)試圖讓學習器自動地對大量未標記數據進行利用以輔助少量有標記數據進行學習[2],從而解決監(jiān)督學習的模型泛化能力不強和無監(jiān)督學習的模型不精確等問題,因此半監(jiān)督學習可以最大限度地發(fā)揮數據的價值.隨著深度學習[3]在計算機視覺[4]、自然語言處理[5]和語音識別[6]等多個應用領域取得突破性進展,半監(jiān)督深度學習成為了自然的需求,因為對海量標記樣本的需求在很多應用中都難以被滿足是目前深度學習的主要障礙.Kingma等[7]采用疊加的生成模型學習標記樣本和無標記樣本的隱變量并使用SVM對學習的隱變量進行分類.Rasmus等[8]把自編碼器的編碼層和解碼層之間加入短路連接,然后使用分類器對自編碼器學習的特征進行分類.Dai等[9]通過最小化按順序拼接的自編碼器的重構誤差學習出序列數據的隱特征.生成對抗網絡(Generative adversarial network,GAN)作為深度學習中一種新的生成模型[10-12],在圖像生成方面具有良好的表現,而在標記數據較少的情況下,能否利用GAN所學到的樣本內容分布和強大的對抗學習能力來提升網絡分類性能成為了近幾年新的研究熱點.Springenberg等[13]強制判別器對于真實樣本輸出單熱向量,對于生成樣本輸出均勻向量.Sutskever等[14]提出一種輸出分布匹配方法用作半監(jiān)督學習中的正則化項,并用GAN對網絡進行訓練使得生成的虛擬樣本類別分布與真實樣本類別分布相匹配.Dai等[15]證明半監(jiān)督學習情況下,一個差的生成器能夠更有利于判別器進行半監(jiān)督的學習.Augustus[16]提出半監(jiān)督生成對抗網絡(Semi-Supervised GAN,SGAN),強制判別器輸出類標簽,實現了在只有少量標記數據的情況下,大量未標記數據能輔助判別器提取不同類別圖像的特征,從而影響判別器的分類效果及泛化能力.但SGAN上的判別器是由線性卷積層組成,其抽象層次較低,不能提取圖像更深層次的特征,從而不能完整學習到各個類別之間的差異性,因此分類精度不高.本文提出半監(jiān)督多層感知器生成對抗網絡(Semi-Supervised Multilayer Perceptron Generative Adversarial Network,SMPGAN),采用多層感知器卷積層代替SGAN判別器上的線性卷積層對底層概念的每個局部特征做一個更好的抽象,并接收大量無標記數據、少量標記數據,以及生成器生成的數據以提高正確分類率,解決了監(jiān)督分類中因標記數據太少產生的模型泛化能力不強的問題;在生成器上使用特征匹配,能夠將生成數據分布盡量與真實數據分布拉近,進一步促進了判別器提取圖像不同類別特征的能力.實驗結果表明,SMPGAN的分類精度及其生成的圖像質量都有明顯提高.
第1節(jié)為引言,第2節(jié)介紹了半監(jiān)督學習,第3節(jié)介紹了傳統(tǒng)的GAN以及SGAN的基本原理,第4節(jié)對SMPGAN的多層感知器卷積層、模型結構和損失函數進行了詳細的介紹,第5節(jié)是實驗結果及分析,第6節(jié)為結束語.
在傳統(tǒng)的監(jiān)督學習中,模型通過對大量有標記的訓練樣本進行學習,從而可以用來預測從未見過的示例數據的標簽.然而,獲取這樣的標記數據比較困難,因為可能需要耗費大量的人力物力,但在實際生活中未標記數據卻大量存在,而且獲取的成本也較低.另一方面,只使用少量的標記樣本訓練出的模型往往不具備很好的泛化能力,并且放棄對大量未標記數據的使用也是對數據資源的極大浪費.
半監(jiān)督學習是結合監(jiān)督學習與無監(jiān)督學習的一種學習方法,它通過使用少量的標記數據以及大量的未標記數據來改善模型的性能,使其比在只使用標記數據的情況下得到更好的分類或識別結果,從而充分利用了大量的無標簽數據資源,并提高了模型的泛化能力.
半監(jiān)督學習的基本設置為給定一個來自某未知分布的有標記示例集L={(x1,y1),(x2,y2),…,(x|L|,y|L|)}以及一個未標記示例集U={x1,x2,…,x|U|},期望學得函數f:X→Y可以準確地對示例x預測其標記y[17].其中,xi,xj∈X均為d維向量,yi∈Y為示例xi的標記,|L|和|U|分別為L和U的大小,即它們所包含的示例數.
生成對抗網絡(GAN)由一個生成器G和一個判別器D構成,生成器G負責將采樣于先驗分Pz(z)的隨機噪聲z映射成類似于真實數據分布Pdata(x)的生成數據分布PG(z);判別器D可以看成是將數據映射到判別概率的函數:D(x)→(0,1),其被訓練用于判別輸入的數據是來自于真實數據分布Pdata(x)還是生成數據分布PG(z).G和D在相互對抗訓練的過程中,分別不斷提高自己的生成能力和判別能力,直到PG(z)足以完美匹配Pdata(x),則判別器將會對所有輸入給出0.5的概率值,此時,兩者也達到了一個動態(tài)的納什均衡[18].可以將這樣的訓練任務看作是具有值函數V(D,G)的極大極小博弈,由公式(1)給出定義:
(1)
其中,D(x)表示D判斷真實數據是否真實的概率,而D(G(z))是D判斷G生成的數據是否真實的概率.G應該希望自己生成的數據越接近真實越好,即G希望D(G(z))盡可能的大,此時V(D,G)會變小,對G來說應該最小化.而D的能力越強,越能正確判別出真實數據和生成數據,D(x)應該盡可能大,D(G(z))應該盡可能小,此時V(D,G)會變大,因此對D來說應該最大化.GAN的流程圖如圖1所示.
圖1 GAN流程圖Fig.1 GAN flow chart
半監(jiān)督生成對抗網絡(SGAN)由一個生成器G和一個能夠進行多分類的判別器D組成,且二者均為卷積神經網絡.SGAN通過在大量無標記數據的基礎上加入少量標記數據,不僅實現了GAN判別器作為分類器以對輸入數據進行正確分類,而且在大量無標記數據的輔助下,避免了傳統(tǒng)分類方法在少量標記數據上產生的過擬合問題.原始GAN判別器D的最后一層是以Sigmoid單元結束的,限制了網絡只能輸出(0,1)的概率值,即輸出的值接近于1表示輸入數據為真實數據,接近于0則表示輸入數據為生成器G生成的數據.這種概率值很重要,因為通過它,D能夠將梯度反饋給G,從而可以提高G生成逼真圖像的能力.但SGAN將Softmax激活函數作為D的最后一層,讓D可以輸出N+1個類別,其中N為原始數據集類別數目,而第N+1類則代表生成器生成的數據為“假”,即D輸出的N+1個單元對應為[class1,class2,…,classN,fake].此時,D也充當了分類器的角色,并且具有三種不同的輸入數據源用于訓練,即真實有標記數據、真實無標記數據和生成器生成的數據.一方面,判別器通過學習區(qū)分真實無標記數據和生成的數據,可以很好地捕獲到真實無標記數據具有的特定特征,并且能夠幫助生成器學習生成逼真的圖像,這是通過SMPGAN的對抗訓練完成的;另一方面,判別器使用真實有標記數據進行監(jiān)督訓練,在能夠正確區(qū)分真實數據和生成數據的基礎上,進一步精確地對數據集類別進行分類.在訓練過程中,D實際上同時進行了無監(jiān)督學習和有監(jiān)督學習,可以將其稱之為D/C網絡.SGAN的流程圖如圖2所示.
圖2 SGAN流程圖Fig.2 SGAN flow chart
多層感知器(Multilayer Perceptron,MLP)是一種前向結構的人工神經網絡,映射一組輸入向量到一組輸出向量.MLP的每一層的節(jié)點都全連接到下一層,且每個節(jié)點都帶有非線性激活函數,克服了感知器不能對線性不可分數據進行識別的弱點.MLP作為一個通用函數逼近器,在對局部數據塊進行特征提取的過程中,能夠逼近潛在概念分布的更多抽象表示,并且MLP同卷積神經網絡一樣,也是一個深度模型,均通過反向傳播進行訓練.而傳統(tǒng)卷積神經網絡的線性卷積層對下層數據塊來說只是一個廣義線性模型[19],其抽象層次較低,提取圖像深層次特征的能力較弱,進而對圖像的分類精度不高.因此,本文采用多層感知器卷積層(Multilayer perceptron convolutional layer,MPConv),使用一個含有多層感知器的微網絡結構對輸入數據進行卷積,使圖像局部區(qū)域的深層抽象特征能更好地被提取出來.以在判別器上使用Leaky Relu激活函數為例,MPConv執(zhí)行的計算如公式(2)所示.
(2)
其中(i,j)表示特征映射的像素索引,xi,j是以(i,j)為中心的輸入區(qū)域,k是索引特征映射的通道,n為多層MPConv的層數,f為每一層數據塊執(zhí)行卷積操作并通過激活函數的最后結果.通過式子可以看出,MPConv首先對每個局部感受野的神經元進行了更復雜的線性運算,然后再通過一個非線性的激活函數,進一步提取圖像的非線性特征.并且,這種結構在多通道的情況下還可以實現不同通道上特征映射的線性交互和信息整合,提高了網絡的表達能力.
多層感知器卷積層的結構如圖3所示,可以看出,一個多層感知器卷積層由一個線性卷積層和一個含有2個全連接層的多層感知器組成.線性卷積層負責提取圖像的基本線性特征,而多層感知器的擬合能力更強大,可以提取圖像更深層次的線性特征,并且激活函數的使用引入了非線性因素,進一步提升了網絡的表達能力.
圖3 MPConv結構圖Fig.3 MPConv structure diagram
本文對SGAN的判別器結構做了相應的改進,將其線性卷積層替換成多層感知器卷積層,并使用池化層將圖像下采樣到原始大小的一半.一個多層感知器卷積層和一個最大池化層組成一個微網絡結構,而SMPGAN的判別器又由4個微網絡結構組成,如圖4所示.原始MINIST數據集的圖像大小為28×28×1,第一個微網絡結構含有32個卷積核,由于實驗中卷積參數padding設置為“same”,因此通過MPCONV后的輸出圖像大小并不會改變,但其通道數會與當前卷積核的個數相同.但通過最大池化層之后,圖像會被下采樣到其輸入前大小的一半,此時圖像大小縮減到14×14×32.以此類推,卷積核個數按照上一個微網絡結構的2倍逐漸增加,而輸出圖像大小以輸入到當前微網絡結構時圖像大小的1/2進行減小,通道數則與當前微結構中卷積核的個數相同.直到圖像變成1×1×128的大小時,再拉伸成一維張量輸入到全連接層,最后再使用Softmax激活函數輸出分類結果.表1是SMPGAN的體系結構描述.
圖4 SMPGAN判別器結構圖Fig.4 SMPGAN discriminator structure diagram
SMPGAN的判別器同時也充當了一個N+1分類器的角色,它接收一個數據點作為輸入,輸出一個N+1維的邏輯向量:{c1,c2,…,ck+1}.這些邏輯向量可以轉換成類概率,其中公式(3)表示x為假的概率,而公式(4)表示x為真實的且屬于類i的概率.
表1 SMPGAN的體系結構描述
Table 1 Description of the SMPGAN architecture
生成器?使用4個微步幅卷積(反卷積)學習空間的上采樣.?除輸出層使用Tanh激活函數外,其他層均使用Relu激活函數.?除最后一層外每一層均使用BatchNormalization.判別器?由4個微網絡結構組成,每個微網絡由1個多層感知器卷積層和1個最大池化層組成,多層感知器卷積層用于提取圖像特征,最大池化層用于將圖像大小下采樣到輸入時的一半.?除輸出層使用Softmax激活函數外,其他層均使用LeakyRelu激活函數.?只在第二層和第三層上使用BatchNormalization,因為不在第一層使用能夠增加模型的穩(wěn)定性,不在最后一層使用是因為判別器的最后一層會作為生成器特征匹配中的嵌入層.?第一層和第三層上使用Dropout可以有效減少網絡參數,防止模型過擬合.?將其設置成一個最后一層使用Softmax激活函數的N+1類分類器,用于將真實數據正確地分類為N+1類中的類別,將生成器生成的數據分類為第N+1個代表“假”的類別.
(3)
(4)
這樣一來,SMPGAN的損失函數就可以由標記損失和無標記損失兩部分組成,如公式(5)所示.其中,公式(6)表示標記損失,即分類損失;公式(7)表示無標記損失,即對抗損失,可以看出無標記損失是標準的GAN博弈值,與傳統(tǒng)GAN的判別器損失函數相同.
LD=Llabeled+Lunlabeled
(5)
Llabeled=-Ex,y~pdatalog[pmodel(y=i|x,i (6) Lunlabeled=Ex~pdatalog[1-pmodel(y=N+1|x)]+Ex~Glog[pmodel(y=N+1|x)] (7) SMPGAN生成器的損失函數由對抗損失和特征匹配損失兩部分組成,如公式(8)所示.公式(9)與傳統(tǒng)GAN相同,表示生成器在與判別器進行對抗訓練中學習到的對抗損失.特征匹配由文獻[20]提出,其原理在于通過為生成器指定一個新的目標來防止它在當前判別器上過度訓練,從而解決SGAN訓練不穩(wěn)定的問題.新的目標不是最大化判別器的輸出,而是要求生成器生成與真實數據的統(tǒng)計信息相匹配的數據,即訓練生成器匹配判別器中間層特征的期望值.對于生成器來說,這是一個自然的統(tǒng)計數據選擇,因為通過訓練判別器,可以很自然地找到那些最能區(qū)別真實數據和當前模型生成數據的特征.特征匹配的損失如公式(10)所示,其中f(x)表示判別器中間層上的激活. LG=Ladversarial+Lfeature-matching (8) Ladversarial=-Ex~Glog[1-pmodel(y=N+1|x)] (9) (10) 本文的實驗環(huán)境配置為:曙光W740-G20 GPU服務器,Intel Xeon E5-2690v4 2.6GHz 35M 14核心處理器,256GB DDR4 ECC REG內存,300G SAS硬盤,MX FDR 56GB單端口HCA卡,NV TESLA K80GPU卡,TensorFlow平臺. 為與SGAN的實驗結果進行對比,本文也在MINIST數據集上進行實驗驗證,經過實驗測試,采用小批量隨機梯度下降法進行訓練,批量參數為512.噪聲從[-1,1]的均勻分布中隨機采樣,采樣大小與批量參數相同.生成器為4層反卷積結構,其卷積核大小依次為2,3,4,6,且除第一層步長設置為1外,其余3層步長均為2.判別器由4個微網絡結構組成,每個微網絡中多層感知器卷積層的卷積核大小均為3,步長為1;而最大池化層的卷積核大小設置為2,步長也為2,用于把圖像下采樣到輸入時大小的一半.學習率參數為0.0002,并使用Adam優(yōu)化器分別對生成器和判別器的損失函數進行優(yōu)化.本文在只有25個、50個、100個和1000個標記數據的情況下對SMPGAN做了相應的實驗,并在同樣的標記數據量的條件下與SGAN的分類結果做了對比,以此證明SMPGAN結構的優(yōu)越性. 5.2.1 損失函數圖像分析 圖5是SMPGAN判別器上的標記損失變化趨勢圖,從圖上可以看出判別器的標記損失在整個訓練過程中逐漸減小,直到減小到接近于0時網絡開始收斂,反映了判別器的分類能力在訓練中在不斷提升的過程,最終達到一個穩(wěn)定的最高分類精度值.圖6和圖7分別是SMPGAN判別器上的無標記損失(對抗損失)變化趨勢圖和生成器上的對抗損失變化趨勢圖,判別器的對抗損失在逐漸下降,而生成器的對抗損失在逐漸上升,這正是兩個網絡進行對抗訓練的結果,并且其趨勢也符合第4.3節(jié)中對抗損失函數的定義,也證明了網絡在訓練過程中朝著正確的方向在發(fā)展,并未出現異常情況.圖8是SMPGAN生成器上的特征匹配損失變化趨勢圖,可以看到其值先出現減小隨后又逐漸上升的狀態(tài),因特征匹配損失衡量的是真實數據分布和生成數據分布在判別器中間層激活上的距離,在訓練初期,真實數據分布和生成數據分布差異較大,判別器能夠很容易地將兩者分辨出來,隨著對抗訓練的進行,生成數據分布逐漸擬合真實數據分布,但此時判別器的判別能力還不夠強大,不足以正確區(qū)分出這兩個分布,因此出現特征匹配損失的值逐漸減小的情況.而到訓練中后期,隨著判別器的判別能力在不斷地增強,真實數據分布和生成數據分布能夠逐漸被正確區(qū)分出來,因此特征匹配損失的值出現逐漸增大的情況. 圖5 SMPGAN的標記損失變化趨勢圖Fig.5 Labeled loss trend chart on SMPGAN 圖6 SMPGAN的無標記損失變化趨勢圖Fig.6 Unlabeled loss trend chart on SMPGAN 圖7 SMPGAN的對抗損失變化趨勢圖Fig.7 Adversarial loss trend chart on SMPGAN 圖8 SMPGAN的特征匹配損失變化趨勢圖Fig.8 Feature-matching loss trend chart on SMPGAN 5.2.2 時間復雜度分析 本文通過卷積神經網絡的時間復雜度衡量模型的運行時間效率,因只對SMPGAN判別器的結構進行了相應改進,這里只考慮其判別器卷積層的時間復雜度1https://zhuanlan.zhihu.com/p/31575074.公式(11)是單個卷積層的時間復雜度,公式(12)是卷積神經網絡整體的時間復雜度.其中,為當前層輸出特征映射的大小;為當前層卷積核的大小;為當前層卷積核的通道數,即輸入通道數,也是上一層的輸出通道數;為當前層的卷積核個數,即當前層的輸出通道數;為判別器上所有卷積層的層數.可以看出單個卷積層的時間復雜度由輸出特征映射的大小、當前卷積核的大小、當前層的輸入通道數和輸出通道數完全決定,而整體卷積神經網絡的時間復雜度為所有單個卷積層時間復雜度的總和.而SMPGAN的多層感知器卷積層相較于SGAN的線性卷積層更為復雜,其時間復雜度由卷積層的時間復雜度和多層感知器的時間復雜度兩部分組成,因此SMPGAN的時間復雜度會高于SGAN的時間復雜度,即SMPGAN達到其最高準確率需要的運行時間更長. Time~O(M2·K2·Cin·Cout) (11) (12) 5.2.3 分類結果 表2是SGAN和SMPGAN在MNIST數據集上的4種標記樣本數量下的分類結果對比.可以看到,當標記樣本數量為25和100時,SMPGAN的分類準確率相較于SGAN都提高了1%左右;而當標記樣本為50個時,SMPGAN的分類精度提升相對較高,比SGAN在相同的標記樣本數量下提高了5.8%;當標記樣本數量為1000時,兩者的分類結果相差不大,但都能達到96%左右的精度,證明了半監(jiān)督學習在少量標記樣本的輔助下有助于分類精度的提升.通過在4種不同的標記樣本數量下進行實驗的結果顯示,SMPGAN的分類精度均高于SGAN,證明SMPGAN判別器上的多層感知器卷積層結構和其生成器上的特征匹配在對分類結果提升方面的有效性. 表2 SGAN和SMPGAN在4種標記樣本數量下的分類結果 標記樣本數量SGANSMPGAN10000.9640.9671000.9280.945500.8830.941250.8020.812 圖9、圖10、圖11和圖12分別是SGAN和SMPGAN在25個、50個、100個和1000個標記樣本下的ROC曲線對比圖.因SGAN和SMPGAN的判別器都為多類分類器,為了便于比較,本文的ROC曲線采用10個類別的ROC曲線平均值繪制.可以看出,當標記樣本數為25的時候,SGAN的ROC曲線有高于SMPGAN的ROC曲線的地方,但SMPGAN的AUC值仍大于SGAN的AUC值;當標記樣本數為50和100的時候,SMPGAN的ROC曲線明顯高于SGAN的ROC曲線,兩者的AUC值差別也較大;當標記樣本數為1000的時候,SGAN和SMPGAN的ROC曲線將近重合,兩者的AUC值也相差甚小,這與表2的分類結果相對應.但在這四種情況下,SMPGAN的AUC值都一直高于SGAN的AUC值,進一步說明SMPGAN訓練出的分類器性能更好. 5.2.4 圖像生成結果 圖9 25個標記樣本下的ROC曲線對比圖Fig.9 Comparison of ROC curves under 25 labeled samples 圖10 50個標記樣本下的ROC曲線對比圖Fig.10 Comparison of ROC curves under 50 labeled samples 圖11 100個標記樣本下的ROC曲線對比圖Fig.11 Comparison of ROC curves under 100 labeled samples 圖13和圖14是SGAN生成的圖像和SMPGAN生成的圖像,從視覺效果上看出,SMPGAN生成的圖像比SGAN生成的圖像更加清晰真實,且更具多樣性.因SGAN和SMPGAN主要是用于圖像半監(jiān)督分類,所以本文重點并不在圖像生成上面,但是通過SMPGAN生成的圖像可以看出,在一定程度上提升判別器捕獲圖像深層特征的能力,促使生成器生成更接近于真實樣本的圖像,進一步說明了GAN的判別器和生成器在進行對抗學習、相互博弈的過程中能夠互相影響的特點. 圖12 1000個標記樣本下的ROC曲線對比圖Fig.12 Comparison of ROC curves under 1000 labeled samples 圖13 SGAN生成的圖像Fig.13 Image generated by SGAN 圖14 SMPGAN生成的圖像Fig.14 Image generated by SMPGAN 本文提出了半監(jiān)督多層感知器生成對抗網絡(SMPGAN),通過將SGAN判別器上的線性卷積層替換成多層感知器卷積層以提取圖像潛在的抽象特征,在大量無標記數據的基礎上加入少量有標記數據,并將判別器轉換為一個N+1類分類器以實現在少量標記訓練數據上進行分類,避免了傳統(tǒng)分類方法中的過擬合問題.同時,在生成器上使用特征匹配進一步提高模型的分類能力.在MINIST數據集上的實驗表明,在標記數據為25個、50個、100個和1000個的情況下,SMPGAN的分類精度均高于SGAN的分類精度,且SMPGAN生成的圖像相較于SGAN也更加清晰.5 實 驗
5.1 參數設置
5.2 實驗結果及分析
Table 2 Classification results of SGAN and SMPGAN under 4 kinds of labeled sample numbers6 結束語