栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

变分自编码器 (Variational Autoencoders, VAEs)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

变分自编码器 (Variational Autoencoders, VAEs)

Contents
  • Dimensionality reduction, PCA and autoencoders
    • Dimensionality reduction
    • Principal components analysis (PCA)
    • Autoencoders
  • Variational Autoencoders
    • Limitations of autoencoders for content generation
    • Definition of variational autoencoders
    • Mathematical details of VAEs
      • Probabilistic framework and assumptions
      • Variational inference formulation
      • Bringing neural networks into the model
  • References

Dimensionality reduction, PCA and autoencoders Dimensionality reduction
  • 我们知道,数据降维其实就是减少数据的特征数量。如果把 encoder 看作是由高维原有特征生成低维新特征的过程,把 decoder 看作是将低维新特征还原为高维原有特征的过程,那么数据降维就可以被看作是一个数据压缩的过程,其中 encoder 负责将数据从 initial space 压缩到 latent space (i.e. encoded space) 中,decoder 负责将数据从 latent space 还原到 initial space 中
  • 当然,encoder/decoder 代表的数据压缩/解压过程很可能是有损的 (lossy),因此数据降维的主要目的就是找到一个 encoder/decoder 对使得编码时能保留尽可能多的信息,解码时能保证尽可能小的重建误差,这一过程可以被表示为下式
    其中, E E E 和 D D D 分别为所有 encoder 和 decoder 的集合, ϵ ( x , d ( e ( x ) ) ) epsilon(x,d(e(x))) ϵ(x,d(e(x))) 为重建误差
Principal components analysis (PCA)
  • PCA 是一种常用的数据降维方法,它的主要思想是找到 n e n_e ne​ 个线性无关的新特征,每个新特征都是 n d n_d nd​ 个旧特征的线性组合 ( n e < n d n_e
  • 在 PCA 中代入前面所述得 encoder / decoder 的思想,设 P = [ u 1 , . . . , u n e ] P=[u_1,...,u_{n_e}] P=[u1​,...,une​​] 为 n e n_e ne​ 个新特征组成的 n d × n e n_dtimes n_e nd​×ne​ 的向量,则 encoder 为 P T P^T PT,decoder 为 P P P
Autoencoders
  • Autoencoders 也是一种数据降维的方法,它的基本思想是用神经网络实现 encoder 和 decoder,从而能够端到端地训练出一个最佳的 encoder / decoder 对
  • 当 encoder 和 decoder 都只有一个线性层时,Autoencoders 和 PCA 就十分相似了,它们都是寻找一个最佳线性子空间使得投影数据时带来的信息损失最小,当然,Autoencoders 并没有像 PCA 一样施加了正交性约束
  • 现在假如 Autoencoders 中的 encoder 和 decoder 都具有无限的拟合能力,那么理论上我们就可以无损地把任何高维数据都压缩至维度为 1,但这样真的好吗?在此需要明确以下两点:(1) 无损的数据压缩往往会使得 latent space 缺乏可解释性 (lack of regularity);(2) 在大多数情况下,数据压缩的最终目的不仅仅是为了降低数据维度,而是在降低数据维度的同时还能在 latent space 中保留数据的主要结构信息
Variational Autoencoders
  • In a nutshell, a VAE is an autoencoder whose encodings distribution is regularised during the training in order to ensure that its latent space has good properties allowing us to generate some new data.
  • Moreover, the term “variational” comes from the close relation there is between the regularisation and the variational inference method in statistics.
Limitations of autoencoders for content generation
  • 如果想要将 Autoencoders 用于生成类任务,一个直观的想法就是随机从 latent space 中采样,然后利用 decoder 进行生成
  • The problem of the autoencoders latent space regularity: 直接由 decoder 生成的样本质量取决于 latent space 的 regularity。然而正如前面所述,Autoencoders 由于缺乏必要的正则化,latent space 无法体现出数据的主要结构信息,缺乏可解释性,往往会陷入过拟合,因此直接由 decoder 生成的样本往往不具有实际意义。如下图所示,假设 encoder 和 decoder 都具有无限的拟合能力,当在 latent space 中采样的向量刚好是训练样本的 encoded vector 时,decoder 生成的样本就是有实际意义的样本,但当采样的向量不是训练样本的 encoded vector 时,就不能保证 decoder 生成的样本具有实际意义
Definition of variational autoencoders
  • 为了能够将 decoder 用于生成,我们希望 latent space 具有如下性质:(1) continuity (latent space 中的两个相近点在解码后也应该具有相近的内容);(2) completeness (对于一个给定的概率分布 p ( z ) p(z) p(z),从 latent space 中采样得到的点在解码后应该得到有意义的输出)
  • 为了使得 latent space 具有如上所述的良好性质,VAE 的 encoder 将输入数据 x x x 编码为 latent space 上的一个概率分布 p ( z ∣ x ) p(z|x) p(z∣x) 而非单一的点 z z z。在训练时,首先将输入 x x x 编码为 latent space 上的一个概率分布 p ( z ∣ x ) p(z|x) p(z∣x),然后按照该分布采样出一个隐变量 z ∼ p ( z ∣ x ) zsim p(z|x) z∼p(z∣x),最后将其解码,计算并回传重构误差
    在实际应用中,VAE 假设似然 p ( z ∣ x ) p(z|x) p(z∣x) 为一个正态分布,且协方差矩阵为对角矩阵,因此 encoder 仅需输出该正态分布的均值和方差向量
  • 然而,仅仅将输入编码为概率分布还不足以保证 continuity 和 completeness,这是因为将输入编码为概率分布会给 decoder 引入噪声从而加大重构误差,为了尽可能地减小重构误差,模型可能会使得 encoder 输出概率分布的方差特别小或不同输入对应分布的均值极不相近 (in both case variances of distributions become small relatively to distance between their means),这就使得输出概率分布与输出单一的点效果相似,VAE 和传统自编码器没有太大的区别。为了解决上述问题,VAE 在训练时针对 encoder 输出的概率分布加入了正则项。具体而言,VAE 要求 encoder 输出的概率分布与标准正态分布尽量接近,也就是使得它们之间的 KL 散度尽量得小。在加入正则项后,我们就能使得不同输入编码得到的概率分布之间互相重合,进而保证 continuity 和 completeness (该正则项实际包括了对 latent space 的 local 和 global 正则化,local 正则化来自于对方差的控制,global 正则化来自于对均值的控制)
    在加入正则项之后,VAE 的损失函数如下图所示:
Mathematical details of VAEs Probabilistic framework and assumptions
  • 设 x x x 为我们想要生成的数据, z z z 为 latent space 中的隐变量,因此,encoder 即为后验概率 p ( z ∣ x ) p(z|x) p(z∣x),decoder 即为似然 p ( x ∣ z ) p(x|z) p(x∣z),同时隐变量 z z z 服从先验概率 p ( z ) p(z) p(z) (the regularisation of the latent space that we lacked in simple autoencoders naturally appears in z ∼ p ( z ) zsim p(z) z∼p(z))。只要明确了 p ( z ∣ x ) p(z|x) p(z∣x) 和 p ( x ∣ z ) p(x|z) p(x∣z),我们就能进行 VAE 的训练和推理任务
  • VAE 假设 p ( z ) p(z) p(z) 是一个标准正态分布, p ( x ∣ z ) p(x|z) p(x∣z) 是一个正态分布,它的均值为 f ( z ) f(z) f(z),协方差矩阵为 c I cI cI,其中 c c c 为一个大于 0 的常数 (decoder 的输出即为均值 f ( z ) f(z) f(z))
    由贝叶斯定理可以得到下式:
    虽然理论上后验概率可以由先验概率和似然得到,但其归一化因子是一个积分项,通常难以计算。为此,VAE 使用变分推理来寻找该后验分布的一个近似分布,这也是其名字中 “Variarional” 的由来
Variational inference formulation
  • 变分推理是一种从给定的概率分布族中寻找复杂概率分布的最佳近似概率分布的方法,其中误差度量为 KL 散度,优化方法采用梯度下降。VAE 使用变分推理来得到后验概率 p ( z ∣ x ) p(z|x) p(z∣x) 的近似概率分布 q x ( z ) q_x(z) qx​(z),其中概率分布族为协方差矩阵为对角矩阵的正态分布 (VAE 规定近似概率分布的协方差矩阵 h ( x ) h(x) h(x) 必为对角矩阵是为了便于模型训练,牺牲变分推理的近似精度来换取计算开销的降低。在此条件下,encoder 只需要输出 n n n 个标准差而不需要输出一个完整的协方差矩阵)
    因此优化问题如下:
    从倒数第二个等式可以看出,最佳近似概率分布可以使得基于观测数据的期望似然尽量大,且与先验概率间的 KL 散度尽量小
  • 在上述优化问题中, f f f 实际上也是未知的。假设对于给定的 f ∈ F fin F f∈F,上述优化问题的解为 q x ∗ ( z ) q_x^*(z) qx∗​(z),则最小化重构误差即为最大化期望似然 E z ∼ q x ∗ ( log ⁡ p ( x ∣ z ) ) = E z ∼ q x ∗ ( − ∣ ∣ x − f ( z ) ∣ ∣ 2 2 c ) mathbb E_{zsim q_x^*}(log p(x|z))=mathbb E_{zsim q_x^*}left(-frac{||x-f(z)||^2}{2c}right) Ez∼qx∗​​(logp(x∣z))=Ez∼qx∗​​(−2c∣∣x−f(z)∣∣2​),也就是说,我们要寻找的最优 f ∗ f^* f∗ 为
    其中 q x ∗ q^*_x qx∗​ 依赖于 f f f。将上述两个最优化问题结合到一起,可以得到如下最优化问题:
    从上式中,可以看出 VAE 的两个损失项,第一项 E z ∼ q x ( ∣ ∣ x − f ( z ) ∣ ∣ 2 2 c ) mathbb E_{zsim q_x}left(frac{||x-f(z)||^2}{2c}right) Ez∼qx​​(2c∣∣x−f(z)∣∣2​) 为输入 x x x 和输出 f ( z ) f(z) f(z) 之间的重构误差,第二项 K L ( q x ( z ) , p ( z ) ) KL(q_x(z),p(z)) KL(qx​(z),p(z)) 为 encoder 输出的概率分布与标准正态分布之间的 KL 散度。同时还可以注意到,常数项 c c c 用于控制两个损失项之间的平衡, c c c 越大,似然 p ( x ∣ z ) p(x|z) p(x∣z) 的方差就越大,VAE 就越偏向于优化正则项而非重构损失
Bringing neural networks into the model
  • 我们目前的概率模型含有 3 个未知函数 f , g , h f,g,h f,g,h。VAE 将 f , g , h f,g,h f,g,h 都实现为了神经网络
    • Encoder part of the VAE: g , h g,h g,h 属于 encoder 部分,它们共享一部分参数:
      其中, g g g 用于输出后验概率 p ( z ∣ x ) p(z|x) p(z∣x) 的均值向量, h h h 用于输出后验概率 p ( z ∣ x ) p(z|x) p(z∣x) 的协方差矩阵的对角线元素
    • Decoder part of the VAE: f f f 用于输出似然 p ( x ∣ z ) p(x|z) p(x∣z) 的均值向量作为重构输入
  • 这里还有一个小问题,就是 VAE 的训练过程中,encoder 部分需要按照后验概率分布进行采样,这一过程是不可导的。为了解决上述问题,VAE 使用了一种 reparametrisation trick:
    其中, g ( x ) g(x) g(x) 为正态分布的均值向量, H ( x ) = h ( x ) h T ( x ) H(x)=h(x)h^T(x) H(x)=h(x)hT(x) 为正态分布的协方差矩阵
  • VAE 要解决的是如下最优化问题:
    将其中的期望似然使用蒙特卡洛法近似,同时令 C = 1 / ( 2 c ) C=1/(2c) C=1/(2c),就可以得到训练 VAE 所用的损失函数,包括重构损失、正则项和一个控制两项损失权重的常数项:
  • 在使用 VAE 推理时,只需要按照标准正态分布 p ( z ) p(z) p(z) 进行采样,再通过 decoder 生成样本即可
References
  • paper: Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013).
  • Understanding Variational Autoencoders (VAEs)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号