我們知道監督式學習(Supervised Learning)就是有一堆Label好的訓練資料,而半監督式學習是我們有一組Label好的訓練資料,另外還有一組Unlabel的訓練資料,並且Unlabel的資料遠大於Label的資料。
半監督式學習可以分成兩種:Transductive Learning以及Inductive Learning。在做Transductive Learning的時候,你的Unlabeled data就是你的測試資料,而Inductive Learning就是我們不考慮測試資料,也就是我們不知道測試資料是什麼。
為什麼叫做半監督式學習呢?因為很多人會說我們沒有data,但其實我們不會沒有data,我們只是缺少有Label的data,所以半監督式學習如果可以利用這些Unlabel的data來做某些事的話,會是很有價值的。
監督式學習的生成模型在分類(Classification)(上)有講過了,在監督式學習裡面,你有一堆訓練資料,你知道他們分別是屬於class 1還是class 2,然後你會去估測class 1和class 2的事前機率(Prior probability) ,接著你會去估測 。假設每一個class的分佈都是Gaussian distribution的話,那你會估測這個class 1是從mean是 ,covariance是 的Gaussian估測出來的,而這個class 2是從mean是 ,covariance也是 的Gaussian估測出來的。有了這些你就可以估測新的data是屬於class 1的機率,那你會決定一個boundary的位置,就可以完成分類。
而如果給了我們一些Unlable的data,它就會影響你的決定,假設下圖中綠色的點是Unlabeled data,那如果你的mean和variance是 顯然很不合理,應該要是虛線所畫出來的樣子,而prior也會受到影響,舉例來說,我們本來覺得這兩個Labeled data是一樣多的,但看了這些Unlabeled data以後,你或許會覺得class 2的data其實是比較多的,它的Prior probability應該是比較大的。
Low-density Separation意思就是在兩個class之間有一個很明顯的鴻溝,也就是在這兩個class的交界處的density是低的,幾乎不會有data。
Self-training是Low-density Separation最具代表性、最簡單的方法,假設我們有一些Labeled data和Unlabeled data,接下來訓練一個model ,根據 去Label你的Unlabeled data,就是把 丟進去 看輸出 是什麼,就是你的Labeled data,這件事我們稱之為Pseudo-label。再來你要從你的Unlabeled data set裡面拿出一些data加進去Labeled data裡面,而得到更多Labeled data之後,就可以再回去訓練你的model。
Self-training很像是前面提到的Generative Model裡面用的方法,唯一的差別是在Self-training你用的是Hard lebel,在Generative Model用的是Soft label。在Self-training我們會強制assign一筆訓練資料一定是屬於某一個class,但是在Generative Model我們是根據它的事後機率,可能有一部分屬於class 1,有一部分屬於class 2。
假設我們用的是Neural Network,你從你的Labeled data得到一組Network的參數 ,現在你有一筆Unlabeled data ,根據 把它分成兩類,如果是Hard label就直接把它Label成class 1,而如果是Soft label,就會說是70%屬於class 1,30%屬於class 2。
它是Self-training的進階版。Entropy-based Regularization是如果你用Neural Network,你的輸出會是一個distribution,這個distribution一定要很集中,如果分佈很平均就不符合Low-density Separation的假設。
於是我們就可以透過Entropy來計算這個distribution是集中還是分散,當Entropy越小,就代表越集中,而根據這個假設就可以重新設計Loss function。