self-training and co-training


半指導學習(Semi-supervised Learning)的概念說起來一點兒也不復雜,即從同時含有標注數據和未標注數據的訓練集中學習模型。半指導學習是介於有指導學習與無指導學習之間的一種機器學習方式。

在NLP領域的很多任務中,標注數據其實是很難獲取的。尤其像句法、語義等訓練資源在標注時往往需要比較深厚的專家知識(如語言學知識)作為指導,從而導致標注成本太高。盡管現在大家都在提倡標注簡單化、大眾化甚至娛樂化,但是對於這種知易行難的問題,要找到一種能利用群體智慧的標注方式又是何其難也。近年來比較熱的“眾包”技術也沒能夠有效地解決這種“專家級”標注問題。從這個角度來看,半指導學習是非常有意義而且值得研究的。上半年UIUC的高晶學姐回學校做了一次關於融合有指導學習與無指導學習的報告,我個人覺得很受啟發。

由於半指導學習本身理解起來並不難,因此概念以及定義之類的這里就不贅述了。下面主要總結一下本次活動中所討論的半指導學習方法(模型)。

Self-Training Models

自學習模型的基本假設是,分類器對樣本進行預測時,置信度高的樣本被正確分類的可能性大。比如SVM對某個樣本進行分類時,離分類界面距離較遠的那些樣本可以認為被正確分類。那么基於這個假設,自學習模型就顯得異常簡單了。假設我有兩堆數據A和B,其中A是已標注的數據,即帶Label的;而B是未標注數據。Self-Training的做法如下:

  1. 從已標注數據A中訓練一個分類模型M
  2. 用該模型對B進行預測
  3. 將預測結果中置信度高的K個樣本,連同它們的Label加入訓練數據A,並從B中刪除
  4. 回到第1步。

當然,第3步可以有很多實現方法,比如可以將B中所有樣本加入A,根據預測時置信度的不同給樣本賦予不同的權重。

自學習模型是最簡單也最易實現的半指導模型,但是簡單的東西往往不怎么好用,這世上既簡單又好用的東西實在不多。自學習的缺點在於,如果一個錯誤分類的樣本被加入了原來的訓練集,那么在其后的訓練過程中,它所犯的錯誤只會越來越深,還會誘使其他樣本犯錯,這種outlier實在罪不容恕。而自學習模型對此表示無能為力。

Generative Models

判別模型與生成模型如何區分依然是大家爭論的一個重點。推薦大家看看2009年NIPS的一個workshop:http://gen-disc2009.wikidot.com/。判別模型與生成模型的融合是我一直想做的一個課題,盡管已經在Parse Reranking上做過一些實驗,但是總是覺得不深入,對兩者的理解仍然不夠深。

生成模型在半指導學習中的應用比較簡單,我們經常遇到的高斯混合模型(GMM)就是一種典型的生成模型(當然,還有其他的混合密度分布,如混合多項式分布)。GMM總是和EM算法緊緊地捆綁在一起的。我們知道,如果在GMM中,每個樣本屬於哪個類別(高斯分布)是已知的話,那么很容易通過MLE對其進行參數估計。如果所有的樣本都不知道類別,那么我們一般使用EM算法迭代地估計其參數。前者是有指導學習,后者是無指導學習。於是很容易想到第三種情況,即部分樣本的類別已知,而剩余的樣本類別未知。這時,只需要將似然函數的形式稍作改變即可用EM算法求之。

Cluster-then-Label

從前面的EM算法在半指導學習中的運用,可以很自然地想到,無指導方法一般都可以用於半指導學習。K-Means是EM算法的一種簡單形式,那么能否將聚類用於半指導學習呢?

Cluster-then-Label,顧名思義:先聚類,再分類。其算法如下:

  1. 對所有樣本(包括已標注數據A和未標注數據B)進行聚類
  2. 對於聚類結果中的每個簇,執行第3、4步。令S為該簇中已標注的樣本
  3. 如果S非空,那么在S上學習一個分類器,並對該簇中未標注的樣本進行預測
  4. 如果S為空,那么根據所有已標注的數據來預測該簇中未標注的樣本

這樣,我們就得到的所有樣本的類別。想法非常簡單,但是究竟效果好不好還有待實驗進行驗證。

Co-Training

第一次接觸Co-Training這個詞是在大三的時候,那時對機器學習幾乎沒有什么概念,腦海里只充滿了對人工智能各種各樣的幻想。那時對Co-Training的理解是:有兩個Robots,能夠相互Teaching,相互Learning。聽起來很高深的樣子,呵呵。后來證明真實的Co-Training也與之差相仿佛了。

Co-Training又叫協同訓練或協同學習,是一種MultiView算法。Multiview是指認識事物的多個角度。比如對於“月亮”,我們會在腦海里浮現出一輪飛鏡似的明月,或圓或缺,或明或暗,我們甚至還會聯想到古代詞人吟風弄月的很多佳句。當然也有人會立刻聯想到月亮的各種特征,比如它是地球的衛星,它的表面有環形山,它繞地運行……等等一系列特征。這便是看待同一件事物的兩個角度。那么從不同的角度看待訓練數據,我們能夠得到不同的特征空間。而在不同的特征空間中,我們又能夠得到不同的分類模型。這就是Co-Training的基本思想。

協同訓練的過程如下:假設數據有兩種特征表達,比如圖像特征(X-1, Y-1)和文本特征(X-2, Y-2)。對於未標注數據同樣有兩種View。算法如下:

  1. 從(X-1, Y-1),(X-2, Y-2)分別訓練得到兩個個分類模型F-1,F-2
  2. 分別使用F-1與F-2對未標注數據進行預測
  3. 將F-1所預測的前K個置信度最高的樣本加入F-2的訓練數據集
  4. 將F-2所預測的前K個置信度最高的樣本加入F-1的訓練數據集
  5. 回到第1步

基本的Co-Training算法還是很簡單的。如何將其應用到NLP的Task里又有很多研究點。我覺得從Co-Training的思想出發可以稍微幫助理解一下人工智能。一直以為人工智能一定是群體作用的結果,一個封閉的自學習系統是很難激發出智能的,除非本身擁有一個非常強大的知識集和歸納、演繹系統。一個智能體,在幼兒時主要依靠專家指導(我們的父母親人)來強化自身的學習系統(人腦神經網絡),在學習系統成長的過程中,我們也在不斷地和我們的同伴相互對比,相互學習。在這不斷地碰撞和啟發中,我們才漸漸地擁有了知識和對事物准確的判斷力。人的這種獲取智能的方式應該是值得機器學習方法所借鑒的。或許有一天,我們真的能夠模擬人腦的思維,而不再僅僅是模擬人類的行為。

Semi-supervised learning methods widely used include:

1.EM with generative mixture models

2.self-training

3.co-training

4.transductive support vector machines

5.graph-based methods

self-training:

A classifier is first traind with the small amount of labeled data. The classifier is then used to classify the unlabeled data. Typically the most confident unlabeled data points, together with their predicted labels, are added to the training set. The classifier is re-trained and the procedure repeated.

When the existing supervised classifier is complicated and hard to modify, self-training is a practical wrapper method. Applied to several natural language processing tasks, word sense disambiguation, parsing, machine translation and object detection system from images.

co-training

Co-training assumes that features can be split into two sets. Each sub-features is sufficient to train a good classifier. The two sets are conditionally independent given the class. Initially two seperate classifiers are trained with the labeled data, on the two sub-features sets respectively. Each classifier then classifies the unlabeled data, and ‘teaches’ the other classifier with the few unlabeled examples(and the predicted labels) they feel most confident.

Each classifier is retrained with the additional training examples given by the other classifer, and the process repeats.

When the features naturally split into two sets, co-training may be appropriate.

 

references:

http://www.jiangfeng.me/blog/tag/self-training

http://blog.csdn.net/bookwormno1/article/details/7024929

 

原文:http://www.leexiang.com/self-training-and-co-training


免責聲明!

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



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