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

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

2018-07-28    來源:raincent

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

介紹


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

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

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

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

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

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

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


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

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

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

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

??
 

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


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

定義問題——如何整理照片庫


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

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

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

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

??

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

??

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

??

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

??

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

??

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

??

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

??

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

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


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

??

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

方法二:基于位置分類


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

??

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

方法三:提取照片的語義信息,并用它來定義我的照片庫


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

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

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

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

??

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

現(xiàn)在你可能想知道,我們該如何利用深度學(xué)習(xí)來處理無監(jiān)督的學(xué)習(xí)問題?

正如我們在上面的案例研究中看到的,通過從圖像中提取語義信息,我們可以更好地了解圖像的相似性。因此,我們的問題可以表述為:我們該如何降低圖像的維度,使我們可以從這些編碼表示重建圖像。

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

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

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

??

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

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

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

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


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

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

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

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

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

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



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

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

 

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

 

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



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

 

??

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

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

 

??

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

 

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

 

K-Means


我們首先直接對圖像使用K-Means聚類,將其聚成10類。

 

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

 

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

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

NMI公式如下:

??

 

K-Means + AutoEncoder


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

 

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

 

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

DEC


最后,我們看一下DEC算法的實(shí)現(xiàn)。DEC算法將聚類和自編碼器放在一起訓(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ù)庫 網(wǎng)絡(luò)

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

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

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