【模型詳解】AutoEncoder詳解(七)——棧式自編碼:Stacked AutoEncoder
阿新 • • 發佈:2019-01-10
- 更新時間:2018-12-05
前言
之前介紹了AutoEncoder及其幾種拓展結構,如DAE,CAE等,本篇部落格介紹棧式自編碼器。
模型介紹
普通的AE模型通過多層編碼解碼過程,得到輸出,最小化輸入輸出的差異從而使模型學到有用的特徵。但是這種AE結構又一個弊端:雖然經過了多次的特徵提取,但對於目標函式的計算只有一次,那麼,如果通過“棧化”AE結構進行逐層的貪婪訓練得到的效能會不會比現有的要好呢?
實際上,Stacked AutoEncoder就是多個AE的“棧化”結果,其計算流程如下:
下圖展示的是一個基礎的AE結構,由
到
的過程為編碼過程,由
到
的過程為解碼過程,通常情況下,最小化損失函式:
就可以是模型學習到有用的特徵,當然,這個損失函式不唯一。
“棧化”過程指的是將多個下圖的訓練過程融合到一起,使模型能夠學得到更有效的資訊。
“棧化”過程的基本實現思想如下:訓練好上圖的AE結構後,捨去解碼過程,此時我們可以理解為code(4維)具有一定的降維、提取特徵的能力。將此時的code作為輸入,輸入到新的AE結構中進行訓練,如下圖所示:
按照與上面同樣的思想來訓練這個AE,這樣可以在上面的code基礎上再一次進行降維,如此重複,使每次的“棧化”過程都能夠學習到近似最優,最後得到code,可以認為,這個code更能夠提取出有效的特徵,因為它是多種效果的“疊加”,相應的,如果是進行分類操作,直接將code接入到分類器中,就可以得到分類結果,下圖所示的是將code接入到softmax中:
上述棧式自編碼器的整體訓練過程可以這樣表示,途中省略了每次訓練的解碼過程: