AutoEncoder

自動編碼器

自動編碼器

AutoEncoder

AutoEncoder 是多層神經網絡的一種非監督式學習算法,稱為自動編碼器。 其架構包含 Encoder(編碼器)和 Decoder(解碼器)兩個部分,它們分別做壓縮與解壓縮的動作,讓輸出值和輸入值表示相同意義 透過重建輸入的神經網路訓練過程, 隱藏層的向量具有降維的作用。 特點是編碼器會建立一個或多個隱藏層, 其中包含了輸入資訊的低維向量。 然後再經由解碼器,通過隱藏層的低維向量重建輸入資料。 通過神經網路的訓練最後 AutoEncoder 會在隱藏層中得到一個代表輸入資料的低維向量。

實作參考文獻:
Reducing the Dimensionality of Data with Neural Networks

變分自動編碼器

Variational Autoencoder

VAE 是由 AutoEncoder 改編而成,結構上也是由 Encoder 和 Decoder 所構成。 Variational Autoencoder 與 AutoEncoder 的不同之處在於 VAE 在編碼過程增加了一些限制, 迫使生成的向量遵從高斯分佈。 由於高斯分佈可以通過其 mean 和 standard deviation 進行參數化, 因此 VAE 理論上是可以讓你控制要生成的圖片。

實作參考文獻:
Auto-Encoding Variational Bayes

向量化變分自動編碼器

Vector-Quantized Variational AutoEncoder

VQVAE 同樣維持著 Encoder-Decoder 的架構, 這邊所提取的特徵保留了多維的結構, Encoder 的輸出其實就是在 CNN 中我們熟知的 Feature map。 接著在 Vector Quantization 部分會有 K 個編碼向量, 每一個編碼向量同樣有 D 個維度, 根據 Feature Map 中的每個點位比對 D 維的特徵向量與 Codebook 中 K 個編碼向量的相似程度, 並且以最接近的編碼向量索引作取代, 這樣就達到了將原圖轉換為離散表徵的步驟。 在 Decode 階段, 只要將 Codebook 中相對應的編碼向量置於表徵的相對應位置, 就可以得到轉換後的表徵, 接著同樣通過 Decoder 後就可得到還原後的原始資料。

GitHub 連結:VQVAE