生成式模型

假设训练数据符合某分布p,我们的目标是构建一个p模型,来生成和训练数据相似的数据。

从大的分类标准来看,生成式模型分为两类,显式密度估计和隐式密度估计,这取决于我们定义和求解p模型的方式是显式还是隐式。

以下是生成式模型的家族图谱:

pixelRNNs&pixelCNNs


这里的定义很简单,唯一的一点疑惑是,如何定义元素的顺序?下面有两种方法:

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

首先是自编码器:

首先我们通过编码器来得到输入数据的特征,然后再将其解构来得到一些与输入数据相似的数据。我们可以通过计算原始数据与重构数据的差来得到损失,并不断缩小损失。结果就是,我们相当于将图片的信息存储到了Z里。我们可以认为Z的每列都代表了图片的一种特征,当它的值改变时,生成的图像也在改变。

但通过这种方式,我们只能得到已有的图像,因为我们不能随意产生合理的Z值。为了得到新的图像,我们假设Z服从单位高斯分布,并从中取样,然后我们就可通过它来对图像x采样。

但有个问题,我们如何得到这个解码器呢?按照神经网络的思想,如果一个函数/映射太过复杂,那我们就设置一个神经网络,来让它自己学习合适的函数。

那么如何训练这个网络呢?回想之前的pixelCNNs和pixelRNNs,一个直观的思路是最大化似然函数:

但如下图所示,这个积分是很难计算的。不过根据贝叶斯公式,我们可以得到下图第二个式子,我们发现,如果能够计算出p(z|x),我们就能计算出p(x)。但p(z|x)并不能直接算出来,于是按照前面的思路,我们用神经网络定义一个它的近似:q(z|x),并称其为编码器。

下面是似然估计的计算过程:

从最后的结果里我们也能看出为什么我们要让似然估计最大。

以下是VAE的计算流程:

当计算好q(z|x)后,在生成阶段,我们只需要解码器就可以了。我们可以对z进行采样,然后进行迭代训练神经网络即可。

总结一下VAE:

生成式对抗网络(GANs)


如果我们想要高维、复杂的训练分布中采样,是无法直接做到的,一个曲折的方法是,首先找到一个简单的分布与该分布的映射,然后在这个简单分布中采样。

那么我们该如何找到这个映射呢?神经网络。

这个神经网络有一点特殊:它是由两个神经网络构成,其中一个叫生成器网络,另一个叫判别器网络。这两个神经网络在训练过程中要不断对抗:前者要生成以假乱真的图片,而后者要想办法辨别出来:

这是它的训练目标:

为了完成这个目标,我们就要分别对判别器和生成器进行梯度上升和梯度下降。

但在实际实践中,我们发现当生成器的伪造能力较弱时,

的梯度变化较平坦,反之则很陡峭。这和我们希望的相反,因为我们希望在其能力较弱时梯度更陡峭,进而学到更多。于是为了达到这个目的,我们将这项变为:

以下是GANs的伪代码:

之后GANs有了各种各样的探索和改进,下面是一个有点像变魔法的例子:

chapter-13-生成式模型相关推荐

  1. 判别式模型python_常见生成式模型与判别式模型

    生成式模型 P(X,Y) 对联合概率进行建模,从统计的角度表示数据的分布情况,刻画数据是如何生成的,收敛速度快. • 1. 判别式分析 • 2. 朴素贝叶斯Native Bayes • 3. 混合高斯 ...

  2. 谈谈判别式模型与生成式模型

    判别式模型与生成式模型是机器学习领域中的基本概念,今天将两者的特点总结一下,如下表所示: 对比 判别式模型 生成式模型 特点 寻找不同类别之间的最优分类面,反映异类数据之间的差异 以统计的角度表示数据 ...

  3. 估计数据分布梯度:如何克服现有生成式模型的缺陷

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 现有的生成式模型方法通常基于用最大似然训练的显式概率模型,或者用对抗训练学习的隐式采样模型.前者需要变分推理,或者模型具有特殊设计的结构 ...

  4. 机器学习_生成式模型与判别式模型

    从概率分布的角度看待模型.给个例子感觉一下: 如果我想知道一个人A说的是哪个国家的语言,我应该怎么办呢? 生成式模型 我把每个国家的语言都学一遍,这样我就能很容易知道A说的是哪国语言,并且C.D说的是 ...

  5. 机器学习--判别式模型与生成式模型

    原文地址为:机器学习--判别式模型与生成式模型 一.引言 本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu 在上一篇有监督学习回归模型中,我们利用训练 ...

  6. BAT面试题9:谈谈判别式模型和生成式模型?

    BAT面试题9:谈谈判别式模型和生成式模型? https://mp.weixin.qq.com/s/X7zWJCMN7gbCwqskIIpLcw 判别方法:由数据直接学习决策函数 Y = f(X),或 ...

  7. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器...

    本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-param ...

  8. halcon算子盘点:Chapter 13:对象、Chapter 14 区域

    Chapter 13:Object 13.1 Information 1. count_obj  功能:统计一个元组中的对象. 2. get_channel_info  功能:一幅目标图像组成部分的信 ...

  9. 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法...

    本文简单整理了以下内容: (一)贝叶斯决策论:最小错误率决策.最小风险决策:经验风险与结构风险 (二)判别函数:生成式模型:多元高斯密度下的判别函数:线性判别函数LDF.二次判别函数QDF (三)贝叶 ...

  10. 生成式模型:LDA与LSI-SVD分解

            原文链接:http://blog.sina.com.cn/s/blog_5033f3b40101flbj.html         文章图文并茂,我就不转载了!!! 科普文:判别式模型 ...

最新文章

  1. ubuntu 目录结构
  2. viewer.js插件的应用
  3. linux c 获取 CPU、内存、IO、磁盘、网速
  4. etcd raft library设计原理和使用
  5. rabbitmq 不同的消费者消费同一个队列_RabbitMQ 消费端限流、TTL、死信队列
  6. android getdecorview 出现空指针,android – 为什么我从TabWidget得到一个空指针异常?...
  7. 超cool的firefox插件之PicLens
  8. 在远程桌面服务中配置RD网关直接访问内网
  9. C语言将20个数从小到大排列,现在我想实现这个20个数从小到大排序(冒泡排序),不知道代码如何写。...
  10. android开机启动shell脚本
  11. Python安装注意事项
  12. win8的cmd运行命令大全
  13. 设计模式:Builder模式
  14. html使table整体居中,如何让整个table表格居中?
  15. pop3邮箱服务器地址,常用邮箱服务器(smtp,pop3)地址,端口(示例代码)
  16. 微信商户平台所有产品总结
  17. C语言分数加减法编程,分数加减法(C语言)
  18. Spring Cloud Stream初窥
  19. 麻雀优化算法 SSA python实现
  20. 2016计算机2级试题,2016年计算机二级考试题及答案

热门文章

  1. 华为防火墙telnet配置
  2. 三角形外接球万能公式_三棱锥外接球万能公式 什么是旁心
  3. 【oracle】查看oracle客户端版本和位数
  4. 使用 Metasploit 利用 OpenSSH 用户枚举漏洞 (CVE-2018-15473, CVE-2016-6210, CVE-1999-0502)
  5. 超文本传输协议版本 2 [http/2 spec]
  6. 使用Quartus II9.0验证74161计数器
  7. 基于fmincon函数的最优化计算
  8. 利用python识别图片中的条码及条码图片矫正和增强!
  9. js算法判断是否为素数
  10. React实现支付宝支付代码