李宏毅机器学习——学习笔记(16) Unsupervised Learning——Deep generative models

  1. Generative models:
    (1)Pixel RNN:根据前面的pixel,输出下一个pixel。这种方式可以收集大量的图片进行无监督训练,训练网络。通过部分的图像就可以预测后面的图像。
    如果直接进行训练的话,RGB的值都会偏向于中间点,图像呈现灰色或者棕色。可以直接用one-hot编码的形式,让整个网络产生一个颜色(红色,黄色,蓝色…)。将相似的颜色用一个颜色来表示。
    在这里插入图片描述
    图片压缩和RGB转换后的文件如图所示:
    在这里插入图片描述
    做generation很难进行evaluate。
    (2)Variational Autoencoder(VAE):先进行auto-encoder,然后随机产生一个code,输入到decoder网络中,产生一张随机的图像。跟auto-encoder不同的地方在于,将转换了code的产生形式。
    在这里插入图片描述
    固定其他维度,挑选两个维度进行等距划分,观察每个维度的作用。如果只是看每个维度上面产生的作用,为什么要如此复杂的VAE公式进行创造呢?
    在这里插入图片描述
    为什么要用VAE?
    a.直观原因:在VAE上,与原来的auto-encoder不同的地方在于,不只是code空间中的某个点要映射成原来的样本,而是要求在加入noise以后,产生的code仍然需要映射成原来的样本。
    在这里插入图片描述
    m指的是原来的code,而c指的是加入noise以后的code,δ用来控制variance,e是从一个normal distribution中sample出来的值。这些值都是network中自动训练得到的。
    在这里插入图片描述

但是如果不对variance进行限制的话,network会自动将所有的值都取0,这样的话,跟原来的code就没有什么区别了。所以VAE在原来error的基础上加上了对variance的限制,保证exp(δ)不会趋近于0。绿色线代表蓝色线和红色线相减后的值。后面m的平方可以看成是regularization term,用来防止过拟合。
在这里插入图片描述
b.理论解释:
Gaussian Mixture Model:将多个高斯模型混合起来成一个复杂的模型,每个高斯模型都有一个权重。所以从高斯混合模型中挑选sample的方式是先从这个混合模型中选择一个高斯模型(多项式分布),然后从这个高斯模型中挑选出一个样本。
在这里插入图片描述
VAE首先从一个normal distribution中sample出一个vector z,其中z的每一个维度都代表了一个属性。训练一个网络,每次sample出一个z,就能够对应输出一个μ和δ。对连续的z求积分,就能够得到样本x的概率值了。由于Neural network是可以拟合任何函数的,所以最终的P(x)是非常复杂的。
在这里插入图片描述
将已有的所有样本x进行最大似然,从而得到函数μ(z)和δ(z)。通过调整neural network中的参数,得到最大似然函数。除此以外,还需要另外一个分布函数q(z|x),由x得到μ’(z)和δ’(z)。这两个分布函数分别代表了VAE中的decoder和encoder过程。

在这里插入图片描述
下面公式成立的原因是:q(z|x)可以是任意的分布,logP(x)提出来以后,q(z|x)积分后的值为1。也就是公式的左右两边相等。
在这里插入图片描述
求解L的lower bound L_b的推导过程,关于KL散度的理解,可见KL散度介绍
在这里插入图片描述
因为q(z|x)与log P(x)无关,所以只是通过q(z|x)来调整L_b的话,log P(x)的值保持不变。
在这里插入图片描述

其中L_b可以进行拆分,前面这一项可以看成是最小化KL(q(z|x)||P(z))。
在这里插入图片描述
最小化前面的KL散度,就是对应最小化VAE中前面的那个式子。而最大化后面这一项的值,而最大化该项的值即是auto-encoder的过程。输入x产生一个分布,sample出z,z预测出μ(x)、δ(x),其中μ(x)和x越接近越好。整个过程就是一个auto-encoder的过程。
在这里插入图片描述
c. Conditional VAE: 输入具有数字特性的Embedding,再输入code值,就可以生成具有这种特性的数字。
在这里插入图片描述
d.参考文献:
在这里插入图片描述
f. VAE存在的问题是,产生与已有照片中尽可能相近的图片,也就是说,VAE只是模仿已有的照片(已有照片的线性组合),而不是产生照片。
在这里插入图片描述

(3)Generative Adversarial Network(GAN)
a. GAN的直觉介绍:第一代生成器先产生一系列图片,第一代discriminator对其产生所有的图片进行鉴别。Generator不会看到real image。

在这里插入图片描述
Discriminator只是输入图片后,对图片进行判定,Generator类似于VAE的decoder,输入一个vector,输出一张图像。
a.将Generator所生成的图片都标记为0,真正的图片都标记为1。
b.然后输入这些数据训练第一代的Discriminator网络,进行二分类。
在这里插入图片描述
c.调整第一代中Generator中的参数,使得其输出被discriminator认为是真的数字图像。将Generator和Discriminator整体可以看成是一个network,但是训练过程中,需要注意的是,需要固定discriminator的参数值。
在这里插入图片描述
GAN的训练过程,即是让Generator产生的数据分布与真正数据的分布类似。GAN在训练过程中,难以确定Generator训练的偏移方向和程度,而且就算最终训练结果很好,也不能保证是Generator产生的结果很好(也有可能是Discriminator的识别力不足)
在这里插入图片描述

GAN是很难优化的,因为现在没有什么明确的signal明确表明结果的好坏。
a.在标准的网络架构里面,我们都是根据loss来判定结果的好坏
b.在GAN中,只是比较真实的数据和产生的数据有多匹配。
当discriminator表现较差的话,不能保证generator生成的是真正的图片。

参考文献:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值