【李宏毅機器學習筆記】5、Logistic Regression
【李宏毅機器學習筆記】6、簡短介紹Deep Learning
【李宏毅機器學習筆記】7、反向傳播(Backpropagation)
【李宏毅機器學習筆記】8、Tips for Training DNN
【李宏毅機器學習筆記】9、Convolutional Neural Network(CNN)
【李宏毅機器學習筆記】11、 Semi-supervised
------------------------------------------------------------------------------------------------------
【李宏毅深度強化學習】視頻地址:https://www.bilibili.com/video/av10590361?p=22
課件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html
-------------------------------------------------------------------------------------------------------
在supervised learning中,每一個樣本 ,都有對應的label \hat 。
而Semi-supervised learning,則不僅包含 、\hat,還包含了沒label的data 。
- 通常做Semi-supervised learning,沒label的data會遠多於有label的data 。
Semi-supervised learning 有 Transductive learning和Inductive learning 兩種方法。
- 在Transductive learning中,沒label的data在testing data裏面(個人覺得testing data是指validation data那個意思)
- 在Inductive learning中,沒label的data沒在testing data裏面(個人覺得testing data是指validation data那個意思)
爲什麼是Semi-supervised learning?
- 獲取有label的data成本太高。也可以說不缺data,但缺有label的data。
- 人類也在做Semi-supervised learning
Semi-supervised Learning for Generative Model
Supervised Generative Model
這個是Supervised Generative Model(具體內容可看第4篇筆記)
Semi-supervised Generative Model
在剛纔已經有label的data的基礎上,再加上如上圖的綠色的沒label的data 。
此時,由於這些沒label的data會影響,所以最後分界線也跟着變了
具體公式怎麼做,如下。
- 初始化參數,這些參數可以用有label的data估測而來。
- 根據已有的參數,估測unlabel data屬於哪一類的概率,比如屬於class 1的概率等。
- 按照圖中所示公式,更新模型
- 重複2、3步
上圖的step 1就對應EM算法的E,step 2就對應EM算法的M 。
由第4篇筆記知道 ,Generative Model 就是根據label data生成一個能最大化Likelihood()的model。
而現在加了unlabel data,的公式就變成上圖所示的那樣。
Low-density Separation
Low-density Separation,就是說兩個類之間,如果存在一個density比較小(data比較少)的地方,那麼這兩個類的分界線應該就在這裏。
Self-training
- 通過label data 算出model(隨便什麼方法計算都可以)
- 用這個model去給unlabeled data打標籤(這個叫Pseudo-label),然後抽一些(怎麼抽隨便你)放到label data裏。
重複1、2步。
注意:方法不能用於regression的問題上。
剛纔有說過要給unlabel data 打標籤,這裏打的標籤要是hard label,體現了Low-density Separation這個方法的“非黑即白”的特點。 什麼是hard label,如上圖。
把 unlabel data 丟到 network 裏,輸出這個unlabel data屬於class 1的機率是0.7,屬於class 2的機率是0.3。
- 用hard label就是直接將這個data的target設爲class 1 。
- 用soft label,則仍然是把這個data的target設爲,和網絡的輸出是一樣的。所以後面這個data丟給網絡訓練是沒起作用的。
Self-training有一個進階版,就是Entropy-based Regularization。
Entropy-based Regularization
在這個方法中,network的不是直接輸出 x 屬於什麼class。而是輸出一個分佈,這個分佈是 x 屬於所有class的概率。
- 這個分佈,越能明確看出 x 屬於某一class就越好。
- 如果這個分佈是 x 屬於所有class的機率都差不多,那就是不好的。
這裏用entropy 來衡量這件事情。同時把這項entropy 加到原來(只有label data)的Loss Function上,所以希望這一項越小越好。
- 第一個分佈,x 屬於class 1的概率是1,符合剛纔說的比較好的情形,能明確看出x屬於某一類,此時 = 0 。
- 第三個分佈,x 屬於每一類的概率都差不多,約等於1/5,符合剛纔說的不好的情形,此時 = 。
未完待續。。。