李宏毅機器學習2016 第十四講 深度自編碼器

視頻鏈接:李宏毅機器學習(2016)_演講?公開課_科技_bilibili_嗶哩嗶哩

課程資源:Hung-yi Lee

課程相關PPT已經打包命名好了:鏈接:pan.baidu.com/s/1c3Jyh6 密碼:77u5

我的第十三講筆記:李宏毅機器學習2016 第十三講 無監督學習之非線性降維:流型學習(Mainfold Learning)

Unsupervised Learning:Deep Auto-encoder

本章主要講述了深度自編碼器的原理及其應用。

1. 自編碼器(Auto-encoder)

自編碼器是一種無監督學習方法,可用於數據降維及特徵抽取。自編碼器由編碼器(Encoder)和解碼器(Decoder)兩部分組成。編碼器通常對輸入對象進行壓縮表示,解碼器對經壓縮表示後的code進行解碼重構。

2.深度自編碼器(Deep Auto-encoder)

自編碼器可以是深度結構。

如上圖所示,784維的輸入經過多層編碼器,得到30維的code,接著再將其進行解碼,可以看出效果是較理想的。

3.深度自編碼器的應用

①文本檢索(Text Retrieval)

一般的文本檢索方法有向量空間模型(Vector Space Model),上圖中藍色的點代表的是文檔(經過降維後),接著計算要查詢的文檔與其他的距離,選擇較為接近,相似程度高的,但這個模型的好壞關鍵取決於向量化的好壞;單詞包(Bag-of-word),通過建立一個詞向量,若文檔中存在某些詞記1否則記0,然後再計算相似性,但此模型不能很好的表達語義層面。

自編碼器可以很好的實現文本搜索。具有相同主題的文檔會有相近的code。

②圖像搜索(Image Search)

通過在code上計算相似度,有著很好的效果。

③預訓練深度神經網路(Pre-training DNN)

在深度學習中,自編碼器可用於在訓練階段開始前,確定權重矩陣W的初始值。

神經網路中的權重矩陣W可看作是對輸入的數據進行特徵轉換,即先將數據編碼為另一種形式,然後在此基礎上進行一系列學習。如果編碼後的數據能夠較為容易地通過解碼恢復成原始數據,我們則認為W較好的保留了數據信息。

這是一種貪婪地逐層預訓練。在預訓練後得到權重初始值後,接著用Backpropagation反向傳播演算法對網路進行微調(fine-tune)。

但是現如今強大的計算能力,使得深度學習並不使用自編碼來預訓練。在大量無標籤的數據情況下,深度自編碼器仍然有一定作用。

④Auto-decoder for CNN

在卷積神經網路中,也可以應用自編碼器。

CNN主要是卷積(Convolution)和池化(Pooling)操作。

因此相對應的就要有反卷積(Deconvolution)和反池化(Depooling)操作。

反池化很好理解,只需記住池化過程中的位置(最大值出現的地方),在反池化的過程中,將對應位置置相應的值,其餘位置置0即可。

反卷積操作就有點難以理解。實際上,反卷積就是卷積。

指需對卷積後的結果進行填充(padding)再進行池化操作,所得值就是所謂的反卷積結果。

4.總結

本章主要講述了自編碼的原理,及其在文本檢索(Text Retrieval)、圖像搜索(Image Search)、預訓練深度神經網路(Pre-training DNN)以及在卷積神經網路(CNN)上的應用。


推薦閱讀:

除了啤酒和尿布,關聯規則分析究竟還有哪些實際應用?
Gradient Boosting
機器學習實戰之決策樹(三)
某熊周刊系列:一周推薦外文技術資料(2.5)

TAG:机器学习 | 编码器 | 深度学习DeepLearning |