無監督學習只利用未標記的樣本集,而監督學習則只利用標記的樣本集進行學習。
但在很多實際問題中,只有少量的帶有標記的數據,因為對數據進行標記的代價有時很高,比如在生物學中,對某種蛋白質的結構分析或者功能鑒定,可能會花上生物學家很多年的工作,而大量的未標記的數據卻很容易得到。
這就促使能同時利用標記樣本和未標記樣本的半監督學習技術迅速發展起來。
半監督學習理論簡述:
半監督學習有兩個樣本集,一個有標記,一個沒有標記.分別記作
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]。
圖 2 TSVM算法示意圖[6]
基於圖的半監督學習方法
該類方法利用有標記和未標記數據構建數據圖,並且基於圖上的鄰接關系將標記從有標記的數據點向未標記數據點傳播(如圖3所示,其中淺灰色和黑色結點分別為不同類別的有標記樣本、空心結點為未標記樣本)。根據標記傳播方式可將基於圖的半監督學習方法分為兩大類,一類方法通過定義滿足某種性質的標記傳播方式來實現顯式標記傳播,例如基於高斯隨機場與諧函數的標記傳播[10]、基於全局和局部一致性的標記傳播[11]等;另一類方法則是通過定義在圖上的正則化項實現隱式標記傳播,例如通過定義流形正則化項,強制預測函數對圖中的近鄰給出相似輸出,從而將標記從有標記樣本隱式地傳播至未標記樣本[12]。事實上,標記傳播方法對學習性能的影響遠比不上數據圖構建方法對學習性能的影響大。如果數據圖的性質與數據內在規律相背離,無論采用何種標記傳播方法,都難以獲得滿意的學習結果。然而,要構建反映數據內在關系的數據圖,往往需要依賴大量領域知識。所幸,在某些情況下,仍可根據數據性質進行處理,以獲得魯棒性更高的數據圖,例如當數據圖不滿足度量性時,可以根據圖譜將非度量圖分解成多個度量圖,分別進行標記傳播,從而可克服非度量圖對標記傳播造成的負面影響[13]。基於圖的半監督學習方法有良好的數學基礎,但是,由於學習算法的時間復雜度大都為O(n3) ,故難以滿足對大規模未標記數據進行半監督學習的應用需求。
圖 3 標記傳播示意圖
協同訓練(co-training)的半監督算法
他們假設數據集有兩個充分冗余(sufficient and redundant)的視圖(view),即兩個滿足下述條件的屬性集:第一,每個屬性集都足以描述該問題,也就是說,如果訓練例足夠,在每個屬性集上都足以學得一個強學習器;第二,在給定標記時,每個屬性集都條件獨立於另一個屬性集。,然后,在協同訓練過程中,每個分類器從未標記示例中挑選出若干標記置信度(即對示例賦予正確標記的置信度)較高的示例進行標記,並把標記后的示例加入另一個分類器的有標記訓練集中,以便對方利用這些新標記的示例進行更新。協同訓練過程不斷迭代進行,直到達到某個停止條件。
此類算法隱含地利用了聚類假設或流形假設,它們使用兩個或多個學習器,在學習過程中,這些學習器挑選若干個置信度高的未標記示例進行相互標記,從而使得模型得以更新。