參考:
【1】 https://lilianweng.github.io/posts/2018-08-12-vae/
寫在前面:
只是直覺上的認識,并沒有數學推導。后面會寫一篇(抄)大一統文章(概率角度理解為什么AE要選擇MSE Loss)
TOC
- 1 AutoEncoder
- 2 Denoising AutoEncoder
1 AutoEncoder
AE實際上是一個壓縮模型,它通過將輸入 x x x傳進encoder將圖像壓縮到隱式特征(latant representation),然后再通過decoder輸出 x ′ x' x′,試圖重建出 x x x。既重建公式為該兩個變量的均方差損失:
L = ∣ ∣ x ? x ′ ∣ ∣ 2 = 1 N ∑ i = 1 N ( x i ? x ′ i ) 2 L=||x-x'||^2=\frac{1}{N}\sum_{i=1}^N(x^i -x'^i)^2 L=∣∣x?x′∣∣2=N1?i=1∑N?(xi?x′i)2
如果成功訓練好一個AE,那么encoder就可以說能正確提取出輸入 x x x的重要特征,而decoder也可以根據這些重要特征還原出與輸入 x x x相近的 x ′ x' x′。
但AE僅僅是在學習等式函數 x = x ′ x=x' x=x′,所以很容易就過擬合了(神經網絡有強大的擬合函數的能力),過擬合之后那么其僅對訓練集數據表現很好,對未知數據的表現就一塌糊涂了。
2 Denoising AutoEncoder
DAE相當于該模型上了強度,與其給你看完整的東西,不如我遮蓋一部分,讓你猜這部分是什么,然后將這個東西還原出來(人類視覺方面,如果遮蓋了某個東西的一部分,大概率我們還是能想象出來的)
輸入到encoder的數據就由 x x x,變為 x ~ i ~ M D ( x ~ i ∣ x i ) \tilde x^i \sim M_D(\tilde x^i|x^i) x~i~MD?(x~i∣xi),其中 x ~ \tilde x x~表示被破壞的,或者被噪聲污染過后的 x x x。 M D M_D MD?表示噪聲的隨即映射分布,或者被隨機破壞(置0)的每個像素上的概率。總之就是這么一回事。
我們可以理解為,當一部分像素被破壞之后,對于圖像這種高維輸入且高度冗余的數據,模型就要根據其他的維度去預測損失的維度的數據,就不再是去過擬合一個維度,這就構建了一個很好的學習到魯棒隱式特征的基礎。
【一個不恰當的例子:比如看到1、2、3,AE就記住了1、2、3的特征,那么給數據1、3、4,那么它可能就還原不出4。但是看到1、2、_,GT為1、2、3,那么模型可能就會根據1、2去推理出3(比如1+2=3),那么給出數據1、3、4,對于4,模型也有能力根據1、3去推出,學習到了某些加法操作的特征】