变分自编码器VAE(Variational Autoencoders)及示例代码

这里写一个中文版快速入门笔记,更细致的理论分析和推导见:
Tutorial on Variational Autoencoders

VAE是一个学习复杂分布的无监督学习模型。在实践中,给定数据 X X X,我们往往想得到 P ( X ) P(X) P(X),使得那些真实数据概率较大,而随机噪声概率较小。同时,我们还希望能够生成更多其他类似“真实”的例子,进而丰富我们的数据,典型例子如动画设计等领域,这就是“生成”模型的motivation。

形式化的表述为:已知数据 X X X是从某未知真实数据分布 P g t ( X ) P_{gt}(X) Pgt(X)采样而来,我们的目标是学习一个可采样模型 P P P,且 P P P P g t ( X ) P_{gt}(X) Pgt(X)尽可能相似。

潜变量模型

真实数据 X X X可能是高维的,并且依赖关系复杂,潜变量模型将问题按步骤分解:首先假设有一潜变量 z ∈ Z z\in Z zZ Z Z Z是隐空间,易于根据概率密度函数 P ( z ) P(z) P(z)采样;其次,假定有一族函数 X ′ = f ( z ; θ ) X'=f(z;\theta) X=f(z;θ),将 z z z映射为数据 X ′ X' X。其中, z z z为随机变量, θ \theta θ为固定参数, X ′ X' X为与真实数据 X X X类似的"新"数据。

学习的目的就是要优化 θ \theta θ,目标为最大化真实数据 X X X的概率:
P ( X ) = ∫ P ( X ∣ z ; θ ) P ( z ) d z P(X)=\int P(X|z;\theta)P(z)dz P(X)=P(Xz;θ)P(z)dz其中 P ( X ∣ z ; θ ) = N ( X ∣ f ( z , θ ) , σ 2 ∗ I ) P(X|z;\theta)=N(X|f(z,\theta),\sigma^2 * I) P(Xz;θ)=N(Xf(z,θ),σ2I)

注意到生成分布选择的是Guass分布。其他分布也可以,但需要满足: P ( X ∣ z ; θ ) P(X|z;\theta) P(Xz;θ)可计算且在 θ \theta θ处连续,可通过梯度下降进行优化。
当不使用潜变量生成模型,直接取确定性的 X ′ = f ( z ; θ ) X'=f(z;θ) X=f(z;θ)时,相当于生成分布是一个Dirac delta分布,在 θ \theta θ上不连续。此时模型就是传统自编码器模型,它是点对点的,可以进行压缩降维,但不具备直接生成功能(其他未知的 z ′ z' z对应的 X ′ X' X是什么完全不清楚)。实际上,变分自编码器和传统自编码器只是在网络结构上有一定的相似之处,但本质完全不同。

变分自编码器

在潜变量模型的基础上,还需处理两个问题:

  1. P ( z ) P(z) P(z)的选择,事实上,任意 d d d维分布都可由 d d d个正态分布的变量通过足够复杂的函数映射而成,只需取 P ( z ) = N ( 0 , I ) P(z)=N(0,I) P(z)=N(0,I)即可,进一步的说明可参见原文。
  2. 将上面的优化目标 P ( X ) P(X) P(X)转化为可计算梯度的Loss Function,这就用到变分自编码器的另一个核心方法——变分法。

考虑直接使用蒙特卡洛方法: P ( X ) ≈ 1 n ∑ i P ( X ∣ z i ) P(X) \approx \frac{1}{n}\sum_iP(X|z_i) P(X)n1iP(Xzi),有两个弊端:1) 复杂的问题对于采样的样本量需求过大ÿ

  • 17
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值