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