【機器學習】半監督學習

傳統的 機器學習 技術分爲兩類,一類是無監督學習,一類是監督學習。

無監督學習只利用未標記的樣本集,而監督學習則只利用標記的樣本集進行學習。css

但在不少實際問題中,只有少許的帶有標記的數據,由於對數據進行標記的代價有時很高,好比在生物學中,對某種蛋白質的結構分析或者功能鑑定,可能會花上生物學家不少年的工做,而大量的未標記的數據卻很容易獲得。html

這就促使能同時利用標記樣本和未標記樣本的半監督學習技術迅速發展起來。算法

 

半監督學習理論簡述:


半監督學習有兩個樣本集,一個有標記,一個沒有標記.分別記做iview

Lable={(xi,yi)},Unlabled={(xi)}.而且數量上,L<<U.機器學習

1.      單獨使用有標記樣本,咱們可以生成有監督分類算法分佈式

2.      單獨使用無標記樣本,咱們可以生成無監督聚類算法函數

3.      二者都使用,咱們但願在1中加入無標記樣本,加強有監督分類的效果;一樣的,咱們但願在2中加入有標記樣本,加強無監督聚類的效果.性能

 

通常而言,半監督學習側重於在有監督的分類算法中加入無標記樣原本實現半監督分類.也就是在1中加入無標記樣本,加強分類效果.學習

 

半監督學習的動力,motivation


某人討論的時候,老是教導咱們的詞,motivation.一下午四五遍地強調寫論文要有motivation.下面說說半監督學習的motivation.優化

1.      有標記樣本難以獲取.

須要專門的人員,特別的設備,額外的開銷等等.

2.      無標記的樣本相對而言是很廉價的.

3.      還有一點就是機器學習的光輝前景.

 

半監督學習與直推式學習的區別:


這個網上也有論述.主要就是半監督學習是概括式的,生成的模型可用作更普遍的樣本;而直推式學習僅僅爲了當前無標記樣本的分類.

簡單的說,前者使用無標記樣本,爲了之後其餘樣本更好的分類.

後者只是爲了分類好這些有限的無標記樣本.

 

下面幾個圖來生動形象地詮釋半監督的好處:

 

上圖中,只有兩個標記樣本,X,O,剩下綠點是無標記的樣本.經過無標記樣本的加入,原來的分類界限從0移到了0.5處,更好地擬合了樣本的現實分佈.

 

半監督學習算法分類:


1.      self-training(自訓練算法)

2.      generative models生成模型

3.      SVMs半監督支持向量機

4.      graph-basedmethods圖論方法

5.      multiview learing多視角算法

6.      其餘方法

 

接着簡單介紹上述的幾個算法

 

self-training算法:

仍是兩個樣本集合:Labled={(xi,yi)};Unlabled= {xj}.

執行以下算法

Repeat:

1.      L生成分類策略F;

2.      F分類U,計算偏差

3.      選取U的子集u,即偏差小的,加入標記.L=L+u;

重複上述步驟,直到U爲空集.

 

上面的算法中,L經過不斷在U中,選擇表現良好的樣本加入,而且不斷更新子集的算法F,最後獲得一個最有的F.

 

Self-training的一個具體實例:最近鄰算法

記d(x1,x2)爲兩個樣本的歐式距離,執行以下算法:

Repeat:

1.      L生成分類策略F;

2. 選擇x = argmin d(x, x0). 其中x∈U,min x0∈L.也就是選擇離標記樣本最近的無標記樣本.

2.      F給x定一個類別F(x).

3.      (x,F(x))加入L中

重複上述步驟,直到U爲空集.

 

上面算法中,也就是定義了self-training的」偏差最小」,也就是用歐式距離來定義」表現最好的無標記樣本」,再用F給個標記,加入L中,而且也動態更新F.

 

下面是這種算法的效果圖:

 

上圖從兩個點出發,不斷加入最近鄰點,不斷更新F.

上面的算法表現良好,固然更多的是表現很差.以下:

 


生成模型


生成算法來源於假設,好比咱們假設原樣本知足高斯分佈,而後用最大釋然的機率思想來擬合一個高斯分佈,也就是經常使用的高斯混合模型(GMM).

簡單介紹下高斯混合模型:

假設以下的樣本分佈:

咱們假設他們知足高斯分佈.

高斯分佈的參數有: θ = {w1, w2, µ1, µ2, Σ1, Σ2}

利用最大釋然的思想,最大化以下機率:

p(x, y|θ) = p(y|θ)p(x|y, θ).

獲得以下的假設分佈:

 

順便貼一個介紹高斯混合模型日誌:

http://blog.csdn.net/zouxy09/article/details/8537620


接着是咱們的半監督生成算法:


樣本分佈以下:

算法事後,獲得以下分佈:


對比這兩個圖,說明下高斯混合模型與半監督生成模型的區別:

 

這兩種方法的釋然函數不一樣,前者最大化標記樣本出現機率,後者加入了無標記樣本出現機率.

算法的具體實現,請參見E-M算法.

這樣生成的算法也有許多不良表現,以下:

假設原始的分佈式這樣的:


經過GMM,它變成了這樣:


幾個須要注意的地方:

1.      高斯混合的局部收斂性

2.      減小無標記樣本的權值

 

半監督SVM,圖算法模型,流行模型等.


SVM的理論再也不贅述,就是一個最優超平面:

偷一張很牛逼的SVM圖:



這些內容涵蓋比較普遍,一篇日誌裝不下.有興趣地能夠進一步瞭解.

 

最後是小結


上兩張圖:

基於生成式模型的半監督學習方法


該類方法一般是把未標記樣本屬於每一個類別的機率當作一組缺失參數,而後採用EM (expectation-maximization) 算法對生成式模型的參數進行極大似然估計。不一樣方法的區別在於選擇了不一樣的生成式模型做爲基分類器,例如混合高斯(mixture of Gaussians)[3]、混合專家 (mixture of experts)[1]、樸素貝葉斯(na ve Bayes)[4]。雖然基於生成式模型的半監督學習方法簡單、直觀,而且在訓練樣本,特別是有標記樣本極少時可以取得比判別式模型更好的性能,可是當模型假設與數據分佈不一致時,使用大量的未標記數據來估計模型參數反而會下降學得模型的泛化能力[5]。因爲尋找合適的生成式模型來爲數據建模須要大量領域知識,這使得基於生成式模型的半監督學習在實際問題中的應用有限。




 


 基於低密度劃分的半監督學習方法


該類方法要求決策邊界儘可能經過數據較爲稀疏區域,以避免把聚類中稠密的數據點分到決策邊界兩側。基於該思想,Joachims[6]提出了TSVM算法(如圖2所示,其中實線爲TSVM的分類邊界、虛線爲不考慮未標記數據的SVM分類邊界)。在訓練過程當中,TSVM算法首先利用有標記的數據訓練一個SVM並估計未標記數據的標記,而後基於最大化間隔準則,迭代式地交換分類邊界兩側樣本的標記,使得間隔最大化,並以此更新當前預測模型,從而實如今儘可能正確分類有標記數據的同時,將決策邊界向數據分佈相對稀疏的區域。然而,TSVM的損失函數非,學習過程會所以陷入局部極小點,從而影響泛化能力。爲此,多種TSVM的變體方法被提出,以緩解非損失函數對優化過程形成的影響,典型方法包括肯定性退火[7]CCCP直接優化[8]等。此外,低密度劃分思想還被用於TSVM之外的半監督學習方法的設計,例如經過使用對半監督學習進行正則化,迫使學習到的分類邊界避開數據稠密區域[9]


BA4


 2  TSVM算法示意圖[6]




 基於圖的半監督學習方法


該類方法利用有標記和未標記數據構建數據圖,而且基於圖上的鄰接關係將標記從有標記的數據點向未標記數據點傳播(如圖3所示,其中淺灰色和黑色結點分別爲不一樣類別的有標記樣本、空心結點爲未標記樣本)。根據標記傳播方式可將基於圖的半監督學習方法分爲兩大類,一類方法經過定義知足某種性質的標記傳播方式來實現顯式標記傳播,例如基於高斯隨機場與函數的標記傳播[10]、基於全局和局部一致性的標記傳播[11]等;另外一類方法則是經過定義在圖上的正則化項實現隱式標記傳播,例如經過定義流形正則化項,強制預測函數對圖中的近鄰給出類似輸出,從而將標記從有標記樣本隱式地傳播至未標記樣本[12]。事實上,標記傳播方法對學習性能的影響遠比不上數據圖構建方法對學習性能的影響大。若是數據圖的性質與數據內在規律相背離,不管採用何種標記傳播方法,都難以得到滿意的學習結果。然而,要構建反映數據內在關係的數據圖,每每須要依賴大量領域知識。所幸,在某些狀況下,仍可根據數據性質進行處理,以得到魯棒性更高的數據圖,例如當數據圖不知足度量性時,能夠根據圖譜將非度量圖分解成多個度量圖,分別進行標記傳播,從而可克服非度量圖對標記傳播形成的負面影響[13]。基於圖的半監督學習方法有良好的數學基礎,可是,因爲學習算法的時間複雜度大都爲O(n3) ,故難以知足對大規模未標記數據進行半監督學習的應用需求。


BA5


 3  標記傳播示意圖






協同訓練(co-training)的半監督算法


他們假設數據集有兩個充分冗餘(sufficient and redundant)的視圖(view),即兩個知足下述條件的屬性集:第一,每一個屬性集都足以描述該問題,也就是說,若是訓練例足夠,在每一個屬性集上都足以學得一個強學習器;第二,在給定標記時,每一個屬性集都條件獨立於另外一個屬性集。,而後,在協同訓練過程當中,每一個分類器從未標記示例中挑選出若干標記置信度(即對示例賦予正確標記的置信度)較高的示例進行標記,並把標記後的示例加入另外一個分類器的有標記訓練集中,以便對方利用這些新標記的示例進行更新。協同訓練過程不斷迭代進行,直到達到某個中止條件。


此類算法隱含地利用了聚類假設或流形假設,它們使用兩個或多個學習器,在學習過程當中,這些學習器挑選若干個置信度高的未標記示例進行相互標記,從而使得模型得以更新。

相關文章
相關標籤/搜索