半監督學習導論第2章:半監督學習概述

2.1 從有標籤和無標籤數據中學習

半監督學習是監督學習和無監督學習的中間地帶,可以看成是監督學習或者無監督學習的擴展,具體來說,可以分成下面幾大類:

  • 半監督分類(Semi-supervised classification):對於有監督分類問題的擴展,使用有標籤數據和無標籤數據共同訓練分類器。希望通過無標籤數據的加入,提升分類器的學習性能。
  • 帶約束聚類(Constrained clustering):對無監督聚類問題的擴展。比如在聚類時,知道哪些樣本應該在同一類,或者知道哪些樣本不能在同一類。希望獲取更好的聚類性能。

還有其他一些半監督學習比如:半監督迴歸,半監督降維。本書只關注半監督分類問題
半監督學習的研究有兩個價值:

  • 應用價值:構建性能更好的計算機算法
  • 理論價值:理解人類和機器的學習

2.2 半監督學習的可行性

半監督學習的一個假設:無標籤數據和帶標籤數據同分布。通過無標籤數據的分佈,可以學習到一個更準確的分類邊界。(這個分析似乎不太適合deeplearning時代,deeplearning中特徵都是映射得到的,如果分類器較差,映射得到的特徵本身的分佈可能並不具備某些規律)
在這裏插入圖片描述

2.3 半監督學習:歸納(INDUCTIVE) VS. 轉導(TRANSDUCTIVE)

半監督分類問題可以分成兩大類:inductive semi-supervised learning 和 transductive learning。

  • 歸納半監督學習(Inductive semi-supervised learning):給定訓練集(包含帶標籤數據和無標籤數據)和測試集,在訓練集上訓練分類器,在測試集上測試分類器的性能。
  • 轉導學習(Transductive learning):只有訓練集,學習分類器,在訓練集的無標籤數據中獲取更好的預測性能。
    歸納半監督學習像閉卷考試,學生不知道會考什麼,需要考慮所有可能的情況;轉導學習像開卷考試,學生知道什麼會被考到,不需要提前準備。

2.4 警告

使用無標籤數據來輔助提升分類器的性能看起來似乎是合理的。但是通常情況下針對某一個特定的任務盲目地選擇一種半監督算法並不會帶來性能上的提升。

2.5 Self-Training 模型

Self-Training 模型算法流程圖:

輸入:帶標籤數據 L=(xi,yi)L={(x_i,y_i)} ,無標籤數據 U=(xj)U={(x_j )}
循環:

  • 使用數據集 LL 訓練分類器 ff
  • 使用分類器預測無標籤數據集 UU
  • UU 中選擇一個子集 SS ,把 (x,f(x))xS{(x,f(x))|x∈S} 添加到 LL

Self-Training 模型的核心思想是通過模型自己預測的標籤作爲真實標籤,把無標籤數據變成僞標籤數據,然後使用僞標籤數據+帶標籤數據共同訓練分類器。有兩種迭代方式:

  • 每次從無標籤數據集 U 中選擇一個子集 S 計算標籤,其中 S 包含少量比較可靠的樣本
  • 每次都對 U 中的所有元素計算一個標籤,樣本的僞標籤每次迭代都是可變的

Self-Training 假設:模型打出的標籤,趨於正確(至少對可信度高的樣本,趨於正確)。

Self-Training 模型的優點和缺點:

  • 優點:Self-Training 模型比較簡單,適用不同的分類器,不論是簡單的knn分類器還是複雜的LSTM分類器。
  • 缺點:誤差可能會累積。如果最開始的分類器訓練得不好,分類器打出的標籤就不可靠,這樣得到的僞標籤數據訓練得到的模型性能會更差,多次迭代之後,誤差累積越來越多。

下面是一個 Self-Training 模型的例子:最初有兩個帶標籤樣本(紅色和藍色表示兩類樣本,綠色表示無標籤樣本),使用KNN作爲分類器,每次把一個樣本(最可靠的樣本)加入帶標籤數據集中,迭代過程中標籤傳播如下:
在這裏插入圖片描述
Self-Training 算法容易受到噪聲樣本的干擾,下面的例子中,由於一個離羣點的存在,僞標籤的生成發生了很大的變化。
在這裏插入圖片描述

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