這是今年 6 月份普渡大學副教授 Eugenio Culurciello 寫的一篇關於無監督學習的概述性文章。除了基本概念,本文還介紹了無監督學習的四種實現模型:聚類學習、自動編碼器、生成模型、PredNet。前幾日,Culurciello 教授根據最近無監督學習的發展對此篇文章進行了更新與調整,機器之心對此進行了編譯。
注:劉帝偉(譯者)、劉翔宇(審校)兩位老師對 6 月份的版本進行了編譯併發布到了 CSDN 極客頭條上,此篇編譯文章借用了兩位老師之前的翻譯(有部分調整),如有不允,請聯絡機器之心,謝謝!
無監督學習可謂是深度學習的聖盃,其目標是建立可相容小資料集進行訓練的通用系統,即便是很少的資料。
如今深度學習模型往往在大型監督型資料集上訓練。所謂監督型資料集,即每條資料都有一個對應的標籤。比如流行的 ImageNet 資料集,有一百萬張人為標記的影像。一共有 1000 個類,每個類有 1000 張影像。建立這樣的資料集需要花費大量的精力,同時也需要很多的時間。現在想象建立一個有 1M 個類的資料集。試想一下,對有 100M 資料幀的影片資料集的每一幀進行分類。該任務量簡直不可估量。
現在,回想一下你在小時候是如何進行學習的。是的,那時候會有人指導你,你的父母會告訴你這是一個「貓」,但是他們不會在你餘生的每一分每一秒都告訴你這是一隻「貓」!如今的監督學習也是這樣:我一次一次地告訴你,什麼是「貓」,也許高達 100 萬次。然後你的深度學習模型就學會了。
理想情況下,我們希望有一個模型,它的表現與我們的大腦非常相似。只需少量的標籤便可理解這個多類的世界。這裡所說的類,主要是指物件類、動作類、環境類、物件組成類等等。
基本概念
無監督學習研究的主要目標是預訓練一個模型(稱作「識別」或「編碼」)網路,供其他任務使用。編碼特徵通常能夠用到分類任務中:例如在 ImageNet 上訓練會表現出很好的結果,這與監督模型非常接近。
迄今為止,監督模型總是比無監督的預訓練模型表現的要好。其主要原因是監督模型對資料集的特性編碼的更好。但如果模型運用到其他任務,監督工作是可以減少的。在這方面,希望達到的目標是無監督訓練可以提供更一般的特徵,用於學習並實現其它任務。
自動編碼器(auto-encoders)
該理論主要源於 1996 年 Bruno Olshausen 和 David Field(參見論文:Sparse Coding with an Overcomplete Basis Set:A Strategy Employed by V1)發表的文章。此文表明,編碼理論可應用於視覺皮層感受野。他們發現,我們大腦的主要視覺皮層(V1)使用稀疏原理來建立可以用來重建輸入影像的最小基函式子集。
Yann LeCun 團隊在該領域也做了很多工作。在餘下的文章中,你將看到一個很好的例子來解釋類似 V1 的稀疏濾波器是如何學習的。
棧式自動編碼器也會被用到,以貪婪式的方式逐層重複訓練。
自動編碼器方法也被稱為「直接對映」方法。
自編碼器/稀疏編碼/堆疊自編碼器的優點與缺點
優點:
簡單技術:重建輸入
可堆疊多層
直覺型,且基於神經科學研究
缺點:
貪婪訓練每一層
沒有全域性最佳化
比不上監督學習的表現
層一多會失效
輸入的重建可能不是學習通用表徵的理想度量(metric)
聚類學習(Clustering Learning)
一種技術是使用 K-均值聚類來學習多層的 filters。
我們團隊將這種技術命名為:聚類學習(參見論文:Clustering Learning for Robotic Vision)、聚類聯結(參見論文:An Analysis of the Connections Between Layers of Deep Neural Networks)和卷積聚類(參見論文:Convolutional Clustering for Unsupervised Learning),最近它們在 STL-10 無監督資料集上取得了非常好的結果。
我們在此領域的研究獨立於 Adam Coates 和吳恩達(參見論文:Learning Feature Representations with K-means)的研究。
眾所周知,受限玻爾茲曼機(RBMs)、深度玻爾茲曼機(DBMs)、深度信念網路(DBNs)難以訓練,因為解決其配分函式(partition function)的數值難題。因此它們還未被普遍用來解決問題。
聚類學習的優缺點
優點:
簡單技術:聚類相似輸出
可被多層堆疊
直覺型,且基於神經科學研究
缺點:
貪婪訓練每一層
沒有全域性最佳化
在一些情況下,比不上監督學習的表現
層數增加時會失效,收益遞減
生成模型(generative models)
生成模型,嘗試在同一時間建立一個分類(識別器或編碼器)網路和一個生成影像(生成模型)模型。這種方法起源於 Ian Goodfellow 和 Yoshua Bengio(參見論文:Generative Adversarial Networks)的開創性工作。
Alec Radford、Luke Metz 和 Soumith Chintala 的 DCGAN(參見論文:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks)是一種生成對抗模型,例項化這種模型,能夠得到很好的結果。
下面是系統框架圖:
DCGAN 識別器的目的是識別輸入影像是否真實,或來自資料集,或是生成器生成的偽圖。該生成器需要一個隨機噪聲向量(用 1024 個數值表示)作為輸入,併產生一個影像。
在 DCGAN 中,生成器網路如下:
識別器是一個標準的神經網路。詳情請見下文。
關鍵是以並行的方式訓練兩個網路而不是完全地過度擬合,從而複製資料集。學習特徵需要推廣到未知的例項,因此用於學習的資料集將不能再用。
Torch7 提供了 DCGAN 訓練程式碼(程式碼地址:https://github.com/soumith/dcgan.torch),可用於實驗中。
在生成器和識別器網路訓練好之後,兩者便可使用了。主要目標是為其它任務訓練一個很好的識別器網路,例如對其它資料集進行分類。生成器則可用於生成隨機向量的影像。這些影像有著非常有趣的特性。首先,他們提供了輸入空間的平滑轉換。看下面這個例子,它展示了在 9 個隨機輸入向量之間進行移動產出的影像:
輸入向量空間還提供數學特性,表明學習特徵是根據相似性進行組織的:
由生成器學到的光滑空間表明識別器也具有類似的性質,使它成為影像編碼出色的特徵提取器。這在不連續影像資料集訓練 CNN 網路的經典問題上很有幫助,在這些資料集,對抗性噪聲往往致使其走向失敗(參見論文:Intriguing properties of neural networks)。
近期對 GAN 訓練的一次更新(參見論文:Improved Techniques for Training GANs)取得了在 CIFAR-10(只有 1000 個標記樣本)上的 21% 錯誤率。
最近關於 infoGAN(參見論文:InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets)的一篇論文能夠產生帶有可被鬆解(disentangled)和有更多尤其意義的圖片特徵的非常銳利的影像。然而他們沒有報告在任務或資料集上學習特徵的表現,從而作為對比。
另一個有趣的例子是作者使用生成式對抗訓練來學習如何產生影像的文字描述。如下圖:
我對此工作的讚賞之處在於它使用文字描述作為生成器的輸入,這與隨機向量完全不同,因此能夠準確控制生成器的輸出。如下圖:
優點:
整個網路的全域性訓練(global training)
程式碼和應用簡單明瞭
缺點:
難以訓練和轉化(conversion)
在某些情況下,與有監督學習的表現相似
需論證展示方法(representation)的可用性(這是所有無監督演算法面臨的問題)
透過設定不需要標籤的無監督學習任務,並設立訓練目標解決任務,這些模型直接從無標籤的資料學習。
解決拼圖謎題的無監督學習的視覺展示是一個很好的例子。作者將影像拆分,並以拼圖謎題的形式呈現,最後透過訓練一個深度神經網路來解決這個謎題。訓練得到的網路是產生最好結果的預訓練網路之一。
影像塊(patch)和區域性(locality)的無監督學習的視覺展示的也是一個很好的例子。這裡,他們使用同一張影像上的兩個位置相近的影像塊。從統計資料來看,這 2 個影像塊反映的是同一個物件。第 3 個影像塊是隨機從圖片的任意位置獲取的,從統計資料來看,與其它 2 個影像塊反映的不是同一個物件。
然後,將這 3 種影像塊傳入一個深度神經網路進行訓練,以區分相同物件和不同物件。訓練得到的網路是產生最好結果的預訓練網路之一。
立體影像重建的無監督學習的視覺展示,例如透過左檢視重建右檢視。雖然這不是無監督學習的特有工作,但它可以使用無監督學習!
使用替代類別(surrogate category)的無監督學習的視覺展示,使用影像塊來建立大量的替代類別。增強這些影像塊,然後用於訓練基於增強替代類別的有監督網路。這給出了無監督特徵學習的最好結果之一。
使用影片的無監督學習的視覺展示,使用 LSTM 作為編碼/解碼器。LSTM 編碼器透過執行一組影片幀(video frame)序列,來生成內部影像。這個內部影像然後透過另一個 LSTM 解碼器,來產生一組目標序列。為了達到無監督學習,一種方法是預測與輸入序列相同的序列。另一種方式是預測未來的影片幀。
另一篇論文(MIT:Vondrick 和 Torralba)的影片有令人非常信服的結果。這項工作從 2015 年 4 月就開始了!這個思路的亮點是從影片輸入來預測未來幀的影像。它使用的模型如下:
PredNet
PredNet 是一個用於預測影片未來幀的網路。這個網址有很好的例子:https://coxlab.github.io/prednet/
PredNet 是一個非常聰明的神經網路模型,在我們看來,它將在未來的神經網路中的發揮重要的作用。PredNet 的神經網路架構超越了單個有監督的 CNN 框架。PredNet 結合了生物啟發和生物導向模型 [ 模擬人類大腦模型 ](參見論文 https://papers.nips.cc/paper/1083-unsupervised-pixel-prediction.pdf)。它使用預測編碼和使用 [ 神經模型中的反饋連線 ](參見論文 http://arxiv.org/abs/1608.03425)。以下是 PredNet 模型和 2 個堆疊層(stacked layer)的示例:
該模型還具有以下優點:
使用無標籤資料訓練!
每層納入損失函式(loss function)計算誤差
透過監視錯誤訊號來線上學習(online-learning):當它不能正確預測輸出時,它知道模型需要學習更新了
未來
未來由你創造。無監督學習是一個非常開放的主題,你可以透過以下方式做出巨大貢獻:
建立一個新的無監督任務來訓練神經網路,例如:解決一個謎題,對比影像塊,生成影像,等等。
思考建立更好的無監督特徵訓練任務,例如:什麼是物件以及什麼是背景,立體影像的相同物體識別,影片幀的相同物體識別…… 這與人類的視覺系統的進化相似。