當前位置:
首頁 > 最新 > 人工智慧–Autoencoder演算法

人工智慧–Autoencoder演算法

人工智慧之Autoencoder演算法

前言:人工智慧機器學習有關演算法內容,請參見公眾號「科技優化生活」之前相關文章。人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下Autoencoder演算法。 ^_^

Autoencoder自動編碼器演算法是深度學習最常見的演算法之一,因此值得研究。Autoencoder自動編碼器是神經網路NN[(請參見人工智慧(23)]的一種,今天就跟大家介紹一下Autoencoder演算法。

Autoencoder自動編碼器是1986年由Rumelhart 提出,可用於高維複雜數據處理, 它促進了神經網路NN的發展。自動編碼神經網路是一種無監督學習演算法(訓練示例未標記),它使用了BP反向傳播演算法,並讓目標值等於輸入值。

Autoencoder自動編碼器被用於降維或特徵學習。之前介紹過兩種降維方法:PCA[請參見人工智慧(46)]和SVD[請參見人工智慧(54)]。

Autoencoder自動編碼器多層神經網路,其中輸入層和輸出層表示相同的含義,具有相同的節點數, 即輸出層的神經元數量完全等於輸入層神經元的數量。隱藏層的神經元數量少於輸出層的神經元數量。如下圖所示:

Autoencoder演算法概念:

Autoencoder自動編碼器是神經網路NN的一種,經過訓練後能嘗試將輸入複製到輸出,換句話說,就是使輸出的內容和輸入的內容一樣。Autoencoder自動編碼器學習的是一個輸入輸出相同的「恆等函數」。

自動編碼器的網路結構很簡單,包括Input Layer,Hidden Layer和Output Layer。其中,動編碼器內部有一個隱含層h,可以產生編碼來表示輸入。該網路可以看作由兩部分組成:一個編碼器h=f(x)和一個生成重構的解碼器r=g(h)。最後使得x約等於g(f(x))。可以通過設計網路使得x=g(f(x))。

Autoencoder演算法本質:

Autoencoder演算法本質是:將神經網路NN的隱含層看成是一個編碼器和解碼器,輸入數據經過隱含層的編碼和解碼,到達輸出層時,確保輸出的結果盡量與輸入數據保持一致。也就是說,隱含層是盡量保證輸出數據等於輸入數據的。

理論上可以的,但實際不這麼做。Autoencoder自動編碼器應該設計成不能學會完美地複製,通過強加一些約束,使Autoencoder自動編碼器只能近似地複製,因此它能學習到數據的有用特性。

Autoencoder自動編碼器網路的約束如下:

1)HiddenLayer的維度要遠小於Input Layer維度;

2)Output用於重構Input,即讓誤差L(Input,Output)最小

因為是無標籤數據,所以誤差的來源就是重構後與輸入相比得到的。

Autoencoder演算法描述:

Autoencoder自動編碼器可以看做將數據進行壓縮,由原來的「n維」壓縮成「m維」,其中m為隱藏層神經元數目。然後再在需要的時候用損失盡量小的方式將數據恢復出來。

演算法描述

1)Autoencoder自動編碼網路是要將經過壓縮數據還原,即將學習一組hW,b≈x,這是演算法要學習的參數

2)還原數據應該使得損失盡量小,規定了目標函數為:

J(W,b)=(∑(x^?x)^2)/m

AutoEncoder通過普通的BP神經網路進行預訓練,從而確定神經網路中權重矩陣W的初始值。其目標是讓輸入值等於輸出值。首先用W對輸入進行編碼,經過激活函數後,再用WT進行解碼,從而使得h(x)≈x。該過程可以看作是對輸入數據的壓縮編碼,將高維的原始數據用低維的向量表示,使壓縮後的低維向量能保留輸入數據的典型特徵,從而能夠較為方便的恢復原始數據。需要注意的是:在對數據進行編碼和解碼時,使用的是同一個參數矩陣W。這可看作是一種約束,可以減少參數個數,降低模型複雜度

數據壓縮是指限制隱藏層神經元數量。數據壓縮依靠的是數據本身是有冗餘信息的。當輸入是完全隨機,相互獨立同分布的時候,網路將很難學得一個有效的壓縮模型,然而現實中的數據(自然圖像、語言、聲音)總是存在不同程度的冗餘性。Autoencoder自編碼網路通過學習發現並去掉了這些冗餘信息

實際上,自編碼網路學習出的低維數據表示十分類似於PCA[請參見人工智慧(46)]學習出的主成分。學習過程可以簡單地描述為最小化一個損失函數L(x,g(f(x)))+Ω(h) ,Ω(h)是懲罰項。當解碼器是線性的且L是均方誤差,就可以學習出與PCA方法相同生成子空間。AutoEncoder其實是增強的PCA。AutoEncoder 具有非線性變換單元,因此學出來的Code可能更精鍊,對Input的表達能力更強。

另外一種數據壓縮方式就是限制隱藏層的稀疏性,要求隱藏層中的激活神經元是「稀疏」的,即隱藏層中大部分神經元處於非激活狀態。這樣的編碼器稱為SparseAutoencoder稀疏自編碼器

SparseAutoencoder稀疏自編碼器的全局損失函數為:

演算法流程大概為:由輸入與輸出的差別構造準則函數,再求各個參數的偏導數,再用BP方式更新各個權重(採用梯度下降法)。在Sparse Autoencoder網路訓練中,前向傳播步驟應同時計算ρ,然後在後向傳播步驟時做相應的修改。

Autoencoder演算法意義:

Autoencoder自動編碼器嘗試逼近一個恆等函數,使得輸出x^接近於輸入x。當然為了使這個函數有意義,需要加入一些限制條件,比如說限制隱藏神經元的數目,就可以發現一些有意義的結構。Autoencoder可以學習到數據的一些壓縮表示。例如如果輸入數據為200維,隱藏層為100個,那麼就需要從這100維的數據中重構出200維的輸出,使這個輸出接近於200維的輸入。因此這個隱藏層的100維的數據就必然會包含著輸入數據的一些相關性。所以說Autoencoder就是為了學習到輸入數據的相關性表示的一種方法。

Autoencoder演算法優點:

1)有降維效果,可以用於提取主要特徵;

2)可以抓住主要特徵,故具有一定抗噪能力;

3)稀疏的可解釋性好,現實場景大多滿足這種約束;

4)演算法比較穩健;

5)表達能力強;

6)擴展能力強;

7)便於數據可視化分析。

Autoencoder演算法缺點:

1)理論上看起來很智能,但是實際上並不太好用;

2)壓縮能力僅適用於與訓練樣本相似的樣本;

3)要求 encoder 和 decoder 的能力不能太強。

Autoencoder演算法改進:

Hinton於2006年對原型自動編碼器結構進行改進,產生了DAE(Deep Auto Encoder),先用無監督逐層貪心訓練演算法完成對隱含層的預訓練,然後用BP 演算法對整個神經網路進行系統性參數優化調整,顯著降低了神經網路NN的性能指數,有效改善了BP 演算法易陷入局部最小問題。

DAE相對於AutoEncoder加大了深度,提高學習能力,更利於預訓練

DenoisingAutoEncoder去噪自動編碼器是AutoEncoder的一個變種,與AutoEncoder不同的是,Denoising AutoEncoder在輸入的過程中加入了雜訊信息,從而讓AutoEncoder能夠學習這種雜訊。Denoising AutoEncoder與RBM[(請參見人工智慧(37)]非常像(參數、作用和過程類似),但也有區別(原理、訓練準則和訓練方法等不一樣)。

Autoencoder演算法應用:

Autoencoder演算法期望利用樣本自適應學習出穩健、表達能力強、擴展能力強的設想很好,但是實際中應用場景很有限。一般可以應用於機器學習之數據降維、特徵抽取和數據可視化分析,也被擴展用於生成模型中(有學者說效果驚人)。

結語:

Autoencoder演算法是機器學習之深度學習最常見的演算法之一,它是一種無監督的學習演算法,值得深入研究。Autoencoder網路結構可以有多層,且多層網路可以由標準的BP演算法來更新網路權重和偏置,與標準神經網路不同的是Autoencoder的輸入層和輸出層是「同一層」。AutoEncoder其實是增強的PCA。Autoencoder演算法是一種非常實用的學習演算法,應用範圍一般,但擴展能力強,可以應用於機器學習之數據降維、特徵抽取和數據可視化分析,也被擴展用於生成模型中。

-----以往文章推薦-----


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優化生活 的精彩文章:

人工智慧–EM演算法
人工智慧–ID3演算法

TAG:科技優化生活 |