李宏毅機器學習課程筆記-10.2生成模型中的半監督學習

生成模型中的半監督學習:Semi-supervised Learning for Generative Model

有監督生成模型

有監督生成模型:Supervised Generative Model

如下圖所示,在有監督生成模型中,得到\(P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\)後,就可以計算出\(x\)屬於類別\(C_i\)的概率\(P(C_i|x)\)

img

半監督生成模型

半監督生成模型:Semi-supervised Generative Model

基於有監督生成模型,當有了無標籤數據之後(下圖中綠色圓點),我們會明顯發現有監督生成模型中的\(P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\)並不夠正確,比如2個類別的分佈應該接近於下圖中虛線圓圈、先驗概率\(P(C_1)\)應該小於\(P(C_2)\),所以應該使用無標籤數據重新估計\(P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\)

img

直觀理解

具體來講,按照以下步驟進行計算:

  1. 初始化參數:\(\theta=\{P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\}\)

    可以隨機初始化,也可以用有標籤數據估算

  2. 通過\(\theta\)計算每個樣本\(x^u\)屬於類別\(C_i\)的概率\(P_\theta(C_i|x^u)\)

  3. 更新參數\(\theta\)(其實重點就是如何同時利用有標籤數據和無標籤數據實現半監督)

  • \(P(C_1)=\frac{N_1+\sum_{x^u}P(C_1|x^u)}{N}\),其中\(N\)是所有樣本的數量、\(N_1\)是屬於類別\(C_1\)的樣本的數量。
  • \(\mu^1=\frac{1}{N_1}\sum_{x^r\in C_1}x^r+\frac{1}{\sum_{x^u}P(C_1|x^u)}\sum_{x^u}P(C_1|x^u)x^u\),其中\(x^r,x^u\)分別指有標籤的樣本和無標籤的樣本

同理可知其它參數的計算和更新方法

  1. 返回第2步

理論上,上述步驟是可以收斂的,但參數\(\theta\)的初始化值會影響結果。其實上面的第2步是EM算法中的E,第3步是EM算法中的M。

理論推導

\(\theta=\{P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\}\)

  • Maximum likelihood with labelled data

    使得\(logL(\theta)=\sum_{x^r}logP_\theta(x^r, \hat y^r)\)最大(有一個Closed-form solution),其中每個有標註樣本\(x^r\)\(P_\theta(x^r,\hat y^r)=P_\theta(x^r|\hat y^r)P(\hat y^r)\)

  • Maximum likelihood with labelled & unlabeled data

    使得\(logL(\theta)=\sum_{x^r}logP_\theta(x^r, \hat y^r)+\sum_{x^u}logP_\theta(x^u)\)最大(該式並不是凹函數,所以需要迭代求解),其中每個無標註樣本\(x^u\)\(P_\theta(x^u)=P_\theta(x^u|C_1)P(C_1)+P_\theta(x^u|C_2)P(C_2)\)


Github(github.com):@chouxianyu

Github Pages(github.io):@臭鹹魚

知乎(zhihu.com):@臭鹹魚

博客園(cnblogs.com):@臭鹹魚

B站(bilibili.com):@絕版臭鹹魚

微信公衆號:@臭鹹魚

轉載請註明出處,歡迎討論和交流!


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