張 永 陳蓉蓉 張 晶
(遼寧師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 遼寧大連 116081)(zhyong@lnnu.edu.cn)
傳統(tǒng)的分類方法通常使用有標(biāo)簽的數(shù)據(jù)進(jìn)行訓(xùn)練.然而,隨著人們收集數(shù)據(jù)能力的不斷提升,獲得大量的未標(biāo)記數(shù)據(jù)樣本相對容易,而獲取已標(biāo)記數(shù)據(jù)樣本通常卻需要付出昂貴的人力、物力和財(cái)力.如何讓學(xué)習(xí)器利用少量的標(biāo)記數(shù)據(jù)和大量的未標(biāo)記數(shù)據(jù)來提升學(xué)習(xí)性能,是半監(jiān)督學(xué)習(xí)(semi-supervised learning, SSL)[1-2]所要解決的問題.目前常用的半監(jiān)督學(xué)習(xí)方法主要包括生成式方法[3]、半監(jiān)督支持向量機(jī)(semi-supervised support vector machine, S3VM)[4-5]、圖半監(jiān)督學(xué)習(xí)[6]、基于分歧的方法[7]和半監(jiān)督聚類[8]等.
其中,基于分歧的方法起源于協(xié)同訓(xùn)練[9].標(biāo)準(zhǔn)的協(xié)同訓(xùn)練算法需要2個足夠多的冗余視圖,即屬性可以自然地分為2組,且每組在給定類標(biāo)簽的情況下有條件地獨(dú)立于另一組.然而在實(shí)際應(yīng)用中,并不是所有的數(shù)據(jù)集都能滿足這一特征.為了更加方便地應(yīng)用到各種常見的數(shù)據(jù)挖掘場景,Zhou等人[10]提出了一種協(xié)同訓(xùn)練算法Tri-training,該算法不需要足夠的冗余視圖,也不需要使用不同的監(jiān)督學(xué)習(xí)方法,有效提高了半監(jiān)督學(xué)習(xí)的效率.S?gaard[11]提出了一種帶分歧的Tri-training算法,旨在提升模型的薄弱點(diǎn),比一般的Tri-training算法更具有效率.Saito等人[12]提出了一種用于無監(jiān)督域自適應(yīng)的非對稱Tri-training算法,通過不對稱地使用3個神經(jīng)網(wǎng)絡(luò),達(dá)到對目標(biāo)域未標(biāo)記數(shù)據(jù)進(jìn)行標(biāo)記的目的,從而提高了遷移學(xué)習(xí)領(lǐng)域的自適應(yīng)性能.Ruder等人[13]為了減少Tri-training過程中的時間和空間復(fù)雜度,把遷移學(xué)習(xí)思想引入半監(jiān)督學(xué)習(xí),提出了多任務(wù)Tri-training算法.Ou等人[14]提出了一種基于正則化局部嵌入的Tri-training方法用于高光譜圖像分析,解決了奇異值和過擬合的問題,有效提高了高光譜圖像的分類精度.Park等人[15]結(jié)合Tri-training方法和對抗學(xué)習(xí)方法構(gòu)建了一個半監(jiān)督學(xué)習(xí)框架,用來檢測單個音頻剪輯中多個聲音事件的設(shè)置和偏移.該框架先用Tri-training方法標(biāo)記數(shù)據(jù),然后使用對抗學(xué)習(xí)方法來減少真實(shí)數(shù)據(jù)集和合成數(shù)據(jù)集之間的域間隙.然而上述Tri-training算法依賴于初始的分類器,忽略了標(biāo)記后產(chǎn)生的噪聲標(biāo)簽.研究表明[16],在某些情況下,使用未標(biāo)記的數(shù)據(jù)進(jìn)行半監(jiān)督學(xué)習(xí)時會使性能退化,導(dǎo)致一個不安全的學(xué)習(xí)模型,而在Tri-training訓(xùn)練過程中產(chǎn)生的不正確偽標(biāo)簽是性能下降的主要根源.本文提出一種安全的半監(jiān)督學(xué)習(xí)方法,即使在使用未標(biāo)記數(shù)據(jù)時也不會顯著降低學(xué)習(xí)性能.
本文從降低誤標(biāo)記樣本的角度出發(fā),將交叉熵、凸優(yōu)化分別與Tri-training算法相結(jié)合,提出了3個不同的算法.實(shí)驗(yàn)結(jié)果表明,基于交叉熵的安全Tri-training算法具有最優(yōu)的分類性能.針對半監(jiān)督分類學(xué)習(xí)任務(wù),本文的主要貢獻(xiàn)有3個方面:
1) 將交叉熵與Tri-training算法相結(jié)合,提出一種基于交叉熵的Tri-training算法;
2) 使用鉸鏈損失函數(shù),提出了一個安全的Tri-training算法;
3) 運(yùn)用凸優(yōu)化方法,提出一種基于交叉熵的安全Tri-training學(xué)習(xí)框架.
本節(jié)主要介紹了基于分歧的半監(jiān)督學(xué)習(xí)方法Tri-training的基本思想、相對熵和交叉熵的相關(guān)知識,以及基于凸優(yōu)化的半監(jiān)督分類學(xué)習(xí)方法.
Tri-training算法[10]不要求數(shù)據(jù)集有充足和冗余的視圖,通過建立3個基分類器,用一種監(jiān)督學(xué)習(xí)方法即可實(shí)現(xiàn).基本思想是:首先,通過Bootstrap方法重采樣原始標(biāo)記數(shù)據(jù)集L,訓(xùn)練得到3個基分類器h1,h2,h3.然后,對未標(biāo)記數(shù)據(jù)集U中的數(shù)據(jù)x進(jìn)行標(biāo)記,只需有2個分類器對x的標(biāo)記一致即可,并將該未標(biāo)記樣本及其分類一致的標(biāo)簽加入到另外一個分類器的訓(xùn)練集中,重新訓(xùn)練基分類器,依此類推.重復(fù)迭代上述過程,直到3個基分類器的性能不再改變?yōu)橹?最后,采用多數(shù)投票法確定最終的分類結(jié)果.
在標(biāo)記過程中,產(chǎn)生的錯誤標(biāo)記樣本會對結(jié)果造成影響.為了減少標(biāo)記過程中產(chǎn)生的噪聲樣本,該算法基于Angluin等人[17]的理論結(jié)果,根據(jù)分類噪聲率和每輪訓(xùn)練的分類錯誤率決定偽標(biāo)記樣本是否用于分類器更新.Zhou等人[10]證明,如果新標(biāo)記的訓(xùn)練樣本足夠多且滿足式(1)所設(shè)定的約束條件,則基分類器重新訓(xùn)練所得的分類性能會迭代提升.
(1)

(2)
在Tri-training訓(xùn)練過程中,用式(2)來判斷由hj和hk給出一致標(biāo)記的數(shù)據(jù)所組成的數(shù)據(jù)集Lt是否應(yīng)該被加入到hi的新訓(xùn)練集中.
Tri-training不需要數(shù)據(jù)集有冗余的視圖,對基學(xué)習(xí)器也沒有特定的要求,因此成為基于分歧的半監(jiān)督學(xué)習(xí)方法中最常用的技術(shù).然而該算法在訓(xùn)練過程中產(chǎn)生的標(biāo)記噪聲,可能會對最后的模型產(chǎn)生不好的影響.為了減少Tri-training算法過程中的標(biāo)記噪聲對未標(biāo)記數(shù)據(jù)的預(yù)測偏差,學(xué)習(xí)到更好的半監(jiān)督分類模型,本文結(jié)合交叉熵和凸優(yōu)化方法,提出了一種基于交叉熵的安全Tri-training學(xué)習(xí)框架.
相對熵又稱為KL散度(Kullback-Leible diver-gence),是2個概率分布間差異的非對稱性度量[18].在信息理論中,相對熵可用于表示2個概率分布的信息熵的差值.假設(shè)在給定樣本集χ上定義樣本真實(shí)分布為P,模型預(yù)測分布為Q,則P和Q的相對熵或KL散度可以定義為[19]
(3)
DKL值越小,表示P和Q的分布越接近.當(dāng)且僅當(dāng)2個概率分布相同時,相對熵DKL=0.
交叉主要用于描述兩個事件之間的相互關(guān)系.Rubinstein[20]提出了交叉熵的概念,用來度量2個概率分布的差異性.由式(3)變形可得:


(4)
式(4)等號右端前半部分為分布P的熵,后半部分即為交叉熵:

(5)
交叉熵具有2個重要性質(zhì):
1) 非對稱性.即H(P,Q)≠H(Q,P).
2) 非負(fù)性.H(P,Q)≥0,且有H(P,P)=H(P).

交叉熵已經(jīng)廣泛應(yīng)用于組合優(yōu)化、機(jī)器學(xué)習(xí)等領(lǐng)域.Bosman等人[21]提出了一種基于交叉熵和平方誤差損失函數(shù)的梯度隨機(jī)采樣可視化方法,實(shí)驗(yàn)結(jié)果表明交叉熵?fù)p失比二次損失具有更強(qiáng)的梯度和可搜索性.Li等人[22]在交叉熵?fù)p失中加入正則項(xiàng),提出了一個對偶交叉熵?fù)p失函數(shù),用來優(yōu)化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),實(shí)驗(yàn)結(jié)果表明提出的損失函數(shù)提升了分類性能.Lu等人[23]提出了一種動態(tài)加權(quán)交叉熵作為語義分割的損失函數(shù),設(shè)計(jì)了一種加權(quán)方法對交叉熵進(jìn)行加權(quán),并在每一個訓(xùn)練步驟中迭代權(quán)重.實(shí)驗(yàn)結(jié)果表明該方法能有效地提高數(shù)據(jù)極不平衡情況下的分割精度.Lopez-Garcia等人[24]將交叉熵和遺傳算法相結(jié)合,提出了一種模糊規(guī)則系統(tǒng)層次結(jié)構(gòu)要素的優(yōu)化方法,能更好地預(yù)測短期交通擁堵狀況.交叉熵可直接使用作為損失函數(shù)評估模型,當(dāng)交叉熵最低時,可以認(rèn)為得到了一個最好的訓(xùn)練模型.
在半監(jiān)督學(xué)習(xí)中,僅有極少數(shù)的標(biāo)記數(shù)據(jù),大部分是未標(biāo)記數(shù)據(jù).因此,人們通常希望利用未標(biāo)記數(shù)據(jù)來提高模型的學(xué)習(xí)性能.但在某些情況下,現(xiàn)有的半監(jiān)督學(xué)習(xí)方法比僅使用標(biāo)記數(shù)據(jù)的監(jiān)督學(xué)習(xí)方法表現(xiàn)更差.為了解決這一問題,Li等人[25]提出了一種安全的半監(jiān)督SVM(safe semi-supervised support vector machine, S4VM)方法,該方法提高了半監(jiān)督SVM的性能.Krijthe等人[26]提出了一種隱式約束的最小二乘半監(jiān)督學(xué)習(xí)方法,該方法隱式地考慮所有可能的未標(biāo)記數(shù)據(jù)的標(biāo)記,同時能最大限度地減少已標(biāo)記數(shù)據(jù)的平方損失.Guo等人[27]提出了一種方案,通過整合幾個弱監(jiān)督的分類器來建立最終的預(yù)測結(jié)果,并在噪聲學(xué)習(xí)、域自適應(yīng)和半監(jiān)督回歸任務(wù)上驗(yàn)證了方案的有效性.
為了提高未標(biāo)記數(shù)據(jù)對于半監(jiān)督分類性能的影響,本文使用凸優(yōu)化方法,通過半監(jiān)督分類的凸線性組合給出標(biāo)記,提高安全半監(jiān)督分類的準(zhǔn)確性.本節(jié)首先利用交叉熵在信息差異度量方面的優(yōu)勢,提出了一種基于交叉熵的Tri-training算法;其次,提出了一種安全的Tri-training學(xué)習(xí)算法,以提升未標(biāo)記數(shù)據(jù)的分類性能;最后,給出了一個基于交叉熵的安全Tri-training學(xué)習(xí)框架.

在計(jì)算“學(xué)習(xí)到的模型分布”與“訓(xùn)練數(shù)據(jù)分布”之間的信息差異量時,交叉熵相比利用誤分率來衡量該差異性有更多的優(yōu)勢.本文首先將交叉熵與Tri-training算法相結(jié)合,提出一種基于交叉熵的Tri-training算法,具體描述如算法1所示.
算法1.基于交叉熵的Tri-training算法.
輸入:訓(xùn)練集D=L∪U,其中L和U分別為已標(biāo)記數(shù)據(jù)集和未標(biāo)記數(shù)據(jù)集,測試集T;
輸出:測試數(shù)據(jù)集T中數(shù)據(jù)x的標(biāo)簽h(x).
① fori=1 to 3 do
②Si←Bootstrap(L),hi←Learn(Si);
④ end for
⑤ repeat
⑥ fori=1 to 3 do
⑦Li←?;
⑧ei←(Hj+Hk)2;*Hj,Hk(j,k≠i)為基分類器的交叉熵*

⑩ forU中每個樣本xdo

相對于Tri-training算法,算法1用交叉熵代替了Tri-training算法中的分類誤差,用加權(quán)投票規(guī)則確定最終的分類標(biāo)簽,在一定程度上提升了未標(biāo)記數(shù)據(jù)的分類性能.

(6)
損失函數(shù)是用來估量模型的預(yù)測值與真實(shí)值的不一致程度.常見的用于分類任務(wù)的損失函數(shù)包括均方損失、鉸鏈損失、交叉熵?fù)p失等.損失函數(shù)越小,模型的準(zhǔn)確性越好.鉸鏈損失和交叉熵?fù)p失都可以轉(zhuǎn)化為凸優(yōu)化問題,并通過凸優(yōu)化技巧實(shí)現(xiàn)優(yōu)化,損失函數(shù)在分類任務(wù)中的優(yōu)化具有一般普適性[28-29].
鉸鏈損失可以表示為預(yù)測結(jié)果的線性關(guān)系,使得鉸鏈損失作為分類任務(wù)中的損失函數(shù)具有更好的性能[29].文獻(xiàn)[27]證明當(dāng)(·,·)選用鉸鏈損失時,式(6)在分類任務(wù)中可轉(zhuǎn)換為一個凸優(yōu)化問題.
對于一個分類問題,用p=(p1,p2,…,pu)表示u個樣本的真實(shí)標(biāo)簽,q=(q1,q2,…,qu)表示預(yù)測標(biāo)簽,鉸鏈損失函數(shù)可定義為
(7)
(8)
從而式(6)可改寫為
(9)

借助上述思想,我們將安全性融入到Tri-training算法中,以此來提高半監(jiān)督學(xué)習(xí)算法的準(zhǔn)確率和魯棒性.算法2描述了用于半監(jiān)督分類時安全的Tri-training學(xué)習(xí)算法.
算法2.安全的Tri-training學(xué)習(xí)算法.
輸入:訓(xùn)練集D=L∪U,其中L和U分別為已標(biāo)記數(shù)據(jù)集和未標(biāo)記數(shù)據(jù)集,測試集T;
輸出:測試數(shù)據(jù)集T中數(shù)據(jù)x的標(biāo)簽h(x).
①h0←Learn(L);
② 調(diào)用Tri-training(L,U)訓(xùn)練基分類器hi(i=1,2,3);
③y0←h0(T),yi←hi(T) (i=1,2,3);
④ 構(gòu)造如(9)所示的目標(biāo)函數(shù):


⑦ 輸出所有的h(x).

Tri-training算法在基分類器預(yù)測分類結(jié)果后,采用多數(shù)投票方法來確定未標(biāo)記數(shù)據(jù)的標(biāo)簽,未充分考慮每個分類器自身的強(qiáng)弱,可能降低未標(biāo)記數(shù)據(jù)的分類性能,甚至低于直接用基準(zhǔn)分類器h0對未標(biāo)記數(shù)據(jù)分類得到的分類性能.與Tri-training算法相比,算法2分別用基準(zhǔn)分類器和Tri-training對未標(biāo)記數(shù)據(jù)進(jìn)行學(xué)習(xí),利用其初始預(yù)測結(jié)果構(gòu)建一個優(yōu)化問題,從而提升未標(biāo)記數(shù)據(jù)的分類性能.
為了減少算法2過程中產(chǎn)生的噪聲標(biāo)記,進(jìn)一步降低Tri-training的誤分率,本文將交叉熵用于安全Tri-training算法中,提出基于交叉熵的安全Tri-training算法,如算法3所示.算法3不僅利用交叉熵來估算每個基分類器的分類誤差,而且還基于初始預(yù)測結(jié)果構(gòu)建了一個優(yōu)化問題來求解最優(yōu)解.
算法3.基于交叉熵的安全Tri-training算法.
輸入:訓(xùn)練集D=L∪U,其中L和U分別為已標(biāo)記數(shù)據(jù)集和未標(biāo)記數(shù)據(jù)集,測試集T;
輸出:測試數(shù)據(jù)集T中數(shù)據(jù)x的標(biāo)簽h(x).
①h0←Learn(L);
②hi←Learn(Bootstrap(L)), 初始化參數(shù)

③ repeat
④ fori=1 to 3 do
⑤Li←?;
⑥ei←(Hj+Hk)2;*Hj,Hk(j,k≠i)為基分類器的交叉熵*

⑧ forU中每個樣本xdo
⑨ ifhj(x)=hk(x) (j,k≠i) then
⑩Li←Li∪{(x,hj(x))};
為了驗(yàn)證本文方法的有效性,實(shí)驗(yàn)選取12個UCI(University of California Irvine)機(jī)器學(xué)習(xí)庫[30]中的數(shù)據(jù)集和1個入侵檢測數(shù)據(jù)集UNSW-NB15[31],共13個數(shù)據(jù)集,這些數(shù)據(jù)集僅包含2類,數(shù)據(jù)集基本信息如表1所示.其中,入侵檢測數(shù)據(jù)集UNSW-NB15僅分為正常類和異常類兩大類,且選取該數(shù)據(jù)集的10%進(jìn)行實(shí)驗(yàn).

Table 1 Experimental Datasets
本文針對半監(jiān)督學(xué)習(xí),所需要的數(shù)據(jù)集僅含有少量的標(biāo)記數(shù)據(jù),其余大部分為未標(biāo)記數(shù)據(jù),而本文的13個數(shù)據(jù)集都帶有標(biāo)記.為了構(gòu)造半監(jiān)督學(xué)習(xí)任務(wù),模擬現(xiàn)實(shí)中僅含有少量標(biāo)記樣本的情況,實(shí)驗(yàn)中選取20%的樣本作為測試集T,余下的全部為訓(xùn)練集D,從D中選取20%作為已標(biāo)記樣本集L,80%作為未標(biāo)記樣本集U.
本文提出了3個算法,包括基于交叉熵的Tri-training算法(Tri-training algorithm based on cross entropy, TCE)、安全的Tri-training算法(safe Tri-training algorithm, ST)和基于交叉熵的安全Tri-training算法(safe Tri-training algorithm based on cross entropy, STCE),與Tri-training算法進(jìn)行實(shí)驗(yàn)對比.實(shí)驗(yàn)中采用反向傳播神經(jīng)網(wǎng)絡(luò)(back propa-gation, BP)作為基分類器.
本文在混淆矩陣的基礎(chǔ)上對算法進(jìn)行性能評價.對于二分類問題,混淆矩陣如表2所示:

Table 2 Confusion Matrix
表2中TP,FP,TN,FN分別表示真正類、假正類、真負(fù)類、假負(fù)類的數(shù)量.召回率Recall、精度Precision、特效性Specificity、F值F-measure、G均值G-means、準(zhǔn)確率Accuracy等性能指標(biāo)的計(jì)算公式分別為
Recall=TP(TP+FN),
(10)
Precision=TP(TP+FP),
(11)
Specificity=TN(TN+FP),
(12)
(13)
(14)
(15)
本文選取了F-measure,G-means,Accuracy,Precision,Recall這5個指標(biāo)來評價算法性能,實(shí)驗(yàn)結(jié)果如表3~7所示:

Table 3 F-measure

Table 4 G-means

Table 5 Accuracy

Table 6 Precision

Continued (Table 6)

Table 7 Recall
從表3~7可以看出,大部分?jǐn)?shù)據(jù)集在STCE算法上表現(xiàn)較好,其中在F-measure,G-means,Accuracy,Precision這4個指標(biāo)上,分別在7,7,8,9個數(shù)據(jù)集上取得了最優(yōu)的性能.ST算法在F-measure,G-means,Accuracy這3個指標(biāo)上表現(xiàn)僅次于STCE算法.直觀上看,在Recall指標(biāo)上,ST算法在4個數(shù)據(jù)集上表現(xiàn)最好,而STCE和Tri-training、TCE算法相似,都在3個數(shù)據(jù)集上取得了較好性能.相對而言,僅有極個別數(shù)據(jù)集在TCE和Tri-training算法上表現(xiàn)最優(yōu).
為了進(jìn)一步分析4個算法的性能,我們引入統(tǒng)計(jì)顯著性檢驗(yàn)[32],從統(tǒng)計(jì)學(xué)的角度來比較分析算法性能.本文采用Friedman檢驗(yàn)進(jìn)行計(jì)算,通過重復(fù)測量方差分析(analysis of variance, ANOVA)來比較各個算法的平均排名.其中,重復(fù)測量ANOVA是一種測試2個以上相關(guān)樣本均值之間差異的統(tǒng)計(jì)方法.表8顯示了本文提出的3種算法與Tri-training算法經(jīng)過Friedman檢驗(yàn)后的等級排名,取值越低等級越高.

Table 8 Average Rank After Friedman Test
由表8可以看出,基于交叉熵的安全Tri-training算法STCE在5項(xiàng)評價指標(biāo)上均取得了最高的等級,最低取值為1.576 92,最高取值也只有2.230 77,比傳統(tǒng)的Tri-training算法的最低取值2.499 96還要低.根據(jù)平均等級可以得到4個算法的分類性能,從高到低依次為:STCE,ST,Tri-training,TCE,即STCE算法的分類性能最好,ST算法次之,但也明顯好于Tri-training和TCE算法.Tri-training算法和TCE算法性能相當(dāng),表明僅用交叉熵替代誤分率作為Tri-training更新的條件,并不能顯著改善半監(jiān)督學(xué)習(xí)的分類性能,而利用凸優(yōu)化可以在一定程度上提高半監(jiān)督學(xué)習(xí)的分類性能,將交叉熵和凸優(yōu)化方法相結(jié)合,可得到更好的分類性能.
我們進(jìn)一步使用Holm檢驗(yàn)[32]來對最佳排名方法STCE與其他方法進(jìn)行比較,并選擇STCE作為控制方法,取置信水平α=0.05進(jìn)行測試,結(jié)果如表9所示:

Table 9 Holm Test Results
表9中的pi(i=1,2,3)是由Holm檢驗(yàn)計(jì)算出來的概率值,用來度量否定原假設(shè)的證據(jù).概率值越低,否定原假設(shè)的證據(jù)越充分.檢驗(yàn)從概率值p3開始,由于p3=0.009 80小于Holm測試值α3=0.016 66,因此拒絕假設(shè).同樣,第2個假設(shè)也被拒絕.對于最后一個假設(shè),由于p1>0.05,故接受該假設(shè).結(jié)果表明,STCE算法優(yōu)于TCE算法和傳統(tǒng)的Tri-training算法,然而STCE算法和ST算法之間沒有統(tǒng)計(jì)學(xué)上的差異.這個結(jié)論和表8得出的結(jié)論相一致.
傳統(tǒng)的Tri-training算法能有效提升半監(jiān)督學(xué)習(xí)的分類性能.為了進(jìn)一步降低Tri-training算法過程中產(chǎn)生的誤標(biāo)率,提高算法性能,獲得良好的半監(jiān)督分類模型,本文分別提出了基于交叉熵的Tri-training算法(TCE)、安全的Tri-training算法(ST)和基于交叉熵的安全Tri-training算法(STCE).實(shí)驗(yàn)結(jié)果表明,提出的STCE方法具有最好的分類性能.然而,本文并沒有考慮到半監(jiān)督學(xué)習(xí)過程中數(shù)據(jù)集不平衡的問題,這將是我們下一步的研究內(nèi)容和方向.