第二十章 深度生成模型 Deep Generative Models

中文
英文

2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM)
2020-4-18 深度学习笔记20 - 深度生成模型 2 (深度信念网络DBN,深度玻尔兹曼机DBM)
2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)
2020-4-21 深度学习笔记20 - 深度生成模型 4 (卷积玻尔兹曼机,用于结构化或序列输出的玻尔兹曼机,其他玻尔兹曼机,通过随机操作的反向传播)

有向生成网络Directed Generative Nets

我们已经描述过

  • 部分有向的模型——深度信念网络
  • 浅度有向生成模型的稀疏编码模型

尽管在样本生成和密度估计方面表现不佳,在深度学习的背景下它们通常被用作特征学习器。

本节我们将描述多种深度完全有向的模型。

1-sigmoid信念网络

sigmoid信念网络是一种具有特定条件概率分布的有向图模型的简单形式。

我们可以将~sigmoid信念网络视为具有二值向量的状态sss,其中状态的每个元素都受其祖先影响:
p(si)=σ(∑j<iWj,isj+bi)p(s_i)=σ(\sum_{j<i}W_{j,i}s_j+b_i)p(si​)=σ(j<i∑​Wj,i​sj​+bi​)
sigmoid信念网络最常见的结构是被分为许多层的结构,其中原始采样通过一系列多个隐藏层进行,然后最终生成可见层。

该结构是可见单元上概率分布的通用近似,即在足够深的情况下,可以任意良好地近似二值变量的任何概率分布(即使各个层的宽度受限于可见层的维度 )。

2-可微生成器网络 Differentiable Generator Networks

可微生成器网络,使用可微函数g(z;θ(g))g(z;\theta^{(g)})g(z;θ(g))将潜变量 zzz的样本变换为样本xxx或样本xxx上的分布,可微函数通常可以由神经网络表示。

为了从更复杂的分布(难以直接指定、难以积分或难以求所得积分的反函数)中生成样本,我们使用前馈网络来表示非线性函数ggg的参数族,并使用训练数据来推断参数以选择所期望的函数。

我们可以认为ggg提供了变量的非线性变化,将zzz上的分布变换成xxx上想要的分布。

在某些情况下,我们使用ggg来定义xxx上的条件分布,而不是使用ggg直接提供xxx的样本。 例如,我们可以使用一个生成器网络,其最后一层由sigmoid输出组成,可以提供Bernoulli分布的平均参数:
p(xi=1∣z)=g(z)ip(x_i = 1 \mid z) = g(z)_ip(xi​=1∣z)=g(z)i​ 在这种情况下, 我们使用ggg来定义p(x∣z)p(x \mid z)p(x∣z)时, 我们通过边缘化zzz来对xxx施加分布: p(x)=Ezp(x∣z)p(x) = E_{z} p(x \mid z)p(x)=Ez​p(x∣z)

表示生成器网络的两种不同方法(发出条件分布的参数相对直接发射样品 )具有互补的优缺点。

  • 当生成器网络在xxx上定义条件分布时,它不但能生成连续数据,也能生成离散数据。
  • 当生成器网络直接提供采样时,它只能产生连续的数据(我们可以在前向传播中引入离散化,但这样做意味着模型不再能够使用反向传播进行训练)。直接采样的优点是,我们不再被迫使用条件分布。

可微生成器网络包含

  • 变分自编码器VAE
  • 生成式对抗网络GAN
  • 生成矩匹配网络

3.变分自编码器VAE Variational Autoencoders

VAE使用概率思想,通过计算生成数据分布与真实数据分布的相似度(KL散度)来判断。
VAE 是将生成器网络与推断网络匹配。

为了从模型生成样本,VAE首先从编码分布pmodel(z)p_{\text{model}}(z)pmodel​(z)中采样zzz。 然后使样本通过可微生成器网络 g(z)g(z)g(z)。 最后,从分布pmodel(x;g(z))=pmodel(x∣z)p_{\text{model}}(x;g(z)) = p_{\text{model}}(x \mid z)pmodel​(x;g(z))=pmodel​(x∣z) 中采样xxx。

在训练期间,近似推断网络(或编码器)q(z∣x)q(z \mid x)q(z∣x)用于获得zzz,而pmodel(x∣z)p_{\text{model}}(x \mid z)pmodel​(x∣z)则被视为解码器网络。

变分自编码器背后的关键思想是,它们可以通过最大化与数据点xxx相关联的变分下界L(q)L(q)L(q)来训练:
L(q)=Ez∼q(z∣x)logpmodel(z,x)=Ez∼q(z∣x)logpmodel(x∣z)≤logpmodel(x)L(q)=E_{z∼q(z∣x)}logp_{model}(z,x)=E_{z∼q(z∣x)}logp_{model}(x∣z)≤logp_{model}(x)L(q)=Ez∼q(z∣x)​logpmodel​(z,x)=Ez∼q(z∣x)​logpmodel​(x∣z)≤logpmodel​(x)

变分推断和学习的传统方法是通过优化算法推断 qqq,通常是迭代不动点方程。

只要zzz是连续变量,我们就可以通过从q(z∣x)=q(z;f(x;θ))q(z \mid x) = q(z; f(x; \theta))q(z∣x)=q(z;f(x;θ))中采样zzz的样本反向传播,以获得相对于θ\thetaθ的梯度。

学习则仅包括相对于编码器和解码器的参数最大化LLL。 LLL中的所有期望都可以通过蒙特卡罗采样来近似。

VAE的主要缺点

  • 从在图像上训练的变分自编码器中采样的样本往往有些模糊。
  • 倾向于仅使用zzz维度中的小子集,就像编码器不能够将具有足够局部方向的输入空间变换到边缘分布与分解前匹配的空间。
  • 它仅针对一个问题学习推断网络,即给定xxx 推断 zzz。

VAE的主要优点

  • 被定义为任意计算图,这使得它能适用于更广泛的概率模型族,因为它不需要将模型的选择限制到具有易处理的均匀场不动点方程的那些模型。
  • 还具有增加模型对数似然边界的优点,而MP-DBM和相关模型的准则更具启发性,并且除了使近似推断的结果准确外很少有概率的解释。

4.生成式对抗网络GAN Generative Adversarial Networks

GAN是将生成器网络与判别器网络配对。
VAE和GAN都能生成新数据,但在生成质量的判断上,它们的做法不同。GAN直接使用神经网络训练一个判别器,用判别器判断生成的数据是不是真的和原分布差不多。

生成式对抗网络基于博弈论场景,其中生成器网络必须与对手竞争。 生成器网络直接产生样本x=g(z;θ(g))x = g(z; \theta^{(g)})x=g(z;θ(g))。 其对手,判别器网络,试图区分从训练数据抽取的样本和从生成器抽取的样本。 判别器发出由d(x;θ(d))d(x; \theta^{(d)})d(x;θ(d))给出的概率值,指示xxx是真实训练样本而不是从模型抽取的伪造样本的概率。

形式化表示生成式对抗网络中学习的最简单方式是零和游戏,其中函数v(θ(g),θ(d))v(\theta^{(g)}, \theta^{(d)})v(θ(g),θ(d))确定判别器的收益。 生成器接收−v(θ(g),θ(d))-v(\theta^{(g)}, \theta^{(d)})−v(θ(g),θ(d))作为它自己的收益。 在学习期间,每个玩家尝试最大化自己的收益,因此收敛在
g∗=arg⁡min⁡gmax⁡dv(g,d)g^*=\arg \min_g \max_d v(g,d)g∗=arggmin​dmax​v(g,d)
vvv的默认选择是
v(θ(g),θ(d))=Ex∼pdatalog⁡d(x)+Ex∼pmodellog⁡(1−d(x))v(\theta^{(g)},\theta^{(d)})=\mathbb{E}_{x\sim p_{data}}\log d(x)+\mathbb{E}_{x\sim p_{model}}\log(1-d(x))v(θ(g),θ(d))=Ex∼pdata​​logd(x)+Ex∼pmodel​​log(1−d(x))
这驱使判别器试图学习将样品正确地分类为真的或伪造的。 同时,生成器试图欺骗分类器以让其相信样本是真实的。 在收敛时,生成器的样本与实际数据不可区分,并且判别器处处都输出12\frac{1}{2}21​。 然后就可以丢弃判别器。

不幸的是,在实践中由神经网络表示的ggg和ddd以及max⁡dv(g,d)\max_d v(g, d)maxd​v(g,d)不凸时,GAN中的学习可能是困难的。

稳定GAN学习仍然是一个开放的问题。 幸运的是,当仔细选择模型架构和超参数时,GAN学习效果很好。

5-生成矩匹配网络 Generative Moment Matching Networks

生成矩匹配网络 与VAE和GAN不同,它们不需要将生成器网络与任何其他网络配对,如不需要与用于VAE的推断网络配对,也不需要与GAN的判别器网络。

生成矩匹配网络使用称为矩匹配的技术训练。 矩匹配背后的基本思想是以如下的方式训练生成器——令模型生成的样本的许多统计量尽可能与训练集中的样本相似。 在此情景下,矩是对随机变量不同幂的期望。 例如,第一矩是均值,第二矩是平方值的均值,以此类推。

我们可以通过最小化一个被称为最大平均偏差的代价函数来训练生成矩匹配网络。

2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)相关推荐

  1. 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  2. [深度学习笔记(1)]深度学习入门

    本系列是博主刚开始接触深度学习时写的一些笔记,写的很早了一直没有上传,趁着假期上传一下,作为分享,希望能帮助到你. 目录 前言 一.什么是深度学习 二.深度学习的应用 三.深度神经网络的难题 3.1 ...

  3. 2.1)深度学习笔记:深度学习的实践层面

    目录 1)Train/Dev/Test sets 2)Bias/Variance 3)Regularization(重点) 4)Why regularization reduces overfitti ...

  4. 吴恩达深度学习笔记六:序列模型

    周末出去耍了一下,回来又玩了两天游戏,耽误了好多时间啊,关键是连输20多局.哎,以后还是少玩游戏,多去做些有趣的事情吧,免得费时费力还不开心. 1. 循环神经网络(RNN:Recurrent Neur ...

  5. 吴恩达深度学习代码_吴恩达深度学习笔记(58)-深度学习框架Tensorflow

    TensorFlow 有很多很棒的深度学习编程框架,其中一个是TensorFlow,很期待帮助你开始学习使用TensorFlow,我想在这个笔记中向你展示TensorFlow程序的基本结构,然后让你自 ...

  6. 深度学习笔记之关于常用模型或者方法

    九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结 ...

  7. 深度学习笔记之关于常用模型或者方法(四)

    不多说,直接上干货! 九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(AN ...

  8. 【深度学习笔记】深度学习中关于epoch

    (1)iteration:表示1次迭代,每次迭代更新1次网络结构的参数: (2)batch_size:1次迭代所使用的样本量: (3)epoch:1个epoch表示过了1遍训练集中的所有样本. 需要补 ...

  9. 《深度学习笔记》——深度神经网络的调试笔记

    1 模型的快速验证 1.1 确定模型是可以收敛的 在刚开始调试的时候,可能难以确定模型是否收敛,这时候可以在调试的时候,适当地增加学习率的数量级,看看模型在前几次迭代的时候loss是否会随着迭代次数的 ...

最新文章

  1. hdu2852(2009多校第四场) 树状数组求区间第k大的数 两种方法
  2. dubbo使用一些简单想法
  3. Scrapy基本用法
  4. TensorFlow实现one-hot编码【TensorFlow2入门手册】
  5. 【代码】使用reentrantlock必须要手动释放锁
  6. php连接mysql数据并查询
  7. 『中级篇』Docker Cloud自动构建 Docker image(55)
  8. Liunx 安装mysql 5.6.16
  9. mac地址漂移flapping的前因后果
  10. JavaScript学习(五十二)—继承、call方法和apply方法
  11. TOMCAT下应用部署新法(/META-INF/context.xml)
  12. asp.net千奇百怪的日历
  13. kettle的mysql驱动应该放哪里_MySQL数据库之kettle 安装mysql 驱动
  14. 天正坐标标注怎么不显示_cad中坐标标注怎么显示不了xy的
  15. 相对于父容器(取值:true / false)帧布局(FrameLayout)
  16. python中ipaddress库用法详解
  17. 计算机应用演技,最近快手最火的句子 生活还是需要一点演技的
  18. java百分比转小数点_Java中小数与百分数的互相转换-Fun言
  19. js-4 代理Proxy,object原型链, prototype, 继承,
  20. sequelize 安装

热门文章

  1. 前端js实现京东轮播图
  2. css svg做动图,用svg动态绘制图形
  3. lancet: 一个全面、高效、可复用的go语言工具函数库
  4. 技术创新研究所安全系统研究中心与普渡大学合作开展颠覆性无人驾驶飞行器安全项目
  5. Glide框架高斯模糊图片处理
  6. 武汉星起航跨境:跨境电商新蓝海,南非跨境电商市场迸发活力
  7. Math数学工具类在java中如何使用?
  8. 如何提高selenium脚本的执行速度
  9. OpenCms创建网站过程图解——献给OpenCms的初学者们
  10. javaweb实现邮箱验证码