Semi-Supervised Learning理解: 李弘毅ML筆記(2016)

甘樂
14 min readOct 24, 2020

--

內容來自於台大李宏毅老師的機器學習課程(2016)影片

前言:

由於上一篇文章的結尾提到要看兩篇Semi-supervised的論文,但發現沒點扎實的基礎真的看不懂在寫甚麼鬼😅(我對於Semi-supervised的了解只有最粗淺的「可使用labeled data & unlabeled data訓練模型」🥺),還是乖乖從頭學起吧~

1. Semi-supervised簡介:

  1. 能使用unlabeled data和labeled data訓練模型
  2. 通常用在unlabeled data數量 >> labeled data的情況
  3. Semi-supervised分為2種: Transductive learning & Inductive learning
  4. Transductive learning: unlabeled data=testing set(用testing set的feature不算作弊~用label才是)
  5. Inductive learning: unlabeled data=/=testing set

2. Semi-supervised的功用

這裡以二元分類任務為例:

圖一: input space的資料分布,有色為labeled data,無色為unlabeled data

圖一為貓狗二元分類,unlabeled data可能影響最終的decision boundary

但有些unlabeled data可能是狗,只因背景跟labeled data的貓一樣都是綠的

因此若要使用unlabeled data訓練出更精確的decision boundary,則unlabeled data的分布應遵從某些假設

3. Semi-supervised Learning for Generative Model

3-1. Supervised Learning for Generative Model

對於給予的labeled training set會去估計其:

  1. Prior probability,表示Ci在所有class中出現的機率: P(Ci)
  2. Class-conditional density function(影片中稱class-dependent probability),表示Ci出現x的機率: P(x|Ci)
    若P(x|Ci)為高斯分布,則可用μ(mean), Σ(covariance matrix)參數化表示(模型也是估測此2個參數)
  3. Posterior probability,表示x是Ci的機率(其實就是分類): P(Ci|x)
圖二: 監督式學習的生成模型

詳細理論可以參考以下文章:

貝氏決策法則(Bayesian decision rule): 最大後驗機率法(Maximum a posterior, MAP)

貝葉斯推斷的運作原理

3-2. Semi-supervised Learning for Generative Model

unlabeled data會影響prior, class-dependent probability的估計,並影響posterior。

圖三: 由於unlabeled data的出現,使得P(Ci)在input space中的分布可能會改變

3-3. 重要理論(與下面實作流程有關)

圖四: 僅有labeled data情況下,模型的訓練目標

如上圖所示,若資料只有labeled data,則訓練目標為最大化每個training example的likelihood/log likelihood,非常直觀。

圖五: 包含labeled data & unlabeled data情況下,模型的訓練目標

若資料包含labeled data & unlabeled data,前半部維持不變(這裡影片寫錯了),但我們不知道unlabeled data屬於哪個class,要怎麼估計likelihood?

圖六: unlabeled data的log likelihood的計算方法

如圖六所示,就當作unlabeled data都有可能屬於每個class:

「unlabeled data對於Ci的class-dependent probability P(x|Ci) 」* 「Ci的prior P(Ci)」的總和

3-4. 實作流程(影片以二元分類為例)

先初始化模型參數θ(e.g. P(C), μ, Σ),可透過random initialize或用labeled data先訓練產生

Step 1. 對每一筆unlabeled data xu計算對於每個類別的後驗機率Pθ(Ci|xu)

Step 2. 更新θ,方法如下(影片只有P(Ci)和μi,但其他參數更新方式也一樣):

先驗機率P(Ci)的計算很直觀,就是:

「所有屬於Ci的labeled data數 + 每個unlabeled data與Ci的後驗機率總和」除以「樣本總數」

Ci的μi的計算也是一樣直觀,就是:

「所有屬於Ci的labeled data平均」 + 「每個unlabeled data與Ci的後驗機率與自己的乘積總和(weighted sum) 除以 每個unlabeled data與Ci的後驗機率總和

會一直疊代Step1, 2,直到模型收斂

圖七: 半監督式學習生成模型的training algorithm

到這邊先消化一下吧,沒想到統計還蠻多的😅,因為之前並沒有熟讀統計,因此這地方花了蠻多時間的,接下來就是半監督式學習的資料分布假設~

4. Low-density Separation

圖八: 比讚的boundary比較合理

照圖八來看,就是decision boundary會出現在data比較稀疏的地方,其中最代表性的方法就是self-training:

4-1. Self-training

概念很簡單,一開始也會有labeled data & unlabeled data

先用labeled data訓練一個model f*,再把unlabeled data丟給f*預測結果,結果就當作unlabeled data的label(此label稱pseudo-label)。

再從這些pseudo-labeled data挑一些進labeled data set,至於該怎麼加就得自己想辦法了(啟發式方法之類的)。

最後再用混合後的labeled data set回去訓練model f*。

圖九: Self-training

這裡老師問了有趣的問題,這方法能用在迴歸上嗎?

其實不行,因為迴歸的預測資料完全取自迴歸線上,就算加多了這些pseudo-labeled data也不會改變訓練結果。

另一個問題:所以self-training跟Low-Density關聯在哪?

Low-Density的特色就是非黑即白(boundary只在稀疏的地方就是希望把data分的很徹底),也就是只允許資料完全屬於某個class,而不是70%屬於class 1,30%屬於class 2之類的,可參考下面的Hard label vs Soft label概念~

4–2. Hard label vs Soft label

Self-training方法使用的是hard label,因為它會強制將unlabeled data歸類為某個class

但第3節提到的半監督式生成模型屬於Soft label,它同時都屬於各個class(依照其posterioi probability分配)

如果使用的模型是NN,一定要使用hard label,因為soft label結果完全跟一開始參數一樣

圖十: NN使用Hard label vs Soft label

4-3. Entropy-based Regularization

在圖十三就可知道為何此方法稱作Regularization,就是在Loss function後加上一個專屬unlabeled data的Entropy,來讓模型避免overfitting。

Entropy-based Regularization為self-training進階版,不像hard label這麼強硬(大概會讓unlabeled data高機率屬於某class,但不會100%屬於),如圖十一所示:

圖十一: 分散的distribution不好,集中的才好

以下為衡量output distribution的方法:

用Entropy表示distribution是集中還是分散Entropy越小越好表示distribution越集中,如圖十二所示:

圖十二: distribution越寬,Entropy越大

所以它必須在labeled data上分類正確,在unlabeled data上Entropy越小越好,重新設計過的loss function如圖十三:

圖十三: labeled data部分就用平常的cross-entropy之類的就行,還可以加上weight來分配兩者比重

5. Smoothness Assumption

簡單來說就是相似的x,y會相同,但更精確的假設是:

  1. x的分布是不均勻的(某些地方很集中,某些地方很分散)
  2. 2資料x¹, x²彼此在input space中的high density區域中很接近

所以x¹, x²兩者的label y¹, y²可能會相同,更直觀可以參考圖十四:

圖十四: x¹, x²在high density區域有path cinnection(unlabeled data組成的過渡型態),所以兩者可能為同個label,但跟x³的label可能就不一樣,因為中間有low density區域

真實例子的smooth assumption中,兩資料中間可能有很多連續變化(過渡型態),e.g.手寫數字2的兩種寫法(圖十五)或眼睛朝左、朝右的人臉(圖十六)

圖十五: 就算右邊的2長得很像3,但兩者之間永遠不會有過渡型態
圖十六: 雖然朝左和朝右的臉差很多,但unlabeled data中可能有過渡型態

Smoothness assumption應用在文件分類(影片為分類天文和旅遊文章)可能有用,但需要收集到很多unlabeled data,因為word非常多,任意兩文件間重複的word是很少的(圖十七),圖十八為有重複word的文章分類:

圖十七: 收集的unlabeled data不夠多,兩文本中間沒有重複word,無法過渡
圖十八: 需收集很多unlabeled data才有重複的文字,才能過渡到另一篇文章

5-1. 實踐Smoothness Assumption: Cluster後再label(但cluster要很強,其實不容易,做出來效果不好很正常)

圖十九: 因為cluster 1的class 1 labeled data比較多,所以cluster 1的data都視為class 1

5-2. 實踐Smoothness Assumption: Graph-based Approach

以graph來表示high-density區域的path connection:

也就是把所有x建立成類似演算法中的無向圖(圖二十),只要任意兩點中有path連接,兩點就屬於同個class

圖二十: 將資料點表示成graph

5-3. 如何建立graph?

  1. 先定義2資料點的相似度怎麼算(老師這裡建議可以用Radial Basis Function來定義相似度)
  2. 加入edge,可以用KNN, e-Neighborhood
  3. 加入edge weight(就用相似度就可以了)
圖二十一: Graph connection,右下圖中的綠點與橘點雖然近,但因為Radial Basis Fuction中取exp讓橘點不會跟綠點相連,exp只會讓非常近的2點相連

5-4. labeled data不只影響相連的unlabeled data

labeled data會賦予相連的unlabeled data相同的class,且得到class的unlabeled data還會去影響與它相連的unlabeled data(像傳染病那樣)。但data必須夠多,否則graph會斷掉(圖二十二):

圖二十二: data必須夠多才能繼續相連

5-5. Label smoothness

主要是衡量graph上的label有多smooth(圖二十三):

「graph上任意兩點的label差方」*「兩點的edge weight」的總和(影片中還要再乘0.5只是方便計算,無特別意義)

圖二十三: s越小代表此graph越smooth,所以左圖比較smooth

公式S可改為更簡潔的表示: yTLy(T是上標,轉置矩陣的意思,但medium的上標好像只能打數字==)

  1. y:(R+U)維向量,包含所有labeled data+unlabeled data的label
  2. L(Graph Laplacian): (R+U)*(R+U)維矩陣,為矩陣D — 矩陣W
  3. 矩陣W很像演算法中的Graph matrix,entry為任兩點的edge weight
  4. 矩陣D為對角矩陣,就是把W的row做sum,比如(1,1)的值就是點x¹的edge weight總和,(2,2)的值就是點x²的edge weight總和…….以此類推。
圖二十四: Label smoothness的數學補充

最後可以這樣更改Loss function(圖二十五):

圖二十五: 算smoothness時不一定要放在output,可放在NN中任何地方

結語:

老師雖然提到了3個method(generative model, low-density, graph-based)和2個假設,但其實還有個manifold假設,而且光看這些method而沒有實作還挺抽象的。

而且老師介紹的完全是機器學習的領域,有點太舊了,現在的半監督式在深度學習已經進展蠻快了,而我的論文研究也是有關半監督式深度學習,之後會找時間統整一下。

結果已經連續5天沒發新文章了,我真的混...😰

--

--

No responses yet