VAE(Variational AutoEncoder)

张开发
2026/4/18 7:10:26 15 分钟阅读

分享文章

VAE(Variational AutoEncoder)
VAE 是一种生成模型它通过学习一个连续的潜在分布而不是固定编码使可以从这个分布中采样并生成新数据VAEVariational AutoEncoder 一种可以“学会生成新数据”的概率模型输入一个样本 → 学一个“潜在表示 z” → 再生成类似的样本AutoEncoder既有编码也有解码x → 编码 → z → 解码 → x 压缩信息然后还原数据通过“重建误差”来约束 latent 表示是有意义的z 的好坏是通过“解码是否能还原 x”来衡量的普通 AE做的事x → 编码 → z → 解码 → x 目标让 x ≈ xVariational变分不是学一个“确定的 z”而是学一个“分布”即 z ~ N(μ, σ²)μ均值这个分布的中心在哪σ标准差这个分布有多宽本质是用“可优化的近似分布”去替代“难以计算的真实分布”VAE 的核心结构 编码器Encoder输入x输出 μ(x), σ(x)表示这个样本在 latent space 的分布 采样z μ σ * εε ~ N(0,1)让模型具有“随机性” 解码器Decoderz → 生成 x1️⃣ 如果任务是“生成数据”解码是核心目标2️⃣ 如果任务是“学表示representation”解码主要是一个训练约束VAE 在做什么把复杂数据比如人体、图像压缩到一个“连续空间 z” 在这个空间里可以 插值、采样、生成新数据损失函数VAE 的 loss 有两部分1️⃣ 重建误差让生成的 x 接近原始 x保证z里有信息让每个 x → 一个“独特的 z”区分开2️⃣ KL 散度重点让 z 的分布接近标准正态 N(0,1)让 latent space连续、平滑、可采样‘不同 x 的 q(z|x)不要太分散、要互相重叠、要填满空间如果没有KL散度的话就只能重建 不能生成让所有 z 像标准正态分布 N(0,1)挤在一起、平滑既不能完全分开也不能完全一样 二者共同作用形成一个“连续、可区分但不离散”的空间核心目标学一个“连续、可采样”的潜在空间使可以从中生成新的数据为什么要让不同x的z在隐空间里连续VAE 不是为了“区分不同样本”而是为了“建模数据的分布并能生成新样本” 所以 z 的目标不是“彼此远离”分类任务的目标而是“形成一个连续、有结构的空间”VAE 把每个数据点涂抹成一片分布各个分布互相重叠把空间填满。这样空间里任意一点解码器都见过某个分布覆盖到了采样出来就能得到有意义的结果。如果每个 x → 一个完全不同、彼此很远的 zlatent space就会变成“离散点集”在几个孤立的点中间随机采样就会落在“空区域”decoder的输出将没有意义无法生成新样本举例如果z1一个人 —— z2另一个人希望中间是“渐变的人”如果空间不连续中间没有语义 ❌ → 生成畸形“z 差别越大越好”适用于判别模型但 VAE 是生成模型它需要的是“覆盖空间”而不是“拉开距离”

更多文章