【機器學習chp14 — 2】生成式模型—變分自編碼器VAE(超詳細分析,易于理解,推導嚴謹,一文就夠了)

目錄

二、變分自編碼器 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 編碼器-解碼器結構

????????????????????????

圖中,可以看到自編碼器的典型結構:

  • 輸入層:原始輸入 \mathbf{x}(例如一張圖像或一段向量)。
  • 編碼器(Encoder):一系列神經網絡層,將高維的 \mathbf{x}?壓縮到低維的隱藏表示 \mathbf{z}(也稱潛在表示,latent representation)。
  • 解碼器(Decoder):與編碼器結構相對稱或相似的網絡,將低維的 \mathbf{z}?還原回與輸入同維度的 \mathbf{x}'(即重構的結果)。
  • 輸出層:得到的重構 \mathbf{x}'

整個過程可用下式概括:

????????????????????????????????????????????????????????????????????? ? ? ? ? ? ??\mathbf{z} = f_{\text{enc}}(\mathbf{x}), \quad \mathbf{x}' = f_{\text{dec}}(\mathbf{z})

1.2 目標函數:重構誤差最小化

自編碼器的目標函數 :

???????????????????????????????????????????????????????????????????????????????????J(g, f) = \sum_i \|\mathbf{x}_i - \mathbf{x}_i'\|^2 + \lambda R(f)

其中:

  • \mathbf{x}_i - \mathbf{x}_i'\|^2 表示第 i?個樣本的重構誤差(常見的是均方誤差)。
  • \lambda R(f) 是正則化項,用于約束網絡的復雜度(例如權值衰減、稀疏性正則等)。

自編碼器通過最小化重構誤差來學習到一個對輸入數據具有“良好”表示的隱藏向量 \mathbf{z}?,使得在壓縮后仍能較好地重構出原輸入。

(2)自編碼器與 PCA 的對比

2.1 PCA 與線性降維

對比了 PCA(主成分分析) 與自編碼器在降維上的效果:

?????

  • PCA:將原始數據通過線性映射(即正交變換)投影到方差最大的幾個主成分上,實現降維。
  • 自編碼器:使用非線性神經網絡進行編碼和解碼,能學習到更靈活、更豐富的表示。

????????從圖中可以看到,在手寫數字(如 0,1,2,3,4,9)上進行降維后,自編碼器可以重構出更逼近原圖的數字;而 PCA 由于其本質是線性映射,重構往往缺乏非線性特征的捕捉能力,因此在復雜數據上可能效果有限。

2.2 非線性映射的優勢

????????自編碼器通過多層感知機或卷積網絡等方式實現編碼-解碼,可以學習到數據的非線性結構。對 MNIST 這種手寫數字數據來說,每個數字都有不同的筆跡、線條弧度和書寫風格,使用非線性模型更能捕捉到這種多樣性,因此重構更好,潛在空間的分布也更有區分度。

(3)自編碼器在降維與表示學習中的意義

  • 通用性
    圖片中的示例主要是手寫數字,但自編碼器對其他高維數據(如圖像、文本、推薦系統的用戶-物品矩陣等)也適用。只要能定義合適的網絡結構和損失函數,就可以把任何高維輸入映射到較低維度的潛在空間進行分析和重構。

  • 非線性表示學習
    自編碼器的編碼器部分可以視為一個特征提取器,它能夠在隱藏層中學習到對數據分布更有表達力的特征。這些特征在后續分類、聚類或檢索等任務中往往表現優于簡單的線性降維方法。

  • 可視化
    當將自編碼器的中間層(特別是瓶頸層)的維度設為 2D 或 3D 時,就可以直接用來可視化數據在低維空間的分布,便于理解數據內部的結構和模式。

  • 與正則化的結合
    在第一張圖的公式中可以看到正則化項 \lambda R(f)?。常見的擴展包括:

    • 稀疏自編碼器(Sparse AE):鼓勵隱藏單元大部分為零激活;
    • 去噪自編碼器(Denoising AE):對輸入添加噪聲再重構;
    • 變分自編碼器(VAE):在潛在空間上引入概率分布假設;
      這些方法都能讓模型學到更具泛化能力或更具解釋性的表示。

2、變分自編碼器 VAE

(1)生成式模型與變分自編碼器概述

????????生成式模型的目標是學習數據的分布,從而能夠生成與真實數據相似的新樣本。變分自編碼器(Variational Autoencoder, VAE)是其中一種重要的生成模型,它將傳統自編碼器的框架與概率模型和變分推斷方法相結合,不僅能夠重構輸入數據,還能從隱變量空間中生成新的數據。與對抗生成網絡(GAN)相比,VAE具有明確的概率解釋和連續平滑的潛在空間,使其在一些需要不確定性估計或潛在特征表達的任務中表現突出。

(2)模型結構

???????????????????????

2.1 編碼器(Inference Network)
  • 結構分析:在VAE中,編碼器的輸出是一個分布?q(z|x)c_1,c_2,c_3\cdot \cdot \cdot?為在一個分布q(z|x)=N(\mu (x),\sigma (x))?中采樣得到的值。相比于AE,VAE編碼器不再是一個神經元網絡直接從輸入映射到 z ,而是產生一個分布(即一個\mu,一個\sigma,而且這個\sigma還有一定的隨機性),再從這個分布中采樣得到 z 。
  • 功能:將輸入數據 x?映射到潛在空間,并構造近似后驗分布 q(z|x)?。
  • 輸出:通常輸出隱變量分布的參數(例如均值 \mu(x) 和方差 \sigma^2(x)?),假設 q(z|x) 為高斯分布。
  • 意義:通過對輸入數據進行編碼,提取數據中的潛在特征,同時為后續的重構提供必要的隱變量信息。
  • 編碼器示意圖如下:

??????????????????????????????????????????????????????????????????????

2.2 解碼器(Generative Network)
  • 功能:根據從隱變量分布中采樣得到的 z?重構輸入數據,建模條件分布 p(x|z)?。
  • 生成:利用解碼器網絡,可以從連續的潛在空間中采樣,生成新的數據樣本。
  • 意義:實現數據的重構和生成,是VAE作為生成式模型的核心部分。

(3)VAE 的解碼器的核心思想

3.1 回憶高斯混合模型

?????????????????????????????????????????????????????

  • 圖片中顯示了一個數據分布 p(x),由多個高斯分布(曲線)混合而成。
  • 數學表達式: p(x) = \sum_z p(x|z)p(z)?, 其中 z?通常是一個離散的混合分量(整數索引),p(z) 為混合系數(滿足多項分布),而 p(x|z) 為第 z?個高斯分布 \mathcal{N}(\mu_z, \sigma _z)?。
  • 直觀來說,這個模型假設數據 x?可能來自若干個不同的“子分布”(每個子分布是一個高斯),并用這些高斯分布的線性加權求和來近似整體分布。
  • 局限性:當數據分布過于復雜時,僅依靠少量高斯分量可能難以逼近;若增加分量數,模型復雜度也隨之增加。

3.2 高斯混合模型的擴展-VAE解碼器

??????????????????????????????????????

  • 圖片中顯示了一個數據分布 p(x),由無數個高斯分布(曲線)混合而成。計算p(x)的過程就是解碼的過程
  • 數學表達式: p(x) = \int p(x|z)p(z)dz?, 其中隱變量 z?并非離散,而是可以在連續空間中取值。,p(z) 為混合系數(先驗一般取標準正態分布?z \sim \mathcal{N}(0,I)?,即初始值),而 p(x|z) 為第 z?個高斯分布 \mathcal{N}(\mu_z,\sigma _z)?(參數通過神經網絡學)。
  • 隨著 z?在連續空間中移動,解碼器會生成一系列可能的 x,從而可以近似很多形狀復雜的分布。
  • p(z)?即是編碼器中的?q(z|x)?的先驗,它是聯系編碼器與解碼器的橋梁。
  • 解碼器示意圖如下:

??????????????????????????????????????????????????????????????????????????????????????????? ? ?

VAE整體結構圖:

采樣\rightarrow

其中?\mu (z)?和?\sigma (z)?是輸出分布(最大后驗分布)的參數。\mu (z)?可視為重構的?\hat{x}?(最大似然值)。

(4)參數的訓練

4.1?最大化似然函數

VAE的目標是最大化觀測數據 x?的似然 p(x)?,即:

????????????????????????????????????????????????????????????????????????????????????????????????????????????p(x) = \int p(x|z) p(z) dz

其中,p(x|z) 是解碼器生成 x 的條件概率,p(z) 是隱變量 z?的先驗分布(通常是標準正態分布 \mathcal{N}(0, I)?)。然后,VAE的目標就是通過最大化 p(x) 來學習一個好的生成模型。為了實現這一目標,我們通常優化其對數似然:

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????l = \sum_x \ln(p(x))

4.2 變分推斷

直接最大化 p(x) 是不可行的,因為計算 \int p(x|z) p(z) dz 非常復雜。為了簡化這個過程,VAE引入了變分推斷。首先,我們引入一個變分分布 q(z|x)?,它近似于后驗分布 p(z|x)?。因此,我們將對數似然的目標函數重寫為:

???????????????????????????????????????????????????????????????????????????????????? ??\ln p(x) = \int q(z|x) \ln p(x) dz

這種重寫是通過變分下界(Variational Lower Bound)實現的,它允許我們在無法直接計算后驗分布的情況下,進行優化。

4.3 下界的推導

\ln(p(x)) = \int q(z|x) \ln(p(x|z)) dz

????????????????????????= \int q(z|x) \left( \ln \frac{p(x,z)}{p(z|x)} \right) dz= \int q(z|x) \left( \ln \frac{p(x,z)}{q(z|x)}\frac{q(z|x)}{p(z|x)} \right) dz

????????????????????????= \int q(z|x) \left( \ln \frac{p(x,z)}{q(z|x)} \right) dz + \int q(z|x) \left( \ln \frac{q(z|x)}{p(z|x)} \right) dz

????????????????????????= \int q(z|x) \left( \ln \frac{p(x,z)}{q(z|x)} \right) dz +\text{KL}(q(z|x)||p(z|x))

而?q(z|x)?本來就是?p(z|x)?的近似,所以?\text{KL}(q(z|x)||p(z|x)) \geq 0?且很接近于 0 .

所以得到?\ln(p(x))?的下界?\int q(z|x) \left( \ln \frac{p(x,z)}{q(z|x)} \right) dz?,記為?\mathcal{L}_b

4.4 優化目標

??????????????????????????????????????????????\ln (p(x)) \approx \mathcal{L}_b

???????????????????????????????????????????????? ? ? ? ?= \int q(z|x) \ln \frac{p(x, z)}{q(z|x)} dz

???????????????? ????????????????????????????????? ? ? ?= \int q(z|x) \left( \ln p(x|z) + \ln p(z) - \ln q(z|x) \right) dz

? ? ?其可以拆成兩部分:

  • 重構項

    \int q(z|x) \ln p(x|z) dz

    這是VAE模型中解碼器的主要任務,它負責通過隱變量 z?重構數據 x?。

  • KL散度項

    - \int q(z|x) \ln \frac{q(z|x)}{p(z)} dz

    這是VAE中的正則化項,確保編碼器的近似后驗 q(z|x) 不偏離先驗分布 p(z) 過多。

為了優化VAE,我們最大化這個下界:

?????????????????????????????????????????????????????\mathcal{L}_b = \mathbb{E}_{q(z|x)} [ \ln p(x|z) ] - D_{KL}(q(z|x) || p(z))

?????其中:

  • 第一個項 \mathbb{E}_{q(z|x)} [ \ln p(x|z) ] 是重構誤差,衡量通過解碼器從隱變量 z?重構原始數據 x?的好壞。
  • 第二個項 D_{KL}(q(z|x) || p(z)) 是KL散度,確保編碼器輸出的分布 q(z|x) 與先驗分布 p(z) 之間的差異盡可能小。
  • 我們希望第一項盡可能大,第二項前是減號,所以應盡可能小,第二項盡可能小就想要?q(z|x)?盡可能接近標準正態分布,就意味著 z 沒有任何辨識度,這樣的話第一項就小了。而如果第一項大的話,預測就準確,此時?q(z|x)?就不會太隨機,第二項就不可能小了,所以這兩部分的loss其實是相互拮抗的,要整體來看。
4.5 KL散度的最小化

????????KL散度是VAE優化的關鍵部分。它衡量了編碼器輸出的近似后驗 q(z|x)?與標準正態分布 p(z) = \mathcal{N}(0, I) 之間的差異。為了最小化KL散度,編碼器通過神經網絡(如圖中的NN')輸出隱變量 z 的均值 \mu'(x) 和標準差 \sigma'(x),并學習一個合適的分布。

公式為:

??????????????????????????????????????KL(q(z|x) || p(z)) = \frac{1}{2} \sum_{j=1}^{M} \left( \mu_j'^2 + \sigma_j'^2 - \log \sigma_j'^2 - 1 \right)

這是一個標準的KL散度的閉式解,它會對每個維度的隱變量進行計算。

(5)VAE 相對于 AE 的優勢

???????????????? ? ?

? ? ? ? 圖中顯示了 VAE(Variational AutoEncoder)中的編碼器部分,具體包含了從輸入到輸出均值(\mu) 和方差(\sigma^2) 這兩個步驟,以及后續的重參數化采樣過程。

5.1 對噪聲的建模
  • 編碼器通常由若干層神經網絡組成,可以是多層感知器(MLP)或者卷積神經網絡(CNN)等,具體取決于數據類型。

    1. 圖像:常用卷積層提取空間特征,然后 flatten 或全連接輸出到隱變量的分布參數上。
    2. 文本:常用RNN/LSTM/Transformer 等結構提取序列特征,再映射到分布參數上。
    3. 其他數據:根據數據特點選擇合適的網絡結構。
  • 輸出
    編碼器輸出并不是直接的隱變量 \mathbf{z}?,而是隱變量分布(近似后驗分布)q(\mathbf{z}|\mathbf{x}) 的參數,一般為均值向量 \boldsymbol{\mu}(\mathbf{x})對數方差向量 \log \boldsymbol{\sigma}^2(\mathbf{x})?。
    這樣做的原因是:VAE希望通過一個高斯分布來表示給定 \mathbf{x}?后潛在變量 \mathbf{z}?的不確定性,即

    ? ??q(\mathbf{z}|\mathbf{x}) = \mathcal{N}\bigl(\mathbf{z};\, \boldsymbol{\mu}(\mathbf{x}), \, \boldsymbol{\sigma}^2(\mathbf{x}) \mathbf{I}\bigr)???????
  • 學習到“噪聲”的方差
    圖中“自動學習到噪聲的方差”指的就是通過最小化KL散度和重構誤差,讓網絡自動去適配合適的 \boldsymbol{\sigma}(\mathbf{x})(即每個維度的標準差),從而平衡“讓分布貼近標準正態先驗”與“盡可能重構輸入”的目標。

  • 如果只是最小化重構誤差,而沒有讓 z 的分布貼近標準正態分布,則方差為0,此時VAE等同于AE 。

(6)重參數化技巧

  • 采樣的難點
    如果我們直接從 \mathcal{N}\bigl(\boldsymbol{\mu}, \boldsymbol{\sigma}^2 \mathbf{I}\bigr)?中采樣 \mathbf{z}?,采樣過程不可導,無法對編碼器進行梯度更新。

  • 重參數化
    為了使采樣過程可導,VAE中引入了重參數化技巧:

    \mathbf{z} = \boldsymbol{\mu}(\mathbf{x}) + \boldsymbol{\sigma}(\mathbf{x}) \,\odot\, \boldsymbol{\epsilon}

    其中 \boldsymbol{\epsilon} \sim \mathcal{N}(0,\mathbf{I}) 是從標準正態分布采樣得到的噪聲向量,\odot 表示逐元素乘法。

  • 好處
    由于 \boldsymbol{\mu}?和 \boldsymbol{\sigma}?都是由可學習的神經網絡(編碼器)輸出的,\boldsymbol{\epsilon}?是與模型參數無關的隨機噪聲,因而我們可以對 \boldsymbol{\mu}(\mathbf{x})?和 \boldsymbol{\sigma}(\mathbf{x}) 進行反向傳播,學習到讓模型最優的分布參數。

(7)編碼器部分的目標:近似后驗

  • 近似后驗分布 q(\mathbf{z}|\mathbf{x})
    VAE的編碼器本質上在做“變分推斷”,它試圖用一個高斯分布去近似真實的后驗分布 p(\mathbf{z}|\mathbf{x})?。

    • 先驗分布p(\mathbf{z}) = \mathcal{N}(0, \mathbf{I})(固定不變)。
    • 后驗分布p(\mathbf{z}|\mathbf{x})(難以直接計算)。
    • 近似后驗q(\mathbf{z}|\mathbf{x})(編碼器輸出),用神經網絡來近似。
  • KL 散度
    編碼器要通過最小化KL散度 D_{\mathrm{KL}}(q(\mathbf{z}|\mathbf{x})\|p(\mathbf{z})) 來保證自己輸出的分布不會偏離先驗分布過遠,從而使得潛在空間具有良好的結構。同時,KL散度也會抑制 \boldsymbol{\sigma}?不合理地變大或變小。

(8)VAE 總結

8.1?VAE整體流程概覽
  1. 輸入數據 \mathbf{x}:從訓練集中獲取樣本(如圖像、文本等)。
  2. 編碼器(Encoder):將 \mathbf{x}?映射到潛在分布的參數(?\boldsymbol{\mu}, \boldsymbol{\sigma} ),得到近似后驗 q(\mathbf{z}|\mathbf{x})?。
  3. 重參數化采樣(Reparameterization Trick):根據 \boldsymbol{\mu}, \boldsymbol{\sigma} 以及標準正態噪聲 \boldsymbol{\epsilon},得到隱變量 \mathbf{z}
  4. 解碼器(Decoder):從隱變量 \mathbf{z}?生成或重構數據 \mathbf{x}',對應分布 p(\mathbf{x}|\mathbf{z})?。
  5. 計算損失并反向傳播:包括
    • 重構誤差(衡量 \mathbf{x}'?與 \mathbf{x}?的差異)
    • KL 散度(約束 q(\mathbf{z}|\mathbf{x}) 與先驗 p(\mathbf{z}) 的接近程度) 將這兩項結合在一起形成VAE的訓練目標(ELBO),通過反向傳播同時更新編碼器和解碼器的參數。

???????????????????????

8.2?編碼器部分的詳細步驟
  1. 輸入 \mathbf{x}

    • 將觀測數據 \mathbf{x}(圖像像素、文本向量等)輸入到編碼器網絡。
    • 編碼器可能是多層感知器(MLP)、卷積網絡(CNN)、或其他合適的網絡結構。
  2. 提取特征

    • 編碼器通過多層神經網絡對輸入數據進行特征提取,逐步將高維數據壓縮到更緊湊的表示。
    • 這些中間特征會為后續的分布參數輸出做準備。
  3. 輸出分布參數 \boldsymbol{\mu}(\mathbf{x}), \log \boldsymbol{\sigma}^2(\mathbf{x})

    • 編碼器的最終輸出通常是兩個向量:均值 \boldsymbol{\mu}?和對數方差 \log \boldsymbol{\sigma}^2(或直接輸出 \boldsymbol{\sigma})。
    • 這兩個向量共同決定了給定 \mathbf{x}?后,隱變量 \mathbf{z}?的近似后驗分布 q(\mathbf{z}|\mathbf{x})?。
  4. 重參數化采樣(Reparameterization Trick)

    1. 直接從 \mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\sigma}^2 \mathbf{I}) 采樣 \mathbf{z}?不可導,無法對編碼器進行梯度更新。
    2. 因此使用重參數化: \mathbf{z} = \boldsymbol{\mu}(\mathbf{x}) + \boldsymbol{\sigma}(\mathbf{x}) \odot \boldsymbol{\epsilon},其中?\boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I})
    3. 這樣采樣過程可微,編碼器網絡就能在訓練中被更新。
  5. 得到隱變量 \mathbf{z}

    1. 最終,我們得到對 \mathbf{x}?的隱變量表示 \mathbf{z}
    2. 這一步完成后,\mathbf{z}?就可被解碼器拿去生成重構。
  6. 梯度更新(與損失函數一起)

    1. 編碼器的參數在計算完重構損失和KL散度后,通過反向傳播進行更新。
    2. KL散度部分會鼓勵編碼器輸出的 q(\mathbf{z}|\mathbf{x}) 貼近先驗 p(\mathbf{z}),從而讓潛在空間有良好結構。

8.3?解碼器部分的詳細步驟
  1. 輸入隱變量 \mathbf{z}

    1. 在訓練階段,\mathbf{z}?來自編碼器輸出的近似后驗;在生成階段,\mathbf{z}?來自先驗分布 p(\mathbf{z}) = \mathcal{N}(0,\mathbf{I})?。
  2. 多層神經網絡映射

    1. 解碼器將 \mathbf{z}?通過若干層非線性變換映射回數據空間。
    2. 對圖像而言,可能使用轉置卷積(Deconv)逐步還原為像素;對文本可能使用RNN/Transformer等結構生成詞序列。
  3. 輸出分布或重構結果 \mathbf{x}'

    1. 解碼器的輸出可以是:
      1. 分布參數:如對圖像像素輸出Bernoulli/Gaussian的參數,對文本輸出詞的softmax概率分布等;
      2. 直接的重構:如連續值的像素。
    2. 這樣就可以用對數似然或其它損失度量“重構”與真實數據的差異。
  4. 計算重構誤差(Reconstruction Loss)

    1. 根據解碼器輸出的分布 \hat{p}(\mathbf{x}|\mathbf{z}) 與真實數據 \mathbf{x},計算負對數似然或交叉熵、MSE等。
    2. 這個重構誤差越小,表示解碼器越能“還原”或“生成”逼近 \mathbf{x}?的樣本。
  5. 反向傳播更新解碼器參數

    1. 解碼器參數通過重構誤差與KL散度(間接影響)的組合在ELBO目標下被優化。
    2. 編碼器和解碼器協同訓練,以在潛在空間和重構質量之間取得平衡。
  6. 生成新樣本

    1. 訓練完成后,只需從先驗 \mathcal{N}(0,\mathbf{I}) 采樣 \mathbf{z},輸入解碼器即可生成全新的樣本 \mathbf{x}',實現生成式建模。

8.4?訓練與推斷階段的對比
  • 訓練階段

    • 編碼器 + 解碼器共同工作:
      1. 編碼器根據輸入 \mathbf{x}?輸出 \boldsymbol{\mu}, \boldsymbol{\sigma}?。
      2. 重參數化采樣得到 \mathbf{z}?。
      3. 解碼器根據 \mathbf{z}?生成 \mathbf{x}'?。
      4. 計算重構誤差和KL散度,形成ELBO,反向傳播更新參數。
  • 推斷/生成階段

    • 只需使用解碼器部分:
      • 從先驗分布采樣 \mathbf{z} \sim \mathcal{N}(0,\mathbf{I})?。
      • 輸入解碼器生成新樣本 \mathbf{x}'?。
    • 無需真實數據 \mathbf{x}?的參與,即可自由生成新樣本。

(9)VAE的局限性

VAE 在實際使用中也暴露出了一些局限性或常見問題。

9.1 生成圖像“模糊”或“平均化”問題

i、重構目標導致的模糊

  • 高斯假設與像素級重構損失
    在最常見的實現中,VAE 通常假設圖像像素的條件分布為高斯分布(或近似用均方誤差/MSE做重構損失)。
    這在面對多模態或復雜圖像細節時往往導致生成結果出現“模糊”或“平均化”的現象。

    • 原因:當多個真實樣本都可能對應相似的潛在向量 \mathbf{z}?時,VAE 傾向輸出一個平均(或折中)結果來最小化整體重構誤差,導致缺乏銳度和細節。
  • 多模態數據的平均化
    例如,對于某些模態多樣的圖像(同一個潛在語義可能對應不同外觀),VAE 在訓練時可能更傾向于生成折中版本的圖像,而無法像一些對抗式生成模型(GAN)那樣更尖銳地選擇某個模態。

ii、KL 散度與重構誤差的平衡

  • 在 VAE 的目標函數(ELBO)中,重構誤差(?-\mathbb{E}_{q(\mathbf{z}|\mathbf{x})}[\ln p(\mathbf{x}|\mathbf{z})] )與 KL 散度(?D_{\text{KL}}(q(\mathbf{z}|\mathbf{x}) \parallel p(\mathbf{z})) )同時被優化。
  • 有時為了減小 KL 散度,模型會讓后驗分布 q(\mathbf{z}|\mathbf{x}) 更貼近先驗 p(\mathbf{z})?,從而減少了潛在空間的靈活性,間接導致生成結果不夠細膩或多樣。
9.2 可能出現“記住”訓練樣本的傾向

???????????????????????

i、重構訓練集的圖像

  • VAE 只要能對訓練集中樣本重構良好,就可以得到較低的重構損失。如果模型容量足夠大,VAE 可能學到某些近似“記憶”訓練集中圖像的方式。
  • 圖中“7”的例子(只需改動極少像素即可與原圖保持接近)就說明,VAE 有時會生成與訓練集樣本非常相似的結果,而非完全新的樣本。

ii、多樣性不足

  • 由于解碼器要在給定 \mathbf{z}?時產生“盡量接近真實圖像”的結果,且編碼器又試圖把不同 \mathbf{x}?壓縮到潛在空間中,如果沒有額外的約束或正則,VAE 有時缺乏對“新穎樣本”的探索,生成結果容易集中于訓練數據的局部模式。
9.3 后驗分布表達能力不足

i、因果:VAE 對后驗分布的限制

  • 在最基本的 VAE 中,后驗分布 q(\mathbf{z}|\mathbf{x}) 被限制為各向同性高斯或對角高斯
  • 這種限制導致模型可能無法充分表達數據的潛在復雜性。對于非常復雜或多模態的數據,簡單的高斯假設無法捕捉到真實后驗的形狀,從而影響生成質量和表示能力。

ii、Posterior Collapse(后驗坍縮)

  • 在某些情況下(尤其是文本生成、序列生成時),后驗分布可能退化為與先驗幾乎相同,編碼器幾乎不使用輸入信息,\mathbf{z}?失去表達力。
  • 這被稱為“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?總結
  1. 模糊與平均化:VAE 常出現模糊的重構或生成圖像,難以捕捉高頻細節,容易產生平均化結果。
  2. 多樣性不足:可能傾向記憶訓練樣本,或僅在訓練集中樣本周圍做小改動,而不是生成真正新穎的樣本。
  3. 后驗表達能力有限:簡單的高斯假設難以建模復雜分布,可能出現后驗坍縮。
  4. 高維與高保真難度:在高分辨率、細節豐富的數據上,VAE 的重構或生成質量常不及對抗式模型,需要更多結構性改進。
  5. 與 GAN 對比:GAN 在圖像逼真度上往往表現更好,而 VAE 在可解釋性、潛在空間操作等方面有其優勢。
  6. 超參數與優化:平衡重構和 KL 散度需要仔細調參,容易出現不穩定或訓練不充分。

總的來說,VAE 并非“全能”的生成模型,在圖像逼真度和多樣性上仍存在不少挑戰。但它的可解釋性、對潛在空間的顯式建模、以及與其他方法結合的潛力,依舊使其在許多研究方向中扮演著重要角色。后續的改進(如層級式 VAE、流模型結合、離散潛在變量、VQ-VAE 等)也在不斷推進其生成能力與靈活性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73860.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 一步部署DHCP服務

#!/bin/bash #腳本作者和日期 #author: PEI #date: 20250319 #檢查root權限 if [ "$USER" ! "root" ]; then echo "錯誤:非root用戶,權限不足!" exit 0 fi #防火墻與高級權限 systemctl stop firewa…

【RHCE】awk文本處理

目錄 基本介紹 命令格式 awk基本使用 命令行讀取程序腳本 數據字段變量 腳本中使用多個命令 文件中讀取程序 處理數據前運行腳本(BEGIN) 處理數據后運行腳本(END) awk高級用法 變量 內建變量 自定義變量 數組 定義…

Vue3 核心特性解析:Suspense 與 Teleport 原理深度剖析

Vue3 核心特性解析:Suspense 與 Teleport 原理深度剖析 一、Teleport:突破組件層級的時空傳送 1.1 實現原理圖解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

工業界處理 Atomic 操作的優化策略

在產業界,處理 atomic 操作 時,通常會根據具體情境選擇不同的策略,主要取決于以下三個因素: 內存一致性需求:是否需要確保 所有線程(threads) 都能看到最新的變量值。性能需求:是否…

Python功能完美的寶庫——內置的強大“武器庫”builtins

builtins模塊包含了Python大量的內置對象(函數、異常和類型等),她是Python的內置武器庫,堪稱功能完美的寶庫。 筆記模板由python腳本于2025-03-19 08:16:27創建,本篇筆記適合喜歡探究python的coder翻閱。 【學習的細節…

三分鐘掌握視頻分辨率修改 | 在 Rust 中優雅地使用 FFmpeg

前言 在視頻處理領域,調整視頻分辨率是一個繞不過去的需求。比如,你可能需要將一段視頻適配到手機、平板或大屏電視上,或者為了節省存儲空間和網絡帶寬而壓縮視頻尺寸。然而,傳統的FFmpeg命令行工具雖然功能強大,但復…

PyTorch 深度學習實戰(17):Asynchronous Advantage Actor-Critic (A3C) 算法與并行訓練

在上一篇文章中,我們深入探討了 Soft Actor-Critic (SAC) 算法及其在平衡探索與利用方面的優勢。本文將介紹強化學習領域的重要里程碑——Asynchronous Advantage Actor-Critic (A3C) 算法,并展示如何利用 PyTorch 實現并行化訓練來加速學習過程。 一、A…

【深度學習】多目標融合算法(五):定制門控網絡CGC(Customized Gate Control)

目錄 一、引言 二、CGC(Customized Gate Control,定制門控網絡) 2.1 技術原理 2.2 技術優缺點 2.3 業務代碼實踐 2.3.1 業務場景與建模 2.3.2 模型代碼實現 2.3.3 模型訓練與推理測試 2.3.4 打印模型結構 三、總結 一、引言 上一…

在線pdf處理網站合集

1、PDF24 Tools:https://tools.pdf24.org/zh/ 2、PDF派:https://www.pdfpai.com/ 3、ALL TO ALL:https://www.alltoall.net/ 4、CleverPDF:https://www.cleverpdf.com/cn 5、Doc Small:https://docsmall.com/ 6、Aconv…

網絡編程-實現客戶端通信

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/select.h>#define MAX_CLIENTS 2 // 最大客戶端連接數 #define BUFFER_SI…

力扣100二刷——圖論、回溯

第二次刷題不在idea寫代碼&#xff0c;而是直接在leetcode網站上寫&#xff0c;“逼”自己掌握常用的函數。 標志掌握程度解釋辦法?Fully 完全掌握看到題目就有思路&#xff0c;編程也很流利??Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答???Sl…

【大模型實戰篇】多模態推理模型Skywork-R1V

1. 背景介紹 近期昆侖萬維開源的Skywork R1V模型&#xff0c;是基于InternViT-6B-448px-V2_5以及deepseek-ai/DeepSeek-R1-Distill-Qwen-32B 通過強化學習得到。當然語言模型也可以切換成QwQ-32B。因此該模型最終的參數量大小為38B。 該模型具備多模態推理能力&#xf…

識別并脫敏上傳到deepseek/chatgpt的文本文件中的護照信息

本文將介紹一種簡單高效的方法解決用戶在上傳文件到DeepSeek、ChatGPT&#xff0c;文心一言&#xff0c;AI等大語言模型平臺過程中的護照號識別和脫敏問題。 DeepSeek、ChatGPT&#xff0c;Qwen&#xff0c;Claude等AI平臺工具快速的被接受和使用&#xff0c;用戶每天上傳的文…

數據驅動進化:AI Agent如何重構手機交互范式?

如果說AIGC拉開了內容生成的序幕&#xff0c;那么AI Agent則標志著AI從“工具”向“助手”的跨越式進化。它不再是簡單的問答機器&#xff0c;而是一個能夠感知環境、規劃任務并自主執行的智能體&#xff0c;更像是虛擬世界中的“全能員工”。 正如行業所熱議的&#xff1a;“大…

【AI News | 20250319】每日AI進展

AI Repos 1、XianyuAutoAgent 實現了 24 小時自動化值守的 AI 智能客服系統&#xff0c;支持多專家協同決策、智能議價和上下文感知對話&#xff0c;讓我們店鋪管理更輕松。主要功能&#xff1a; 智能對話引擎&#xff0c;支持上下文感知和專家路由階梯降價策略&#xff0c;自…

nginx中間件部署

中間件部署流程 ~高級權限賬戶安裝必要的插件 -> 普通權限賬戶安裝所需要的服務 -> 高級權限賬戶開啟并設置開機自啟所安裝的服務 -> iptables放行所需要的服務 普通權限賬戶安裝NGINX中間件 1、擁有高級權限的賬戶安裝必要的插件 sudo yum install -y gcc-c make…

C語言自定義類型【結構體】詳解,【結構體內存怎么計算】 詳解 【熱門考點】:結構體內存對齊

引言 詳細講解什么是結構體&#xff0c;結構體的運用&#xff0c; 詳細介紹了結構體在內存中占幾個字節的計算。 【熱門考點】&#xff1a;結構體內存對齊 介紹了&#xff1a;結構體傳參 一、什么是結構體&#xff1f; 結構是?些值的集合&#xff0c;這些值稱為成員變量。結構…

前端應用更新通知機制全解析:構建智能化版本更新策略

引言&#xff1a;數字時代的更新挑戰 在持續交付的現代軟件開發模式下&#xff0c;前端應用平均每周產生2-3次版本迭代。但據Google研究報告顯示&#xff0c;38%的用戶在遇到功能異常時仍在使用過期版本的應用。如何優雅地實現版本更新通知&#xff0c;已成為提升用戶體驗的關…

Apache DolphinScheduler:一個可視化大數據工作流調度平臺

Apache DolphinScheduler&#xff08;海豚調度&#xff09;是一個分布式易擴展的可視化工作流任務調度開源系統&#xff0c;適用于企業級場景&#xff0c;提供了一個可視化操作任務、工作流和全生命周期數據處理過程的解決方案。 Apache DolphinScheduler 旨在解決復雜的大數據…

[藍橋杯 2023 省 B] 飛機降落

[藍橋杯 2023 省 B] 飛機降落 題目描述 N N N 架飛機準備降落到某個只有一條跑道的機場。其中第 i i i 架飛機在 T i T_{i} Ti? 時刻到達機場上空&#xff0c;到達時它的剩余油料還可以繼續盤旋 D i D_{i} Di? 個單位時間&#xff0c;即它最早可以于 T i T_{i} Ti? 時刻…