自編碼器及其相關模型

2021-08-20 11:41:29 字數 1526 閱讀 2132

自編碼器是一種無監督的神經網路模型,其核心作用是學習到輸入資料的深層表示。主要應用在兩方面:一是特徵提取;二是非線性降維,用於高維資料的視覺化,與流行學習關係密切。

本節主要介紹幾種常見的自編碼器及其變種網路。

20世紀80年代提出,原始的ae網路是乙個三層的前饋型神經網路,包括輸入層、隱含層、輸出層

輸入層:x=

隱含層:h=

輸出層:x^= 輸出層的神經元個數必須和輸入層神經元個數相同

整個ae有下面兩個操作構成:

輸入層到隱含層的編碼過程:

h(x)=f(wtx+b)
隱含層到輸出層的解碼過程:如果w*=wt,成為tied weights

x^=f((w*)th(x)+c)
ae是乙個無監督網路,其學習目的就是將輸入層的資料x通過轉換得到其隱含層的表示h(x),然後由隱含層重構,還原出接近原始資料的抽象的表示x^。由此,得到構建ae的損失函式:對於二值神經網路,也就是輸入層的資料非0即1,那麼損失函式通常由交叉熵來表示:

若輸入神經元是任意實數,則通常用均方誤差來定義損失函式:

利用梯度下降法等優化方法求得w,b,c。

隱含層設計方式有兩種:

1)隱含層神經元個數小於輸出層神經元個數時,稱為undercomplete。這種設計方式使得輸入層到隱含層的變換本質上是一種降維操作。網路試圖以更小的維度來表示原始資料而又不損失資訊,從而得到輸入層的壓縮資訊。當隱含層的啟用函式採用線性啟用函式時,自編碼器也稱為線性自編碼器,其效果等同於pca(主成分分析)降維。

2)隱含層神經元個數大於輸出層神經元個數時,稱為overcomplete。這種設計方式一般用於稀疏編碼器,可以獲得稀疏的特徵表示,也就是隱含層中有大量的神經元值為0.

當輸入層含有雜訊時,輸入資料無法體現出原始資料的正確分布情況,那麼輸出層的結果肯定也包含雜訊,為了避免雜訊的影響,在輸入層x之後又加了一層去雜訊的隱含層x`,所以dae是乙個四層的自編碼器結構。

去雜訊的隱含層設計方法有很多,列如mask noise。設定乙個噪音閾值p,0

將多個自編碼器疊加,利用上一層的隱含層表示作為下一層的輸入,得到更抽象的表示。即x->h1->h2->……hi->……->x^

sae的乙個很重要的應用就是初始化網路權重引數,以提高訓練收斂速度和減緩梯度消失。對於有監督學習來說,主要從以下兩個階段作用於網路。

1)逐層預訓練

逐層預訓練是指通過自編碼器來訓練每一層的引數,作為神經網路的初始化引數。

2)微調

通過上一步預訓練得到的權重來初始化網路,接下來通過梯度下降法最優化損失函式迭代網路獲得最優引數。

稀疏編碼器是自編碼器的變種網路,能夠學習到輸入資料的稀疏特徵表示,因此被廣泛用於無監督的特徵提取學習中。

數學表示:稀疏編碼器和自編碼器一樣都是三層網路結構,對於任意的輸入資料x,期望模型都能得到隱含層的表示h和輸出層的表示x^,且x、h、x^滿足下列兩個性質:

1)隱含層向量是稀疏的,即隱含層中有盡可能多的0值

2)輸出層資料能盡可能還原輸入資料

自編碼器及其用途

自編碼器 autoencoder 是一種旨在將它們的輸入複製到的輸出的神經網路。他們通過將輸入壓縮成一種隱藏空間表示 latent space representation 然後這種重構這種表示的輸出進行工作。這種網路由兩部分組成 編碼器 將輸入壓縮為潛在空間表示。可以用編碼函式h f x 表示。解...

自編碼器(AutoEncoder

本文講述自編碼器 auto encoder,下文簡稱ae 將按照以下的思路展開講解,力圖使得初學者能看懂其中要義。目錄如下 1.ae的基本原理 2.ae的用途 3.基於mnist資料集的ae的簡單python實現 ae,是神經網路模型的一種,是一種全連線網路模型,而且進行無監督學習,下圖是簡單的ae...

自編碼器簡介

autoencoder,中文譯名自編碼器。主要用於特徵提取,可以理解為一種基於神經網路的壓縮 降維演算法,和pca等類似。自編碼器為一種有損壓縮演算法,通過壓縮 編碼 獲得資料等抽象特徵,並可以通過解壓縮 解碼 將抽象特徵盡可能地還原成原始資料。因此,根據原ppt中對自編碼器 學習使用者高度抽象的特...