李 勇,高 燦+,劉子榮,羅金濤
1.深圳大學 計算機與軟件學院,廣東 深圳518060
2.廣東省智能信息處理重點實驗室,廣東 深圳518060
大型神經(jīng)網(wǎng)絡的成功依賴大量有標記的數(shù)據(jù),當缺少標記數(shù)據(jù)時模型往往會過擬合。但在實際情況下,建立具有良好標記的大型數(shù)據(jù)集需要大量的人力和物力,當數(shù)據(jù)集的標注需要專業(yè)知識時(例如,醫(yī)學影像數(shù)據(jù)集),所需成本會極大增加[1]。與有標記數(shù)據(jù)不同,無標記數(shù)據(jù)可以更容易被獲取。深度半監(jiān)督學習方法可以利用無標記數(shù)據(jù)來提升監(jiān)督學習方法的性能,從而減少大型神經(jīng)網(wǎng)絡對有標記數(shù)據(jù)的需求。
許多早期的深度半監(jiān)督學習方法的流程主要分為兩個階段:第一個階段,使用大量無標記數(shù)據(jù)進行無監(jiān)督訓練,初始化神經(jīng)網(wǎng)絡每一層的權重;第二個階段,以監(jiān)督方式使用有標記數(shù)據(jù)對網(wǎng)絡微調(finetuning)[2]。在一些復雜的任務中,無監(jiān)督學習不能明確對任務有用的知識,因此會學習到一些與任務無關的知識噪聲導致半監(jiān)督學習方法性能下降[3]。為了解決這個問題,很多新的深度半監(jiān)督學習方法[4-6]被提出。這些半監(jiān)督學習方法的損失函數(shù)由無監(jiān)督損失和有監(jiān)督損失兩部分組成,并在訓練過程中同時利用無標記和有標記數(shù)據(jù)訓練網(wǎng)絡,取得了更好的效果。
目前,很多主流的深度半監(jiān)督學習方法可以分為兩類:熵最小化和一致性正則化[5]。熵最小化又叫自信預測,通過促進模型在無標記數(shù)據(jù)上產(chǎn)生低熵預測(自信預測)使模型輸出自信的預測結果,增大模型對某個類別的預測概率,提升模型預測的準確度。最小化無標記數(shù)據(jù)預測概率分布的熵值,可以有效減少類別概率分布的重疊,促進類間的低密度分離。一致性正則化促使模型在輸入受到干擾時仍產(chǎn)生相同的輸出分布來增強模型的泛化能力,從而有效擴大模型對樣本分布的支持來提升模型的性能。但上述兩種類型的深度半監(jiān)督學習方法都存在一定局限性。大部分熵最小化半監(jiān)督學習方法并不能靈活調節(jié)預測概率的分布趨勢,很容易促進錯誤預測產(chǎn)生。在訓練的前期,模型對大部分數(shù)據(jù)的預測會發(fā)生變化,促進自信預測的強度過大可能會對模型的訓練產(chǎn)生較強的負面影響,若促進強度過小,會導致自信促進的幅度不足,使模型不能有效輸出自信預測的結果。很多一致性正則化損失中所有無標記數(shù)據(jù)損失的權重是相同的,而模型對無標記數(shù)據(jù)預測的正確度是不同的,因此對所有無標記數(shù)據(jù)的一致性損失共用一個不變的權值是不合理的[7]。為了解決上述問題,本文提出了一種用于深度半監(jiān)督學習的無監(jiān)督損失函數(shù),稱為動態(tài)一致的自信損失(dynamic consistency and confidence loss,DCCL)。該損失函數(shù)由動態(tài)加權一致性正則化(dynamic weighted consistency regularization,DWCR)和自信促進損失(self-confidence promotion loss,SCPL)組成,其中DWCR 通過對數(shù)據(jù)的一致性損失進行動態(tài)加權,可以減少錯誤預測及數(shù)據(jù)差異帶來的負面影響。SCPL 能靈活調節(jié)促進模型輸出自信預測的強度,實現(xiàn)類間的低密度分離,提升模型的分類性能。本文將DCCL與監(jiān)督損失結合,提出了名為動態(tài)一致自信(dynamic consistency and confidence,DCC)的深度半監(jiān)督學習方法。本文的主要貢獻有以下三點:
(1)針對樣本間的差異以及錯誤預測的負面影響,提出了一種簡單有效的動態(tài)加權一致性損失DWCR,實現(xiàn)了對無標記數(shù)據(jù)一致性正則化損失的動態(tài)加權。
(2)提出了一種新的促進模型產(chǎn)生自信預測的無監(jiān)督損失SCPL,并能靈活調節(jié)促進強度,實現(xiàn)靈活可控的熵最小化。
(3)提出了一種新的半監(jiān)督學習方法DCC,并在不同數(shù)據(jù)集上進行了大量的實驗,實驗表明了該方法的有效性。
目前很多先進的半監(jiān)督學習方法都采用了熵最小化與一致性正則化作為無標記數(shù)據(jù)的損失函數(shù)。本章將回顧一些與DCC有關的深度半監(jiān)督學習方法。
熵最小化通常使用信息熵或KL散度實現(xiàn),如式(1)和式(2)所示:
一致性正則化半監(jiān)督學習方法是通過減少擾動前后數(shù)據(jù)預測的差異來提升模型的泛化性能。很多一致性正則化半監(jiān)督學習方法的不同之處體現(xiàn)在對輸入數(shù)據(jù)的擾動方式(增強方式)和減少預測差異的方法。Laine 等[9]提出了Π-model,該方法對輸入的圖像進行兩次隨機增強,并最小化預測的平方差異來提升模型的泛化性能,由于同一張圖像會通過網(wǎng)絡兩次,文獻[9]同時給出了Π-model 的另一版本Temporal Ensembling,通過記錄模型對無標記數(shù)據(jù)歷史預測的指數(shù)加權移動平均,作為模型對圖像不同增強的預測,加快了訓練進度。文獻[10]提出的MeanTeacher模型采用了雙網(wǎng)絡模型,即教師網(wǎng)絡與學生網(wǎng)絡,教師模型的參數(shù)來自學生模型參數(shù)的指數(shù)加權移動平均,在訓練過程中分別向兩個網(wǎng)絡中注入不同的噪聲,并將預測平方差異最小化實現(xiàn)一致性正則化。Rasmus 等[4]也采用了雙網(wǎng)絡模型進行半監(jiān)督學習,但與MeanTeacher不同的是其擾動方式是向其中一個網(wǎng)絡中添加高斯噪聲,并在訓練過程中最小化兩個網(wǎng)絡每一層輸出的平方差異來增強泛化性能。Sohn 等[1]提出的FixMatch 對無標記圖像采用了兩種強度不同的圖像增強方式,在訓練過程中篩選具有可靠預測的弱增強圖像,并將預測概率與對應強增強圖像預測計算交叉熵,作為無標記數(shù)據(jù)的損失函數(shù)。雖然很多一致性正則化半監(jiān)督學習方法有效增強了模型的泛化性能,但它們并沒考慮不同數(shù)據(jù)的差異和錯誤預測的負面影響。
本章主要介紹提出的動態(tài)一致自信(DCC)的深度半監(jiān)督學習方法,包括模型的整體結構、無監(jiān)督損失以及總體半監(jiān)督損失函數(shù)和算法流程描述。
大多數(shù)效果較好的神經(jīng)網(wǎng)絡會在訓練過程中最小化模型在訓練數(shù)據(jù)上的平均誤差,稱為經(jīng)驗風險最小化(empirical risk minimization,ERM)[11]。但ERM容易使大型神經(jīng)網(wǎng)絡在訓練數(shù)據(jù)不足時過擬合,當使用在訓練數(shù)據(jù)分布之外的例子對模型進行評估時,模型會給出錯誤的預測結果。數(shù)據(jù)增強是解決上述問題的一個有效的方法,使用增強后的數(shù)據(jù)訓練網(wǎng)絡可以實現(xiàn)模型對訓練樣本分布支持的擴大[11]。本文提出的半監(jiān)督學習模型采用了兩種強度不同的圖像增強方式:弱增強和強增強。弱增強是只對訓練圖像采用翻轉、裁剪操作,并不會造成原始圖像的失真。強增強采用Cutout[12]和RandAugment[13]使增強后的圖像產(chǎn)生嚴重的扭曲,從而造成一定程度的失真[1]。考慮到有標記和無標記圖像的差異性,本文對有標記數(shù)據(jù)只采用弱增強的方式實現(xiàn)圖像增強,將增強后的圖像送入深度神經(jīng)網(wǎng)絡得到預測結果并計算有監(jiān)督損失Ls。而對無標記數(shù)據(jù)同時進行強增強和弱增強處理后送入深度神經(jīng)網(wǎng)絡并得到對應的預測結果,根據(jù)弱增強圖像和強增強圖像預測結果構建一致性正則化損失,并單獨使用弱增強圖像預測結果構建促進自信預測的損失函數(shù)。由于模型對增強后的無標記數(shù)據(jù)的預測正確性未知,本文提出了一種度量預測正確度(自信度)的方式,并根據(jù)弱增強無標記圖像預測的自信度,對數(shù)據(jù)的一致性損失進行加權得到動態(tài)加權一致性正則化函數(shù)Lud,減少了錯誤預測的負面影響。Luc表示自信促進損失函數(shù),鼓勵模型產(chǎn)生自信的預測。最終的損失函數(shù)Loss由Ls、Lud以及Luc三部分組成,整體的模型架構如圖1所示。
圖1 DCC模型總體結構Fig.1 Overall structure of DCC model
本文中有標記數(shù)據(jù)的標記采用了one-hot編碼方式,并使用交叉熵損失函數(shù)作為模型的有監(jiān)督損失函數(shù),其公式描述可表示為:
其中,B為訓練batch 中有標記數(shù)據(jù)的數(shù)量,pi是模型預測的類別概率。
一致性損失可在輸入數(shù)據(jù)受到干擾時使模型仍產(chǎn)生近似相同的概率分布,以此增強模型的泛化能力,常見的一致性損失函數(shù)可表示為:
其中,pwi是由argmax(fθ(w(ui)))得到的對弱增強無標記數(shù)據(jù)ui預測的one-hot 編碼,表示弱增強ui的第k類編碼元素,C為樣本的類別數(shù)目。psi=fθ(s(ui))是模型對強增強ui預測概率分布,表示強增強ui屬于第k類的概率。fθ(·)為參數(shù)模型,w(ui)表示對ui弱增強,s(ui)表示對ui進行強增強。μ是一個常數(shù),用于調節(jié)一個batch 中無標記數(shù)據(jù)所占有的比例。通過最小化式(4)可以減小不同增強方式的無標記數(shù)據(jù)預測的差別,從而實現(xiàn)一致性正則化。
由于模型對所有無標記數(shù)據(jù)預測的準確度是不同的,例如模型很容易正確預測某些數(shù)據(jù),但錯誤預測另一些數(shù)據(jù),如果直接采用具有錯誤預測的數(shù)據(jù)進行一致性正則化會對模型的訓練產(chǎn)生負面的影響。通常模型預測的最大類別概率越小,預測的類別概率信息熵越大,不同類別概率的差異就越小,因此預測的準確度就越低?;谏鲜龇治?,本文提出了一種度量模型預測自信度(confidence level,CL)的方法,其公式描述表示為:
其中,Emax=lbC表示預測分布的最大信息熵,其中C為類別數(shù)目。E表示預測概率分布的信息熵。式(5)對應的圖像如圖2所示。當模型對某一類別的預測概率非常高時,預測類別概率的信息熵E接近0,此時CL接近1,反之若信息熵E較大,CL接近0。
圖2 CL函數(shù)圖像Fig.2 CL function image
本文將預測自信度CL與式(4)進行結合得到了動態(tài)加權一致性正則化(dynamic weighted consistency regularization,DWCR)損失函數(shù),其公式描述為:
其中,CLi是無標記數(shù)據(jù)ui的CL值。式(6)中每一個無標記樣本都有一個單獨的CL值,并根據(jù)模型預測的類別概率分布變化而變化。當數(shù)據(jù)的預測概率不具有區(qū)分度時,CL具有較小的值,這減少了具有錯誤預測數(shù)據(jù)的一致性損失所占的比例,使錯誤預測產(chǎn)生的負面影響降低。
通常模型輸出低熵預測能夠促使決策邊界通過數(shù)據(jù)的低密度區(qū)域,實現(xiàn)類間的低密度分離[14]。而實現(xiàn)這一目的需要在損失函數(shù)中加入一項最小化類別概率分布信息熵的損失函數(shù),如式(7)所示:
其中,m是一個超參數(shù)用于調節(jié)促進模型產(chǎn)生自信預測的力度。對于一個二分類問題,考慮第i個樣本的信息熵損失和SCPL損失分別如下:
在半監(jiān)督學習方法的訓練過程中,促進模型產(chǎn)生自信預測可以使決策邊界通過數(shù)據(jù)的低密度區(qū)域。但是,當促進自信預測的強度過大,則會加速錯誤預測的產(chǎn)生,導致決策邊界處于錯誤的位置。圖3展示了式(9)和式(10)的函數(shù)圖像,通過調節(jié)式(10)中的指數(shù)m,SCPL 可以具有不同的數(shù)據(jù)分布,從而更靈活地調節(jié)促進模型產(chǎn)生自信預測的力度。最終DCC的損失函數(shù)如式(11)所示:
圖3 信息熵最小化損失和SCPLFig.3 Information entropy minimization loss and SCPL
其中,α和β是兩個超參數(shù),用于平衡兩個無監(jiān)督損失所占的比例。當α的值過大時,具有錯誤預測數(shù)據(jù)的一致性正則化損失的負面影響將會增強,而過小的α會降低一致性正則化的性能。過大的β值會使SCPL的自信促進力度過大而產(chǎn)生錯誤預測,當β的值過小時會導致SCPL的自信促進作用較小,不能有效實現(xiàn)低熵預測。算法1描述了提出的DCC算法流程。
算法1動態(tài)一致自信的深度半監(jiān)督學習
為了驗證提出的動態(tài)一致自信(DCC)的深度半監(jiān)督學習方法的有效性,在CIFAR10、CIFAR100 以及SVHN三個數(shù)據(jù)集上進行了實驗,并與Π-model[9]、PseudoLabel[2]、Mixup[11]、VAT[8]、MeanTeacher[10]、Mix-Match[14]、Temporal Ensembling[9]、EnAET[5]深度半監(jiān)督學習方法進行對比。為了保證實驗的公平性,實驗中所有半監(jiān)督方法都使用“Wide ResNet-28-2”[15]作為骨干網(wǎng)絡,該網(wǎng)絡有1.5×106個參數(shù)。實驗設置batch 中有標記數(shù)據(jù)的數(shù)量B=128,超參數(shù)μ=7,并對模型使用帶有動量的標準SGD[16]優(yōu)化器,將動量設置為0.9。另外,本文使用余弦學習速率衰減,其中η=0.03 是初始的學習速率,t是當前的batch訓練步數(shù),T=400×29是總體batch訓練步數(shù)。本文方法采用Pytorch1.6深度學習框架實現(xiàn),利用GeForceRTX2080Ti 11 GB顯卡進行運算加速,并使用NvidiaApex混合精度工具加速訓練。
CIFAR10 數(shù)據(jù)集由訓練集和測試集組成,共包含10 個類別的彩色圖像,其中訓練集共有50 000 張圖像,測試集由10 000張圖像組成[9]。
SVHN 是Google 街景門牌號碼數(shù)據(jù)集,數(shù)據(jù)集中的每張圖像包含一組0~9的數(shù)字,其中訓練集包含73 257個數(shù)字,測試集由26 032個數(shù)字組成[10]。
CIFAR100 數(shù)據(jù)集共有100 個類別的圖像,每個類別有600 張圖像,其中500 張圖像組成訓練集,剩下的100張圖像作為測試集[15]。
為了更好地驗證DCC 的性能,本文從數(shù)據(jù)集中隨機挑選一定數(shù)目的圖像和對應的標記組成有標記數(shù)據(jù),其中每種類別的有標記數(shù)據(jù)數(shù)目相同,剩下的圖像作為無標記數(shù)據(jù),并將該劃分過程重復3次。在得到的3個數(shù)據(jù)集上進行3次獨立實驗,報告平均分類錯誤率和標準差,并將最低的錯誤率加粗顯示。對每個數(shù)據(jù)集,實驗設置三種不同數(shù)目的有標記數(shù)據(jù)。
CIFAR10 數(shù)據(jù)集上劃分了250、1 000 和4 000 三種數(shù)目的有標記數(shù)據(jù),對于所有不同劃分下的實驗統(tǒng)一采用參數(shù)設置α=2.0,β=0.1,m=9。模型在CIFAR10 上訓練共占用顯存為5 101 MB,在上述三種不同數(shù)目有標記數(shù)據(jù)的劃分上的訓練耗時分別為37.95 h、24.67 h、22.62 h。在CIFAR10上的實驗結果如表1 所示,隨著有標記數(shù)據(jù)增加,所有方法的錯誤率都有所下降。在所有不同的劃分中DCC方法的錯誤率都是最低的,比次優(yōu)的方法EnAET 的分類性能分別提升了32.07%、32.52%、22.43%(計算方式為(errorA-errorB)/errorA)。EnAET 中雖然也使用了一致性正則化損失,但所有數(shù)據(jù)損失的權重相同,并沒有考慮模型對不同數(shù)據(jù)預測的準確性差異,而具有錯誤預測數(shù)據(jù)的一致性損失會對模型的訓練產(chǎn)生負面影響,降低模型最終的分類性能。
表1 不同半監(jiān)督方法在CIFAR10上的錯誤率Table 1 Error rates of different semi-supervised methods on CIFAR10 單位:%
SVHN 數(shù)據(jù)集上劃分了250、1 000 和4 000 三種數(shù)目的有標記數(shù)據(jù),并設置α=2.0,β=0.5,m=9。模型在SVHN 上訓練共占用顯存為5 101 MB,在上述三種不同數(shù)目有標記數(shù)據(jù)的劃分上的訓練耗時分別為39.35 h、25.13 h、23.13 h。實驗結果如表2所示,在不同數(shù)目的有標記數(shù)據(jù)下,DCC 的錯誤率仍是最低的,但是隨著標記數(shù)據(jù)的增加,DCC與其他方法錯誤率之間的差距在縮小。在4 000 個有標記數(shù)據(jù)的情況下,DCC 的分類性能只比次優(yōu)方法提升了2.60%,而在250 和1 000 個有標記數(shù)據(jù)的情況下,比次優(yōu)方法的分類性能分別提升了9.35%和6.85%。可能的原因是DCC方法的動態(tài)加權一致性正則化和自信促進損失在標記數(shù)據(jù)較少的情況下從無標記數(shù)據(jù)中學習相關類別特征知識的能力比其他方法更強,隨著有標記數(shù)據(jù)的增加,這種優(yōu)勢會減少。
表2 不同半監(jiān)督方法在SVHN上的錯誤率Table 2 Error rates of different semi-supervised methods on SVHN 單位:%
CIFAR100數(shù)據(jù)集上劃分了1 000、5 000和10 000三種數(shù)目的標記數(shù)據(jù),并設置α=0.5,β=0.1,m=9。模型在CIFAR100上訓練共占用顯存為5 103 MB,在上述三種不同數(shù)目有標記數(shù)據(jù)的劃分上的訓練耗時分別為24.30 h、23.73 h、23.32 h。實驗結果如表3 所示。雖然本文缺少某些對比方法在1 000和5 000個有標記數(shù)據(jù)上的錯誤率信息,但是DCC 的性能仍具有優(yōu)勢。DCC 在只有1 000 個有標記數(shù)據(jù)存在的情況下錯誤率為48.66%,比次優(yōu)方法的分類性能提升了17.15%。隨著有標記數(shù)據(jù)的增加,DCC 的錯誤率進一步降低,但是在有標記數(shù)據(jù)較多的情況下優(yōu)勢并不大,該結果與在CIFAR10、SVHN 數(shù)據(jù)集上的一致。
表3 不同半監(jiān)督方法在CIFAR100上的錯誤率Table 3 Error rates of different semi-supervised methods on CIFAR100 單位:%
為了進一步驗證提出DCC 方法的有效性,本文在CIFAR10、SVHN、CIFAR100 上分別用250、250、1 000 個有標記數(shù)據(jù)進行消融實驗,并設置原始一致性正則化損失的整體權重為1,實驗結果如圖4 所示。由于原始基于一致性正則化損失的半監(jiān)督學習方法(Original)將所有無標記數(shù)據(jù)同等對待,錯誤的預測會對模型的訓練產(chǎn)生較大的負面影響,從而導致分類錯誤率較高。將動態(tài)一致性加權引入到原始的一致性正則化半監(jiān)督學習方法(Original+DWCR)中去可以減少錯誤預測的一致性損失對訓練過程的負面影響,使模型的分類性能得到提高。而自信促進損失則可以鼓勵模型產(chǎn)生自信度更高的預測,促進類之間的低密度分離,因此引入自信促進損失的動態(tài)加權一致性正則化半監(jiān)督學習方法(Original+DWCR+SCPL)能進一步提升模型的性能。
圖4 消融實驗結果Fig.4 Ablation experiment results
本文提出的DCC深度半監(jiān)督學習方法的損失函數(shù)主要涉及三個超參數(shù)α、β和m。為了研究模型對超參數(shù)變化的敏感性,本文在CIFAR10、SVHN 和CIFAR100 數(shù)據(jù)集上分別取250、1 000 和1 000 個樣本作為有標記數(shù)據(jù),其余樣本作為無標記數(shù)據(jù)并進行了實驗,結果如圖5所示。
本文在具有不同數(shù)目的有標記數(shù)據(jù)的數(shù)據(jù)集上研究了模型性能對α的敏感性,α的取值范圍為{0.1,0.5,1.0,2.0,3.0},結果如圖5(a)所示。當α的值在[1.0,2.0]范圍內,DCC在SVHN和CIFAR10上具有較好的性能。而在CIFAR100 上,當α的值在[0.5,1.0]范圍內,DCC具有較好的性能。過小的α會導致所有無標記數(shù)據(jù)一致性損失的權值過小,不能有效增加模型的泛化能力,而過大的α會使具有錯誤預測數(shù)據(jù)的一致性損失權值較大,從而對模型的訓練產(chǎn)生負面影響,降低模型的分類性能。
圖5(b)展示了在不同數(shù)據(jù)集上模型性能對β的敏感性,其中β的取值范圍為{0.05,0.10,0.50,1.00}。當β的值在[0.10,0.50]的范圍內,DCC 在SVHN 和CIFAR10上具有較好的性能。而在CIFAR100上,當β的值在[0.05,0.10]范圍內,DCC 具有較好的性能。過大的β會使SCPL的促進作用過強,從而導致錯誤預測的發(fā)生,對訓練產(chǎn)生負面影響,最終降低模型的分類性能。
圖5(c)展示了模型對m變化的敏感性。當m的取值范圍在[8,10]內,模型在所選數(shù)據(jù)集上均具有較好的性能。過小的m會使SCPL函數(shù)具有較大梯度,不利于模型的訓練,而過大的m會使SCPL 的值過小,導致促進產(chǎn)生自信預測的效果較弱。
圖5 DCC對參數(shù)的敏感性Fig.5 Sensitivity of DCC to parameters
本文提出了動態(tài)一致自信的深度半監(jiān)督學習方法,其無監(jiān)督損失函數(shù)由動態(tài)加權一致性正則化和自信促進損失組成,并使用交叉熵損失函數(shù)作為監(jiān)督損失函數(shù)。動態(tài)加權一致性正則化使用每個無標記數(shù)據(jù)的自信度CL作為動態(tài)一致性權值,在無標記數(shù)據(jù)上進行一致性訓練,有效增強了模型的泛化性能。自信促進損失能靈活調節(jié)促進模型輸出自信預測的強度,有效實現(xiàn)類間的低密度分離,從而增強模型的分類性能。在多個數(shù)據(jù)集上的大量實驗表明,提出的動態(tài)一致自信的深度半監(jiān)督學習方法的性能優(yōu)于目前較先進的深度半監(jiān)督學習方法。未來的工作會進一步探索不同無標記數(shù)據(jù)自信促進損失的差異以及對自信促進損失函數(shù)的動態(tài)加權。