他們各自的概念看以下鏈接就可以了:https://blog.csdn.net/weixin_43135178/category_11543123.html
?這里主要談一下他們的區(qū)別?
先說結(jié)論:
- VAE是AE的升級版,VAE也可以被看作是一種特殊的AE
- AE主要用于數(shù)據(jù)的壓縮與還原,VAE主要用于生成。
- AE是將數(shù)據(jù)映直接映射為數(shù)值code(確定的數(shù)值),而VAE是先將數(shù)據(jù)映射為分布,再從分布中采樣得到數(shù)值code。
- 損失函數(shù)和優(yōu)化目標(biāo)不同
AE(Auto Encoder, 自動編碼器)
AE的結(jié)構(gòu)
如上圖所示,自動編碼器主要由兩部分組成:編碼器(Encoder)和解碼器(Decoder)。編碼器和解碼器可以看作是兩個函數(shù),一個用于將高維輸入(如圖片)映射為低維編碼(code),另一個用于將低維編碼(code)映射為高維輸出(如生成的圖片)。這兩個函數(shù)可以是任意形式,但在深度學(xué)習(xí)中,我們用神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)這兩個函數(shù)。
這時候我們只要拿出Decoder部分,隨機(jī)生成一個code然后輸入,就可以得到一張生成的圖像。但實際上這樣的生成效果并不好(下面解釋原因),因此AE多用于數(shù)據(jù)壓縮,而數(shù)據(jù)生成則使用下面所介紹的VAE更好。
AE的缺陷
由上面介紹可以看出,AE的Encoder是將圖片映射成“數(shù)值編碼”,Decoder是將“數(shù)值編碼”映射成圖片。這樣存在的問題是,在訓(xùn)練過程中,隨著不斷降低輸入圖片與輸出圖片之間的誤差,模型會過擬合,泛化性能不好。也就是說對于一個訓(xùn)練好的AE,輸入某個圖片,就只會將其編碼為某個確定的code,輸入某個確定的code就只會輸出某個確定的圖片,并且如果這個code來自于沒見過的圖片,那么生成的圖片也不會好。下面舉個例子來說明:
假設(shè)我們訓(xùn)練好的AE將“新月”圖片encode成code=1(這里假設(shè)code只有1維),將其decode能得到“新月”的圖片;將“滿月”encode成code=10,同樣將其decode能得到“滿月”圖片。這時候如果我們給AE一個code=5,我們希望是能得到“半月”的圖片,但由于之前訓(xùn)練時并沒有將“半月”的圖片編碼,或者將一張非月亮的圖片編碼為5,那么我們就不太可能得到“半月”的圖片。因此AE多用于數(shù)據(jù)的壓縮和恢復(fù),用于數(shù)據(jù)生成時效果并不理想。
如何解決AE的問題呢?
這時候我們轉(zhuǎn)變思路,不將圖片映射成“數(shù)值編碼”,而將其映射成“分布”。還是剛剛的例子,我們將“新月”圖片映射成μ=1的正態(tài)分布,那么就相當(dāng)于在1附近加了噪聲,此時不僅1表示“新月”,1附近的數(shù)值也表示“新月”,只是1的時候最像“新月”。將"滿月"映射成μ=10的正態(tài)分布,10的附近也都表示“滿月”。那么code=5時,就同時擁有了“新月”和“滿月”的特點,那么這時候decode出來的大概率就是“半月”了。這就是VAE的思想。
文章來源:http://www.zghlxwxcb.cn/news/detail-438421.html
VAE(Variational Auto-Encoder, 變分自動編碼器)
VAE的結(jié)構(gòu)
文章來源地址http://www.zghlxwxcb.cn/news/detail-438421.html
小結(jié)
- AE主要用于數(shù)據(jù)的壓縮與還原,在生成數(shù)據(jù)上使用VAE。
- AE是將數(shù)據(jù)映直接映射為數(shù)值code,而VAE是先將數(shù)據(jù)映射為分布,再從分布中采樣得到數(shù)值code。
到了這里,關(guān)于AE(自動編碼器)與VAE(變分自動編碼器)的區(qū)別和聯(lián)系?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!