深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)
作者:Eugenio Culurciello
機器之心編譯
參與:李亞洲、武競
微信公眾號:(almosthuman2014)授權轉載,禁止二次轉載,點此為原文鏈接
這是今年 6 月份普渡大學副教授 Eugenio Culurciello 寫的一篇關于無監督學習的概述性文章。除了基本概念,本文還介紹了無監督學習的四種實現模型:聚類學習、自動編碼器、生成模型、PredNet。前幾日,Culurciello 教授根據最近無監督學習的發展對此篇文章進行了更新與調整,機器之心對此進行了編譯。文中提到的論文可點擊「閱讀原文」下載。
鏈接: https://pan.baidu.com/s/1qYpPfL6 密碼: qfh6
注:劉帝偉(譯者)、劉翔宇(審校)兩位老師對 6 月份的版本進行了編譯并發布到了 CSDN 極客頭條上,此篇編譯文章借用了兩位老師之前的翻譯(有部分調整),如有不允,請聯系機器之心,謝謝!
無監督學習可謂是深度學習的圣杯,其目標是建立可兼容小數據集進行訓練的通用系統,即便是很少的數據。
如今深度學習模型往往在大型監督型數據集上訓練。所謂監督型數據集,即每條數據都有一個對應的標簽。比如流行的 ImageNet 數據集,有一百萬張人為標記的圖像。一共有 1000 個類,每個類有 1000 張圖像。創建這樣的數據集需要花費大量的精力,同時也需要很多的時間?,F在想象創建一個有 1M 個類的數據集。試想一下,對有 100M 數據幀的視頻數據集的每一幀進行分類。該任務量簡直不可估量。
現在,回想一下你在小時候是如何進行學習的。是的,那時候會有人指導你,你的父母會告訴你這是一個「貓」,但是他們不會在你余生的每一分每一秒都告訴你這是一只「貓」!如今的監督學習也是這樣:我一次一次地告訴你,什么是「貓」,也許高達 100 萬次。然后你的深度學習模型就學會了。
理想情況下,我們希望有一個模型,它的表現與我們的大腦非常相似。只需少量的標簽便可理解這個多類的世界。這里所說的類,主要是指對象類、動作類、環境類、對象組成類等等。
基本概念
無監督學習研究的主要目標是預訓練一個模型(稱作「識別」或「編碼」)網絡,供其他任務使用。編碼特征通常能夠用到分類任務中:例如在 ImageNet 上訓練會表現出很好的結果,這與監督模型非常接近。
迄今為止,監督模型總是比無監督的預訓練模型表現的要好。其主要原因是監督模型對數據集的特性編碼的更好。但如果模型運用到其他任務,監督工作是可以減少的。在這方面,希望達到的目標是無監督訓練可以提供更一般的特征,用于學習并實現其它任務。
自動編碼器(auto-encoders)
該理論主要源于 1996 年 Bruno Olshausen 和 David Field(參見論文:Sparse Coding with an Overcomplete Basis Set:A Strategy Employed by V1)發表的文章。此文表明,編碼理論可應用于視覺皮層感受野。他們發現,我們大腦的主要視覺皮層(V1)使用稀疏原理來創建可以用來重建輸入圖像的最小基函數子集。
YannLeCun 團隊在該領域也做了很多工作。在余下的文章中,你將看到一個很好的例子來解釋類似 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):當它不能正確預測輸出時,它知道模型需要學習更新了
未來
未來由你創造。無監督學習是一個非常開放的主題,你可以通過以下方式做出巨大貢獻:
-
創建一個新的無監督任務來訓練神經網絡,例如:解決一個謎題,對比圖像塊,生成圖像,等等。
-
思考創建更好的無監督特征訓練任務,例如:什么是對象以及什么是背景,立體圖像的相同物體識別,視頻幀的相同物體識別…… 這與人類的視覺系統的進化相似。
總結
以上是生活随笔為你收集整理的深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Partial的应用
- 下一篇: 判别模型的玻尔兹曼机论文源码解读