姚明海 黃展聰
(浙江工業(yè)大學(xué)信息工程學(xué)院 杭州 310023)
自2006年Hinton等人[1]采用逐層初始化解決深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練以來,深度學(xué)習(xí)已廣泛用于模式識別、圖像理解、機(jī)器翻譯等領(lǐng)域。2016年,深度學(xué)習(xí)模型在ImageNet圖像集上的識別錯誤率已經(jīng)低于人類[2]。然而,現(xiàn)有的深度學(xué)習(xí)模型訓(xùn)練都以監(jiān)督學(xué)習(xí)為主[3],為了訓(xùn)練包含巨大參數(shù)量的模型,需要大量的人工標(biāo)注訓(xùn)練樣本,并假設(shè)訓(xùn)練和應(yīng)用場景數(shù)據(jù)屬于同一分布。但在實際中,由于許多因素(如照明、姿態(tài)和圖像質(zhì)量等)的影響,訓(xùn)練和應(yīng)用場景的樣本分布往往不一致,使訓(xùn)練好的模型在應(yīng)用場景下的性能嚴(yán)重降低。此時需要重新標(biāo)注應(yīng)用場景數(shù)據(jù)再進(jìn)行訓(xùn)練,而為新任務(wù)標(biāo)注數(shù)據(jù)集并重新訓(xùn)練是昂貴且耗時的過程,上述問題成為深層神經(jīng)網(wǎng)絡(luò)應(yīng)用中新的難題。
領(lǐng)域自適應(yīng)學(xué)習(xí)[4]是一種解決如何將分類器從訓(xùn)練場景遷移到與之不同的應(yīng)用場景的新型機(jī)器學(xué)習(xí)方法,其中訓(xùn)練場景稱為源域,應(yīng)用場景稱為目標(biāo)域。源域和目標(biāo)域的分布雖然不同,但是具有一定相關(guān)性,且只有源域數(shù)據(jù)具有標(biāo)簽信息,而目標(biāo)域數(shù)據(jù)沒有或者只有少量標(biāo)簽信息可用[5]。從領(lǐng)域自適應(yīng)學(xué)習(xí)提出至今,學(xué)者們已經(jīng)提出了許多方法。Fetzer等人[6]引入了深度域混淆(DDC)架構(gòu)來學(xué)習(xí)最后隱藏層中源域和目標(biāo)域的域不變特征。Long等人[7]不局限于僅適配單一層,提出了一種深度自適應(yīng)網(wǎng)絡(luò)(DAN),進(jìn)行多層適配來學(xué)習(xí)2個領(lǐng)域間的可遷移特征。之后,Long等人[8]在DAN的基礎(chǔ)上,提出了聯(lián)合自適應(yīng)網(wǎng)絡(luò)(JAN),基于聯(lián)合最大均值差異(JMMD)進(jìn)行多個領(lǐng)域特定層的聯(lián)合分布,使得源域和目標(biāo)域的分布更加可區(qū)分。
國內(nèi)方面,袁丁等人[9]在DAN[8]的基礎(chǔ)上引入了聚類輔助特征對齊,該方法通過聚類獲得目標(biāo)域數(shù)據(jù)偽標(biāo)記,并將聚類和域適應(yīng)2個過程訓(xùn)練的分類器進(jìn)行繼承學(xué)習(xí),以提升模型的最終效果。蔡瑞初等人[10]提出類內(nèi)最大均值差異技術(shù)對齊2個領(lǐng)域的類內(nèi)分布,既保留分類信息,又減少了領(lǐng)域?qū)S眯畔⒌母蓴_。
文獻(xiàn)[6-10]方法共同特點是訓(xùn)練時同時輸入已標(biāo)注源域樣本和未標(biāo)注目標(biāo)域樣本,訓(xùn)練中除了利用源域樣本學(xué)習(xí)如何優(yōu)化分類器外,還學(xué)習(xí)源域和目標(biāo)域的數(shù)據(jù)關(guān)聯(lián),進(jìn)而提取領(lǐng)域不變特征[5],建立更優(yōu)秀的學(xué)習(xí)模型。由于這些方法在訓(xùn)練時不需要任何目標(biāo)域數(shù)據(jù)的標(biāo)簽信息,因此屬于無監(jiān)督學(xué)習(xí)范疇。雖然文獻(xiàn)[6-10]的方法取得了一定效果,但從結(jié)果上可以發(fā)現(xiàn)僅使用源域標(biāo)簽信息學(xué)習(xí)得到的模型仍然無法完全適配目標(biāo)域。
本文提出了一種基于主動學(xué)習(xí)的半監(jiān)督領(lǐng)域自適應(yīng)方法,該方法與文獻(xiàn)[6-10]方法的主要差別在于利用了少量的目標(biāo)域標(biāo)簽信息輔助源域上學(xué)習(xí)得到的分類器更好地遷移到目標(biāo)域。為了實現(xiàn)上述目標(biāo),首先用源域和未標(biāo)記的目標(biāo)域數(shù)據(jù)訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)作為初始模型,該模型可以通過提取領(lǐng)域不變特征讓源域上學(xué)習(xí)得到的特征分類器基本適用于目標(biāo)域。然后結(jié)合主動學(xué)習(xí)進(jìn)一步加強(qiáng)領(lǐng)域自適應(yīng)效果,具體做法是通過特定的樣本選擇策略不斷挑選目標(biāo)域中最具代表性的樣本進(jìn)行人工標(biāo)注,然后迭代訓(xùn)練已有模型,直到預(yù)先設(shè)置終點。最后,在SVHN、MNIST和USPS數(shù)據(jù)集上分別進(jìn)行了實驗,實驗結(jié)果表明,本文方法的領(lǐng)域自適應(yīng)能力優(yōu)于目前具有競爭力的同類方法。
在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型的時候,隨著訓(xùn)練數(shù)據(jù)的增加,網(wǎng)絡(luò)模型的精度會不斷提升。但是當(dāng)訓(xùn)練數(shù)據(jù)量達(dá)到臨界值時,精度基本不會產(chǎn)生變化,而這個臨界值和數(shù)據(jù)樣本本身有關(guān)。主動學(xué)習(xí)[11]可以通過挑選更具代表性的樣本迭代訓(xùn)練模型使臨界值更早地到來,既提升了模型收斂的速度,同時節(jié)省了人力標(biāo)注的成本。
圖1是主動學(xué)習(xí)的基本流程,主要包括“學(xué)習(xí)模塊”和“選擇策略”2個最基本的重要模塊?!皩W(xué)習(xí)模塊”通過不斷地迭代訓(xùn)練網(wǎng)絡(luò)模型來提高分類器的分類精度和魯棒性;“選擇策略”模塊通過某種選擇策略選擇出更具代表性的樣本進(jìn)行標(biāo)記之后送入“學(xué)習(xí)模塊”。
目前常見的領(lǐng)域自適應(yīng)方法,如文獻(xiàn)[6-10]僅利用已標(biāo)注源域樣本和未標(biāo)注目標(biāo)域樣本本身數(shù)據(jù)關(guān)聯(lián)性學(xué)習(xí)得到的模型仍然無法完全適配目標(biāo)域數(shù)據(jù),因此可以考慮適當(dāng)利用少量的目標(biāo)域標(biāo)簽信息提升領(lǐng)域自適應(yīng)效果,主動學(xué)習(xí)正是用于解決標(biāo)注樣本短缺條件下如何訓(xùn)練機(jī)器學(xué)習(xí)模型。文獻(xiàn)[12,13]的ALDA(active learning for domain adaptation)算法證明了這種結(jié)合的可行性,ALDA包括3部分,源域分類器Wsrc、目標(biāo)域分類器Wds和域判別器uφ。ALDA使用uφ從未標(biāo)記的目標(biāo)域樣本中選擇樣本然后決定是使用Wsrc獲取標(biāo)簽還是人工標(biāo)注,uφ不斷使用標(biāo)注后的樣本訓(xùn)練。
與ALDA不同,本文提出的方法使用了深層神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)中的域判別器除了在訓(xùn)練中幫助減小源域和目標(biāo)域在特征空間上的差距外,還參與了樣本選擇。第2節(jié)將具體介紹本文算法。
圖1 主動學(xué)習(xí)基本流程
本文以圖像分類問題為背景,問題中的輸入記為x∈X,x對應(yīng)的標(biāo)簽記為y∈Y,Y是一個有限的集合,Y={1,2,…,L}。假設(shè)在X?Y上存在2個分布PS(x,y)和PT(x,y),代表源域數(shù)據(jù)分布和目標(biāo)域數(shù)據(jù)分布。上述兩者分布都是復(fù)雜且未知的,并存在一定差距。
根據(jù)源域和目標(biāo)域分布的邊緣分布PS(x)和PT(x)可以獲得大量的訓(xùn)練樣本集合{x1,x2,…,xN}。本文使用一個0或1的標(biāo)量di代表第i個樣本xi來自哪一個域,di等于0代表xi~PS(x),反之di等于1代表xi~PT(x)。為了后續(xù)描述方便,源域樣本集合記為Ls,目標(biāo)域樣本集合記為UT。
在初始訓(xùn)練時,源域樣本的標(biāo)簽是已知的,而目標(biāo)域樣本的標(biāo)簽是未知的。之后的訓(xùn)練中,需要從目標(biāo)域中挑選樣本進(jìn)行人工標(biāo)注加入源域數(shù)據(jù)并重新訓(xùn)練模型。
本文最終的目標(biāo)是給定來自目標(biāo)域分布的輸入x時,能夠預(yù)測它的標(biāo)簽。
現(xiàn)定義一個深層神經(jīng)網(wǎng)絡(luò),其作用是對于每一個樣本x預(yù)測其分類標(biāo)簽y∈Y和領(lǐng)域標(biāo)簽d∈{0,1}。為了完成上述映射,網(wǎng)絡(luò)結(jié)構(gòu)分成3部分,如圖2所示。先讓輸入x通過一個特征提取網(wǎng)絡(luò)Gf,其把x映射成一個D維特征向量f∈RD。Gf由一系列卷積層和激活函數(shù)層組成,其參數(shù)記為θf,此時有f=Gf(x;θf)。然后,使用另一個卷積神經(jīng)網(wǎng)絡(luò)Gy作為標(biāo)簽預(yù)測網(wǎng)絡(luò)把f映射成分類標(biāo)簽y,Gy參數(shù)記為θy。同時,使用另一個卷積神經(jīng)網(wǎng)絡(luò)Gd作為域預(yù)測網(wǎng)絡(luò)把f映射成領(lǐng)域標(biāo)簽d,Gd參數(shù)記為θd。
在訓(xùn)練時,首先希望減小源域數(shù)據(jù)的標(biāo)簽預(yù)測損失,并基于此優(yōu)化Gf和Gy的參數(shù)。這使得不同類別的輸入訓(xùn)練得到的特征f具有區(qū)分性,并保證Gf和Gy的組合對于源域數(shù)據(jù)能成功地預(yù)測其標(biāo)簽。
同時,特征向量f應(yīng)具有領(lǐng)域不變性,即源域數(shù)據(jù)和目標(biāo)域數(shù)據(jù)都通過Gf映射到同一個特征空間,映射后的特征分布PS(f)和PT(f)盡量一致,從而讓標(biāo)簽分類網(wǎng)絡(luò)Gf適用于目標(biāo)域數(shù)據(jù)的特征圖,保證總體上源域和目標(biāo)域數(shù)據(jù)標(biāo)簽預(yù)測準(zhǔn)確率一致。
受到對抗神經(jīng)網(wǎng)絡(luò)[14](generative adversarial network,GAN)的啟發(fā),本文使用額外的網(wǎng)絡(luò)Gd來衡量PS(f)和PT(f)一致性。在訓(xùn)練中,Gf盡量輸出讓Gd分辨不出來自源域還是目標(biāo)域的特征向量,Gd盡量分辨出數(shù)據(jù)來自于哪一個域,最終,Gf與Gd博弈的結(jié)果是源域和目標(biāo)域的數(shù)據(jù)在特征空間上分布一致,繼而可以用Gf來分類目標(biāo)域的數(shù)據(jù)。
為了實現(xiàn)上述訓(xùn)練目標(biāo),本文設(shè)計損失函數(shù)如下,其中λ是權(quán)重系數(shù),Lc是交叉熵。
E(θf,θy,θd)=λEx~PS(x)[Lc(Gy(Gf(x),y))]
+Ex~PS(x)[logGd(Gf(x))]
+Ex~PT(x)[log(1-Gd(Gf(x)))]
(1)
與GAN網(wǎng)絡(luò)的對抗訓(xùn)練方式一致,利用上述損失函數(shù)在訓(xùn)練中更新θf和θy時需固定θd,反之在更新θd時需固定θf和θy,即,
(2)
圖2 網(wǎng)絡(luò)結(jié)構(gòu)圖
通過訓(xùn)練上述網(wǎng)絡(luò)得到的模型M已經(jīng)具備對Ut樣本分類的能力,但訓(xùn)練過程中僅利用了源域標(biāo)簽,最終預(yù)測精度具有局限性,在實驗分析部分可看到具體結(jié)果。因此本文選擇從Ut中選擇少量重要的樣本標(biāo)注后迭代訓(xùn)練M,以提升M分類精度,本小節(jié)介紹如何計算Ut中樣本重要性分?jǐn)?shù)用以后續(xù)選擇。
文獻(xiàn)[15]提出了一種帶權(quán)重的領(lǐng)域自適應(yīng)損失函數(shù),如式(3)所示:
(3)
本文將上述2個特征用于目標(biāo)域樣本重要性分?jǐn)?shù)計算,但直接應(yīng)用存在困難,首先因為w(x)計算時無法直接估計源域和目標(biāo)域2個高維分布,其次由于目標(biāo)域樣本沒有標(biāo)記導(dǎo)致無法計算其經(jīng)驗風(fēng)險。
(4)
針對第2個問題,本文使用目標(biāo)域樣本的熵近似交叉熵[16]。最終定義樣本的重要性分?jǐn)?shù)s(x)如下,其中H(·)代表熵值。s(x)越大表示該樣本越值得標(biāo)注。
(5)
輸入已標(biāo)記源域數(shù)據(jù)LS,未標(biāo)記目標(biāo)域數(shù)據(jù)Ut,已標(biāo)記目標(biāo)域數(shù)據(jù)LT,預(yù)設(shè)輪數(shù)b。
模型M={Gy,Gf,Gd},具體結(jié)構(gòu)及目標(biāo)函數(shù)見2.2節(jié)。
步驟1利用LS和UT訓(xùn)練M,訓(xùn)練采用目前常見的小批量訓(xùn)練梯度下降(mini-batch gradient descen)法[17],每個批次從LS和UT中隨機(jī)采樣。
步驟2根據(jù)2.3節(jié)的方法,使用訓(xùn)練完成的M計算UT所有樣本的重要性分?jǐn)?shù)s(x),降序排序選取前b個進(jìn)行人工標(biāo)注,其集合記為LT,此時UT=UT/LT。
步驟3使用LT、LS、UT重新訓(xùn)練M。與初始階段只有一個源域不同,現(xiàn)在有LS和LT2個源域。此類多源域領(lǐng)域自適應(yīng)問題的泛化邊界[18]如下:
(6)
εa(h)=atεT(h)+asεS(h)
(7)
因此,使用Ls、Lt、Ut重新訓(xùn)練模型M時可以把LS、LT看成整體,同樣采用步驟1的小批量訓(xùn)練梯度下降法,每個批次從Ls、Lt、Ut隨機(jī)采樣。
步驟4重復(fù)步驟2和3,直到M的總訓(xùn)練次數(shù)到達(dá)預(yù)設(shè)值b。
本文選擇MNIST數(shù)據(jù)集,SVHN數(shù)據(jù)集和USPS數(shù)據(jù)集作為本文的實驗對象。MNIST數(shù)據(jù)集[19]是一種廣泛使用的灰度手寫數(shù)字?jǐn)?shù)據(jù)集,包含60 000個訓(xùn)練圖像和10 000個測試圖像。USPS數(shù)據(jù)集[20]是美國郵政服務(wù)手寫數(shù)字識別庫,庫中共有9 298個手寫數(shù)字圖像,均為灰度圖像,灰度值已被歸一化。街景門牌號碼(SVHN)[21]則是包含來自Google Street View的各種房屋號碼,圖像具有一定的實際背景。 利用上述3個數(shù)據(jù)可以構(gòu)建以下3項任務(wù): SVHN→MNIST、MNIST→USPS和USPS→MNIST。在每項任務(wù)中,左邊的數(shù)據(jù)集作為源域,右邊的數(shù)據(jù)集作為目標(biāo)域,其中所有圖像都重新調(diào)整為32×32的像素分辨率。
本文實驗運(yùn)行在搭載GTX1080顯卡的機(jī)器上,使用Python語言編寫程序,其中圖像預(yù)處理的部分使用了OpenCV3.4庫,檢測算法使用Keras2.0搭建模型,TensorFlow1.4作為后端,使用Adam優(yōu)化算法訓(xùn)練網(wǎng)絡(luò)參數(shù),初始學(xué)習(xí)率lr=2e-3,動量參數(shù)β1=0.5,β2=0.999。
在主動學(xué)習(xí)的每一輪訓(xùn)練中訓(xùn)練20個周期,其中每個批次的大小為128,λ=0.1,樣本選擇的數(shù)量為20,共進(jìn)行20輪。
3.3.1 交叉實驗
本文算法的目的是結(jié)合主動學(xué)習(xí)讓源域上學(xué)習(xí)得到的分類器更好適配到目標(biāo)域,主要依賴解決以下2個問題:(1)選擇哪些目標(biāo)域樣本進(jìn)行標(biāo)注?(2)樣本標(biāo)注后如何訓(xùn)練模型? 針對上面2個問題,本文選擇了一些其他方法展開交叉實驗,實驗中樣本的選擇策略如下:
(1)依據(jù)重要性分?jǐn)?shù):如2.3節(jié)所述。
(2)K-Means聚類[22]:對特征向量Gf(x), ?x∈Ut進(jìn)行聚類,共選擇b個聚類中心,對每個類選擇離其中心最近的類。
(3)BVSB法[23]:對于Ut的每個樣本,Gy會輸出其對應(yīng)每個分類標(biāo)簽的置信度,BVSB值是最大的置信度和第2大置信度之間的差值,代表該樣本的不確定性,BVSB值越大代表分類器對該樣本越不確定其屬于哪個類別。
(4)隨機(jī)選擇:從Ut中隨機(jī)選擇待標(biāo)注樣本。
對于標(biāo)注后的訓(xùn)練有如下選擇:
1)對抗訓(xùn)練:如2.4節(jié)所述,使用{Ls,Lt,Ut}重新訓(xùn)練。
2)微調(diào)[24]:固定特征提取網(wǎng)絡(luò)Gf、域判別網(wǎng)絡(luò)Gd,僅使用Lt更新標(biāo)簽分類器Gy的參數(shù)。
圖3是不同采樣策略的實驗對比結(jié)果,訓(xùn)練方法都使用{Ls,Lt,Ut}重新訓(xùn)練,其中橫坐標(biāo)是標(biāo)注樣本的總數(shù),縱坐標(biāo)是3個任務(wù)的平均準(zhǔn)確率。從圖4中看到本文方法的準(zhǔn)確率基本在每一輪都高于其他方法,此外在標(biāo)注樣本增多時能保證準(zhǔn)確率持續(xù)上升,而其他方法均不能保證。這是由于其他方法可能使某一類別的分類準(zhǔn)確率很高,而其他類別較低,從而整體平均準(zhǔn)確率反而下降。
圖4是不同訓(xùn)練方法實驗對比結(jié)果,樣本選擇策略都依據(jù)2.3節(jié)。從圖中可以看到標(biāo)注數(shù)量小于300時,對抗訓(xùn)練效果明顯優(yōu)于微調(diào)。而在標(biāo)注數(shù)量超過300后,兩者準(zhǔn)確率提升都不明顯,微調(diào)方法的準(zhǔn)確率略高于對抗訓(xùn)練。整體上,采用對抗訓(xùn)練能比微調(diào)獲得更好的效果。
圖3 不同采樣策略的對比結(jié)果
圖4 不同訓(xùn)練方法對比結(jié)果
3.3.2 同類方法比較
除了上述實驗外,本文與目前主流方法ALDA[12,13]進(jìn)行了對比。圖5是準(zhǔn)確率上的對比結(jié)果,可以看到本文算法整體效果都優(yōu)于ALDA,當(dāng)標(biāo)注樣本數(shù)達(dá)到340時,本文算法平均準(zhǔn)確率比ALDA高出7.8%。
為了進(jìn)一步對比,本文還統(tǒng)計了不同方法達(dá)到指定平均準(zhǔn)確率所需的人工成本和模型收斂時間,分別如圖7和圖8所示。結(jié)合主動學(xué)習(xí)的領(lǐng)域自適應(yīng)方法的人工成本主要在于目標(biāo)域樣本的標(biāo)注,從表1可以看到,本文方法達(dá)到指定平均準(zhǔn)確率所需要的人工成本比ALDA分別減少了33.33%、54.54%、35.48%、26.53%。
圖5 與ALDA對比結(jié)果
表1 不同方法達(dá)到指定平均準(zhǔn)確率所需的標(biāo)注數(shù)量
另外,表2為不同方法不同標(biāo)注數(shù)量所需的收斂時間,其中標(biāo)注數(shù)量0對應(yīng)2.4節(jié)中步驟1所用的時間,由于本文方法參數(shù)數(shù)量大于ALDA,因此在初始訓(xùn)練時所花的時間大于ALDA方法。
其余標(biāo)注數(shù)量為100、200、300和400對應(yīng)2.4節(jié)中步驟4的時間,這部分中本文方法與ALDA所用時間相差不大,這是因為此時訓(xùn)練時的初始參數(shù)是上一次收斂后的參數(shù),因此都能較快收斂。同時,隨著標(biāo)注數(shù)量的增加,收斂時間逐漸減少,這是因為目標(biāo)域標(biāo)注數(shù)量增加時,準(zhǔn)確率提升的程度逐漸減小,從而模型參數(shù)變化程度減小,導(dǎo)致收斂越來越快??傮w上,本文方法能更好地讓源域上學(xué)習(xí)得到的分類器適用于目標(biāo)域。
表2 不同方法不同標(biāo)注數(shù)量所需的收斂時間(s)
本文提出了一種基于主動學(xué)習(xí)的半監(jiān)督領(lǐng)域自適應(yīng)方法,它可以解決機(jī)器學(xué)習(xí)應(yīng)用中由于訓(xùn)練場景和測試場景不一致帶來的性能下降問題。該方法利用深層神經(jīng)網(wǎng)絡(luò)對齊源域和目標(biāo)域的數(shù)據(jù)表示學(xué)習(xí)域不變特征,讓源域上學(xué)習(xí)得到的分類器在目標(biāo)域上基本可用。同時,結(jié)合主動學(xué)習(xí)方法,不斷選取最重要的目標(biāo)域數(shù)據(jù)標(biāo)記,然后提升已有模型的精度。實驗結(jié)果表明,本文提出的方法實現(xiàn)了具有較高準(zhǔn)確度的跨域分類性,通過標(biāo)記少量的目標(biāo)域樣本就可以獲得較好的領(lǐng)域自適應(yīng)效果。后續(xù)的研究主要會對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行進(jìn)一步的優(yōu)化處理,改善整個網(wǎng)絡(luò)結(jié)構(gòu),使其整體性能朝著更快更準(zhǔn)確方向發(fā)展。