中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

深度學(xué)習(xí)的關(guān)鍵:無(wú)監(jiān)督深度學(xué)習(xí)簡(jiǎn)介(附Python代碼)

2018-07-28    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線(xiàn)!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

介紹


作為數(shù)據(jù)科學(xué)家,我們平時(shí)的工作是使用各種機(jī)器學(xué)習(xí)算法從數(shù)據(jù)中提取可操作的信息。其中大多數(shù)是有監(jiān)督學(xué)習(xí)問(wèn)題,因?yàn)槟阋呀?jīng)知道目標(biāo)函數(shù)是什么。給出的數(shù)據(jù)有很多細(xì)節(jié)能幫助你實(shí)現(xiàn)最終目標(biāo)。

雖然無(wú)監(jiān)督學(xué)習(xí)是一項(xiàng)十分復(fù)雜的挑戰(zhàn),但是它有許多優(yōu)點(diǎn)。它有潛力解決以前無(wú)法解決的問(wèn)題,在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域得到了大量的注意力。

這篇文章的目的是直觀(guān)地介紹一下無(wú)監(jiān)督學(xué)習(xí),以及它在現(xiàn)實(shí)生活中的應(yīng)用。

注意——閱讀這篇文章需要讀者具有一定深度學(xué)習(xí)基礎(chǔ),并且了解機(jī)器學(xué)習(xí)的概念。如果還沒(méi)有掌握基礎(chǔ)知識(shí),可以閱讀以下參考文獻(xiàn):

  • 數(shù)據(jù)課程實(shí)驗(yàn)
  • 深度學(xué)習(xí)基礎(chǔ)——以人工神經(jīng)網(wǎng)絡(luò)為起點(diǎn)

下面就讓我們進(jìn)入正題吧!
 

為什么要用無(wú)監(jiān)督學(xué)習(xí)?


機(jī)器學(xué)習(xí)項(xiàng)目中的典型方法是以有監(jiān)督的方式設(shè)計(jì)的。我們告訴算法該做什么和不該做什么。這是一個(gè)解決問(wèn)題的通用結(jié)構(gòu),但是它從兩個(gè)方面限制了算法的潛力:

  • 算法受到監(jiān)督信息的偏見(jiàn)的約束。沒(méi)錯(cuò),算法是自己學(xué)會(huì)的如何完成這項(xiàng)任務(wù)。但是,算法在解決問(wèn)題時(shí)無(wú)法去考慮其他可能出現(xiàn)的情況。
  • 由于學(xué)習(xí)在監(jiān)督下進(jìn)行,為算法創(chuàng)建標(biāo)簽需要花費(fèi)巨大的人力。手動(dòng)創(chuàng)建的標(biāo)簽越少,算法可以用于訓(xùn)練的數(shù)據(jù)就越少。
 

為了以一種智能的方式來(lái)解決這一問(wèn)題,我們可以采用非監(jiān)督學(xué)習(xí)算法。非監(jiān)督學(xué)習(xí)直接從數(shù)據(jù)本身得到數(shù)據(jù)的性質(zhì),然后總結(jié)數(shù)據(jù)或?qū)?shù)據(jù)分組,讓我們可以使用這些性質(zhì)來(lái)進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的決策。

讓我們用一個(gè)例子來(lái)更好地理解這個(gè)概念。比如說(shuō),銀行想要對(duì)客戶(hù)進(jìn)行分組,以便他們能向客戶(hù)推薦合適的產(chǎn)品。他們可以通過(guò)數(shù)據(jù)驅(qū)動(dòng)的方式來(lái)完成這件事——首先通過(guò)客戶(hù)的年齡對(duì)客戶(hù)進(jìn)行細(xì)分,然后從這些分組中得到客戶(hù)的特性。這將有助于銀行向客戶(hù)提供更好的產(chǎn)品推薦,從而提高客戶(hù)滿(mǎn)意度。

??
 

無(wú)監(jiān)督深度學(xué)習(xí)范例研究


在這篇文章中,我們將介紹一個(gè)基于非結(jié)構(gòu)化數(shù)據(jù)的無(wú)監(jiān)督學(xué)習(xí)的范例研究。深度學(xué)習(xí)技術(shù)通常在處理非結(jié)構(gòu)化數(shù)據(jù)時(shí)能力最強(qiáng)。因此,我們以深度學(xué)習(xí)在圖像處理領(lǐng)域的應(yīng)用為例,來(lái)理解這個(gè)概念。
 

定義問(wèn)題——如何整理照片庫(kù)


現(xiàn)在,我的手機(jī)里有2000張照片。如果我是一個(gè)自拍狂,照片的數(shù)量很可能是這個(gè)數(shù)字的10倍。挑選這些照片是一場(chǎng)噩夢(mèng),因?yàn)榛旧厦咳龔堈掌芯陀幸粡垖?duì)我來(lái)說(shuō)是無(wú)用的。我相信大多數(shù)人都有同樣的問(wèn)題。

理想情況下,我想要的是一個(gè)能夠整理照片的應(yīng)用程序,可以讓我隨時(shí)瀏覽大部分照片。這樣我也可以知道我目前有多少類(lèi)照片。

為了更清楚地了解這個(gè)問(wèn)題,我嘗試自己對(duì)照片進(jìn)行分類(lèi)。以下是我總結(jié)的情況:

  • 首先,我發(fā)現(xiàn)我的照片庫(kù)中有三分之一都是網(wǎng)絡(luò)趣圖(感謝WhatsApp的可愛(ài)的朋友們)。

??

  • 我個(gè)人也會(huì)收集一些在Reddit上看到的有趣的回答或分享。

??

  • 至少有200張照片,是我在著名的DataHack Summit會(huì)議上,和隨后去喀拉拉的旅行中拍攝的,也有一些是同事分享給我的。

??

  • 也有一些照片記錄了會(huì)議期間的白板討論內(nèi)容。

??

  • 還有一些截圖記錄了代碼錯(cuò)誤,需要內(nèi)部團(tuán)隊(duì)討論。使用后必須清除它們。

??

  • 我還發(fā)現(xiàn)了一些“個(gè)人隱私”圖像,如自拍、合影和幾個(gè)特殊場(chǎng)景。它們數(shù)量不多,但它們是我珍貴的財(cái)產(chǎn)。

??

  • 最后,有無(wú)數(shù)張“早上好”、“生日快樂(lè)”和“幸福的排燈節(jié)”的海報(bào),我想方設(shè)法把它們從照片庫(kù)中刪除。但是不管我怎么刪除它們,它們還是會(huì)出現(xiàn)!

??

在下面的章節(jié)中,我們將討論一些我想出的解決這個(gè)問(wèn)題的方法。
 

方法一:基于時(shí)間分類(lèi)


最簡(jiǎn)單的方法是按照時(shí)間來(lái)整理照片。每一天都可以有不同的文件夾。大多數(shù)照片瀏覽應(yīng)用程序均使用這種方法(如谷歌照片應(yīng)用程序)。

??

這樣做的好處是,當(dāng)天發(fā)生的所有事件都會(huì)被存儲(chǔ)在一起。這種方法的缺點(diǎn)是它太普通了。每一天,我都可能拍攝郊游的照片,同時(shí)把有意思的回答截圖下來(lái),等等。它們會(huì)混在一起,這完全沒(méi)有達(dá)到我的目的。
 

方法二:基于位置分類(lèi)


一個(gè)相對(duì)較好的方法是根據(jù)拍攝地點(diǎn)整理照片。例如,每次照相,我們都可以記錄照片拍攝的地方。然后,我們可以根據(jù)這些位置——無(wú)論是國(guó)家、城市還是地區(qū),按照我們想要的區(qū)域粒度來(lái)制作文件夾。這種方法也被許多照片應(yīng)用程序所使用。

??

這種方法的缺點(diǎn)在于它的想法過(guò)于簡(jiǎn)單。我們?nèi)绾味x一張搞笑圖片,或者一張卡通圖的位置?而它們?cè)谖业恼掌瑤?kù)中占有相當(dāng)大的份額。所以這種方法也不夠巧妙。
 

方法三:提取照片的語(yǔ)義信息,并用它來(lái)定義我的照片庫(kù)


到目前為止,我們所看到的方法大多依賴(lài)于和照片同時(shí)獲得的元數(shù)據(jù)。整理照片的一種更好的方法是從圖像本身中提取語(yǔ)義信息并智能地使用這些信息。

讓我們把這個(gè)想法分成幾個(gè)部分。假設(shè)我們有多樣性類(lèi)似(如上所述)的照片。我們的算法應(yīng)該捕捉哪些趨勢(shì)?

  1. 拍攝的是自然場(chǎng)景圖像還是人工生成的圖像?
  2. 照片里有文字材料嗎?如果有的話(huà),我們能識(shí)別出它是什么嗎?
  3. 照片中有什么不同的物體?它們的結(jié)合能確定照片的美感嗎?
  4. 照片里有人嗎?我們能認(rèn)出他們嗎?
  5. 網(wǎng)絡(luò)上有相似的圖像可以幫助我們識(shí)別圖像的內(nèi)容嗎?

因此,我們的算法應(yīng)該能理想地捕捉這個(gè)信息,而不需要明顯的標(biāo)記,并用它來(lái)整理、分類(lèi)我們的照片。理想情況下,最終的應(yīng)用程序界面應(yīng)該是這樣的:

??

這種方法就是以“無(wú)監(jiān)督的方式”來(lái)解決問(wèn)題。我們沒(méi)有直接定義我們想要的結(jié)果。相反,我們訓(xùn)練一個(gè)算法為我們找到這些結(jié)果。我們的算法以智能的方式對(duì)數(shù)據(jù)進(jìn)行了總結(jié),然后在這些推論的基礎(chǔ)上嘗試解決這個(gè)問(wèn)題。很酷,對(duì)吧?

現(xiàn)在你可能想知道,我們?cè)撊绾卫蒙疃葘W(xué)習(xí)來(lái)處理無(wú)監(jiān)督的學(xué)習(xí)問(wèn)題?

正如我們?cè)谏厦娴陌咐芯恐锌吹降,通過(guò)從圖像中提取語(yǔ)義信息,我們可以更好地了解圖像的相似性。因此,我們的問(wèn)題可以表述為:我們?cè)撊绾谓档蛨D像的維度,使我們可以從這些編碼表示重建圖像。

我們可以利用一個(gè)深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)——自編碼器。

自動(dòng)編碼器的思想是,訓(xùn)練它從學(xué)習(xí)到的特征來(lái)重構(gòu)輸入。亮點(diǎn)在于,它用一個(gè)很小的特征表示來(lái)重構(gòu)輸入。

例如,一個(gè)設(shè)置編碼維度為10的自動(dòng)編碼器,在貓的圖像上訓(xùn)練,每一張圖像大小為100×100。所以輸入維數(shù)是10000,而自動(dòng)編碼器需要用一個(gè)大小為10的矢量表示輸入所有信息(如下圖所示)。

??

一個(gè)自動(dòng)編碼器從邏輯上可以分為兩個(gè)部分:編碼器和解碼器。編碼器的任務(wù)是將輸入轉(zhuǎn)化成一個(gè)低維表示,而解碼器的任務(wù)是從低維表示重構(gòu)輸入。

這是對(duì)自編碼器的高度概括,下一篇文章中我們將仔細(xì)解讀自編碼器的算法。

雖然這一領(lǐng)域的研究正在蓬勃發(fā)展,但目前最先進(jìn)的方法也無(wú)法輕松解決工業(yè)層面的問(wèn)題,我們的算法想真正“投入工業(yè)使用”還需幾年時(shí)間。
 

在MNIST數(shù)據(jù)集上進(jìn)行無(wú)監(jiān)督深度學(xué)習(xí)的代碼詳解


現(xiàn)在我們已經(jīng)基本了解了如何使用深度學(xué)習(xí)解決無(wú)監(jiān)督學(xué)習(xí)問(wèn)題,下面我們要把學(xué)到的知識(shí)運(yùn)用在現(xiàn)實(shí)生活的問(wèn)題中。這里,我們以MNIST數(shù)據(jù)集為例,MNIST數(shù)據(jù)集一直是深度學(xué)習(xí)測(cè)試的必選數(shù)據(jù)集。在解讀代碼之前,讓我們先了解一下問(wèn)題的定義。

原始問(wèn)題是確定圖像中的數(shù)字。數(shù)據(jù)庫(kù)會(huì)給出圖像所含數(shù)字的標(biāo)簽。在我們的案例研究中,我們將嘗試找出數(shù)據(jù)庫(kù)中相似的圖片,并將它們聚成一類(lèi)。我們將通過(guò)標(biāo)簽來(lái)評(píng)估每個(gè)類(lèi)別的純度。你可以在A(yíng)V的DataHack平臺(tái)下載數(shù)據(jù)——“識(shí)別數(shù)字”實(shí)踐問(wèn)題。

我們會(huì)測(cè)試三種無(wú)監(jiān)督學(xué)習(xí)技術(shù),然后評(píng)價(jià)它們的表現(xiàn):

  1. 直接對(duì)圖像進(jìn)行KMeans聚類(lèi)
  2. KMeans + 自編碼器
  3. 深度嵌入式聚類(lèi)算法

在開(kāi)始實(shí)驗(yàn)之前,確保你已經(jīng)在系統(tǒng)中安裝了Keras。(可參考官方安裝指南。)我們將用TensorFlow作為后臺(tái),所以你要確保配置文件中有這一項(xiàng)。如果沒(méi)有,按照這里給出的步驟進(jìn)行操作。

我們需要用到Xifeng Guo實(shí)現(xiàn)的DEC算法開(kāi)源代碼。在命令行輸入如下命令:
 



你可以打開(kāi)一個(gè)Jupyter Notebook,跟著下面的代碼一起操作。

首先我們需要導(dǎo)入所有必需的模塊。

 

下面我們將種子的值設(shè)為一個(gè)受限隨機(jī)數(shù)。

 

現(xiàn)在設(shè)置數(shù)據(jù)的工作路徑,方便后續(xù)訪(fǎng)問(wèn)。



讀入訓(xùn)練和測(cè)試文件。

 

??

在這個(gè)數(shù)據(jù)庫(kù)中,每個(gè)圖片都有類(lèi)標(biāo),這在非監(jiān)督學(xué)習(xí)中并不常見(jiàn),這里,我們用這些類(lèi)標(biāo)來(lái)評(píng)估無(wú)監(jiān)督學(xué)習(xí)模型的表現(xiàn)。

現(xiàn)在讓我們把數(shù)據(jù)顯示成一張圖片:

 

??

隨后我們讀入所有圖片,將它們存儲(chǔ)成一個(gè)numpy矩陣,創(chuàng)建訓(xùn)練和測(cè)試文件。

 

我們將訓(xùn)練數(shù)據(jù)分成訓(xùn)練集和測(cè)試集。

 

K-Means


我們首先直接對(duì)圖像使用K-Means聚類(lèi),將其聚成10類(lèi)。

 

現(xiàn)在我們已經(jīng)訓(xùn)練了模型,下面看一下它在驗(yàn)證集上的表現(xiàn)如何。

 

我們將使用歸一化互信息(NMI)分?jǐn)?shù)來(lái)評(píng)估我們的模型。

互信息是聚類(lèi)結(jié)果和人工分類(lèi)之間依賴(lài)程度的對(duì)稱(chēng)性度量。它基于聚類(lèi)純度PI的概念,通過(guò)將Ci與M中的所有手動(dòng)分類(lèi)進(jìn)行比較,衡量單個(gè)聚類(lèi)Ci的質(zhì)量,即Ci與Mj中相同目標(biāo)的最大數(shù)量。因?yàn)镹MI是歸一化的,所以我們可以使用它來(lái)比較聚類(lèi)個(gè)數(shù)不同的聚類(lèi)結(jié)果。

NMI公式如下:

??

 

K-Means + AutoEncoder


現(xiàn)在,我們不直接使用K-Means,我們首先用自編碼器降低數(shù)據(jù)維度,提取有用信息,再將這些信息傳遞給K-Means算法。

 

現(xiàn)在訓(xùn)練自編碼器模型:

 

從結(jié)果可以看到,將自編碼器與K-Means結(jié)合起來(lái),算法效果比僅使用K-Means的效果要好。
 

DEC


最后,我們看一下DEC算法的實(shí)現(xiàn)。DEC算法將聚類(lèi)和自編碼器放在一起訓(xùn)練以取得更好的效果。(論文:Junyuan Xie, Ross Girshick, and Ali Farhadi. Unsupervised deep embedding for clustering analysis. ICML 2016.)

 

DEC算法與上述兩種方法相比,效果最好。研究人員發(fā)現(xiàn),進(jìn)一步訓(xùn)練DEC模型可以達(dá)到更高的性能(NMI高達(dá)87)。

查看英文原文:Essentials of Deep Learning: Introduction to Unsupervised Deep Learning (with Python codes)

標(biāo)簽: 代碼 谷歌 數(shù)據(jù)庫(kù) 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀(guān)點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:機(jī)器學(xué)習(xí)到底是什么?

下一篇:2018全球計(jì)算機(jī)與工程學(xué)科排名:MIT奪冠 中國(guó)23所高校上榜