系統學習機器學習之弱監督學習(二)--半監督學習綜述

一、半監督學習

1-1、什麼是半監督學習

讓學習器不依賴外界交互、自動地利用未標記樣本來提升學習性能,就是半監督學習(semi-supervised learning)。

要利用未標記樣本,必然要做一些將未標記樣本所揭示的數據分佈信息與類別標記相聯繫的假設。假設的本質是“相似的樣本擁有相似的輸出”。

目前,在半監督學習中有三個常用的基本假設來建立預測樣例和學習目標之間的關係,有以下三個:

(1)平滑假設(Smoothness Assumption):位於稠密數據區域的兩個距離很近的樣例的類標籤相似,也就是說,當兩個樣例被稠密數據區域中的邊連接時,它們在很大的概率下有相同的類標籤;相反地,當兩個樣例被稀疏數據區域分開時,它們的類標籤趨於不同。

(2)聚類假設(Cluster Assumption):當兩個樣例位於同一聚類簇時,它們在很大的概率下有相同的類標籤。這個假設的等價定義爲低密度分離假設(Low Sensity Separation Assumption),即分類決策邊界應該穿過稀疏數據區域,而避免將稠密數據區域的樣例分到決策邊界兩側。

聚類假設是指樣本數據間的距離相互比較近時,則他們擁有相同的類別。根據該假設,分類邊界就必須儘可能地通過數據較爲稀疏的地方,以能夠避免把密集的樣本數據點分到分類邊界的兩側。在這一假設的前提下,學習算法就可以利用大量未標記的樣本數據來分析樣本空間中樣本數據分佈情況,從而指導學習算法對分類邊界進行調整,使其儘量通過樣本數據佈局比較稀疏的區域。例如,Joachims提出的轉導支持向量機算法,在訓練過程中,算法不斷修改分類超平面並交換超平面兩側某些未標記的樣本數據的標記,使得分類邊界在所有訓練數據上最大化間隔,從而能夠獲得一個通過數據相對稀疏的區域,又儘可能正確劃分所有有標記的樣本數據的分類超平面。

(3)流形假設(Manifold Assumption):將高維數據嵌入到低維流形中,當兩個樣例位於低維流形中的一個小局部鄰域內時,它們具有相似的類標籤。

流形假設的主要思想是同一個局部鄰域內的樣本數據具有相似的性質,因此其標記也應該是相似。這一假設體現了決策函數的局部平滑性。和聚類假設的主要不同是,聚類假設主要關注的是整體特性,流形假設主要考慮的是模型的局部特性。在該假設下,未標記的樣本數據就能夠讓數據空間變得更加密集,從而有利於更加標準地分析局部區域的特徵,也使得決策函數能夠比較完滿地進行數據擬合。流形假設有時候也可以直接應用於半監督學習算法中。例如,Zhu 等人利用高斯隨機場和諧波函數進行半監督學習,首先利用訓練樣本數據建立一個圖,圖中每個結點就是代表一個樣本,然後根據流形假設定義的決策函數的求得最優值,獲得未標記樣本數據的最優標記;Zhou 等人利用樣本數據間的相似性建立圖,然後讓樣本數據的標記信息不斷通過圖中的邊的鄰近樣本傳播,直到圖模型達到全局穩定狀態爲止。

從本質上說,這三類假設是一致的,只是相互關注的重點不同。其中流行假設更具有普遍性。

SSL按照統計學習理論的角度包括直推(Transductive)SSL和歸納(Inductive)SSL兩類模式。直推SSL只處理樣本空間內給定的訓練數據,利用訓練數據中有類標籤的樣本和無類標籤的樣例進行訓練,預測訓練數據中無類標籤的樣例的類標籤;歸納SSL處理整個樣本空間中所有給定和未知的樣例,同時利用訓練數據中有類標籤的樣本和無類標籤的樣例,以及未知的測試樣例一起進行訓練,不僅預測訓練數據中無類標籤的樣例的類標籤,更主要的是預測未知的測試樣例的類標籤。即後者假定訓練數據中的未標記樣本並非待測的數據,而前者則假定學習過程中所考慮的未標記樣本恰是待預測數據,學習的目的就是在這些未標記樣本上獲得最優泛化性能。

1-2、無標記樣本的意義

圖片來源: A Tutorial on Graph-based Semi-Supervised Learning Algorithms for Speech and Spoken Language Processing

左圖表示根據現有的數據,我們得到的分類邊界如左圖中藍線所示。但是當我們有了無標籤數據的分佈信息後,兩個類的分類超平面就變得比較明確了。

因此,使用無標籤數據有着提高分類邊界的準確性,提高模型的穩健性。

1-3、僞標籤(Pseudo-Labelling)學習

來源: Pseudo-labeling a simple semi-supervised learning method

僞標籤學習也可以叫簡單自訓練(simple self-training):用有標籤數據訓練一個分類器,然後用這個分類器對無標籤數據進行分類,這樣就會產生僞標籤(pseudo label)或軟標籤(soft label),挑選你認爲分類正確的無標籤樣本(此處應該有一個挑選準則),把選出來的無標籤樣本用來訓練分類器。

上圖反映的便是簡單的僞標籤學習的過程,具體描述如下:

i)使用有標籤數據訓練模型;

ii)使用訓練的模型爲無標籤的數據預測標籤,即獲得無標籤數據的僞標籤;

iii)使用(ii)獲得的僞標籤和標籤數據集重新訓練模型;

最終的模型是(iii)訓練得到,用於對測試數據的最終預測。

僞標籤方法在實際的使用過程中,會在(iii)步中增加一個參數:採樣比例(sample_rate),表示無標籤數據中本用作僞標籤樣本的比率。

 僞標籤方法的更加詳細介紹以及Python實現可以最後的參考文獻。

二、半監督學習方法

2-1.簡單自訓練(simple self-training)

用有標籤數據訓練一個分類器,然後用這個分類器對無標籤數據進行分類,這樣就會產生僞標籤(pseudo label)或軟標籤(soft label),挑選你認爲分類正確的無標籤樣本(此處應該有一個挑選準則),把選出來的無標籤樣本用來訓練分類器。

在這裏還有兩個問題需要注意,首先自訓練的方法是否可以用到迴歸問題中?答案是否定的。因爲即使加入新的數據對於模型也沒有什麼改進。

  生成模型與自訓練模型之間是很相似的,區別在於生成模型採用的是軟標籤,而自訓練採用的是硬標籤,那麼問題來了,自訓練模型是都可以使用軟標籤呢?答案是否定的,如下圖所示 

 因爲不對標籤進行改變的話,將這些放入帶標籤的數據中對於數據的輸出一點改進都沒有,輸出的還是原來的數據。

2-2.協同訓練(co-training)

其實也是 self-training 的一種,但其思想是好的。假設每個數據可以從不同的角度(view)進行分類,不同角度可以訓練出不同的分類器,然後用這些從不同角度訓練出來的分類器對無標籤樣本進行分類,再選出認爲可信的無標籤樣本加入訓練集中。由於這些分類器從不同角度訓練出來的,可以形成一種互補,而提高分類精度;就如同從不同角度可以更好地理解事物一樣。

2-3.半監督字典學習

其實也是 self-training 的一種,先是用有標籤數據作爲字典,對無標籤數據進行分類,挑選出你認爲分類正確的無標籤樣本,加入字典中(此時的字典就變成了半監督字典了)

注意:self-training 有一種低密度分離假設,就是假設數據非黑即白,在兩個類別的數據之間存在着較爲明顯的鴻溝,即在兩個類別之間的邊界處數據的密度很低(即數據量很好)。

2-4.基於熵的正則化

這種方法是自訓練的進階版,因爲之前如果直接根據用有標籤數據訓練出來的模型直接對無標籤數據進行分類會有一些武斷,這裏採用一種更嚴密的方法。 

因爲在低密度假設中認爲這個世界是非黑即白的,所以無標籤數據的概率分佈應該是區別度很大的,這裏使用熵來表示。將其加入損失函數中個可以看到,這個實際上可以認爲是一項正則化項,所以也叫基於熵的正則化。訓練的話,因爲兩個部分都是可微分的,所以直接使用梯度下降就可以進行訓練。 

2-5.標籤傳播算法(Label Propagation Algorithm)

是一種基於圖的半監督算法,通過構造圖結構(數據點爲頂點,點之間的相似性爲邊)來尋找訓練數據中有標籤數據和無標籤數據的關係。是的,只是訓練數據中,這是一種直推式的半監督算法,即只對訓練集中的無標籤數據進行分類,這其實感覺很像一個有監督分類算法...,但其實並不是,因爲其標籤傳播的過程,會流經無標籤數據,即有些無標籤數據的標籤的信息,是從另一些無標籤數據中流過來的,這就用到了無標籤數據之間的聯繫

2-6.半監督SVM(Semi-Supervised Support Vector Machine,簡稱S3VM)

有監督學習中的傳統SVM試圖找到一個劃分超平面,使得兩側支持向量之間的間隔最大,即“最大劃分間隔”思想。對於半監督學習,S3VM則考慮超平面需穿過數據低密度的區域。

TSVM是半監督支持向量機中的最著名代表,TSVM主要思想是嘗試將每個未標記樣本分別作爲正例或反例,在所有結果中,尋找一個在所有樣本上間隔最大的劃分超平面。

TSVM採用局部搜索的策略來進行迭代求解,即首先使用有標記樣本集訓練出一個初始SVM,接着使用該學習器對未標記樣本進行標記,這樣所有樣本都有了標記,並基於這些有標記的樣本重新訓練SVM,之後再尋找易出錯樣本不斷調整。

2-7.生成式方法

生成式方法(generative methods)是直接基於生成式模型的方法。此類方法假設所有數據(無論是否有標記)都是由同一個潛在的模型“生成”的。這個假設使得我們能通過潛在模型的參數將未標記數據與學習目標聯繫起來,而未標記數據的標記則可看作模型的缺失參數,通常可基於EM算法進行極大似然估計求解。此類方法的區別主要在於生成式模型的假設,不同的模型假設將產生不同的方法。

      在監督學習中,生成模型的數據有C1和C2兩類數據組成,我們統計數據的先驗概率 P(C1)和 P(x|C1)。假設每一類的數據都是服從高斯分佈的話,我們可以通過分佈得到參數均值μ1,μ2和方差Σ。 

利用得到參數可以知道P(C1),P(x|C1),μ1,μ2,Σ,並利用這些參數計算某一個例子的類別

  在非監督學習中,如下圖所示,在已知類別的數據周圍還有很多類別未知的數據,如圖中綠色的數據。 

這個時候如果仍在使用之前的數據分佈明顯是不合理的們需要重新估計數據分佈的參數,這個時候可能分佈是一個類似於圓形的形狀。這裏就需要用僞標籤數據來幫助估計新的”P(C1),P(x|C1),μ1,μ2,Σ”。具體可以採用如下的EM算法進行估計 

首先對參數進行初始化,之後利用參數計算無標籤數據的後驗概率;然後利用得到的後驗概率更新模型參數,再返回step1,循環執行直至模型收斂。這個算法最終會達到收斂,但是初始化對於結果的影響也很大。

2-8.圖半監督學習

給定一個數據集,我們可將其映射爲一個圖,數據集中每個樣本對應於圖中一個結點,若兩個樣本之間的相似度很高(或相關性很強),則對應結點之間存在一條邊,邊的“強度”(strength)正比於樣本之間的相似度(或相關性)。我們可將有標記樣本所對應的結點想象爲染過色,而未標記樣本所對應的結點尚未染色。於是,半監督學就對應於“顏色”在圖上擴散或傳播的過程。由於一個圖對應了一個矩陣,這使得我們能基於矩陣運算來進行半監督學習算法的推到和分析。

圖半監督學習方法在概念上相當清晰,且易於通過對所涉矩陣運算的分析來探索算法性質。但此類算法的缺陷也相當明顯。首先是在存儲開銷上,若樣本數爲O(m),則算法中所涉及的矩陣規模未O(m2),這使得此類算法很難直接處理大規模數據;另一方面,由於構圖過程僅能考慮訓練樣本集,難以判斷新樣本在圖中的位置,因此,在接收到新樣本時,或是將其加入原數據集對圖進行重構並重新進行標記傳播,或是需引入額外的預測機制。

2-9.基於分歧的方法

與生成式方法、半監督SVM、圖半監督學習等基於單學習器利用未標記數據不同,基於分歧的方法(disagreement-base methods)使用多學習器,而學習器之間的“分歧”(disagreement)對未標記數據的利用至關重要。

基於分歧的方法只需採用合適的基學習器,就能較少受到模型假設、損失函數非凸性和數據規模的影響,學習方法簡單有效、理論基礎相對堅實、適用範圍較爲廣泛。爲了使用此類方法,需能生成具有顯著分歧、性能尚可的多個學習器,但當有標記樣本很少,尤其是數據不具有多視圖時,要做到這一點並不容易,需有技巧的設計。

2-10.半監督深度學習

2-10-1.無標籤數據初始化網絡

一個好的初始化可以使得網絡的結果準確率提高,迭代次數更少。因此該方式即是利用無標籤數據讓網絡有一個好的初始化。

初始化的兩種方法,無監督預訓練與僞有監督預訓練

無監督預訓練:用所有訓練數據訓練自動編碼器(AutoEncoder),然後把自編碼網絡的參數作爲初始參數,用有標籤數據微調網絡(驗證集)。

僞有監督預訓練:通過半監督算法或聚類算法等方式,給無標籤數據附上僞標籤信息,先用這些僞標籤信息來預訓練網絡,然後再用有標籤數據來微調網絡(驗證集)。

2-10-2.有標籤數據提取特徵的半監督學習

i)用有標籤數據訓練網絡(此時網絡一般過擬合);

ii)通過隱藏層提取特徵,以這些特徵來用某種分類算法對無標籤數據進行分類;

iii)挑選認爲分類正確的無標籤數據加入到訓練集;

重複上述過程。

想法美好,實際應用不太行,誤差會放大。

2-9-3 網絡本身的半監督學習(端到端的半監督深度模型)

ICML 2013 的文章Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks

該文章簡單的說就是在僞標籤學習中使用深度學習網絡作爲分類器,就是把網絡對無標籤數據的預測,作爲無標籤數據的僞標籤(Pseudo label),用來對網絡進行訓練。

但方法雖然簡單,但是效果很好,比單純用有標籤數據有不少的提升。其主要的貢獻在於損失函數的構造:

損失函數的第一項是有標籤數據的損失,第二項是無標籤數據的損失,

在無標籤數據的損失中, y' 爲無標籤數據預測得到的僞標籤,是直接取網絡對無標籤數據的預測的最大值爲標籤。

 其中 \alpha(t)決定着無標籤數據的代價在網絡更新的作用,選擇合適的 \alpha(t) 很重要,太大性能退化,太小提升有限。

在網絡初始時,網絡的預測時不太準確的,因此生成的僞標籤的準確性也不高。

在初始訓練時, \alpha(t) 要設爲 0,然後再慢慢增加,論文中給出其增長函數。

Semi-Supervised Learning with Ladder Networks

ladderNet 是有監督算法和無監督算法的有機結合。上面提及到的無監督預訓練+有監督微調的思想中所有監督和無監督是分開的,兩個階段的訓練相互獨立,並不能稱之爲真正的半監督學習。

無監督學習是用重構樣本進行訓練,其編碼(學習特徵)的目的是儘可能地保留原始數據的信息;而有監督學習是用於分類,希望只保留其本質特徵,去除不必要的特徵。

舉例來說:我們的分類任務判斷一張人臉圖片是單眼皮,還是雙眼皮;那麼有監督學習經過訓練完畢後,就會盡可能的把與這個分類任務無關的信息過濾掉,過濾的越好,那麼分類的精度將會更高。

比如一個人的嘴巴、鼻子信息這些都是與這個分類任務無關的,那麼就要儘量的過濾掉。

因此,基於這個原因以至於一直以來有監督學習和無監督學習不能很好的兼容在一起。

ladderNet 成功的原因在於損失函數和 skip connection 。通過在每層的編碼器和解碼器之間添加跳躍連接(skip connection),減輕模型較高層表示細節的壓力,

使得無監督學習和有監督學習能結合在一起,並在最高層添加分類器。

損失函數的第一項是有標籤樣本數據的交叉熵損失函數,第二項是無監督各層噪聲解碼器重構誤差歐式損失函數。

其他的幾種半監督網絡的具體見參考文獻[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是對模型的參數進行移動平均(weight-averaged),使用這個移動平均模型參數的就是 teacher model 。

其思想有點類似於網絡模型融合中的隨機加權平均(SWA,Stochastic Weight Averaging)。

 參考文獻

[1]. 周志華. 機器學習[M]. Qing hua da xue chu ban she, 2016.

[2].【譯文】僞標籤學習導論 - 一種半監督學習方法

[3].半監督深度學習小結

[4].深度學習的自編碼

[5].深度學習(三十二)半監督階梯網絡學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章