聊聊機器學習中的無監督學習

機器學習分爲監督式機器學習、無監督式機器學習和半監督式機器學習。其劃分的標準是訓練樣本是否包含人爲標註的結果。

(1)監督式機器學習:從給定的訓練數據集中學習出一個函數,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特徵和目標。訓練集中的目標是由人標註的。常見的監督學習算法包括迴歸分析和統計分類。 
(2)無監督式機器學習:與監督學習相比,訓練集沒有人爲標註的結果。常見的無監督學習算法有聚類。 
(3)半監督式機器學習:是監督學習和無監督學習相結合的一種學習方法。它主要考慮如何利用少量的樣本標註和大量的未標註樣本進行訓練和分類的問題。半監督學習對於減少標註代價,提高學習機器性能具有非常大的實際意義。 

今天,就來聊聊無監督式機器學習:

首先從大家熟悉的聚類分析開始吧,聚類分析是無監督式機器學習的一個典型應用,也是探索性數據挖掘中的一種常用方法。

利用聚類分析能夠將看似無序的對象進行分組、歸類,以達到更好地理解研究對象的目的。聚類樣本要求組內對象相似性較高,組間對象相似性較低。

聚類分析的流程大致可以分爲四步,如下圖所示。
首先,需要對數據集進行預處理,通常包括數據降維、特徵選擇或抽取等;
第二步,根據數據集的特點進行聚類算法的設計或選擇;
第三步,聚類算法的測試與評估;
第四步,聚類結果的展示與解釋,通過聚類分析從數據集中獲得有價值的知識。

1.png

其中,聚類算法設計主要包括:設計樣本相似性度量標準及聚類過程的終止條件、聚類數目的選取等。通常的做法是先抽樣一小批量的樣本,來進行算法設計、測試、同時能夠對數據的概貌有一定的認識,得到比較好的效果後在推廣到全量的樣本上進行分析實驗。

具體的聚類分析方法有很多,在此就不做介紹了。

接下來聊聊無監督式機器學習的第二大應用方向:Autoencoder,中文亦成自動編碼器。

做機器學習時首先會遇到的問題就是特徵選取的問題,如何選取出對原始數據具有良好表達能力的特徵成爲機器學習實踐過程中一個讓人頭疼的問題。如256*256的灰度圖對應於一個 65,000 的輸入向量,換句話說,我們要解決一個 65,000 維空間上的問題。高維數的數據不僅需要收集更多的樣本數據,同時需要更多的計算資源和存儲資源。很明顯,一副圖像並不需要如此過的原始特徵來進行分類,我們可以進行人工的特徵選取來對原始特徵進行降維。但這樣不僅需要研究人員對原始數據進行長時間的觀察研究,很多起到作用的特徵並不容易被發現,同時,特徵選取的推廣性變得很差。

那麼,有沒有辦法能夠從原始信息中抽取中信息量最大的特徵呢,答案是肯定的,通過一種無監督式機器學習方法:Autoencoder,即可在一定程度上解決我們的問題。

Autoencoder 是一種無監督機器學習技術,使用了一個神經網絡來產生一個高維輸入的低維表示。傳統的維度下降依賴於線性方法,如 PCA,找出高維數據中最大的方差的方向。通過選擇這些方向,PCA 本質上刻畫了包含了最終信息的方向。所以我們可以找到一個較小的維度的數目來作爲降維的結果。然而,PCA 方法的線性性也是導致自身可以抽取出的特徵維度類型上的很大限制。Autoencoder通過引入神經網絡天生的非線性性克服這些限制。

Autoencoder包含兩個主要的部分,encoder 和 decoder 網絡(編碼網絡和解碼網絡)。encoder 網絡在訓練和部署時候使用,而 decoder 網絡只在訓練的時候用。encoder 網絡的作用是用來發現給定數據的壓縮表示。

其基本結構:

2.jpg

Autoencoder結構圖

我們將input輸入一個encoder編碼器,就會得到一個code,這個code也就是輸入的一個表示,那麼我們怎麼知道這個code表示的就是input呢?我們加一個decoder解碼器,這時候decoder就會輸出一個信息,那麼如果輸出的這個信息和一開始的輸入信號input是很像的(理想情況下就是一樣的),那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調整encoder和decoder的參數,使得重構誤差最小,這時候我們就得到了輸入input信號的第一個表示了,也就是編碼code了。因爲是無標籤數據,所以誤差的來源就是直接重構後與原輸入相比得到。

3.jpg

stackedautoencoders:多個autoencoder的級聯表示

通常,爲了獲得原始數據更爲抽象的特徵,我們會將多個autoencoder級聯,構成stacked autoencoders。

stacked autoencoders具有更強大的表達能力及深度網絡的所有優點,第一層可以學習到一階特徵,第二層可以學到二階特徵等等,對於圖像而言,第一層可能學習到邊,第二層可能學習到如何去組合邊形成輪廓、點,更高層可能學習到更形象且更有意義的特徵,學到的特徵方便我們更好地處理圖像,比如對圖像分類、檢索等等。

如果在autoencoder的輸出項上加一個正則項。則得到了Sparse AutoEncoder稀疏自動編碼器,其是一種在圖像處理和NLP領域一種非常好的降維方法。如SVM處理文本分類時,使用TF_IDF 對原始文本進行編碼,這裏TF_IDF 可以看作一種人工的編碼器,能夠取得很好的效果。

那麼,AutoEncoder等這類自動編碼方法和傳統的線性降維方法有什麼優勢呢?

以AutoEncoder的 2 維表示和 PCA 的 2 維表示在知名圖像數據集MNIST 手寫數字數據集上的表現爲例:

4.png

AutoEncoder右,PCA 左

可以看到,AutoEncoder的降維結果相對於PCA的結果更具有可區分性,也就是說AutoEncoder編碼降維的結果對原始數據更具表達性、包含更多的原始信息。

Autoencoder是無監督式機器學習的一個新方向,對於機器學習在複雜問題中的應用提供了非常好的數據建模方法。

無監督式機器學習的兩大類問題:聚類問題和Autoencoder問題,聚類問題解決的其實是模糊分類的問題,針對複雜數據的特徵構造、選取、降維及原始數據的壓縮表示方面,Autoencoder是一個很好的切入點。

本文同時也在知加(zhijia.io)發表。

以上圖片,均出自其他博客或者論文,在此一一謝過。

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