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