機器學習中，變分自編碼器（Variational Autoencoder，VAE）是由 Diederik P Kingma 和 Max Welling 提出的一種人工神經網路結構，屬於機率圖模式和變分貝葉斯方法。 VAE 與自編碼器模型有關，因為兩者在結構上有一定親和力，但在目標和數學表述上有很大區別。VAE 屬於機率生成模型（Probabilistic Generative Model），神經網路僅是其中的一個元件，依照功能的不同又可分為編碼器和解碼器。編碼器可將輸入變數對映到與變分分佈的引數相對應的潛空間（Latent Space），這樣便可以產生多個遵循同一分佈的不同樣本。解碼器的功能基本相反，是從潛空間映射回輸入空間，以生成資料點。雖然噪聲模型的方差可以單獨學習而來，但它們通常都是用重引數化技巧（Reparameterization Trick）來訓練的。 此類模型最初是為無監督學習設計的，但在半監督學習和監督學習中也表現出卓越的有效性。 結構與操作概述 VAE 是一個分別具有先驗和噪聲分佈的生成模型，一般用最大期望演算法（ExpectationMaximization metaalgorithm）來訓練。這樣可以最佳化資料似然的下限，用其它方法很難實現這點，且需要 q 分佈或變分後驗。這些 q 分佈通常在一個單獨的最佳化過程中為每個單獨資料點設定引數；而 VAE 則用神經網路作為一種攤銷手段來聯合最佳化各個資料點，將資料點本身作為輸入，輸出變分分佈的引數。從一個已知的輸入空間對映到低維潛空間，這是一種編碼過程，因此這張神經網路也叫 編碼器。 解碼器則從潛空間映射回輸入空間，如作為噪聲分佈的平均值。也可以用另一個對映到方差的神經網路，為簡單起見一般都省略掉了。這時，方差可以用梯度下降法進行最佳化。 最佳化模型常用的兩個術語是 重構誤差（reconstruction error） 和 KL 散度。它們都來自機率模型的自由能表示式（Free Energy Expression ），因而根據噪聲分佈和資料的假定先驗而有所不同。例如，像 IMAGENET 這樣的標準 VAE 任務一般都假設具有高斯分佈噪聲，但二值化的 MNIST 這樣的任務則需要伯努利噪聲。自由能表示式中的 KL 散度使得與 p 分佈重疊的 q 分佈的機率質量最大化，但這樣可能導致出現搜尋模態（ModeSeeking Behaviour）。自由能表示式的剩餘部分是 重構 項，需要用取樣逼近來計算其期望。 系統闡述 從建立機率模型的角度來看，人們希望用他們選擇的引數化機率分佈 p_thetax p xtheta 使資料 x 的機率最大化。這一分佈常是高斯分佈 N xmusigma，分別引數化為 mu 和 sigma，作為指數族的一員很容易作為噪聲分佈來處理。簡單的分佈很容易最大化，但如果假設了潛質（latent）z 的先驗分佈，可能會產生難以解決的積分。讓我們透過對 z 的邊緣化找到 p_theta x。 p_theta x int_z p_theta xz dz 其中，p_theta xz 表示可觀測資料 x 於 p_theta 下的聯合分佈，和在潛空間中的形式（也就是編碼後的 z ）。根據連鎖法則，方程可以改寫為 p_theta x int_z p_theta x z p_theta z dz 在原始的 VAE 中，通常認為 z 是實數的有限維向量，p_theta xz 則是高斯分佈。那麼 p_theta x 便是高斯分佈的混合物。 現在，可將輸入資料和其在潛空間中的表示的對映定義為 先驗 p_theta z 似然值 p_theta xz 後驗 p_theta zx 不幸的是，對 p_theta x 的計算十分困難。為了加快計算速度，有必要再引入一個函式，將後驗分佈近似為 q_phi z x approx p_theta z x 其中 phi 是引數化的 q 的實值集合。這有時也被稱為 攤銷推理（amortized inference），因為可以透過 投資 找到好的 q_phi，之後不用積分便可以從 x 快速推斷出 z。 這樣，問題就變成了找到一個好的機率自編碼器，其中條件似然分佈 p_theta xz 由機率解碼器（probabilistic decoder）計算得到，後驗分佈近似 q_phi zx 由機率編碼器（probabilistic encoder）計算得到。 下面將編碼器引數化為 E_phi，將解碼器引數化為 D_theta。 證據下界（Evidence lower bound，ELBO） 如同每個深度學習問題，為了透過反向傳播演算法更新神經網路的權重，需要定義一個可微損失函式。 對於 VAE，這一思想可以實現為聯合最佳化生成模型引數 theta 和 phi，以減少輸入輸出間的重構誤差，並使 q_phi z x 儘可能接近 p_theta zx。重構損失常用均方誤差和交叉熵。 作為兩個分佈之間的距離損失，反向 KL 散度 D_KLq_phi z xparallel p_theta z x 可以很有效地將 q_phi z x 擠壓到 p_theta zx 之下。 剛剛定義的距離損失可擴充套件為 begin align D_KLq_phi z xparallel p_theta z x mathbb E_z sim q_phi cdot x left ln frac q_phi zxp_theta zxright mathbb E_z sim q_phi cdot x left ln frac q_phi z x p_theta xp_theta x zright ln p_theta x mathbb E_z sim q_phi cdot x left ln frac q_phi z xp_theta x zright end align 現在定義證據下界（Evidence lower bound，ELBO）：L_thetaphix mathbb E_z sim q_phi cdot x left ln frac p_theta x zq_phi z xright ln p_theta x D_KLq_phi cdot xparallel p_theta cdot x 使 ELBO 最大化 thetaphi underset thetaphioperatorname arg max L_thetaphix 等於同時最大化 ln p_theta x 、最小化 D_KLq_phi z xparallel p_theta z x 。即，最大化觀測資料似然的對數值，同時最小化近似後驗 q_phi cdot x 與精確後驗 p_theta cdot x 的差值。 給出的形式不大方便進行最大化，可以用下面的等價形式：L_thetaphix mathbb E_z sim q_phi cdot x left ln p_theta xzright D_KLq_phi cdot xparallel p_theta cdot 其中 ln p_theta xz 實現為 x D_theta z2_2，因為這是在加性常數的前提下 x sim mathcal N D_theta z I 得到的東西。也就是說，我們把 x 在 z 上的條件分佈建模為以 D_theta z 為中心的高斯分佈。q_phi z x 和 p_theta z 的分佈通常也被選為高斯分佈，因為 zx sim mathcal E_phi x sigma_phi x2I 和 z sim mathcal 0 I 可以透過高斯分佈的 KL 散度公式得到：L_thetaphix frac 12mathbb E_z sim q_phi cdot x left x D_theta z_22right frac 12 left Nsigma_phi x2 E_phi x_22 2Nlnsigma_phi x right Const 重引數化 有效搜尋到 thetaphi underset thetaphioperatorname arg max L_thetaphix 的典型方法是梯度下降法。 它可以很直接地找到 nabla_theta mathbb E_z sim q_phi cdot x left ln frac p_theta x zq_phi z xright mathbb E_z sim q_phi cdot x left nabla_theta ln frac p_theta x zq_phi z xright 但是，nabla_phi mathbb E_z sim q_phi cdot x left ln frac p_theta x zq_phi z xright 不允許將 nabla_phi 置於期望中，因為 phi 出現在機率分佈本身之中。重引數化技巧（也被稱為隨機反向傳播）則繞過了這個難點。 最重要的例子是當 z sim q_phi cdot x 遵循正態分佈時，如 mathcal N mu_phi x Sigma_phi x 。 可以透過讓 boldsymbol varepsilon sim mathcal N0 boldsymbol I 構成 標準隨機數生成器 來實現重引數化，並將 z 構建為 z mu_phi x L_phi xepsilon 。這裡，L_phi x 透過科列斯基分解得到：Sigma_phi x L_phi x L_phi xT 接著我們有 nabla_phi mathbb E_z sim q_phi cdot x left ln frac p_theta x zq_phi z xright mathbb E_epsilonleft nabla_phi ln frac p_thetax mu_phi x L_phi xepsilonq_phimu_phi x L_phi xepsilon xright 由此，我們得到了梯度的無偏估計，這就可以應用隨機梯度下降法了。 由於我們重引數化了 z，所以需要找到 q_phi zx。令 q_0 為 epsilon 的機率密度函式，那麼 ln q_phi z x ln q_0 epsilon lndet partial_epsilon z，其中 partial_epsilon z 是 epsilon 相對於 z 的雅可比矩陣。由於 z mu_phi x L_phi xepsilon ，這就是 ln q_phi z x frac 12 epsilon2 lndet L_phi x frac n2 ln 2pi 變體 許多 VAE 的應用和擴充套件已被用來使其適應其他領域，並提升效能。 betaVAE 是帶加權 KL 散度的實現，用於自動發現並解釋因子化的潛空間形式。這種實現可以對大於 1 的 beta 值強制進行流形分解。這個架構可以在無監督下發現解耦的潛因子。 條件性 VAE（CVAE）在潛空間中插入標籤資訊，強制對所學資料進行確定性約束表示（Deterministic Constrained Representation）。 一些結構可以直接處理生成樣本的質量，或實現多個潛空間，以進一步改善表徵學習的效果。 一些結構將 VAE 和生成對抗網路混合起來，以獲得混合模型。 另見 自編碼器 人工神經網路 深度學習 生成對抗網路 表徵學習 稀鬆字典學習 資料增強 反向傳播演算法 參考 Category 圖模式 Category 貝葉斯統計 Category 神經網路架構