具身智能零碎知识点(五):VAE中对使用KL散度的理解

VAE中对使用KL散度的理解

    • [什么是 VAE (Variational AutoEncoder)?](#什么是 VAE (Variational AutoEncoder)?)
    • [KL 散度是如何用到的?](#KL 散度是如何用到的?)
      • [通俗理解 KL 散度在 VAE 中的作用:](#通俗理解 KL 散度在 VAE 中的作用:)
      • 带来的好处:
      • [KL 散度公式 (无需背诵,理解即可):](#KL 散度公式 (无需背诵,理解即可):)

什么是 VAE (Variational AutoEncoder)?

VAE,全称是变分自编码器 。要理解它,我们得先从自编码器 (AutoEncoder, AE) 说起。

从自编码器 (AE) 说起

想象你有一张照片(比如一张猫的图片),你想把它压缩成一个很小的数据包,然后再从这个数据包里把照片还原出来。

  • 编码器 (Encoder) :这个部分负责把你的照片(高维数据)"压缩"成一个潜在向量 (Latent Vector),通常维度很低。这个潜在向量就像是照片的"精髓"或"压缩包"。
  • 解码器 (Decoder):这个部分负责从"压缩包"(潜在向量)中把照片"解压"出来,还原成一张图片。

自编码器的工作就是:编码器把数据压缩,解码器把数据还原。 训练目标是让还原出来的照片尽可能地接近原始照片。

AE 的问题: AE 学习到的潜在空间(所有压缩包组成的区域)是不连续且没有规律的。你不能随机从潜在空间里取一个"压缩包"给解码器,指望它能还原出有意义的猫照片。它很可能还原出一堆噪音,因为你取的这个"压缩包"可能落在了一片"空白"区域,解码器根本没学过如何处理。

VAE:让潜在空间变得"有意义"和"连续"

VAE 就是为了解决 AE 的这个缺陷而诞生的。它的核心思想是:与其让编码器直接输出一个潜在向量,不如让它输出一个"概率分布的参数"!

具体来说,VAE 做出一个关键的假设:每个输入数据(比如一张猫照片)都对应着潜在空间中的一个高斯(正态)分布。

  • 编码器 (Encoder) :不再直接输出一个向量 z,而是输出一个均值向量 ( μ \mu μ) 和一个方差向量 ( σ 2 \sigma^2 σ2) 。这两个向量共同定义了潜在空间中的一个高斯分布。
    • μ \mu μ 描述了这个分布的"中心"在哪里。
    • σ 2 \sigma^2 σ2 描述了这个分布的"范围"有多广。
  • 采样 (Sampling) :我们不是直接用 μ \mu μ 和 σ 2 \sigma^2 σ2,而是从这个由 μ \mu μ 和 σ 2 \sigma^2 σ2 定义的高斯分布中随机采样 一个潜在向量 z
  • 解码器 (Decoder) :和 AE 一样,解码器接收采样到的 z,并尝试将其还原成原始数据。

为什么 VAE 的潜在空间更"好"?

因为 VAE 的损失函数除了鼓励重构准确性 (还原的照片像不像原始照片)之外,还引入了一个非常重要的惩罚项:KL 散度


KL 散度是如何用到的?

这就是 KL 散度登场的地方!KL 散度是 Kullback-Leibler Divergence 的缩写,它在信息论中衡量的是两个概率分布之间的差异

在 VAE 中,KL 散度扮演着正则化 (Regularization) 的角色。它被用来惩罚编码器输出的潜在分布(由 $\mu$$\sigma^2$ 定义)偏离一个预先设定好的、简单的"标准"分布 的程度。这个"标准"分布通常是标准正态分布 N ( 0 , 1 ) N(0, 1) N(0,1)(均值为 0,方差为 1 的高斯分布)。

通俗理解 KL 散度在 VAE 中的作用:

想象一下:

  • 编码器就像一个摄影师,它拍了一堆猫的照片,每张照片都对应一个潜在空间中的"摄影风格"(一个高斯分布)。
  • 解码器就像一个画家,它根据"摄影风格"画猫。
  • KL 散度 就像一个**"风格警察"**:
    • 这个警察要求所有的"摄影风格"(即编码器输出的每个 $(\mu, \sigma^2)$ 分布)都要尽可能地接近一个"标准、统一的风格" (标准正态分布 N ( 0 , 1 ) N(0, 1) N(0,1))。
    • 如果摄影师(编码器)拍出来的风格太**"离谱"**($\mu$ 离 0 太远,或者 $\sigma^2$ 太大太小,分布太平坦或太尖锐),"风格警察"就会开出罚单(KL 损失变大)。
    • 这会强制编码器将不同的输入数据映射到潜在空间中相互靠近、且形状相似的分布

带来的好处:

通过 KL 散度的"惩罚",VAE 的潜在空间变得:

  1. 连续性 (Continuity) :因为所有的潜在分布都被强制拉向 N ( 0 , 1 ) N(0,1) N(0,1),它们会相互重叠,从而消除了 AE 潜在空间中的"空白区域"。这意味着你可以从潜在空间中随机采样任何一个点,它都有很大概率属于某个有效的潜在分布,解码器就能还原出有意义的数据。
  2. 可生成性 (Generative Capability) :因为潜在空间被正则化成接近标准正态分布,我们就可以直接从一个简单的 N ( 0 , 1 ) N(0,1) N(0,1) 中随机采样一个 z 给解码器,它就能生成全新的、有意义的数据(比如从未见过的猫的照片)。这使得 VAE 成为了一个强大的生成模型。
  3. 正则化 (Regularization):KL 散度避免了编码器将每个输入映射到潜在空间中的一个孤立点,从而防止过拟合,并鼓励模型学习到数据的有意义的、低维表示。

KL 散度公式 (无需背诵,理解即可):

在代码中,你看到的 KL 散度公式:

D K L ( N ( μ , σ 2 ) ∣ ∣ N ( 0 , 1 ) ) = 1 2 ∑ ( 1 + log ⁡ ( σ 2 ) − μ 2 − σ 2 ) D_{KL}(N(\mu, \sigma^2) || N(0, 1)) = \frac{1}{2} \sum (1 + \log(\sigma^2) - \mu^2 - \sigma^2) DKL(N(μ,σ2)∣∣N(0,1))=21∑(1+log(σ2)−μ2−σ2)

  • μ \mu μ (均值) :它惩罚潜在分布的中心偏离标准正态分布中心(0)的程度。如果 μ \mu μ 越大或越小, μ 2 \mu^2 μ2 就越大,KL 损失也就越大。
  • σ 2 \sigma^2 σ2 (方差) :它惩罚潜在分布的形状(方差)偏离标准正态分布方差(1)的程度。
    • 如果 σ 2 \sigma^2 σ2 过大(分布太宽), ( 1 + log ⁡ ( σ 2 ) − σ 2 ) (1 + \log(\sigma^2) - \sigma^2) (1+log(σ2)−σ2) 就会导致损失增大。
    • 如果 σ 2 \sigma^2 σ2 过小(分布太窄), ( 1 + log ⁡ ( σ 2 ) − σ 2 ) (1 + \log(\sigma^2) - \sigma^2) (1+log(σ2)−σ2) 也会导致损失增大。
    • 当 σ 2 = 1 \sigma^2 = 1 σ2=1 时, log ⁡ ( 1 ) = 0 \log(1) = 0 log(1)=0, ( 1 + 0 − 1 ) = 0 (1 + 0 - 1) = 0 (1+0−1)=0,这部分惩罚最小。

y = log ⁡ ( x ) − x y = \log{(x)}-x y=log(x)−x 函数图像

所以,这个公式在数值上量化了你的"摄影风格"(潜在分布)与"标准风格"(标准正态分布)之间的差距。模型的目标就是最小化这个差距,让生成的数据既能被很好地重构,又能保持潜在空间的良好结构。

相关推荐
oYiMiYangGuang12315 分钟前
【广告系列】流量归因模型
大数据·人工智能
掘金安东尼1 小时前
Claude Code 的“隐藏护城河”:GPT-5 也过不去的优化秘密
人工智能·llm
说私域1 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销创新研究——以“种草”实践践行“以人为本”理念
人工智能·小程序
说私域1 小时前
电商栏目细分与定制开发开源AI智能名片S2B2C商城小程序:洞察力与执行力的协同共进
人工智能·小程序
山烛2 小时前
深度学习入门:神经网络
人工智能·深度学习·神经网络·bp神经网络·前向传播
苏苏susuus2 小时前
NLP:Transformer各子模块作用(特别分享1)
人工智能·自然语言处理·transformer
IT_陈寒2 小时前
Java性能优化实战:5个立竿见影的技巧让你的应用提速50%
前端·人工智能·后端
深兰科技3 小时前
深兰科技:搬迁公告,我们搬家了
javascript·人工智能·python·科技·typescript·laravel·深兰科技
有点不太正常3 小时前
《Password Guessing Using Large Language Models》——论文阅读
人工智能·语言模型·自然语言处理·密码学
lxmyzzs4 小时前
【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
人工智能·深度学习·opencv·算法·计算机视觉·图像算法·仪器仪表识别