色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么要用無監督學習?無監督深度學習范例研究

jmiy_worldofai ? 來源:未知 ? 作者:李倩 ? 2018-09-27 18:48 ? 次閱讀

作為數據科學家,我們平時的工作是使用各種機器學習算法從數據中提取可操作的信息。其中大多數是有監督學習問題,因為你已經知道目標函數是什么。給出的數據有很多細節能幫助你實現最終目標。

雖然無監督學習是一項十分復雜的挑戰,但是它有許多優點。它有潛力解決以前無法解決的問題,在機器學習和深度學習領域得到了大量的注意力。

這篇文章的目的是直觀地介紹一下無監督學習,以及它在現實生活中的應用。

注意——閱讀這篇文章需要讀者具有一定深度學習基礎,并且了解機器學習的概念。

為什么要用無監督學習?

機器學習項目中的典型方法是以有監督的方式設計的。我們告訴算法該做什么和不該做什么。這是一個解決問題的通用結構,但是它從兩個方面限制了算法的潛力:

算法受到監督信息的偏見的約束。沒錯,算法是自己學會的如何完成這項任務。但是,算法在解決問題時無法去考慮其他可能出現的情況。

由于學習在監督下進行,為算法創建標簽需要花費巨大的人力。手動創建的標簽越少,算法可以用于訓練的數據就越少。

為了以一種智能的方式來解決這一問題,我們可以采用非監督學習算法。非監督學習直接從數據本身得到數據的性質,然后總結數據或對數據分組,讓我們可以使用這些性質來進行數據驅動的決策。

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

無監督深度學習范例研究

在這篇文章中,我們將介紹一個基于非結構化數據的無監督學習的范例研究。深度學習技術通常在處理非結構化數據時能力最強。因此,我們以深度學習在圖像處理領域的應用為例,來理解這個概念。

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

現在,我的手機里有2000張照片。如果我是一個自拍狂,照片的數量很可能是這個數字的10倍。挑選這些照片是一場噩夢,因為基本上每三張照片中就有一張對我來說是無用的。我相信大多數人都有同樣的問題。

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

為了更清楚地了解這個問題,我嘗試自己對照片進行分類。以下是我總結的情況:

首先,我發現我的照片庫中有三分之一都是網絡趣圖(感謝WhatsApp的可愛的朋友們)。

我個人也會收集一些在Reddit上看到的有趣的回答或分享。

至少有200張照片,是我在著名的DataHack Summit會議上,和隨后去喀拉拉的旅行

中拍攝的,也有一些是同事分享給我的。

也有一些照片記錄了會議期間的白板討論內容。

還有一些截圖記錄了代碼錯誤,需要內部團隊討論。使用后必須清除它們。

我還發現了一些“個人隱私”圖像,如自拍、合影和幾個特殊場景。它們數量不多,但它們是我珍貴的財產。

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

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

方法一:基于時間分類

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

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

方法二:基于位置分類

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

這種方法的缺點在于它的想法過于簡單。我們如何定義一張搞笑圖片,或者一張卡通圖的位置?而它們在我的照片庫中占有相當大的份額。所以這種方法也不夠巧妙。

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

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

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

拍攝的是自然場景圖像還是人工生成的圖像?

照片里有文字材料嗎?如果有的話,我們能識別出它是什么嗎?

照片中有什么不同的物體?它們的結合能確定照片的美感嗎?

照片里有人嗎?我們能認出他們嗎?

網絡上有相似的圖像可以幫助我們識別圖像的內容嗎?

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

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

現在你可能想知道,我們該如何利用深度學習來處理無監督的學習問題?

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

我們可以利用一個深度學習網絡結構——自編碼器

自動編碼器的思想是,訓練它從學習到的特征來重構輸入。亮點在于,它用一個很小的特征表示來重構輸入。

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

一個自動編碼器從邏輯上可以分為兩個部分:編碼器和解碼器。編碼器的任務是將輸入轉化成一個低維表示,而解碼器的任務是從低維表示重構輸入。

雖然這一領域的研究正在蓬勃發展,但目前最先進的方法也無法輕松解決工業層面的問題,我們的算法想真正“投入工業使用”還需幾年時間。

在MNIST數據集上進行無監督深度學習的代碼詳解

現在我們已經基本了解了如何使用深度學習解決無監督學習問題,下面我們要把學到的知識運用在現實生活的問題中。這里,我們以MNIST數據集為例,MNIST數據集一直是深度學習測試的必選數據集。在解讀代碼之前,讓我們先了解一下問題的定義。

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

我們會測試三種無監督學習技術,然后評價它們的表現:

直接對圖像進行KMeans聚類

KMeans + 自編碼器

深度嵌入式聚類算法

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

(小編:少俠,手機看代碼看不全?用電腦復制代碼吧!)

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

git clone https://github.com/XifengGuo/DEC-keras cd DEC-keras

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

首先我們需要導入所有必需的模塊。

%pylab inlineimport osimport kerasimport metricsimport numpy as npimport pandas as pdimport keras.backend as Kfrom time import timefrom keras import callbacksfrom keras.models import Modelfrom keras.optimizers import SGDfrom keras.layers import Dense, Inputfrom keras.initializers import VarianceScalingfrom keras.engine.topology import Layer, InputSpecfrom scipy.misc import imreadfrom sklearn.cluster import KMeansfrom sklearn.metrics import accuracy_score, normalized_mutual_info_score

下面我們將種子的值設為一個受限隨機數。

# To stop potential randomnessseed = 128rng = np.random.RandomState(seed)

現在設置數據的工作路徑,方便后續訪問。

root_dir = os.path.abspath('.')data_dir = os.path.join(root_dir, 'data', 'mnist')

讀入訓練和測試文件。

train = pd.read_csv(os.path.join(data_dir, 'train.csv'))test = pd.read_csv(os.path.join(data_dir, 'test.csv'))train.head()

在這個數據庫中,每個圖片都有類標,這在非監督學習中并不常見,這里,我們用這些類標來評估無監督學習模型的表現。

現在讓我們把數據顯示成一張圖片:

img_name = rng.choice(train.filename)filepath = os.path.join(data_dir, 'train', img_name)img = imread(filepath, flatten=True)pylab.imshow(img, cmap='gray')pylab.axis('off')pylab.show()

隨后我們讀入所有圖片,將它們存儲成一個numpy矩陣,創建訓練和測試文件。

temp = []for img_name in train.filename: image_path = os.path.join(data_dir, 'train', img_name) img = imread(image_path, flatten=True) img = img.astype('float32') temp.append(img) train_x = np.stack(temp)train_x /= 255.0train_x = train_x.reshape(-1, 784).astype('float32')temp = []for img_name in test.filename: image_path = os.path.join(data_dir, 'test', img_name) img = imread(image_path, flatten=True) img = img.astype('float32') temp.append(img) test_x = np.stack(temp)test_x /= 255.0test_x = test_x.reshape(-1, 784).astype('float32')train_y = train.label.values

我們將訓練數據分成訓練集和測試集。

split_size = int(train_x.shape[0]*0.7)train_x, val_x = train_x[:split_size], train_x[split_size:]train_y, val_y = train_y[:split_size], train_y[split_size:]

K-Means

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

km = KMeans(n_jobs=-1, n_clusters=10, n_init=20)km.fit(train_x)KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300, n_clusters=10, n_init=20, n_jobs=-1, precompute_distances='auto', random_state=None, tol=0.0001, verbose=0)

現在我們已經訓練了模型,下面看一下它在驗證集上的表現如何。

pred = km.predict(val_x)

我們將使用歸一化互信息(NMI)分數來評估我們的模型。

互信息是聚類結果和人工分類之間依賴程度的對稱性度量。它基于聚類純度PI的概念,通過將Ci與M中的所有手動分類進行比較,衡量單個聚類Ci的質量,即Ci與Mj中相同目標的最大數量。因為NMI是歸一化的,所以我們可以使用它來比較聚類個數不同的聚類結果。

NMI公式如下:

normalized_mutual_info_score(val_y, pred) 0.4978202013979692

K-Means + AutoEncoder

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

# this is our input placeholderinput_img = Input(shape=(784,))# "encoded" is the encoded representation of the inputencoded = Dense(500, activation='relu')(input_img)encoded = Dense(500, activation='relu')(encoded)encoded = Dense(2000, activation='relu')(encoded)encoded = Dense(10, activation='sigmoid')(encoded)# "decoded" is the lossy reconstruction of the inputdecoded = Dense(2000, activation='relu')(encoded)decoded = Dense(500, activation='relu')(decoded)decoded = Dense(500, activation='relu')(decoded)decoded = Dense(784)(decoded)# this model maps an input to its reconstructionautoencoder = Model(input_img, decoded)autoencoder.summary() _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) (None, 784) 0 _________________________________________________________________ dense_2 (Dense) (None, 500) 392500 _________________________________________________________________ dense_3 (Dense) (None, 500) 250500 _________________________________________________________________ dense_4 (Dense) (None, 2000) 1002000 _________________________________________________________________ dense_5 (Dense) (None, 10) 20010 _________________________________________________________________ dense_6 (Dense) (None, 2000) 22000 _________________________________________________________________ dense_7 (Dense) (None, 500) 1000500 _________________________________________________________________ dense_8 (Dense) (None, 500) 250500 _________________________________________________________________ dense_9 (Dense) (None, 784) 392784 =================================================================Total params: 3,330,794Trainable params: 3,330,794Non-trainable params: 0_________________________________________________________________# this model maps an input to its encoded representationencoder = Model(input_img, encoded)autoencoder.compile(optimizer='adam', loss='mse')

現在訓練自編碼器模型:

train_history = autoencoder.fit(train_x,train_x, epochs=500, batch_size=2048, validation_data=(val_x, val_x)) Train on 34300 samples, validate on 14700 samples Epoch 1/50034300/34300 [==============================] - 2s 60us/step - loss: 0.0805 - val_loss: 0.0666...Epoch 494/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0103 - val_loss: 0.0138Epoch 495/50034300/34300 [==============================] - 0s 10us/step - loss: 0.0103 - val_loss: 0.0138Epoch 496/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0103 - val_loss: 0.0138Epoch 497/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0103 - val_loss: 0.0139Epoch 498/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0103 - val_loss: 0.0137Epoch 499/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0103 - val_loss: 0.0139Epoch 500/50034300/34300 [==============================] - 0s 11us/step - loss: 0.0104 - val_loss: 0.0138pred_auto_train = encoder.predict(train_x)pred_auto = encoder.predict(val_x)km.fit(pred_auto_train)pred = km.predict(pred_auto)normalized_mutual_info_score(val_y, pred)0.7435578557037037

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

DEC

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

代碼鏈接:

http://www.infoq.com/cn/articles/trudging-into-unsupervised-deep-learning

DEC算法與上述兩種方法相比,效果最好。研究人員發現,進一步訓練DEC模型可以達到更高的性能(NMI高達87)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    132935
  • 深度學習
    +關注

    關注

    73

    文章

    5512

    瀏覽量

    121415

原文標題:深度學習的關鍵:無監督深度學習簡介(附Python代碼)

文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深非監督學習-Hierarchical clustering 層次聚類python的實現

    深度學習基礎-17】非監督學習-Hierarchical clustering 層次聚類-python實現
    發表于 04-28 10:07

    采用監督學習的方法,用深度摘要網絡總結視頻

    中科院和英國倫敦大學瑪麗女王學院的研究人員就生成視頻摘要提出了一種新方法,采用監督學習的方法,用深度摘要網絡(Deep Summarization Network,DSN)總結視頻。
    的頭像 發表于 01-15 10:49 ?7195次閱讀
    采用<b class='flag-5'>無</b><b class='flag-5'>監督學習</b>的方法,用<b class='flag-5'>深度</b>摘要網絡總結視頻

    基于半監督學習框架的識別算法

    人體行為識別是計算機視覺研究的熱點問題,現有的行為識別方法都是基于監督學習框架.為了取得較好的識別效果,通常需要大量的有標記樣本來建模.然而,獲取有標記樣本是一個費時又費力的工作.為了解決這個
    發表于 01-21 10:41 ?1次下載

    利用機器學習來捕捉內部漏洞的工具運用監督學習方法可發現入侵者

    Darktrace新網絡安全公司與劍橋大學的數學家合作,開發了一種利用機器學習來捕捉內部漏洞的工具。它運用監督學習方法,查看大量未標記的數據,并找到不遵循典型模式的碎片。這些原始數據匯集到60多種不同的
    發表于 11-22 16:01 ?1248次閱讀

    你想要的機器學習課程筆記在這:主要討論監督學習監督學習

    with experience E(一個程序從經驗E中學習解決任務T進行某一任務量度P,通過P測量在T的表現而提高經驗E(另一種定義:機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。) 不同類型的機器學習算法:主要
    發表于 12-03 17:12 ?587次閱讀

    如何用Python進行監督學習

    監督學習是一種用于在數據中查找模式的機器學習技術。監督算法給出的數據不帶標記,只給出輸入變量(X),沒有相應的輸出變量。在
    的頭像 發表于 01-21 17:23 ?4301次閱讀

    監督機器學習如何保護金融

    監督機器學習是近年才發展起來的反欺詐手法。目前國內反欺詐金融服務主要是應用黑白名單、有監督學習監督
    發表于 05-01 22:11 ?1025次閱讀

    機器學習算法中有監督監督學習的區別

    監督學習的好處之一是,它不需要監督學習必須經歷的費力的數據標記過程。但是,要權衡的是,評估其性能的有效性也非常困難。相反,通過將監督學習算法的輸出與測試數據的實際標簽進行比較,可以很
    的頭像 發表于 07-07 10:18 ?5825次閱讀

    最基礎的半監督學習

    標記數據訓練的監督學習技術得到更好的結果。這是半監督學習系列文章的第1部分,對這個機器學習的重要子領域進行了簡要的介紹。 區分半監督學習監督學習
    的頭像 發表于 11-02 16:08 ?2695次閱讀

    監督學習最基礎的3個概念

    導讀 今天給大家介紹半監督學習中的3個最基礎的概念:一致性正則化,熵最小化和偽標簽,并介紹了兩個經典的半監督學習方法。 沒看一的點這里哈:半監督學習入門基礎(一) 半監督學習 (SSL
    的頭像 發表于 11-02 16:14 ?3014次閱讀
    半<b class='flag-5'>監督學習</b>最基礎的3個概念

    為什么半監督學習是機器學習的未來?

    為什么半監督學習是機器學習的未來。 監督學習是人工智能領域的第一種學習類型。從它的概念開始,無數的算法,從簡單的邏輯回歸到大規模的神經網絡,都已經被
    的頭像 發表于 11-27 10:42 ?3947次閱讀

    監督學習:比監督學習做的更好

    監督學習是人工智能領域的第一種學習類型。從它的概念開始,無數的算法,從簡單的邏輯回歸到大規模的神經網絡,都已經被研究用來提高精...
    的頭像 發表于 12-08 23:32 ?1453次閱讀

    機器學習中的監督學習應用在哪些領域

    監督學習|機器學習| 集成學習|進化計算| 非監督學習| 半監督學習| 自監督學習|?
    發表于 01-20 10:52 ?4992次閱讀
    機器<b class='flag-5'>學習</b>中的<b class='flag-5'>無</b><b class='flag-5'>監督學習</b>應用在哪些領域

    深度學習中的監督學習方法綜述

    應用中往往難以實現。因此,監督學習深度學習中扮演著越來越重要的角色。本文旨在綜述深度學習中的
    的頭像 發表于 07-09 10:50 ?886次閱讀

    神經網絡如何用監督算法訓練

    神經網絡作為深度學習的重要組成部分,其訓練方式多樣,其中監督學習是一種重要的訓練策略。監督學習
    的頭像 發表于 07-09 18:06 ?871次閱讀
    主站蜘蛛池模板: 国产精品99久久久久久AV蜜臀 | 久久爽狠狠添AV激情五月 | 麒麟色欧美影院在线播放 | 蜜柚影院在线观看免费高清中文 | 美女扒开腿让男生桶爽免费APP | 人C交ZZZ0OOZZZ000| 在线视频免费观看 | 亚洲VA欧美VA天堂V国产综合 | 共妻肉多荤文高h一女n男 | 岛国在线永久免费视频 | 最近免费视频中文2019完整版 | 农民下乡在线观看3 | 国产色精品久久人妻无码看片软件 | 前后灌满白浆护士 | 国产不卡视频在线 | 好大太快了快插穿子宫了 | 果冻传媒在线播放 免费观看 | 手机在线观看你懂的 | 拉菲娱乐主管高工资q39709 | 亚洲国产成人精品青青草原100 | 蜜桃人妻无码AV天堂三区 | 青草久久精品亚洲综合专区 | 不卡的在线AV网站 | 黑丝美女被人操 | 国产午夜久久影院 | 久久久久久亚洲精品影院 | 久久热在线视频精品 | 久久热免费观看视频 | 亚洲国产精品热久久 | 羞羞影院午夜男女爽爽免费 | 免费人成网站在线观看10分钟 | 97精品国产亚洲AV高清 | 暖暖 免费 高清 日本视频5 | 别停好爽好深好大好舒服视频 | 亚洲三级在线视频 | 特级毛片s级全部免费 | 亚洲欧美中文字幕5发布 | 日本久久久久亚洲中字幕 | 琉璃美人煞在线观看 | 伊在香蕉国产在线视频 | 朝鲜女人性猛交 |