半監督學習(二)——方法介紹


Semi-Supervised Learning

半監督學習(二)

 

  介紹

    在上篇文章中我們介紹了關於統計機器學習和半監督學習的一些基本概念。在這篇文章中,我們仍着重帶讀者更深入地了解半監督學習基礎,了解半監督學習的常用方法,模型假設,並且通過實例帶讀者去理解半監督學習的過程。難度依然較基礎,但是相信讀完這篇文章,你會對半監督學習是什么有完整的把握。

 

半監督學習方法   

     半監督學習方法有很多,不同的方法往往基於邊緣分布P(x)與條件分布P(y|x)之間關系的不同假設。

  通常我們將半監督方法分為以下幾類:self-training, probabilistic generative models, co-training, graph-based models, semi-supervised support vector machines等,在接下來的內容中,我們將分別介紹這些方法以及它們所基於的假設。

  雖然半監督的方法很多,但是如果盲目地選擇並不一定能提升監督學習的表現,事實上,使用錯誤的假設,無標簽數據反而會使模型的表現更差。

  下面,我們通過簡單的例子來證明模型假設的敏感性,通過比較在簡單分類問題上,監督學習和半監督學習的表現來闡述。

  例子

      有一個二分類問題,每個類服從高斯分布,且這兩個類的高斯分布大量重疊,如下圖所示:

 image.png

  可以看出,真實的決策邊界就在兩個分布的中間(黃線),由於我們知道真實分布,我們可以根據落在決策邊界不正確一側的每個高斯概率質量來計算測試樣本錯誤率。由於類分布的重疊,最優誤差率(Bayes誤差)為21.2%。

 

  不同算法表現比較

    image.png

 

  • 監督學習:從圖中可以看出,學習到的決策邊界位於兩個有標簽樣本(忽略無標簽數據,即圖中綠色的點)的中間,偏離了真實的決策邊界,根據有標簽數據的隨機采樣不同,學習到的決策邊界也不同,但是大概率地也會偏離真實邊界。為了比較監督學習和半監督學習的表現,我們采樣了1000個樣本點,其中每一種類別分別采樣一個有標簽數據和99個無標簽數據(如上圖五組測試樣例),在該訓練集上通過監督學習得到的決策邊界的分類錯誤率為31.6%,雖然決策邊界的均值是0.02(很接近真實邊界0),但是標准差為0.72;

 

  下面幾種算法屬於半監督學習,今天我只對比實驗效果,下一篇文章中會給出每一種模型的詳細介紹:

 

  • 概率生成模型(Generative model):通過EM學習兩個高斯分布(該模型做出了正確的假設),從圖中可以看出,學習到的決策邊界比較接近真實邊界,而且方差也比較小。其在1000個樣本上的平均誤差為30.2%,平均決策邊界為-0.003,標准差為0.55,表明該算法比監督學習更優;

  • 半監督支持向量機(S3VM):它假設決策邊界不應該通過密集的樣本區域,然而我們的兩類樣本重疊比較嚴重,所以真實的邊界其實是闖過點密集的區域的(假設不成立)。這種狀況下學習到的決策邊界又會怎么樣呢?從圖中我們可以看出學習到的決策邊界仍優於監督學習,和生成模型方法效果差不多。平均誤差為29.6%,平均決策邊界為0.01,標准差為0.48。可以看到,雖然模型假設是錯誤的,但由於該方法使用的兩種類別樣本數相同(太理想),所以決策邊界接近於中心;

  • 基於圖的模型(graph-based):標記數據和未標記數據兩兩之間都用一條邊相連,邊權重用兩點之間的距離來衡量(近則權重大)。該模型的假設是兩個點之間的權重越大越趨於同一個類。顯然,這個假設在我們的樣本上並不成立(分布重疊區靠的近的點可能屬於不同的類),那它的表現如何呢?它的錯誤率是36.4%,平均決策邊界是0.03,標准差是1.23,表現比監督學習還差得多。

  上面的實驗說明模型假設在半監督學習中至關重要,它彌補了標簽缺失的不足,決定了判別器的質量,然而做出正確假設仍然是半監督學習中待解決的問題。

    

  接下來,我們先介紹一種簡單的半監督學習模型Self-Training Model 作為半監督算法學習的入門。

 

 

Self-Training

  Self-Training是最經典的半監督學習方法,他的特點是學習的過程是使用自己的預測器來自學習,因此也叫自學習模型。

  算法偽代碼:

image.png

image.png

    算法的主要思想是先在有標簽數據上訓練一個模型f,然后用f取預測無標簽數據,然后取出部分數據加入有標簽數據集,然后又在擴充后的有標簽數據集上重新訓練模型,重復上述流程。

 

 Self-Training Assumption:

    該算法基於的假設是訓練出來的模型很大概率是正確的。它的優點是簡單,模型的選擇也是開放的,比如可以是簡單的kNN模型,或者非常復雜的分類器,通過一層層“包裹”分類模型而不改變實際內部機制。這種模型在很多場景下都適用,比如自然語言處理中,因為模型通常是復雜的黑盒模型,不適應變化。但是,由於初始有標簽樣本比較少,學習到的模型並不好,生成錯誤標簽的數據反而會使得在下一輪生成更加錯誤的模型,當然,很多啟發式的方法已經被用來改善這個問題,比如propagating 1-nearest-neighbor算法。

 

propagating 1-nearest-neighbor

 

image.png

    算法的思想是每一輪都選一個距離有標簽數據集中某一個點最近的無標簽數據,並打上相同的標簽加入有標簽數據集中,循環直到所有無標簽數據都打上標簽。我們來看該算法的一個應用:

假設有100個樣本其中只有2個有標簽分別表示男性和女性,其他98個沒有標簽,每個樣本有兩個維度特征(weight & height),現在要為98個人預測其性別。

下圖展現了使用propagating 1-nearest-neighbor算法一定輪數的迭代后樣本的分類狀況。由於該算法的假設(這些類形成分類良好的簇)符合實驗樣本的分布,所以模型的效果很好。

 

 image.png

 

  接着我們在上一個實驗中的兩個類之間添加一個離群點,這個離群點打破了上述假設,來看看實驗效果如何吧?

 

image.png

 

    顯然,self-training方法,比如說propagating 1-nearest-neighbor對離群點很敏感會導致錯誤。

 

總結:

    今天的內容仍然是半監督學習的入門內容,結合上一篇文章相信你已經理解了什么是半監督學習,以及半監督學習一般的學習過程,接下來的文章會開始詳細介紹和分享幾種經典的,以及近幾年提出的半監督學習算法!

    

  希望大家多多支持我的公眾號,掃碼關注,我們一起學習,一起進步~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM