自我學習,監督學習,半監督學習和遷移學習的區別

區別

自我學習半監督學習一樣,當前手頭上只有少量訓練樣本,但是周圍手頭上還有大量無標註樣本。舉一個經典的例子,分離大象和犀牛。
對於監督學習來說,我們手頭有大量大象的樣本和犀牛的樣本,接下來訓練分類器,進行分類,大家都知道的。
對於遷移學習,則是指我們手頭上有大量羊的樣本和馬的樣本(已標記),少量的大象和犀牛的樣本,接下來就要從羊和馬的樣本中選出有效的樣本分別加入到大象和犀牛的標記樣本中,然後再用監督學習的方法訓練分類器。

而非監督學習,則是手上僅有少量大象和犀牛的已標記樣本,另外有一堆大象和犀牛的沒有標記的數據(注意它們中要麼是大象要麼是犀牛,沒有其他物種)。
半監督學習就是利用這些樣本訓練分類器,實現分類。而自我學習,同樣是手上僅有少量大象和犀牛的已標記樣本,另外有一大堆自然圖像。所謂自然圖像,就是有大象和犀牛的圖片,還有各種其他物種的圖片。
自我學習,同樣是手上僅有少量大象和犀牛的已標記樣本,另外有一大堆自然圖像。所謂自然圖像,就是有大象和犀牛的圖片,還有各種其他物種的圖片。自我學習比半監督學習更適合實際場景—–哪有一堆只有大象和犀牛的圖片給你呢?而自然圖像的來源更加廣泛,可以從互聯網上隨便下載。

理論分析

如果已經有一個足夠強大的機器學習算法,爲了獲得更好的性能,最靠譜的方法之一是給這個算法以更多的數據。機器學習界甚至有個說法:“有時候勝出者並非有最好的算法,而是有更多的數據。”


人們總是可以嘗試獲取更多的已標註數據,但是這樣做成本往往很高。例如研究人員已經花了相當的精力在使用類似 AMT(Amazon Mechanical Turk) 這樣的工具上,以期獲取更大的訓練數據集。相比大量研究人員通過手工方式構建特徵,用衆包的方式讓多人手工標數據是一個進步,但是我們可以做得更好。具體的說,如果算法能夠從未標註數據中學習,那麼我們就可以輕易地獲取大量無標註數據,並從中學習。自學習和無監督特徵學習就是這種的算法。儘管一個單一的未標註樣本蘊含的信息比一個已標註的樣本要少,但是如果能獲取大量無標註數據(比如從互聯網上下載隨機的、無標註的圖像、音頻剪輯或者是文本),並且算法能夠有效的利用它們,那麼相比大規模的手工構建特徵和標數據,算法將會取得更好的性能。


在自學習和無監督特徵學習問題上,可以給算法以大量的未標註數據,學習出較好的特徵描述。在嘗試解決一個具體的分類問題時,可以基於這些學習出的特徵描述和任意的(可能比較少的)已標註數據,使用有監督學習方法完成分類。


在一些擁有大量未標註數據和少量的已標註數據的場景中,上述思想可能是最有效的。即使在只有已標註數據的情況下(這時我們通常忽略訓練數據的類標號進行特徵學習),以上想法也能得到很好的結果。


特徵學習

我們已經瞭解到如何使用一個自編碼器(autoencoder)從無標註數據中學習特徵。具體來說,假定有一個無標註的訓練數據集 \textstyle \{ x_u^{(1)}, x_u^{(2)}, \ldots, x_u^{(m_u)}\}(下標 \textstyle u 代表“不帶類標”)。現在用它們訓練一個稀疏自編碼器(可能需要首先對這些數據做白化或其它適當的預處理)。

STL SparseAE.png


利用訓練得到的模型參數 \textstyle W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)},給定任意的輸入數據 \textstyle x,可以計算隱藏單元的激活量(activations) \textstyle a。如前所述,相比原始輸入 \textstyle x 來說,\textstyle a 可能是一個更好的特徵描述。下圖的神經網絡描述了特徵(激活量 \textstyle a)的計算。

STL SparseAE Features.png


這實際上就是之前得到的稀疏自編碼器,在這裏去掉了最後一層。


假定有大小爲 \textstyle m_l 的已標註訓練集 \textstyle \{ (x_l^{(1)}, y^{(1)}),(x_l^{(2)}, y^{(2)}), \ldots (x_l^{(m_l)}, y^{(m_l)}) \}(下標 \textstyle l 表示“帶類標”),我們可以爲輸入數據找到更好的特徵描述。例如,可以將 \textstyle x_l^{(1)} 輸入到稀疏自編碼器,得到隱藏單元激活量 \textstyle a_l^{(1)}。接下來,可以直接使用 \textstyle a_l^{(1)} 來代替原始數據 \textstyle x_l^{(1)}“替代表示”,Replacement Representation)。也可以合二爲一,使用新的向量 \textstyle (x_l^{(1)}, a_l^{(1)}) 來代替原始數據 \textstyle x_l^{(1)}“級聯表示”,Concatenation Representation)。


經過變換後,訓練集就變成 \textstyle \{ (a_l^{(1)}, y^{(1)}), (a_l^{(2)}, y^{(2)}), \ldots (a_l^{(m_l)}, y^{(m_l)})\}或者是\textstyle \{((x_l^{(1)}, a_l^{(1)}), y^{(1)}), ((x_l^{(2)}, a_l^{(1)}), y^{(2)}), \ldots, ((x_l^{(m_l)}, a_l^{(1)}), y^{(m_l)}) \}(取決於使用 \textstyle a_l^{(1)} 替換 \textstyle x_l^{(1)} 還是將二者合併)。在實踐中,將 \textstyle a_l^{(1)}\textstyle x_l^{(1)} 合併通常表現的更好。但是考慮到內存和計算的成本,也可以使用替換操作。


最終,可以訓練出一個有監督學習算法(例如 svm, logistic regression 等),得到一個判別函數對 \textstyle y 值進行預測。預測過程如下:給定一個測試樣本 \textstyle x_{\rm test},重複之前的過程,將其送入稀疏自編碼器,得到 \textstyle a_{\rm test}。然後將 \textstyle a_{\rm test} (或者 \textstyle (x_{\rm test}, a_{\rm test}) )送入分類器中,得到預測值。


數據預處理

在特徵學習階段,我們從未標註訓練集 \textstyle \{ x_u^{(1)}, x_u^{(2)}, \ldots, x_u^{(m_u)}\} 中學習,這一過程中可能計算了各種數據預處理參數。例如計算數據均值並且對數據做均值標準化(mean normalization);或者對原始數據做主成分分析(PCA),然後將原始數據表示爲 \textstyle U^Tx (又或者使用 PCA 白化或 ZCA 白化)。這樣的話,有必要將這些參數保存起來,並且在後面的訓練和測試階段使用同樣的參數,以保證數據進入稀疏自編碼神經網絡之前經過了同樣的變換。例如,如果對未標註數據集進行PCA預處理,就必須將得到的矩陣 \textstyle U 保存起來,並且應用到有標註訓練集和測試集上;而不能使用有標註訓練集重新估計出一個不同的矩陣 \textstyle U (也不能重新計算均值並做均值標準化),否則的話可能得到一個完全不一致的數據預處理操作,導致進入自編碼器的數據分佈迥異於訓練自編碼器時的數據分佈。

參考:
https://blog.csdn.net/qq_34216467/article/details/60136537
https://blog.csdn.net/hjh1705072347/article/details/53736005
推薦:
https://blog.csdn.net/u011826404/article/details/74358913 周志華的半監督學習的理論分析及應用

發佈了11 篇原創文章 · 獲贊 38 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章