深度學習——自動編碼器,對稱網絡結構


from:http://blog.csdn.net/a819825294/article/details/53516980

1.初識Auto Encoder1986 年Rumelhart 提出自動編碼器的概念,並將其用於高維復雜數據處理,促進了神經網絡的發展。自編碼神經網絡是一種無監督學習算法,它使用了反向傳播算法,並讓目標值等於輸入值,比如  。圖1是一個自編碼神經網絡的示例。

 

 
圖1

 

自動編碼器(autoencoder) 是神經網絡的一種,該網絡可以看作由兩部分組成:一個編碼器函數h = f(x) 和一個生成重構的解碼器r = g(h)。傳統上,自動編碼器被用於降維或特征學習

自編碼神經網絡嘗試學習一個的函數。換句話說,它嘗試逼近一個恆等函數,從而使得輸出接近於輸入x 。恆等函數雖然看上去不太有學習的意義,但是當我們為自編碼神經網絡加入某些限制,比如限定隱藏神經元的數量,我們就可以從輸入數據中發現一些有趣的結構

舉例來說,假設某個自編碼神經網絡的輸入x 是一張 10×10圖像(共100個像素)的像素灰度值,於是 n=100 ,其隱藏層中有50個隱藏神經元。注意,輸出也是100維。由於只有50個隱藏神經元,我們迫使自編碼神經網絡去學習輸入數據的壓縮表示,也就是說,它必須從50維的隱藏神經元激活度向量中重構出100維的像素灰度值輸入x 。

一些需要注意的問題:

如果網絡的輸入數據是完全隨機的,比如每一個輸入都是一個跟其它特征完全無關的獨立同分布高斯隨機變量,那么這一壓縮表示將會非常難學習。但是如果輸入數據中隱含着一些特定的結構,比如某些輸入特征是彼此相關的,那么這一算法就可以發現輸入數據中的這些相關性。事實上,這一簡單的自編碼神經網絡通常可以學習出一個跟主元分析(PCA)結果非常相似的輸入數據的低維表示。

2.Deep Auto Encoder(DAE)

2006 年,Hinton 對原型自動編碼器結構進行改進,進而產生了DAE,先用無監督逐層貪心訓練算法完成對隱含層的預訓練,然后用BP 算法對整個神經網絡進行系統性參數優化調整,顯著降低了神經網絡的性能指數,有效改善了BP 算法易陷入局部最小的不良狀況。

簡單來說,DAE相對於原始的Auto Encoder加大了深度,提高學習能力,更利於預訓練。如圖2所示,一個5層的DAE,隱層節點數從高到低,再從低到高,最終只需要取得的向量即可。

圖2

 

注:圖片里面的GO,是我課題需要,可以忽略。

 

3.利用keras實現DAE

 

見原文!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM