既然前一篇提到學習特徵是一件重要的事,那麼我們就來講講 autoencoder 吧!

Autoencoder 就是一個 unsupervised 方法,試圖學習出可以用的特徵。雖然不少人可能會說他是一個壓縮的方法或是一個降維的方法,其實他都是。

Autoencoder 就是希望給一個 input ,經過轉換之後會成為一個新的、維度比較低的向量,並且可以再由這個向量透過轉換還原成原本的 input。既然低維的向量可以還原成 input 的樣子,那代表他含有足夠的資訊可以還原,所以你可以把他看成是一種壓縮或是降維。我想強調的是,autoencoder 可以將一個 input 的樣子轉換成一個新的表示方式,我們就可以用新的視角來看待他。

模型

Autoencoder 算是一個非常簡單的模型,他就是將資料向量經過一個轉換過後成為新的向量,在讓新的向量經過轉換過後還原成原本的向量。

抽象上來說比較像是:

$$
X \rightarrow Z \rightarrow X
$$

Autoencoder 可以被拆解成兩個部份:一個是 encoder $X \rightarrow Z$,另一個是 decoder $Z \rightarrow X$ 的部份。

在這個架構上 encoder-decoder 是相接在一起做訓練的。

最簡單的 autoencoder 在 encoder 跟 decoder 上各自都只有一層,當然你可以不只一層,取決於你自己的狀況。

他是一個非常簡單的架構,所以有非常多的變體,像是 denoising autoencoder、sparse autoencoder、variational autoencoder…等等。

每個都有自己獨特的用法,所以這是一個非常基礎的模型。