時間:2018-04-28 18:05:11來源:網絡轉載
自編碼器可以認為是一種數據壓縮算法,或特征提取算法。本文作者NathanHubens介紹了autoencoders的基本體系結構。首先介紹了編碼器和解碼器的概念,然后就“自編碼器可以做什么?”進行討論,最后分別講解了四種不同類型的自編碼器:普通自編碼器,多層自編碼器,卷積自編碼器和正則化自編碼器。
Deepinside:Autoencoders
自編碼器指的是試圖讓輸出和輸入一樣的神經網絡。他們通過將輸入壓縮成一個隱藏空間表示來進行工作,然后通過這種表示重構輸出。這種網絡由兩部分組成:
1.編碼器:這是自編碼網絡的一部分,功能在于把輸入變成一個隱藏的空間表示。它可以用一個編碼函數h=f(x)表示。
2.解碼器:這部分旨在從隱藏空間的表示重構輸入。它可以用解碼函數r=g(h)表示。
作為一個整體的自編碼器可以用函數g(f(x))=r來描述,其中r與原始輸入x相近。
為什么要將輸入復制到輸出中?
如果autoencoders的唯一目的是將輸入復制到輸出中,那么它們將毫無用處。實際上,我們希望通過訓練autoencoder將輸入復制到輸出中,隱藏表示h將具有有用的屬性。
這可以通過在復制任務上添加一些限制條件進行實現。從自編碼器獲得有用特征的一種方法是將h限制為小于x的維度,在這種情況下,自編碼器是不完整的。通過訓練不完整的表示,我們強制自編碼器學習訓練數據的最顯著特征。如果自編碼器的容量過大,自編碼器可以出色地完成賦值任務而沒有從數據的分布抽取到任何有用的信息。如果隱藏表示的維度與輸入相同,或者隱藏表示維度大于輸入維度的情況下,也會發生這種情況。在這些情況下,即使線性編碼器和線性解碼器也可以將輸入復制到輸出,而無需了解有關數據分配的任何有用信息。理想情況下,自編碼器可以成功地訓練任何體系結構,根據要分配的復雜度來選擇編碼器和解碼器的代碼維數和容量。
自編碼器可以用于干什么?
當前,數據去噪和數據可視化中的降維被認為是自編碼器的兩個主要的實際應用。通過適當的維度和稀疏性約束,自編碼器可以學習比PCA或其他基本技術更有趣的數據投影。
自編碼器通過數據樣本自動學習。這意味著很容易訓練特定的算法實例,該算法在特定類型的輸入中表現良好,并且不需要任何新工程,只需要適當的訓練數據。
但是,自編碼器在圖像壓縮方面做得不好。由于自編碼器是在給定的一組數據上進行訓練的,因此它將對類似于所用訓練集中的數據實現合理的壓縮結果,但是作為圖像壓縮器效果是不好的。像JPEG這樣的壓縮技術效果比自編碼器效果好很多。
自編碼器經過訓練,可以在輸入通過編碼器和解碼器后保留盡可能多的信息,但也會接受訓練以使新的表示具有各種不錯的屬性。不同類型的自編碼器旨在實現不同類型的屬性。我們將關注四種類型的自編碼器。
自編碼器的類型:
在本文中,將介紹以下四種類型的自編碼器:
1.普通自編碼器
2.多層自編碼器
3.卷積自編碼器
4.正則化的自編碼
為了演示不同類型的自編碼器,我使用Keras框架和MNIST數據集創建了每個類型自編碼器的示例。
普通自編碼器
普通自編碼器是三層網絡,即具有一個隱藏層的神經網絡。輸入和輸出是相同的,我們將學習如何重構輸入,例如使用adam優化器和均方誤差損失函數。
在這里,我們看到我們有一個欠完備自編碼器,因為隱藏層維(64)小于輸入(784)。這個約束將強加我們的神經網絡來學習壓縮的數據表示。
多層自編碼器
如果一個隱藏層不夠用,我們顯然可以將自編碼器擴展到更多的隱藏層。
現在我們的實現使用3個隱藏層,而不是一個。任何隱藏層都可以作為特征表示,但我們將使網絡結構對稱并使用最中間的隱藏層。
卷積自編碼器
我們也可能會問自己:自編碼器可以用于卷積層而不是全連接層嗎?
答案是肯定的,原理是一樣的,但使用圖像(3D矢量)而不是平坦的1維矢量。對輸入圖像進行下采樣以提供較小尺寸的隱藏表示并強制自編碼器學習圖像的壓縮版本。
正則化的自編碼器
還有其他一些方法可以限制自編碼器的重構,而不是簡單地強加一個維度比輸入小的隱藏層。正規化自編碼器不是通過調整編碼器和解碼從而限制模型容量,而是使用損失函數,鼓勵模型學習除了將輸入復制到其輸出之外的其他屬性。在實踐中,我們通常會發現兩種正規化自編碼器:稀疏自編碼器和去噪自編碼器。
稀疏自編碼器:稀疏自編碼器通常用于學習分類等其他任務的特征。稀疏自編碼器必須響應數據集獨特的統計特征,而不僅僅是作為標識函數。通過這種方式,用稀疏性懲罰來執行復制任務的訓練可以產生有用的特征模型。
我們可以限制自編碼器重構的另一種方式是對損失函數施加約束。例如,我們可以在損失函數中添加一個修正術語。這樣做會使我們的自編碼器學習數據的稀疏表示
注意在我們的正則項中,我們添加了一個l1激活函數正則器,它將在優化階段對損失函數應用一個懲罰。在結果上,與正常普通自編碼器相比,該表示現在更稀松。
去噪自編碼器:我們可以獲得一個自編碼器,通過改變損失函數的重構誤差項來學習一些有用的東西,而不是對損失函數加以懲罰。這可以通過給輸入圖像添加一些噪聲并使自編碼器學會移除噪聲從而來進行訓練。通過這種方式,編碼器將提取最重要的特征并學習數據的更魯棒的表示。
總結
在本文中,我們介紹了autoencoders的基本體系結構。我們還研究了許多不同類型的自編碼器:普通自編碼器,多層自編碼器,卷積自編碼器和正則化自編碼器。根據約束的不同(縮小隱藏層的尺寸或施加其他類型的懲罰項),可以學到不同屬性的編碼。
標簽:
上一篇:選購工業機器人力矩傳感器的...
下一篇:什么是機器視覺驗證?
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-05-19
2025-04-30
2025-04-11
2025-04-08
2025-03-31
2025-03-26