自动编码器、变分自动编码器和条件变分自动编码器阅读理解

文章目录

    • 1 VAEs
      • 1.1 AE: AutoEncoder
      • 1.2 VAE: Variational AutoEncoder
      • 1.3 CVAE: Conditional Variational Autoencoder
    • References:

1 VAEs

1.1 AE: AutoEncoder

自动编码器,主要作用:

  1. 数据去噪,
  2. 可视化降维度,
  3. 生成数据

模型结构:

自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第1张图片

缺点:在inference时只能通过输入一个输入得到一个隐含变量Z,然后在通过Decoder生成,无法任意去构造隐含变量。

自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第2张图片

1.2 VAE: Variational AutoEncoder

变分自编码器(VAE)是一个生成模型,将生成一个隐空间(latent space),从中可以对点进行采样。这些点中的任何一个都可以解码为看起来合理的target。

AE存在的问题就由VAE来解决,只需要在编码过程给它增加一些限制,迫使其生成的隐含向量能够粗略的遵循一个标准正态分布, encoder在隐空间中产生概率分布,这就是其与一般的自动编码器最大的不同,因此在Inference时,我们只需要给它一个标准正态分布的随机隐含向量,这样通过解码器就能够生成我们想要的target。

实际情况中,需要在模型的准确率上与隐含向量服从标准正态分布之间做一个权衡。

  1. 模型准确率:input和output之间求loss;

  2. 两种分布的相似程度: 使用KL divergence来表示隐含向量与标准正态分布之间差异的loss。

KL divergence 的公式: D K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) log ⁡ p ( x ) q ( x ) d x D K L(P \| Q)=\int_{-\infty}^{\infty} p(x) \log \frac{p(x)}{q(x)} d x DKL(PQ)=p(x)logq(x)p(x)dx,这里变分编码器使用了一个技巧“重新参数化”来解决KL divergence的计算问题。

自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第3张图片

这时不再是每次产生一个隐含向量,而是生成两个向量,一个表示均值,一个表示标准差,然后通过这两个统计量来合成隐含向量,这也非常简单,用一个标准正态分布先乘上标准差再加上均值就行了,这里我们默认编码之后的隐含向量是服从一个正态分布的。这个时候我们是想让均值尽可能接近0,标准差尽可能接近1。

N ( u , σ 2 ) N(u,\sigma^2) N(u,σ2)采样隐含变量Z等效于,采样 ϵ ∼ N ( 0 , 1 ) \epsilon\sim N(0,1) ϵN(0,1),然后计算 Z = u + σ ⋅ ϵ Z = u+ \sigma \cdot \epsilon Z=u+σϵ

上述VAE中,网络中的输入和输出之间存在一个随机变量。由于无法通过随机变量反向传播梯度,这带来了一个明显的问题,即无法训练编码器。为了解决该问题,以不同的方式来表示VAE,以使隐分布的参数从随机变量的参数中被分解出来,从而可以通过隐分布的参数进行反向传播。(说白了就是采样这个过程是随机的,不能进行反向传播,所以就想办法改变VAE的表现形式使它可以被训练),具体地说,当协方差矩阵Σ是对角矩阵时, N ( u , Σ ) = u + Σ N ( 0 , 1 ) N(u, \Sigma)=u+\Sigma N(0,1) N(u,Σ)=u+ΣN(0,1)。重要的一点是,可以使用反向传播对VAE进行端到端训练。但是,由于仍然存在随机性因素,因此训练过程称为随机梯度变化贝叶斯(stochastic gradient variational Bayes,SGVB),而不是被称为随机梯度下降。

缺点:VAE创建了可以重现其输入的自编码器,以及可以生成合理的target的解码器,但是解码器无法按需生成特定想要的target。

对比:在传统的自编码器中,编码器从数据中获取一个样本,并返回隐空间中的单个点,然后将其传递到解码器中。在变分自编码器中,编码器会在隐空间中产生概率分布!(注意这个区别)。它输出的隐分布是与隐空间维数相同的高斯分布。编码器产生这些高斯分布的参数(均值,方差)。

1.3 CVAE: Conditional Variational Autoencoder

VAE的缺陷产生了条件变分自编码器(CVAE),它的编码器和解码器都有额外的输入

自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第4张图片

在训练时,数字(标签信息)被提供给编码器和解码器。在这种情况下,它将表示为一个one-hot向量。要生成特定数字的图像,只需将该数字与从标准正态分布中采样的隐空间中的随机点一起馈入解码器即可。即使输入相同的点以产生两个不同的数字,该过程也将正确运行,因为系统不再依赖于隐空间来编码要处理的数字(标签信息)。相反,潜在空间对其他信息进行编码,例如笔划宽度或数字被写入的角度(此处我的理解是:隐空间原来编码所有输入信息,输出完全依赖于隐空间提供的采样点信息,现在在解码器处提供了标签信息,那么隐空间就编码其他信息了,相当于把标签信息从隐空间分离表征(disentangled)了)。

自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第5张图片

References:

https://zhuanlan.zhihu.com/p/27549418

https://zhuanlan.zhihu.com/p/88750084

https://zhuanlan.zhihu.com/p/34998569

欢迎进群交流~
自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第6张图片
自动编码器、变分自动编码器和条件变分自动编码器阅读理解_第7张图片

你可能感兴趣的:(语音合成TTS,auto-encoder,VAE,CVAE,TTS,empressive,tts)