这里写一个中文版快速入门笔记,更细致的理论分析和推导见:
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 z∈Z, 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(X∣z;θ)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(X∣z;θ)=N(X∣f(z,θ),σ2∗I)
注意到生成分布选择的是Guass分布。其他分布也可以,但需要满足: P ( X ∣ z ; θ ) P(X|z;\theta) P(X∣z;θ)可计算且在 θ \theta θ处连续,可通过梯度下降进行优化。
当不使用潜变量生成模型,直接取确定性的 X ′ = f ( z ; θ ) X'=f(z;θ) X′=f(z;θ)时,相当于生成分布是一个Dirac delta分布,在 θ \theta θ上不连续。此时模型就是传统自编码器模型,它是点对点的,可以进行压缩降维,但不具备直接生成功能(其他未知的 z ′ z' z′对应的 X ′ X' X′是什么完全不清楚)。实际上,变分自编码器和传统自编码器只是在网络结构上有一定的相似之处,但本质完全不同。
变分自编码器
在潜变量模型的基础上,还需处理两个问题:
- 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)即可,进一步的说明可参见原文。
- 将上面的优化目标 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)≈n1∑iP(X∣zi),有两个弊端:1) 复杂的问题对于采样的样本量需求过大ÿ