笔记:ML-LHY-17/18: Unsupervised Learning - Deep Generative Model

主要介绍无监督学习中的生成模型。
传统利用RNN的Pixel RNN
经典的Auto-Decoder和VAE(变分自动编码器),以及解释在概率上的VAE做法,和存NN的联系
最近比较流行的GAN
pdf 视频1 视频2

Pixel RNN

在这里插入图片描述
训练一个RNN:
看到第1个pixel就输出第2个推理pixel。
看到第1、第2个pixel就输出第3个推理pixel。
看到第1、第2个、第3个pixel就输出第4个推理pixel。

比如有一张真实的图:
在这里插入图片描述

如果遮挡一部分,然后输入Pixel RNN:
在这里插入图片描述
得到的结果:
在这里插入图片描述

同样可以用在语音上,比如WaveNet:
在这里插入图片描述
预先输入一段语义,预测后面的部分。

Variational Auto-encoder(VAE)

在这里插入图片描述
VAE与Auto-encoder不同的地方在于中间的code部分是:
c i = exp ⁡ ( σ i ) × e i + m i c_{i}=\exp \left(\sigma_{i}\right) \times e_{i}+m_{i} ci=exp(σi)×ei+mi
除了希望输入输出要尽可能一样外,还需要最小化:
∑ i = 1 3 ( exp ⁡ ( σ i ) − ( 1 + σ i ) + ( m i ) 2 ) \sum_{i=1}^{3}\left(\exp \left(\sigma_{i}\right)-\left(1+\sigma_{i}\right)+\left(m_{i}\right)^{2}\right) i=13(exp(σi)(1+σi)+(mi)2)


为什么要用VAE方法?

在这里插入图片描述
左边是Auto-encoder,在code的中间部分,希望输出的3/4月亮,但是Auto-encoder往往很难学习到。
VAE的做法是在code部分添加noise,两边的noise都会延伸到中间,那么在中间的部分就学习到两边的图,但是输出右只能一张,所以会比Auto-encoder有更好的学习能力。

使用VAE,我们观察式子:
c i = exp ⁡ ( σ i ) × e i + m i c_{i}=\exp \left(\sigma_{i}\right) \times e_{i}+m_{i} ci=exp(σi)×ei+mi
可以发现 m i m_{i} mi是原始的code,但是和Auto-encoder相比多添加了 exp ⁡ ( σ i ) × e i \exp \left(\sigma_{i}\right) \times e_{i} exp(σi)×ei。其中 e i e_{i} ei是从正态分布中抽取的样本,然后乘一个 exp ⁡ ( σ i ) \exp(\sigma_{i}) exp(σi) 改变大小, σ i \sigma_{i} σi的大小是encoder自动学习的。

但是不对 σ i \sigma_{i} σi做限制的话, exp ⁡ ( σ i ) \exp(\sigma_{i}) exp(σi)可能是0,所以就有:
∑ i = 1 3 ( exp ⁡ ( σ i ) − ( 1 + σ i ) + ( m i ) 2 ) \sum_{i=1}^{3}\left(\exp \left(\sigma_{i}\right)-\left(1+\sigma_{i}\right)+\left(m_{i}\right)^{2}\right) i=13(exp(σi)(1+σi)+(mi)2)

蓝色是 exp ⁡ ( σ i ) \exp \left(\sigma_{i}\right) exp(σi),红色是 1 + σ i 1+\sigma_{i} 1+σi,绿色就是: exp ⁡ ( σ i ) − ( 1 + σ i ) \exp \left(\sigma_{i}\right)-\left(1+\sigma_{i}\right) exp(σi)(1+σi),可以发现当我们希望 exp ⁡ ( σ i ) − ( 1 + σ i ) \exp \left(\sigma_{i}\right)-\left(1+\sigma_{i}\right) exp(σi)(1+σi)最小时, exp ⁡ ( σ i ) \exp \left(\sigma_{i}\right) exp(σi)并不是0,而是1。所以这个正则可以防止 exp ⁡ ( σ i ) = 0 \exp(\sigma_{i})= 0 exp(σi)=0
在这里插入图片描述
注意到有个 ( m i ) 2 \left(m_{i}\right)^{2} (mi)2,就是常规的L2正则,希望不要过拟合。


VAE-Gaussian解释

VAE在统计学上对的解释:
我们的目的是求一个概率分布 P ( x ) P(x) P(x),其中x是图片在高维空间的表示,比如图像 256 ∗ 256 256 *256 256256那么x就是 256 ∗ 256 256 *256 256256的向量,但是一般我们是用低维空间的x来输出图片,使用x一般是比 256 ∗ 256 256 *256 256256低很多的向量。那么是关于什么的概率分布呢?是关于这个x是不是真实图片的概率。比如下面概率低的地方,图片也就很不真实。我们求得 P ( x ) P(x) P(x)后,在概率值高的地方sample就是大概率会和真实的图接近。
在这里插入图片描述

问题变成求 P ( x ) P(x) P(x)

我们把数据分布看做是GMM(Gaussian Mixture Model),假设GMM是由m个GM组成,而这个m其实就是上面NN中code的长度,而code的值在这就是 P ( m ) P(m) P(m),单个GM的weight。相同的道理,在NN中表示低维空间的weight。
在这里插入图片描述
这个式子 P ( x ) = ∑ m P ( m ) P ( x ∣ m ) P(x)=\sum_{m} P(m) P(x \mid m) P(x)=mP(m)P(xm)其实就是全概率公式。也可以结合上面GMM来理解。

上面是离散型表示,类比上面预测月亮,我们希望学习输入的code不是特定的值,而是希望是一个连续的分布,使用 P ( z ) P(z) P(z)是1个多维的正态分布。

所以 求 P ( x ) 求P(x) P(x)变为:
P ( x ) = ∫ Z P ( z ) P ( x ∣ z ) d z P(x)=\int_{Z} P(z) P(x \mid z) d z P(x)=ZP(z)P(xz)dz
在这里插入图片描述


插入一些预备的东西:

我们假设学习一个NN可以求z这个点对应到x空间上时,那个GM的 μ ( z ) , σ ( z ) \mu(z), \sigma(z) μ(z),σ(z)
在这里插入图片描述
注意事实上这里的 μ ( z ) , σ ( z ) \mu(z), \sigma(z) μ(z),σ(z) P ( x ∣ z ) P(x|z) P(xz)的。


我们也假设学习一个NN’可以求x这个点对应到z空间上时,那个GM的 μ ′ ( z ) , σ ′ ( z ) \mu'(z), \sigma'(z) μ(z),σ(z)
在这里插入图片描述
注意事实上这里的 μ ′ ( z ) , σ ′ ( z ) \mu'(z), \sigma'(z) μ(z),σ(z) P ( z ) P(z) P(z)的。

类比NN中VAE:
在这里插入图片描述
各种是Decoder和Encoder。


继续回到数学上,要求P(x),数学上直观方法是使用Maximizing Likelihood求:
L = ∑ x log ⁡ P ( x ) L=\sum_{x} \log P(x) L=xlogP(x)

下面一些推导
在这里插入图片描述
其中引入一个任意分布 q ( z ∣ x ) q(z \mid x) q(zx)
∫ z q ( z ∣ x ) = 1 \int_{z} q(z \mid x) = 1 zq(zx)=1
所以要最大化L,而 L ≥ ∫ Z q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z L\geq \int_{Z} q(z \mid x) \log \left(\frac{P(x \mid z) P(z)}{q(z \mid x)}\right) d z LZq(zx)log(q(zx)P(xz)P(z))dz
L b L_b Lb作为下界
log ⁡ P ( x ) = L b + K L ( q ( z ∣ x ) ∥ P ( z ∣ x ) ) L b = ∫ Z q ( z ∣ x ) log ⁡ ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z \begin{array}{l} \log P(x)=L_{b}+K L(q(z \mid x) \| P(z \mid x)) \\ L_{b}=\int_{Z} q(z \mid x) \log \left(\frac{P(x \mid z) P(z)}{q(z \mid x)}\right) d z \end{array} logP(x)=Lb+KL(q(zx)P(zx))Lb=Zq(zx)log(q(zx)P(xz)P(z))dz

在这里插入图片描述

我们的目的是找 P ( x ∣ z ) P(x \mid z) P(xz) q ( z ∣ x ) q(z \mid x) q(zx),使得 L b L_b Lb越来越大,从而 log ⁡ P ( x ) \log P(x) logP(x)就会越来越大。
而对于 q ( z ∣ x ) q(z \mid x) q(zx)来说,它不会影响 log ⁡ P ( x ) \log P(x) logP(x),它引入的目的只是调整 L b L_b Lb。所以当 L b L_b Lb越来越大时, K L ( q ( z ∣ x ) ∥ P ( z ∣ x ) ) K L(q(z \mid x) \| P(z \mid x)) KL(q(zx)P(zx))越来越小。

此时 q ( z ∣ x ) q(z \mid x) q(zx) P ( z ∣ x ) P(z \mid x) P(zx)分布越来越接近。而 P ( z ∣ x ) P(z \mid x) P(zx)是由NN得到,相当于Decoder。

单独分析 L b L_b Lb,现在目的是使得 L b L_b Lb越大越好。别忘记了,求这些的一切目的都是在最大似然的框架下求 P ( x ) P(x) P(x)
在这里插入图片描述
为了最大化 L b L_b Lb,所以需要使得 K L ( q ( z ∣ x ) ∥ P ( z ) ) K L(q(z \mid x) \| P(z)) KL(q(zx)P(z))越来越小。

此时 q ( z ∣ x ) q(z \mid x) q(zx) P ( z ) P(z) P(z)分布越来越接近。而 P ( z ) P(z ) P(z)是由NN’得到,相当于Encoder。

分析最后一项:
∫ Z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z \int_{Z} q(z \mid x) \log P(x \mid z) d z Zq(zx)logP(xz)dz
最大化它,其实就是求 log ⁡ P ( x ∣ z ) \log P(x \mid z) logP(xz)最大化,由于P是一个GM,所以在取均值是得到最大。所以期望 P ( x ∣ z ) P(x \mid z) P(xz)的均值就是x的均值。在这里插入图片描述
所以在概率上的VAE也是期望输入和输出要越接近越好。

和之前提到的Auto-Encode对比:

  • 在输入这边的NN’得到 μ ′ ( z ) , σ ′ ( z ) \mu'(z), \sigma'(z) μ(z),σ(z),也就是 P ( z ) P(z) P(z),在AE中相当于Encoder。
  • 然后在 P ( z ) P(z) P(z)上进行sample得到z,在AE中相当于hidden layer中的code。
  • z又经过输出层这边的NN得到 μ ( z ) , σ ( z ) \mu(z), \sigma(z) μ(z),σ(z),也就是 P ( x ∣ z ) P(x|z) P(xz),在AE中相当于Decoder。
  • 而使用最大似然求 P ( x ) P(x) P(x)要求最后的 μ ′ ( z ) , σ ′ ( z ) \mu'(z), \sigma'(z) μ(z),σ(z),也就是 P ( z ) P(z) P(z) μ ’ ( z ) \mu’(z) μ(z)要与x的mean一样,在AE中相当于Loss要求的输入-输出越小越好。

一头雾水,还不是很明白…

VAE缺点在这里插入图片描述

从训练过程就可以看出,VAE一般产生的图片是去近似数据集里的图片。它做的更新是线性变换。而没有真正意义上的生成新的图。

VAE可能只是记住现有的图像,而不是 生成新的图片

Generative Adversarial Network (GAN)

GAN是2014年提出。

The evolution of generation

在这里插入图片描述
在这里插入图片描述

以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值