
簡(jiǎn)單講解一下三個(gè)主要的自動(dòng)編碼器主要思路都是采用一個(gè)編碼器和一個(gè)解碼器。輸入內(nèi)容經(jīng)過編碼器編碼為潛變量zzz,潛變量zzz經(jīng)過解碼器解碼為輸出內(nèi)容。AEAuto Encoder這是最簡(jiǎn)單的自動(dòng)編碼器其潛變量是一種低維編碼也就是一個(gè)確定的值訓(xùn)練損失是最小化輸入與輸出的差異。這種設(shè)定存在問題由于低維編碼是一個(gè)確定的值而且我們的訓(xùn)練目標(biāo)是最小化輸入與輸出的差異因此會(huì)導(dǎo)致過擬合也就是輸入某個(gè)特定的圖片只能得到對(duì)應(yīng)的輸出圖片泛化性也不好如果輸入其他未經(jīng)訓(xùn)練過的圖片輸出只能是未知的內(nèi)容。為什么AE效果不好呢本質(zhì)上是由于潛變量zzz是一個(gè)確定的值整個(gè)過程中并沒有加入隨機(jī)性。理想條件下我們可以想象一個(gè)擁有世界上所有輸入和輸出數(shù)據(jù)而訓(xùn)練的AE這肯定是囊括了所有的圖像此時(shí)的潛空間是一個(gè)一對(duì)一的映射。但是實(shí)際中我們并沒有全部的數(shù)據(jù)為了泛化性我們希望構(gòu)建一對(duì)多或者多對(duì)多的映射。如何實(shí)現(xiàn)這點(diǎn)呢VAE就是分析這點(diǎn)而得到的。我們將潛變量構(gòu)造成一個(gè)分布而不是一對(duì)一的對(duì)應(yīng)關(guān)系這樣囊括了更多的對(duì)應(yīng)關(guān)系從而提高泛化性并且實(shí)現(xiàn)了生成的靈活性不再輸入一張圖只生成一張固定的圖具體地說我們將編碼器的輸出設(shè)定為一個(gè)正態(tài)分布對(duì)應(yīng)輸出一個(gè)μ和一個(gè)σ然后從這個(gè)分布中隨機(jī)采樣得到潛變量z然后解碼器根據(jù)這個(gè)潛變量生成對(duì)應(yīng)的輸出內(nèi)容。我們希望通過梯度更新來優(yōu)化VAE但是剛才描述的過程中存在隨機(jī)采樣也就是?z?sample(N(?μ?,?σ?))*z*sample(N(*μ*,*σ*))?z?sample(N(?μ?,?σ?))這個(gè)過程是個(gè)黑盒的我們可以前向傳播但是后向就無法更新參數(shù)了因此我們?cè)谶@里引入重參數(shù)化將隨機(jī)信息提取到分布外。zμσ×?zμσ×?zμσ×?,其中?代表了隨機(jī)性從一個(gè)正態(tài)分布中抽取得到的。在VAE中我們的訓(xùn)練損失包括兩部分一部分是最小化輸入與重建的差異但是如果只包括這個(gè)同樣會(huì)導(dǎo)致過擬合會(huì)讓?duì)亿呌?因此需要加入對(duì)這部分的限制我們加入KL損失限制編碼器輸出的μ和σ接近正態(tài)分布。CVAE則和VAE沒有什么太大的區(qū)別只是在編碼器和解碼器加入了標(biāo)簽信息剩下的內(nèi)容和AE是一樣的。