课程笔记——Unsupervised Learning:Deep Generative Model

Generative Models

  • PixelRNN
  • Variational Autoencoder(VAE) 变分自编码器
  • Generative Adversarial Network(GAN) 生成对抗网络

1.PixelRNN

1.1 原理

假设目标为让计算机自己画出3*3的图片,做法:

  • 随机给一个图(橘色)
  • 训练一个模型RNN(输入可为可变长度),输入:橘色,输出:设定的图(蓝色)
  • 输入:橘色+蓝色,再放入模型中,输出:浅蓝色
  • 输入:橘色+蓝色+浅蓝色,再放入模型中,输出:灰色
  • 不断重复,以画完一张3*3的图
    在这里插入图片描述
  • 最终目的:让机器知道,当输入某特定图时,会输出对应的图。

1.2 应用

1.2.1 wavenet语音合成

原理

  • 输入 x 1 x_1 x1→隐藏层若干→输出 y 1 y_1 y1
  • 输入 x 1 y 1 x_1 y_1 x1y1→隐藏层若干→输出 y 2 y_2 y2
  • 输入 x 1 y 1 y 2 x_1 y_1 y_2 x1y1y2→隐藏层若干→输出 y 3 y_3 y3
  • 以此类推f

1.2.2 举例生成宝可梦

每张图由RGB三色合成,然而实际当RGB某一值明显高时 其生成的图片色彩才鲜明,若当其值都差不多时 其生成的图片都趋于灰色。所以,本例中改进做法,直接产生颜色(而不通过合成),做法如下:

  • 若出现绿色,则对应的值为1
  • 但颜色可能有2563种,故将颜色做聚类(clustering),得到167种颜色
    在这里插入图片描述
  • 1层 LSTM,512 cells
    在这里插入图片描述

2.Variational Autoencoder(VAE) 变分自编码器

2.1 理解

  • 之前讲过的auto-encoder,我们可以通过code→decoder→图片。那么当我们随机输入一个code时,实际上不一定能得到理想结果
    在这里插入图片描述
  • VAE改进做法如下:
    在这里插入图片描述

2.2 为什么使用VAE?

2.2.1 直观解释

使用auto-encoder时,我们可以输入满月-code-输出满月;输入弦月-code-输出弦月。但是当输入的图片是中间状态时,因为encode是神经网络(非线性模型),故所得输出并不能确定。
在这里插入图片描述
使用VAE时,我们可以输入满月-code+noise(VAE自动加)-输出满月;输入弦月-code+noise-输出弦月。那么中间有个交界点,那么该点最后被解码为满月or弦月? 故VAE在计算时会最小化误差,所以产生的会是介于满月和弦月的图。
在这里插入图片描述
具体

  • 如图 m m m 代表auto-encoder做法中的code, c c c 代表加入了noise后的结果。 σ \sigma σ (值多大由机器学习得到)代表noise的方差,取exponential就是为了保证方差为正。
  • 同时,为保证方差取值合理(不会过小),需要进行限制,即最小化下方约束。图中:绿色线-表示前两项相减后的结果,min结果会在 σ i \sigma_i σi→0时取得,那么再取exponential就会→1,取值合理。
    在这里插入图片描述

2.2.2 数学解释

假设模型

  • 目的:生成宝可梦图片
  • 将每张宝可梦图片想成是高维空间中的一个点
  • 现在需要估计点的概率分布
  • 那么之后在使用模型时,取概率较大的点,就会比较有可能是宝可梦的图片

估计点的概率分布做法——高斯混合模型Gaussian Mixture Model
解释: 如图黑色线表示一个复杂分布,实际上该分布是由很多其他高斯分布*权重叠合起来的。

高斯混合模型Gaussian Mixture Model做法:
在这里插入图片描述

  • 【蓝色框】代表不同的高斯分布,每个高斯分布有自己的均值和方差,也有自己的权重。根据权重决定从哪个高斯分布采样数据。
  • 多项式m~P(m),m代表为第m个高斯分布,表示选择了第m个高斯分布
  • 第m个高斯分布有自己的均值、方差
    在这里插入图片描述
  • P(m)权重,P(x|m)表示当选择第m个高斯分布时采样到x(即VAE中的input)的概率,得到:
    在这里插入图片描述

VAE做法:
在这里插入图片描述

  • 从正态分布中采样向量 z ~ N(0,1),z的各个维度代表各个属性。
  • z是高维的(其均值和方差无数多,注意别被图示中的z迷惑),在z上可采样无数点x,每个点x对应不同的高斯分布。
  • 设置一个NN(神经网络)通过使 L L L最大化,以得到合适的参数。不同的高斯分布通过该NN得到其自身的均值和方差。
    在这里插入图片描述
    在这里插入图片描述
  • 引入q(z|x),即当已知采样数据x,通过另一个NN,可以得到其来源分布的均值和方差
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

3.Generative Adversarial Network(GAN) 生成对抗网络

3.1 举例

  • 神兽1吃蝴蝶,但神兽1认为蝴蝶没棕色的
  • 故,蝴蝶演化为棕色。但同时神兽1演化为神兽2,其认为蝴蝶没有叶脉
  • 故,蝴蝶再次演化为枯叶蝶。但同时神兽2继续演化…

3.2 演化过程

3.2.1 总体过程

  • 现有第一代Generator(生成器),很废
  • 第一代Discriminator(鉴别器),根据实际的图片和第一代Generator的图,调整其参数,去判断一张图片是真正的图片还是由Generator产生
  • Generator根据第一代Discriminator演化成第二代Generator
  • 同样过程,演化第二代Discriminator…
    在这里插入图片描述
    注意 Generator从来没看过真正图片是什么,其目标仅仅是骗过最新一代的Discriminator。故其产生的图片是数据库中从未有过的。

3.2.2 discriminator演化过程

在这里插入图片描述

3.2.3 generator演化过程

  • 第一代generator产生的图片没办法骗过第一代discriminator
  • 调整generator参数,使得第一代discriminator输出→1(真),注意一定要固定住第一代discriminator参数
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值