目錄
二、變分自編碼器 VAE
1、自編碼器?AE
(1)自編碼器的基本結構與目標
1.1 編碼器-解碼器結構
1.2 目標函數:重構誤差最小化
(2)自編碼器與 PCA 的對比
2.1 PCA 與線性降維
2.2 非線性映射的優勢
(3)自編碼器在降維與表示學習中的意義
2、變分自編碼器 VAE
(1)生成式模型與變分自編碼器概述
(2)模型結構
2.1 編碼器(Inference Network)
2.2 解碼器(Generative Network)
(3)VAE 的解碼器的核心思想
3.1 回憶高斯混合模型
3.2 高斯混合模型的擴展-VAE解碼器
(4)參數的訓練
4.1?最大化似然函數
4.2 變分推斷
4.3 下界的推導
4.4 優化目標
4.5 KL散度的最小化
(5)VAE 相對于 AE 的優勢
5.1 對噪聲的建模
(6)重參數化技巧
(7)編碼器部分的目標:近似后驗
(8)VAE 總結
8.1?VAE整體流程概覽
8.2?編碼器部分的詳細步驟
8.3?解碼器部分的詳細步驟
8.4?訓練與推斷階段的對比
(9)VAE的局限性
9.1 生成圖像“模糊”或“平均化”問題
9.2 可能出現“記住”訓練樣本的傾向
9.3 后驗分布表達能力不足
9.4 高維數據與高保真生成的挑戰
9.5 與 GAN 等其他生成模型的對比
9.6 訓練目標平衡與超參數敏感性
9.7?總結
二、變分自編碼器 VAE
1、自編碼器?AE
核心思想:可以看成PCA的神經元網絡化。
(1)自編碼器的基本結構與目標
1.1 編碼器-解碼器結構
????????????????????????
圖中,可以看到自編碼器的典型結構:
- 輸入層:原始輸入
(例如一張圖像或一段向量)。
- 編碼器(Encoder):一系列神經網絡層,將高維的
?壓縮到低維的隱藏表示
(也稱潛在表示,latent representation)。
- 解碼器(Decoder):與編碼器結構相對稱或相似的網絡,將低維的
?還原回與輸入同維度的
(即重構的結果)。
- 輸出層:得到的重構
。
整個過程可用下式概括:
????????????????????????????????????????????????????????????????????? ? ? ? ? ? ??
1.2 目標函數:重構誤差最小化
自編碼器的目標函數 :
???????????????????????????????????????????????????????????????????????????????????
其中:
表示第
?個樣本的重構誤差(常見的是均方誤差)。
是正則化項,用于約束網絡的復雜度(例如權值衰減、稀疏性正則等)。
自編碼器通過最小化重構誤差來學習到一個對輸入數據具有“良好”表示的隱藏向量 ?,使得在壓縮后仍能較好地重構出原輸入。
(2)自編碼器與 PCA 的對比
2.1 PCA 與線性降維
對比了 PCA(主成分分析) 與自編碼器在降維上的效果:
?????
- PCA:將原始數據通過線性映射(即正交變換)投影到方差最大的幾個主成分上,實現降維。
- 自編碼器:使用非線性神經網絡進行編碼和解碼,能學習到更靈活、更豐富的表示。
????????從圖中可以看到,在手寫數字(如 0,1,2,3,4,9)上進行降維后,自編碼器可以重構出更逼近原圖的數字;而 PCA 由于其本質是線性映射,重構往往缺乏非線性特征的捕捉能力,因此在復雜數據上可能效果有限。
2.2 非線性映射的優勢
????????自編碼器通過多層感知機或卷積網絡等方式實現編碼-解碼,可以學習到數據的非線性結構。對 MNIST 這種手寫數字數據來說,每個數字都有不同的筆跡、線條弧度和書寫風格,使用非線性模型更能捕捉到這種多樣性,因此重構更好,潛在空間的分布也更有區分度。
(3)自編碼器在降維與表示學習中的意義
-
通用性
圖片中的示例主要是手寫數字,但自編碼器對其他高維數據(如圖像、文本、推薦系統的用戶-物品矩陣等)也適用。只要能定義合適的網絡結構和損失函數,就可以把任何高維輸入映射到較低維度的潛在空間進行分析和重構。 -
非線性表示學習
自編碼器的編碼器部分可以視為一個特征提取器,它能夠在隱藏層中學習到對數據分布更有表達力的特征。這些特征在后續分類、聚類或檢索等任務中往往表現優于簡單的線性降維方法。 -
可視化
當將自編碼器的中間層(特別是瓶頸層)的維度設為 2D 或 3D 時,就可以直接用來可視化數據在低維空間的分布,便于理解數據內部的結構和模式。 -
與正則化的結合
在第一張圖的公式中可以看到正則化項?。常見的擴展包括:
- 稀疏自編碼器(Sparse AE):鼓勵隱藏單元大部分為零激活;
- 去噪自編碼器(Denoising AE):對輸入添加噪聲再重構;
- 變分自編碼器(VAE):在潛在空間上引入概率分布假設;
這些方法都能讓模型學到更具泛化能力或更具解釋性的表示。
2、變分自編碼器 VAE
(1)生成式模型與變分自編碼器概述
????????生成式模型的目標是學習數據的分布,從而能夠生成與真實數據相似的新樣本。變分自編碼器(Variational Autoencoder, VAE)是其中一種重要的生成模型,它將傳統自編碼器的框架與概率模型和變分推斷方法相結合,不僅能夠重構輸入數據,還能從隱變量空間中生成新的數據。與對抗生成網絡(GAN)相比,VAE具有明確的概率解釋和連續平滑的潛在空間,使其在一些需要不確定性估計或潛在特征表達的任務中表現突出。
(2)模型結構
???????????????????????
2.1 編碼器(Inference Network)
- 結構分析:在VAE中,編碼器的輸出是一個分布?
,
?為在一個分布
?中采樣得到的值。相比于AE,VAE編碼器不再是一個神經元網絡直接從輸入映射到 z ,而是產生一個分布(即一個
,一個
,而且這個
還有一定的隨機性),再從這個分布中采樣得到 z 。
- 功能:將輸入數據
?映射到潛在空間,并構造近似后驗分布
?。
- 輸出:通常輸出隱變量分布的參數(例如均值
和方差
?),假設
為高斯分布。
- 意義:通過對輸入數據進行編碼,提取數據中的潛在特征,同時為后續的重構提供必要的隱變量信息。
- 編碼器示意圖如下:
??????????????????????????????????????????????????????????????????????
2.2 解碼器(Generative Network)
- 功能:根據從隱變量分布中采樣得到的
?重構輸入數據,建模條件分布
?。
- 生成:利用解碼器網絡,可以從連續的潛在空間中采樣,生成新的數據樣本。
- 意義:實現數據的重構和生成,是VAE作為生成式模型的核心部分。
(3)VAE 的解碼器的核心思想
3.1 回憶高斯混合模型
?????????????????????????????????????????????????????
- 圖片中顯示了一個數據分布
,由多個高斯分布(曲線)混合而成。
- 數學表達式:
?, 其中
?通常是一個離散的混合分量(整數索引),
為混合系數(滿足多項分布),而
為第
?個高斯分布
?。
- 直觀來說,這個模型假設數據
?可能來自若干個不同的“子分布”(每個子分布是一個高斯),并用這些高斯分布的線性加權求和來近似整體分布。
- 局限性:當數據分布過于復雜時,僅依靠少量高斯分量可能難以逼近;若增加分量數,模型復雜度也隨之增加。
3.2 高斯混合模型的擴展-VAE解碼器
??????????????????????????????????????
- 圖片中顯示了一個數據分布
,由無數個高斯分布(曲線)混合而成。計算
的過程就是解碼的過程
- 數學表達式:
?, 其中隱變量
?并非離散,而是可以在連續空間中取值。,
為混合系數(先驗一般取標準正態分布?
?,即初始值),而
為第
?個高斯分布
?(參數通過神經網絡學)。
- 隨著
?在連續空間中移動,解碼器會生成一系列可能的
,從而可以近似很多形狀復雜的分布。
?即是編碼器中的?
?的先驗,它是聯系編碼器與解碼器的橋梁。
- 解碼器示意圖如下:
??????????????????????????????????????????????????????????????????????????????????????????? ? ?
VAE整體結構圖:
采樣
其中??和?
?是輸出分布(最大后驗分布)的參數。
?可視為重構的?
?(最大似然值)。
(4)參數的訓練
4.1?最大化似然函數
VAE的目標是最大化觀測數據 ?的似然
?,即:
????????????????????????????????????????????????????????????????????????????????????????????????????????????
其中, 是解碼器生成
的條件概率,
是隱變量
?的先驗分布(通常是標準正態分布
?)。然后,VAE的目標就是通過最大化
來學習一個好的生成模型。為了實現這一目標,我們通常優化其對數似然:
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????
4.2 變分推斷
直接最大化 是不可行的,因為計算
非常復雜。為了簡化這個過程,VAE引入了變分推斷。首先,我們引入一個變分分布
?,它近似于后驗分布
?。因此,我們將對數似然的目標函數重寫為:
???????????????????????????????????????????????????????????????????????????????????? ??
這種重寫是通過變分下界(Variational Lower Bound)實現的,它允許我們在無法直接計算后驗分布的情況下,進行優化。
4.3 下界的推導
????????????????????????
????????????????????????
????????????????????????
而??本來就是?
?的近似,所以?
?且很接近于 0 .
所以得到??的下界?
?,記為?
4.4 優化目標
??????????????????????????????????????????????
???????????????????????????????????????????????? ? ? ? ?
???????????????? ????????????????????????????????? ? ? ?
? ? ?其可以拆成兩部分:
-
重構項:
這是VAE模型中解碼器的主要任務,它負責通過隱變量
?重構數據
?。
-
KL散度項:
這是VAE中的正則化項,確保編碼器的近似后驗
不偏離先驗分布
過多。
為了優化VAE,我們最大化這個下界:
?????????????????????????????????????????????????????
?????其中:
- 第一個項
是重構誤差,衡量通過解碼器從隱變量
?重構原始數據
?的好壞。
- 第二個項
是KL散度,確保編碼器輸出的分布
與先驗分布
之間的差異盡可能小。
- 我們希望第一項盡可能大,第二項前是減號,所以應盡可能小,第二項盡可能小就想要?
?盡可能接近標準正態分布,就意味著 z 沒有任何辨識度,這樣的話第一項就小了。而如果第一項大的話,預測就準確,此時?
?就不會太隨機,第二項就不可能小了,所以這兩部分的loss其實是相互拮抗的,要整體來看。
4.5 KL散度的最小化
????????KL散度是VAE優化的關鍵部分。它衡量了編碼器輸出的近似后驗 ?與標準正態分布
之間的差異。為了最小化KL散度,編碼器通過神經網絡(如圖中的NN')輸出隱變量
的均值
和標準差
,并學習一個合適的分布。
公式為:
??????????????????????????????????????
這是一個標準的KL散度的閉式解,它會對每個維度的隱變量進行計算。
(5)VAE 相對于 AE 的優勢
???????????????? ? ?
? ? ? ? 圖中顯示了 VAE(Variational AutoEncoder)中的編碼器部分,具體包含了從輸入到輸出均值() 和方差(
) 這兩個步驟,以及后續的重參數化采樣過程。
5.1 對噪聲的建模
-
編碼器通常由若干層神經網絡組成,可以是多層感知器(MLP)或者卷積神經網絡(CNN)等,具體取決于數據類型。
- 圖像:常用卷積層提取空間特征,然后 flatten 或全連接輸出到隱變量的分布參數上。
- 文本:常用RNN/LSTM/Transformer 等結構提取序列特征,再映射到分布參數上。
- 其他數據:根據數據特點選擇合適的網絡結構。
-
輸出
? ??
編碼器輸出并不是直接的隱變量?,而是隱變量分布(近似后驗分布)
的參數,一般為均值向量
和對數方差向量
?。
這樣做的原因是:VAE希望通過一個高斯分布來表示給定?后潛在變量
?的不確定性,即
???????
-
學習到“噪聲”的方差
圖中“自動學習到噪聲的方差”指的就是通過最小化KL散度和重構誤差,讓網絡自動去適配合適的(即每個維度的標準差),從而平衡“讓分布貼近標準正態先驗”與“盡可能重構輸入”的目標。
-
如果只是最小化重構誤差,而沒有讓 z 的分布貼近標準正態分布,則方差為0,此時VAE等同于AE 。
(6)重參數化技巧
-
采樣的難點
如果我們直接從?中采樣
?,采樣過程不可導,無法對編碼器進行梯度更新。
-
重參數化
為了使采樣過程可導,VAE中引入了重參數化技巧:其中
是從標準正態分布采樣得到的噪聲向量,
表示逐元素乘法。
-
好處
由于?和
?都是由可學習的神經網絡(編碼器)輸出的,
?是與模型參數無關的隨機噪聲,因而我們可以對
?和
進行反向傳播,學習到讓模型最優的分布參數。
(7)編碼器部分的目標:近似后驗
-
近似后驗分布
VAE的編碼器本質上在做“變分推斷”,它試圖用一個高斯分布去近似真實的后驗分布?。
- 先驗分布:
(固定不變)。
- 后驗分布:
(難以直接計算)。
- 近似后驗:
(編碼器輸出),用神經網絡來近似。
- 先驗分布:
-
KL 散度
編碼器要通過最小化KL散度來保證自己輸出的分布不會偏離先驗分布過遠,從而使得潛在空間具有良好的結構。同時,KL散度也會抑制
?不合理地變大或變小。
(8)VAE 總結
8.1?VAE整體流程概覽
- 輸入數據
:從訓練集中獲取樣本(如圖像、文本等)。
- 編碼器(Encoder):將
?映射到潛在分布的參數(?
),得到近似后驗
?。
- 重參數化采樣(Reparameterization Trick):根據
以及標準正態噪聲
,得到隱變量
。
- 解碼器(Decoder):從隱變量
?生成或重構數據
,對應分布
?。
- 計算損失并反向傳播:包括
- 重構誤差(衡量
?與
?的差異)
- KL 散度(約束
與先驗
的接近程度) 將這兩項結合在一起形成VAE的訓練目標(ELBO),通過反向傳播同時更新編碼器和解碼器的參數。
- 重構誤差(衡量
???????????????????????
8.2?編碼器部分的詳細步驟
-
輸入
- 將觀測數據
(圖像像素、文本向量等)輸入到編碼器網絡。
- 編碼器可能是多層感知器(MLP)、卷積網絡(CNN)、或其他合適的網絡結構。
- 將觀測數據
-
提取特征
- 編碼器通過多層神經網絡對輸入數據進行特征提取,逐步將高維數據壓縮到更緊湊的表示。
- 這些中間特征會為后續的分布參數輸出做準備。
-
輸出分布參數
- 編碼器的最終輸出通常是兩個向量:均值
?和對數方差
(或直接輸出
)。
- 這兩個向量共同決定了給定
?后,隱變量
?的近似后驗分布
?。
- 編碼器的最終輸出通常是兩個向量:均值
-
重參數化采樣(Reparameterization Trick)
- 直接從
采樣
?不可導,無法對編碼器進行梯度更新。
- 因此使用重參數化:
,其中?
- 這樣采樣過程可微,編碼器網絡就能在訓練中被更新。
- 直接從
-
得到隱變量
- 最終,我們得到對
?的隱變量表示
。
- 這一步完成后,
?就可被解碼器拿去生成重構。
- 最終,我們得到對
-
梯度更新(與損失函數一起)
- 編碼器的參數在計算完重構損失和KL散度后,通過反向傳播進行更新。
- KL散度部分會鼓勵編碼器輸出的
貼近先驗
,從而讓潛在空間有良好結構。
8.3?解碼器部分的詳細步驟
-
輸入隱變量
- 在訓練階段,
?來自編碼器輸出的近似后驗;在生成階段,
?來自先驗分布
?。
- 在訓練階段,
-
多層神經網絡映射
- 解碼器將
?通過若干層非線性變換映射回數據空間。
- 對圖像而言,可能使用轉置卷積(Deconv)逐步還原為像素;對文本可能使用RNN/Transformer等結構生成詞序列。
- 解碼器將
-
輸出分布或重構結果
- 解碼器的輸出可以是:
- 分布參數:如對圖像像素輸出Bernoulli/Gaussian的參數,對文本輸出詞的softmax概率分布等;
- 直接的重構:如連續值的像素。
- 這樣就可以用對數似然或其它損失度量“重構”與真實數據的差異。
- 解碼器的輸出可以是:
-
計算重構誤差(Reconstruction Loss)
- 根據解碼器輸出的分布
與真實數據
,計算負對數似然或交叉熵、MSE等。
- 這個重構誤差越小,表示解碼器越能“還原”或“生成”逼近
?的樣本。
- 根據解碼器輸出的分布
-
反向傳播更新解碼器參數
- 解碼器參數通過重構誤差與KL散度(間接影響)的組合在ELBO目標下被優化。
- 編碼器和解碼器協同訓練,以在潛在空間和重構質量之間取得平衡。
-
生成新樣本
- 訓練完成后,只需從先驗
采樣
,輸入解碼器即可生成全新的樣本
,實現生成式建模。
- 訓練完成后,只需從先驗
8.4?訓練與推斷階段的對比
-
訓練階段
- 編碼器 + 解碼器共同工作:
- 編碼器根據輸入
?輸出
?。
- 重參數化采樣得到
?。
- 解碼器根據
?生成
?。
- 計算重構誤差和KL散度,形成ELBO,反向傳播更新參數。
- 編碼器根據輸入
- 編碼器 + 解碼器共同工作:
-
推斷/生成階段
- 只需使用解碼器部分:
- 從先驗分布采樣
?。
- 輸入解碼器生成新樣本
?。
- 從先驗分布采樣
- 無需真實數據
?的參與,即可自由生成新樣本。
- 只需使用解碼器部分:
(9)VAE的局限性
VAE 在實際使用中也暴露出了一些局限性或常見問題。
9.1 生成圖像“模糊”或“平均化”問題
i、重構目標導致的模糊
-
高斯假設與像素級重構損失
在最常見的實現中,VAE 通常假設圖像像素的條件分布為高斯分布(或近似用均方誤差/MSE做重構損失)。
這在面對多模態或復雜圖像細節時往往導致生成結果出現“模糊”或“平均化”的現象。- 原因:當多個真實樣本都可能對應相似的潛在向量
?時,VAE 傾向輸出一個平均(或折中)結果來最小化整體重構誤差,導致缺乏銳度和細節。
- 原因:當多個真實樣本都可能對應相似的潛在向量
-
多模態數據的平均化
例如,對于某些模態多樣的圖像(同一個潛在語義可能對應不同外觀),VAE 在訓練時可能更傾向于生成折中版本的圖像,而無法像一些對抗式生成模型(GAN)那樣更尖銳地選擇某個模態。
ii、KL 散度與重構誤差的平衡
- 在 VAE 的目標函數(ELBO)中,重構誤差(?
)與 KL 散度(?
)同時被優化。
- 有時為了減小 KL 散度,模型會讓后驗分布
更貼近先驗
?,從而減少了潛在空間的靈活性,間接導致生成結果不夠細膩或多樣。
9.2 可能出現“記住”訓練樣本的傾向
???????????????????????
i、重構訓練集的圖像
- VAE 只要能對訓練集中樣本重構良好,就可以得到較低的重構損失。如果模型容量足夠大,VAE 可能學到某些近似“記憶”訓練集中圖像的方式。
- 圖中“7”的例子(只需改動極少像素即可與原圖保持接近)就說明,VAE 有時會生成與訓練集樣本非常相似的結果,而非完全新的樣本。
ii、多樣性不足
- 由于解碼器要在給定
?時產生“盡量接近真實圖像”的結果,且編碼器又試圖把不同
?壓縮到潛在空間中,如果沒有額外的約束或正則,VAE 有時缺乏對“新穎樣本”的探索,生成結果容易集中于訓練數據的局部模式。
9.3 后驗分布表達能力不足
i、因果:VAE 對后驗分布的限制
- 在最基本的 VAE 中,后驗分布
被限制為各向同性高斯或對角高斯。
- 這種限制導致模型可能無法充分表達數據的潛在復雜性。對于非常復雜或多模態的數據,簡單的高斯假設無法捕捉到真實后驗的形狀,從而影響生成質量和表示能力。
ii、Posterior Collapse(后驗坍縮)
- 在某些情況下(尤其是文本生成、序列生成時),后驗分布可能退化為與先驗幾乎相同,編碼器幾乎不使用輸入信息,
?失去表達力。
- 這被稱為“Posterior Collapse”,導致模型學習不到有用的潛在表示,生成質量也隨之下降。
9.4 高維數據與高保真生成的挑戰
i、VAE 對高分辨率圖像的局限
- 對于分辨率較高、細節豐富的圖像(如人臉、風景等),標準 VAE 通常很難生成細節清晰的結果。
- 研究者常需在網絡結構、后驗假設、損失函數上做更多改進(如使用 PixelVAE、PixelCNN 解碼器、或分層 VAE),才能在高分辨率生成任務上取得更好效果。
ii、訓練難度與網絡設計
- 在高維數據上,如何設計合適的網絡結構(例如更深層的 CNN、分層 VAE、流模型與 VAE 結合等)也成為一大挑戰。
- 如果網絡結構設計不當或優化不穩定,VAE 容易出現收斂慢、生成質量差等問題。
9.5 與 GAN 等其他生成模型的對比
i、生成逼真度
- 在很多視覺任務中,GAN(生成對抗網絡)往往能生成更清晰、更逼真的圖像。
- 相比之下,標準 VAE 在逼真度和細節方面可能稍顯不足,易產生“模糊”感。
ii、模型目的與優勢
- 當然,VAE 有自己獨特的優勢:可以顯式估計數據似然,更容易在潛在空間進行插值、概率推斷等;而 GAN 的判別器只提供一個對抗信號,并沒有顯式的似然估計。
- 但在“生成圖像質量”這一點上,VAE 通常需要額外的改進(如 VAE-GAN、VQ-VAE、Glow 等)才能與 GAN 抗衡。
9.6 訓練目標平衡與超參數敏感性
i、β-VAE 與權衡
- 為了平衡重構質量與潛在表示的解耦、通用性等,許多改進版本(如 β-VAE)在 ELBO 中引入可調節系數 β,控制 KL 散度項的權重。
- 但這也帶來超參數調節的復雜性,且不同數據集和任務需要不同的超參數組合,影響模型性能。
ii、優化過程不穩定
- 雖然 VAE 的目標函數相比 GAN 更穩定(不需要對抗訓練),但在高維場景或分層結構中,找到合適的學習率、批大小等也不易,模型易出現訓練早期過擬合或后驗坍縮等現象。
9.7?總結
- 模糊與平均化:VAE 常出現模糊的重構或生成圖像,難以捕捉高頻細節,容易產生平均化結果。
- 多樣性不足:可能傾向記憶訓練樣本,或僅在訓練集中樣本周圍做小改動,而不是生成真正新穎的樣本。
- 后驗表達能力有限:簡單的高斯假設難以建模復雜分布,可能出現后驗坍縮。
- 高維與高保真難度:在高分辨率、細節豐富的數據上,VAE 的重構或生成質量常不及對抗式模型,需要更多結構性改進。
- 與 GAN 對比:GAN 在圖像逼真度上往往表現更好,而 VAE 在可解釋性、潛在空間操作等方面有其優勢。
- 超參數與優化:平衡重構和 KL 散度需要仔細調參,容易出現不穩定或訓練不充分。
總的來說,VAE 并非“全能”的生成模型,在圖像逼真度和多樣性上仍存在不少挑戰。但它的可解釋性、對潛在空間的顯式建模、以及與其他方法結合的潛力,依舊使其在許多研究方向中扮演著重要角色。后續的改進(如層級式 VAE、流模型結合、離散潛在變量、VQ-VAE 等)也在不斷推進其生成能力與靈活性。