您的位置:首頁»正文

人工智慧–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演算法是一種非常實用的學習演算法,應用範圍一般,但擴展能力強,可以應用於機器學習之資料降維、特徵抽取和資料視覺化分析,也被擴展用於生成模型中。

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

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演算法是一種非常實用的學習演算法,應用範圍一般,但擴展能力強,可以應用於機器學習之資料降維、特徵抽取和資料視覺化分析,也被擴展用於生成模型中。

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

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示