自編碼器簡介

2021-08-21 13:16:27 字數 1255 閱讀 8481

autoencoder,中文譯名自編碼器。主要用於特徵提取,可以理解為一種基於神經網路的壓縮、降維演算法,和pca等類似。自編碼器為一種有損壓縮演算法,通過壓縮(編碼)獲得資料等抽象特徵,並可以通過解壓縮(解碼),將抽象特徵盡可能地還原成原始資料。

因此,根據原ppt中對自編碼器「學習使用者高度抽象的特徵」這一描述,可以推測出在模型任務中,主要使用自編碼器對資料進行特徵提取。

自編碼器網路結構分為兩部分:編碼器和解碼器,在訓練時需要同時訓練編碼器和解碼器,在使用時可以根據實際需要,單獨執行編碼器或解碼器。自編碼器基本都基於神經網路實現,根據資料種類的不同,具體使用不同的網路結構。例如,對於使用「卷積-最大池化」交替的網路結構,對於普通的特徵向量,則一般使用全連線層。

例如,對於乙個維度為784維的特徵向量,使用如下網路結構構件自編碼器,**來自csdn部落格,使用keras框架:

input_img = input(shape=(784,))

encoded = dense(128, activation='relu')(input_img)

encoded = dense(64, activation='relu')(encoded)

decoded_input = dense(32, activation='relu')(encoded)

decoded = dense(64, activation='relu')(decoded_input)

decoded = dense(128, activation='relu')(decoded)

decoded = dense(784, activation='sigmoid')(encoded)

autoencoder = model(inputs=input_img, outputs=decoded)

對於784維的輸入資料,通過3層全連線(dense)層,壓縮為32維的特徵向量,然後再次經過3層全連線層,還原為784維的特徵向量。

由於編碼和解碼是乙個相對應的過程,所以訓練時必須同時進行。自編碼器網路的訓練思路如下:

1. 對於輸入資料,通過前文所述的網路結構進行計算,得到結果;

2. 將1中得到的結果和原始資料進行比較,得到損失;

3. 根據2中得到的損失優化網路;

4. 反覆迭代至收斂。

訓練完畢後,匯出模型,即可開始使用。使用時往往僅涉及到編碼,而不涉及解碼,此時可以通過在網路中匯出中間結果的方式,在使用時僅計算網路的前半部分,從而得到編碼結果。

此時得到的編碼結果即為高度抽象的使用者特徵。

自編碼器(AutoEncoder

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

了解自編碼器

1.什麼是自編碼器?自動編碼器是一種無監督的機器學習演算法,該演算法將影象作為輸入並使用較少的位數來重建它。這聽起來像是影象壓縮,但是自動編碼器和通用影象壓縮演算法之間的最大區別在於,在自動編碼器的情況下,壓縮是通過學習訓練資料集來實現的。當影象類似於所使用的訓練集時,雖然可以實現合理的壓縮,但是自...

自編碼器(AutoEncoder)

自編碼器主要分為兩步 編碼 encoder 和解碼 decoder 編碼階段主要是將輸入資訊對映到低維度的空間 提取有用的特徵 解碼階段主要是為了還原輸入的結果。其中損失函式l用於度量輸出資訊與輸入資訊偏離的程度 正則自編碼器是在損失函式中加入對模型複雜度的懲罰項 根據損失函式的不同,自編碼器可以分...