1. 程式人生 > >【模型詳解】AutoEncoder詳解(七)——棧式自編碼:Stacked AutoEncoder

【模型詳解】AutoEncoder詳解(七)——棧式自編碼:Stacked AutoEncoder

  • 更新時間:2018-12-05

前言

之前介紹了AutoEncoder及其幾種拓展結構,如DAE,CAE等,本篇部落格介紹棧式自編碼器。

模型介紹

普通的AE模型通過多層編碼解碼過程,得到輸出,最小化輸入輸出的差異從而使模型學到有用的特徵。但是這種AE結構又一個弊端:雖然經過了多次的特徵提取,但對於目標函式的計算只有一次,那麼,如果通過“棧化”AE結構進行逐層的貪婪訓練得到的效能會不會比現有的要好呢?
實際上,Stacked AutoEncoder就是多個AE的“棧化”結果,其計算流程如下:
下圖展示的是一個基礎的AE結構,由 x

i x_i h i ( 1 )
h_i^{(1)}
的過程為編碼過程,由 h i ( 1 )
h_i^{(1)}
x ^ i \hat{x}_i 的過程為解碼過程,通常情況下,最小化損失函式: (1) L = i = 1 n ( x ^ i x i ) 2 L=\sum_{i=1}^n(\hat{x}_i - x_i)^2 \tag{1}
就可以是模型學習到有用的特徵,當然,這個損失函式不唯一。
“棧化”過程指的是將多個下圖的訓練過程融合到一起,使模型能夠學得到更有效的資訊。
在這裡插入圖片描述
“棧化”過程的基本實現思想如下:訓練好上圖的AE結構後,捨去解碼過程,此時我們可以理解為code(4維)具有一定的降維、提取特徵的能力。將此時的code作為輸入,輸入到新的AE結構中進行訓練,如下圖所示:
在這裡插入圖片描述
按照與上面同樣的思想來訓練這個AE,這樣可以在上面的code基礎上再一次進行降維,如此重複,使每次的“棧化”過程都能夠學習到近似最優,最後得到code,可以認為,這個code更能夠提取出有效的特徵,因為它是多種效果的“疊加”,相應的,如果是進行分類操作,直接將code接入到分類器中,就可以得到分類結果,下圖所示的是將code接入到softmax中:
在這裡插入圖片描述
上述棧式自編碼器的整體訓練過程可以這樣表示,途中省略了每次訓練的解碼過程:
在這裡插入圖片描述