關(guān)于 VAE || 變分自編碼器 的故事
Variational Autoencoder 的目的是將輸入數(shù)據(jù)映射成潛在分布(隱分布)。
什么是潛在分布?就是特征提取后的有效低維空間的概率分布。
VAE包括編碼器和解碼器。
- 編碼器負(fù)責(zé)將輸入數(shù)據(jù) \(\boldsymbol x\)(可能是高維向量)映射成低維的 \(\mu_{\boldsymbol x}\) 和 \(\log\left(\sigma^2_{\boldsymbol x}\right)\)(可能是低維向量)輸出(這個(gè)編碼器可以是CNN/RNN/Transformer)。
很神奇,不是嗎?我們不把數(shù)據(jù)看作“確定的實(shí)體”,而是試圖訓(xùn)練出一種將其映射成“可能的概率”;打個(gè)比方就是從一幅原畫得到繪畫風(fēng)格。每個(gè)數(shù)據(jù)都有各自獨(dú)立的分布,不涉及整體數(shù)據(jù)序列的聯(lián)合分布。
\(\mu_{\boldsymbol x}\) 和 \(\log\left(\sigma^2_{\boldsymbol x}\right)\) 只是描述概率分布用的,編碼器也只會(huì)輸出這兩個(gè)參數(shù)(\(\mu_{\boldsymbol x}\) 可以理解成 \(\boldsymbol x\) 在降維后,每個(gè)維度在概率空間各自的均值組成的向量)。
接下來,我們會(huì)使用“重參數(shù)化技巧”,也就是構(gòu)造一個(gè)“潛在變量(隱變量)” \(\boldsymbol z\):
這個(gè) \(\boldsymbol z\) 是連續(xù)的,可以用梯度下降法參與后續(xù)訓(xùn)練。
\(\mu_{\boldsymbol x}\) 項(xiàng)表示的是有效部分,\(\sigma_{\boldsymbol x}\) 項(xiàng)表示的是噪聲部分。
- 解碼器負(fù)責(zé)把 \(\boldsymbol z\) 映射回 \(\boldsymbol x\),也就是生成過程(根據(jù)不同的下游任務(wù),這里生成的 \(\boldsymbol x\) 可以是連續(xù)/離散的)。
訓(xùn)練過程是自監(jiān)督(無監(jiān)督)的,損失函數(shù)由以下公式定義:
其中第一項(xiàng)稱為“重構(gòu)損失”,鼓勵(lì)模型利用潛在表示重構(gòu)出原始數(shù)據(jù)(訓(xùn)練解碼器,增加特定數(shù)據(jù)的還原度);第二項(xiàng)稱為“KL散度正則項(xiàng)”,使得潛在空間分布盡可能接近先驗(yàn)分布(訓(xùn)練編碼器,增加整體分布的魯棒性)。
\(p(\boldsymbol x|\boldsymbol z)\) 是先驗(yàn)分布(一般規(guī)定是正態(tài)分布),\(q(\boldsymbol z|\boldsymbol x)\) 是潛在空間分布。

浙公網(wǎng)安備 33010602011771號