系統(tǒng)學習機器學習之弱監(jiān)督學習(二)--半監(jiān)督學習綜述x
發(fā)布時間:2020-09-08 來源: 民主生活會 點擊:
系統(tǒng)學習機器學習之弱監(jiān)督學習(二)-- 半監(jiān)督學習綜述 一、半監(jiān)督學習 1-1 、什么是半監(jiān)督學習 讓學習器不依賴外界交互、自動地利用未標記樣本來提升學習性能,就是半監(jiān)督學習(semi-supervised learning)。
要利用未標記樣本,必然要做一些將未標記樣本所揭示的數(shù)據(jù)分布信息與類別標記相聯(lián)系的假設(shè)。假設(shè)的本質(zhì)是“相似的樣本擁有相似的輸出”。
目前,在半監(jiān)督學習中有三個常用的基本假設(shè)來建立預測樣例和學習目標之間的關(guān)系,有以下三個:
。1)平滑假設(shè)(Smoothness Assumption):位于稠密數(shù)據(jù)區(qū)域的兩個距離很近的樣例的類標簽相似,也就是說,當兩個樣例被稠密數(shù)據(jù)區(qū)域中的邊連接時,它們在很大的概率下有相同的類標簽;相反地,當兩個樣例被稀疏數(shù)據(jù)區(qū)域分開時,它們的類標簽趨于不同。
。2)聚類假設(shè)(Cluster Assumption):當兩個樣例位于同一聚類簇時,它們在很大的概率下有相同的類標簽。這個假設(shè)的等價定義為低密度分離假設(shè)(Low Sensity Separation Assumption),即分類決策邊界應該穿過稀疏數(shù)據(jù)區(qū)域,而避免將稠密數(shù)據(jù)區(qū)域的樣例分到?jīng)Q策邊界兩側(cè)。
聚類假設(shè)是指樣本數(shù)據(jù)間的距離相互比較近時,則他們擁有相同的類別。根據(jù)該假設(shè),分類邊界就必須盡可能地通過數(shù)據(jù)較為稀疏的地方,以能夠避免把密集的樣本數(shù)據(jù)點分到分類邊界的兩側(cè)。在這一假設(shè)的前提下,學習算法就可以利用大量未標記的樣本數(shù)據(jù)來分析樣本空間中樣本數(shù)據(jù)分布情況,從而指導學習算法對分類邊界進行調(diào)整,使其盡量通過樣本數(shù)據(jù)布局比較稀疏的區(qū)域。例如,Joachims 提出的轉(zhuǎn)導支持向量機算法,在訓練過程中,算法不斷修改分類超平面并交換超平面兩側(cè)某些未標記的樣本數(shù)據(jù)的標記,使得分類邊界在所有訓練數(shù)據(jù)上最大化間隔,從而能夠獲得一個通過數(shù)據(jù)相對稀疏的區(qū)域,又盡可能正確劃分所有有標記的樣本數(shù)據(jù)的分類超平面。
。3)流形假設(shè)(Manifold Assumption):將高維數(shù)據(jù)嵌入到低維流形中,當兩個樣例位于低維流形中的一個小局部鄰域內(nèi)時,它們具有相似的類標簽。
流形假設(shè)的主要思想是同一個局部鄰域內(nèi)的樣本數(shù)據(jù)具有相似的性質(zhì),因此其標記也應該是相似。這一假設(shè)體現(xiàn)了決策函數(shù)的局部平滑性。和聚類假設(shè)的主要不同是,聚類假設(shè)主要關(guān)注的是整體特性,流形假設(shè)主要考慮的是模型的局部特性。在該假設(shè)下,未標記的樣本數(shù)據(jù)就能夠讓數(shù)據(jù)空間變得更加密集,從而有利于更加標準地分析局部區(qū)域的特征,也使得決策函數(shù)能夠比較完滿地進行數(shù)據(jù)擬合。流形假設(shè)有
時候也可以直接應用于半監(jiān)督學習算法中。例如,Zhu 等人利用高斯隨機場和諧波函數(shù)進行半監(jiān)督學習,首先利用訓練樣本數(shù)據(jù)建立一個圖,圖中每個結(jié)點就是代表一個樣本,然后根據(jù)流形假設(shè)定義的決策函數(shù)的求得最優(yōu)值,獲得未標記樣本數(shù)據(jù)的最優(yōu)標記;Zhou 等人利用樣本數(shù)據(jù)間的相似性建立圖,然后讓樣本數(shù)據(jù)的標記信息不斷通過圖中的邊的鄰近樣本傳播,直到圖模型達到全局穩(wěn)定狀態(tài)為止。
從本質(zhì)上說,這三類假設(shè)是一致的,只是相互關(guān)注的重點不同。其中流行假設(shè)更具有普遍性。
SSL 按照統(tǒng)計學習理論的角度包括直推(Transductive)SSL 和歸納(Inductive)SSL 兩類模式。直推 SSL 只處理樣本空間內(nèi)給定的訓練數(shù)據(jù),利用訓練數(shù)據(jù)中有類標簽的樣本和無類標簽的樣例進行訓練,預測訓練數(shù)據(jù)中無類標簽的樣例的類標簽;歸納 SSL 處理整個樣本空間中所有給定和未知的樣例,同時利用訓練數(shù)據(jù)中有類標簽的樣本和無類標簽的樣例,以及未知的測試樣例一起進行訓練,不僅預測訓練數(shù)據(jù)中無類標簽的樣例的類標簽,更主要的是預測未知的測試樣例的類標簽。即后者假定訓練數(shù)據(jù)中的未標記樣本并非待測的數(shù)據(jù),而前者則假定學習過程中所考慮的未標記樣本恰是待預測數(shù)據(jù),學習的目的就是在這些未標記樣本上獲得最優(yōu)泛化性能。
1-2 、無標記樣本的意義
圖片來源:
A Tutorial on Graph-based Semi-Supervised Learning Algorithms for Speech and Spoken Language Processing 左圖表示根據(jù)現(xiàn)有的數(shù)據(jù),我們得到的分類邊界如左圖中藍線所示。但是當我們有了無標簽數(shù)據(jù)的分布信息后,兩個類的分類超平面就變得比較明確了。
因此,使用無標簽數(shù)據(jù)有著提高分類邊界的準確性,提高模型的穩(wěn)健性。
1-3 、偽標簽(Pseudo-Labelling )學習
來源:
Pseudo-labeling a simple semi-supervised learning method 偽標簽學習也可以叫簡單自訓練(simple self-training):用有標簽數(shù)據(jù)訓練一個分類器,然后用這個分類器對無標簽數(shù)據(jù)進行分類,這樣就會產(chǎn)生偽標簽(pseudo label)或軟標簽(soft label),挑選你認為分類正確的無標簽樣本(此處應該有一個挑選準則),把選出來的無標簽樣本用來訓練分類器。
上圖反映的便是簡單的偽標簽學習的過程,具體描述如下:
i)使用有標簽數(shù)據(jù)訓練模型; ii)使用訓練的模型為無標簽的數(shù)據(jù)預測標簽,即獲得無標簽數(shù)據(jù)的偽標簽; iii)使用(ii)獲得的偽標簽和標簽數(shù)據(jù)集重新訓練模型; 最終的模型是(iii)訓練得到,用于對測試數(shù)據(jù)的最終預測。
偽標簽方法在實際的使用過程中,會在(iii)步中增加一個參數(shù):采樣比例(sample_rate),表示無標簽數(shù)據(jù)中本用作偽標簽樣本的比率。
偽標簽方法的更加詳細介紹以及 Python 實現(xiàn)可以最后的參考文獻。
二、半監(jiān)督學習方法 2-1. 簡單自訓練 (simple self-training )
用有標簽數(shù)據(jù)訓練一個分類器,然后用這個分類器對無標簽數(shù)據(jù)進行分類,這樣就會產(chǎn)生偽標簽(pseudo label)或軟標簽(soft label),挑選你認為分類正確的無標簽樣本(此處應該有一個挑選準則 挑選準則),把選出來的無標簽樣本用來訓練分類器。
在這里還有兩個問題需要注意,首先自訓練的方法是否可以用到回歸問題中?答案是否定的。因為即使加入新的數(shù)據(jù)對于模型也沒有什么改進。
生成模型與自訓練模型之間是很相似的,區(qū)別在于生成模型采用的是軟標簽,而自訓練采用的是硬標簽,那么問題來了,自訓練模型是都可以使用軟標簽呢?答案是否定的,如下圖所示
因為不對標簽進行改變的話,將這些放入帶標簽的數(shù)據(jù)中對于數(shù)據(jù)的輸出一點改進都沒有,輸出的還是原來的數(shù)據(jù)。
2-2. 協(xié)同訓練 (co-training )
其實也是 self-training 的一種,但其思想是好的。假設(shè)每個數(shù)據(jù)可以從不同的角度(view)進行分類,不同角度可以訓練出不同的分類器,然后用這些從不同角度
訓練出來的分類器對無標簽樣本進行分類,再選出認為可信的無標簽樣本加入訓練集中。由于這些分類器從不同角度訓練出來的,可以形成一種互補,而提高分類精度;就如同從不同角度可以更好地理解事物一樣。
2-3. 半監(jiān)督字典學習 其實也是 self-training 的一種,先是用有標簽數(shù)據(jù)作為字典,對無標簽數(shù)據(jù)進行分類,挑選出你認為分類正確的無標簽樣本,加入字典中(此時的字典就變成了半監(jiān)督字典了)
注意:self-training 有一種低密度分離假設(shè),就是假設(shè)數(shù)據(jù)非黑即白,在兩個類別的數(shù)據(jù)之間存在著較為明顯的鴻溝,即在兩個類別之間的邊界處數(shù)據(jù)的密度很低(即數(shù)據(jù)量很好)。
2-4. 基于熵的正則化 這種方法是自訓練的進階版,因為之前如果直接根據(jù)用有標簽數(shù)據(jù)訓練出來的模型直接對無標簽數(shù)據(jù)進行分類會有一些武斷,這里采用一種更嚴密的方法。
因為在低密度假設(shè)中認為這個世界是非黑即白的,所以無標簽數(shù)據(jù)的概率分布應該是區(qū)別度很大的,這里使用熵來表示。將其加入損失函數(shù)中個可以看到,這個實際上可以認為是一項正則化項,所以也叫基于熵的正則化。訓練的話,因為兩個部分都是可微分的,所以直接使用梯度下降就可以進行訓練。
2-5. 標簽傳播算法 (Label Propagation Algorithm )
是一種基于圖的半監(jiān)督算法,通過構(gòu)造圖結(jié)構(gòu)(數(shù)據(jù)點為頂點,點之間的相似性為邊)來尋找 訓練數(shù)據(jù)中有標簽數(shù)據(jù)和無標簽數(shù)據(jù)的關(guān)系。是的,只是訓練數(shù)據(jù)中,這是一種直推式的半監(jiān)督算法,即只對訓練集中的無標簽數(shù)據(jù)進行分類,這其實感覺很像一個有監(jiān)督分類算法...,但其實并不是,因為其標簽傳播的過程,會流經(jīng)無標簽數(shù)據(jù),即有些無標簽數(shù)據(jù)的標簽的信息,是從另一些無標簽數(shù)據(jù)中流過來的,這就用到了無標簽數(shù)據(jù)之間的聯(lián)系 2-6. 半監(jiān)督 SVM (Semi-Supervised Support Vector Machine, 簡稱 S3VM )
有監(jiān)督學習中的傳統(tǒng) SVM 試圖找到一個劃分超平面,使得兩側(cè)支持向量之間的間隔最大,即“最大劃分間隔”思想。對于半監(jiān)督學習,S3VM 則考慮超平面需穿過數(shù)據(jù)低密度的區(qū)域。
TSVM 是半監(jiān)督支持向量機中的最著名代表,TSVM 主要思想是嘗試將每個未標記樣本分別作為正例或反例,在所有結(jié)果中,尋找一個在所有樣本上間隔最大的劃分超平面。
TSVM 采用局部搜索的策略來進行迭代求解,即首先使用有標記樣本集訓練出一個初始 SVM,接著使用該學習器對未標記樣本進行標記,這樣所有樣本都有了標記,并基于這些有標記的樣本重新訓練 SVM,之后再尋找易出錯樣本不斷調(diào)整。
2-7. 生成式方法 生成式方法(generative methods)是直接基于生成式模型的方法。此類方法假設(shè)所有數(shù)據(jù)(無論是否有標記)都是由同一個潛在的模型“生成”的。這個假設(shè)使得我們能通過潛在模型的參數(shù)將未標記數(shù)據(jù)與學習目標聯(lián)系起來,而未標記數(shù)據(jù)的標記則可看作模型的缺失參數(shù),通常可基于 EM 算法進行極大似然估計求解。此類方法的區(qū)別主要在于生成式模型的假設(shè),不同的模型假設(shè)將產(chǎn)生不同的方法。
在監(jiān)督學習中,生成模型的數(shù)據(jù)有 C1 和 C2 兩類數(shù)據(jù)組成,我們統(tǒng)計數(shù)據(jù)的先驗概率 P(C1)和 P(x|C1)。假設(shè)每一類的數(shù)據(jù)都是服從高斯分布的話,我們可以通過分布得到參數(shù)均值 μ1,μ2 和方差 Σ。
利用得到參數(shù)可以知道 P(C1),P(x|C1),μ1,μ2,Σ,并利用這些參數(shù)計算某一個例子的類別
在非監(jiān)督學習中,如下圖所示,在已知類別的數(shù)據(jù)周圍還有很多類別未知的數(shù)據(jù),如圖中綠色的數(shù)據(jù)。
這個時候如果仍在使用之前的數(shù)據(jù)分布明顯是不合理的們需要重新估計數(shù)據(jù)分布的參數(shù),這個時候可能分布是一個類似于圓形的形狀。這里就需要用偽標簽數(shù)據(jù)來幫助估計新的”P(C1),P(x|C1),μ1,μ2,Σ”。具體可以采用如下的 EM 算法進行估計
首先對參數(shù)進行初始化,之后利用參數(shù)計算無標簽數(shù)據(jù)的后驗概率;然后利用得到的后驗概率更新模型參數(shù),再返回 step1,循環(huán)執(zhí)行直至模型收斂。這個算法最終會達到收斂,但是初始化對于結(jié)果的影響也很大。
2-8. 圖半監(jiān)督學習 給定一個數(shù)據(jù)集,我們可將其映射為一個圖,數(shù)據(jù)集中每個樣本對應于圖中一個結(jié)點,若兩個樣本之間的相似度很高(或相關(guān)性很強),則對應結(jié)點之間存在一條邊,邊的“強度”(strength)正比于樣本之間的相似度(或相關(guān)性)。我們可將有標記樣本所對應的結(jié)點想象為染過色,而未標記樣本所對應的結(jié)點尚未染色。于是,半監(jiān)督學就對應于“顏色”在圖上擴散或傳播的過程。由于一個圖對應了一個矩陣,這使得我們能基于矩陣運算來進行半監(jiān)督學習算法的推到和分析。
圖半監(jiān)督學習方法在概念上相當清晰,且易于通過對所涉矩陣運算的分析來探索算法性質(zhì)。但此類算法的缺陷也相當明顯。首先是在存儲開銷上,若樣本數(shù)為 O(m),則算法中所涉及的矩陣規(guī)模未 O(m2),這使得此類算法很難直接處理大規(guī)模數(shù)據(jù);另一方面,由于構(gòu)圖過程僅能考慮訓練樣本集,難以判斷新樣本在圖中的位置,因此,在接收到新樣本時,或是將其加入原數(shù)據(jù)集對圖進行重構(gòu)并重新進行標記傳播,或是需引入額外的預測機制。
2-9. 基于分歧的方法 與生成式方法、半監(jiān)督 SVM、圖半監(jiān)督學習等基于單學習器利用未標記數(shù)據(jù)不同,基于分歧的方法(disagreement-base methods)使用多學習器,而學習器之間的“分歧”(disagreement)對未標記數(shù)據(jù)的利用至關(guān)重要。
基于分歧的方法只需采用合適的基學習器,就能較少受到模型假設(shè)、損失函數(shù)非凸性和數(shù)據(jù)規(guī)模的影響,學習方法簡單有效、理論基礎(chǔ)相對堅實、適用范圍較為廣泛。為了使用此類方法,需能生成具有顯著分歧、性能尚可的多個學習器,但當有標記樣本很少,尤其是數(shù)據(jù)不具有多視圖時,要做到這一點并不容易,需有技巧的設(shè)計。
2-10. 半監(jiān)督深度學習 2-10-1.無標簽數(shù)據(jù)初始化網(wǎng)絡 一個好的初始化可以使得網(wǎng)絡的結(jié)果準確率提高,迭代次數(shù)更少。因此該方式即是利用無標簽數(shù)據(jù)讓網(wǎng)絡有一個好的初始化。
初始化的兩種方法,無監(jiān)督預訓練與偽有監(jiān)督預訓練 無監(jiān)督預訓練:用所有訓練數(shù)據(jù)訓練自動編碼器(AutoEncoder),然后把自編碼網(wǎng)絡的參數(shù)作為初始參數(shù),用有標簽數(shù)據(jù)微調(diào)網(wǎng)絡(驗證集)。
偽有監(jiān)督預訓練:通過半監(jiān)督算法或聚類算法等方式,給無標簽數(shù)據(jù)附上偽標簽信息,先用這些偽標簽信息來預訓練網(wǎng)絡,然后再用有標簽數(shù)據(jù)來微調(diào)網(wǎng)絡(驗證集)。
2-10-2.有標簽數(shù)據(jù)提取特征的半監(jiān)督學習 i)用有標簽數(shù)據(jù)訓練網(wǎng)絡(此時網(wǎng)絡一般過擬合); ii)通過隱藏層提取特征,以這些特征來用某種分類算法對無標簽數(shù)據(jù)進行分類; iii)挑選認為分類正確的無標簽數(shù)據(jù)加入到訓練集; 重復上述過程。
想法美好,實際應用不太行,誤差會放大。
2-9-3 網(wǎng)絡本身的半監(jiān)督學習(端到端的半監(jiān)督深度模型)
ICML 2013 的文章 Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks:
該文章簡單的說就是在偽標簽學習中使用深度學習網(wǎng)絡作為分類器,就是把網(wǎng)絡對無標簽數(shù)據(jù)的預測,作為無標簽數(shù)據(jù)的偽標簽(Pseudo label),用來對網(wǎng)絡進行訓練。
但方法雖然簡單,但是效果很好,比單純用有標簽數(shù)據(jù)有不少的提升。其主要的貢獻在于損失函數(shù)的構(gòu)造:
損失函數(shù)的第一項是有標簽數(shù)據(jù)的損失,第二項是無標簽數(shù)據(jù)的損失, 在無標簽數(shù)據(jù)的損失中,
為無標簽數(shù)據(jù)預測得到的偽標簽,是直接取網(wǎng)絡對無標簽數(shù)據(jù)的預測的最大值為標簽。
其中 決定著無標簽數(shù)據(jù)的代價在網(wǎng)絡更新的作用,選擇合適
的
很重要,太大性能退化,太小提升有限。
在網(wǎng)絡初始時,網(wǎng)絡的預測時不太準確的,因此生成的偽標簽的準確性也不高。
在初始訓練時,
要設(shè)為 0,然后再慢慢增加,論文中給出其增長函數(shù)。
Semi-Supervised Learning with Ladder Networks:
ladderNet 是有監(jiān)督算法和無監(jiān)督算法的有機結(jié)合。上面提及到的無監(jiān)督預訓練+有監(jiān)督微調(diào)的思想中所有監(jiān)督和無監(jiān)督是分開的,兩個階段的訓練相互獨立,并不能稱之為真正的半監(jiān)督學習。
無監(jiān)督學習是用重構(gòu)樣本進行訓練,其編碼(學習特征)的目的是盡可能地保留原始數(shù)據(jù)的信息;而有監(jiān)督學習是用于分類,希望只保留其本質(zhì)特征,去除不必要的特征。
舉例來說:我們的分類任務判斷一張人臉圖片是單眼皮,還是雙眼皮;那么有監(jiān)督學習經(jīng)過訓練完畢后,就會盡可能的把與這個分類任務無關(guān)的信息過濾掉,過濾的越好,那么分類的精度將會更高。
比如一個人的嘴巴、鼻子信息這些都是與這個分類任務無關(guān)的,那么就要盡量的過濾掉。
因此,基于這個原因以至于一直以來有監(jiān)督學習和無監(jiān)督學習不能很好的兼容在一起。
ladderNet 成功的原因在于損失函數(shù)和 skip connection 。通過在每層的編碼器和解碼器之間添加跳躍連接(skip connection),減輕模型較高層表示細節(jié)的壓力, 使得無監(jiān)督學習和有監(jiān)督學習能結(jié)合在一起,并在最高層添加分類器。
損失函數(shù)的第一項是有標簽樣本數(shù)據(jù)的交叉熵損失函數(shù),第二項是無監(jiān)督各層噪聲解碼器重構(gòu)誤差歐式損失函數(shù)。
其他的幾種半監(jiān)督網(wǎng)絡的具體見參考文獻[4]中. Temporal Ensembling for Semi-supervised Learning Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results Mean teacher 是對模型的參數(shù)進行移動平均(weight-averaged),使用這個移動平均模型參數(shù)的就是 teacher model 。
其思想有點類似于網(wǎng)絡模型融合中的隨機加權(quán)平均(SWA,Stochastic Weight Averaging)。
參考文獻 [1]. 周志華. 機器學習[M]. Qing hua da xue chu ban she, 2016. [2].【譯文】偽標簽學習導論 - 一種半監(jiān)督學習方法 [3].半監(jiān)督深度學習小結(jié) [4].深度學習的自編碼 [5].深度學習(三十二)半監(jiān)督階梯網(wǎng)絡學習筆記
熱點文章閱讀