本书的前四章旨在介绍开始构建生成式深度学习模型所需的核心技术。
在第1章中,我们将首先对生成式建模领域进行广泛的研究,并从概率的角度考虑我们试图解决的问题类型。然后,我们将探讨我们的基本概率生成模型的第一个例子,并分析为什么随着生成式任务的复杂性增长,可能需要部署深度学习技术。
第2章提供了开始构建更复杂的生成模型所需的深度学习工具和技术的指南。这旨在成为深度学习的实用指南,而不是对该领域的理论分析。特别是,我将介绍Keras,一个构建神经网络的框架,可用于构建和训练已在文献中发表的一些最先进的深度神经网络架构。
在第3章中,我们将看看我们的第一个生成式深度学习模型,即变分自动编码器。这种强大的技术不仅可以生成逼真的面部,还可以改变现有的图像 - 例如,通过添加微笑或改变某人头发的颜色。
第4章探讨了近年来最成功的生成式建模技术之一,生成对抗网络GAN。这种构建生成建模问题的优雅框架是大多数最先进的生成模型背后的基础引擎。我们将看到它经过微调和调整的方式,以不断推动生成建模能够实现的界限。

第一章 生成建模

本章是对生成建模领域的一般性介绍。我们首先要介绍说一个模型是生成是什么意思?它与更广泛研究的判别模型有何不同? 然后,我将介绍框架和核心数学思想,这将使我们能够构建我们对需要生成解决方案的问题的一般方法。
有了这个,我们将构建我们的第一个生成概率模型(朴素贝叶斯)的例子。 我们将看到,这允许我们生成在训练数据集之外的新颖样本,但也应该探索这种类型的模型可能失败的原因,随着可能创建的空间的大小和复杂性增加。
 

什么是生成式建模?
生成式模型可以大致定义如下:
生成式模型通过概率模型描述了如何生成数据。 通过从该模型中抽样,我们能够生成新数据。

假设我们有一个包含马图像的数据集。 我们可能希望建立一个能够生成一个从未存在但仍然看起来真实的马的新形象的模型,因为该模型已经学会了控制马的外观的一般规则。 这就是可以使用生成建模来解决的问题。 典型生成建模过程总结如图1-1所示。
首先,我们需要一个数据集,其中包含我们尝试生成的实体的许多示例。 这被称为训练数据,并且一个这样的数据点被称为观测。
 

图1-1 生成式建模的过程

每个观测包括许多特征 - 对于图像生成问题,这些特征通常是各个像素值。 我们的目标是构建一个可以生成新特征集合的模型,这些特征集合看起来好像是使用与原始数据相同的规则创建的。从概念上讲,图像生成来说是一项非常困难的任务,考虑到对单个像素值进行放置有大量不同的方式,相对微小的这种放置构成了我们试图模拟的实体图像。

生成模型也必须是概率性的而不是确定性的。 如果我们的模型仅仅是一个固定的计算,例如取数据集中每个像素的平均值,那么它就不具有生成性,因为模型每次都会产生相同的输出。 模型必须包括一个随机(随机)元素,它影响模型生成的各个样本。
换句话说,我们可以想象有一些未知的概率分布解释了为什么某些图像可能在训练数据集中找到而其他图像不是。 我们的工作是建立一个尽可能接近地模拟这种分布的模型,然后从中进行采样以生成新的,独特的观测结果,看起来好像它们可能已包含在原始训练集中。
 

生成性与判别性建模
为了真正理解生成建模的目的是什么以及为什么这很重要,将它与其对应物进行比较是有用的-判别模型。如果你学过机器学习,那么你将面临的大多数问题都很可能是判别性的。为了理解这些差异,让我们看一个例子。

假设我们有一个绘画数据集,一些由梵高绘制,一些由其他艺术家绘制。 有了足够的数据,我们可以训练一个判别模型来预测一幅画是否由梵高绘制。 我们的模型将了解某些颜色,形状和纹理更可能表明绘画是由荷兰大师梵高绘制的,对于具有这些特征的绘画,该模型将相应地增加其预测。 图1-2显示了判别建模过程 - 注意它与图1-1中所示的生成建模过程的不同之处。
 

图1-2 判别建模的过程

 一个关键的区别是,当执行判别建模时,训练数据中的每个观测都有一个标签。 对于二元分类问题,例如我们的艺术家鉴别器,梵高绘画标签为1,非梵高绘画标签为0.我们的模型然后学习如何区分这两组,并输出新观测标签为1(也就是说,它是由梵高绘制的)的概率。
出于这个原因,判别建模与监督学习同义,也就是利用标签数据集,学习一个将输入映射到输出的函数。 生成建模通常使用没有标签的数据集(即,作为无监督学习的一种形式),但它也可以应用于有标签的数据集以学习如何从每个不同的类生成观测。
让我们看一些数学符号来描述生成和判别建模之间的区别。

判别建模是估计 p(y|x) 给定观测x其标签是y的概率
生成建模是估计 p(x) 观察观测x的概率
如果数据集是有标签的,我们还可以构建一个生成模型来估计分布 p(x|y)

换句话说,判别建模试图估计观测x属于类别y的概率。 生成建模不关心标签。 相反,它试图估计了解观测的概率。

关键在于,即使我们能够建立一个完美的判别模型来识别梵高的画作,它仍然不知道如何创作一幅看起来像梵高的画作。 它只能输出对现有图像的概率,因为这是它训练要做的事情。 我们需要训练一个生成模型,该模型可以输出很有可能属于原始训练数据集的像素集。
 
机器学习的进展
 为了理解为什么生成式模型可以被认为是机器学习的下一个前沿,我们必须首先看看为什么在过去的二十年里,在学术界和工业界,判别模型一直是机器学习方法学最大进步背后的驱动力。
 从学术角度来看,判别式建模的进展是因为我们可以根据某些备受瞩目的分类任务来衡量效果指标,以确定当前最佳的方法,因此当然更容易监控。 生成模型通常更难以评估,特别是当输出的质量主要是主观的时候。 因此,近年来重点都是放在训练判别模型上,以在各种图像或文本分类任务中达到人或超人的表现。
例如,对于图像分类,2012年取得了重大突破,由多伦多大学的Geoff Hinton领导的团队凭借深度卷积神经网络赢得了ImageNet大规模视觉识别挑战赛(ILSVRC)。 这个比赛是将图像分类为千种类别中的一种,它被用作比较最新技术的基准。 深度学习模型达到错误率为16% - 对于第二名最佳模型的大幅改进,其仅实现了一个错误率为26.2%。 这引发了深刻的学习热潮,导致比赛的错误率逐年下降。 2015年的获胜者首次实现了超人的表现,错误率为4%,而目前最先进网络的错误率仅为2%。 许多人现在认为比赛挑战是一个已解决的问题。
除了在学术环境中更容易发布可衡量的结果之外,判别建模在历史上比生成建模更容易适用于商业问题。 通常,在业务环境中,我们不关心数据是如何生成的,而是想知道应如何对新示例进行分类或评估。 例如:
  • 鉴于卫星图像,政府国防官员只会关心它包含敌方单位的概率,而不是这个特定图像应该出现的概率。

  • 客户关系经理只会想知道收到的电子邮件的观点是积极的还是消极的,并且在生成模型中没有多少用处,因为生成模型可能会输出尚不存在的客户电子邮件的示例。
  • 医生希望知道给定视网膜图像含有青光眼的可能性,而不是能够获得可以生成新颖的眼睛后部图像的模型。

由于企业所需的大多数解决方案都属于判别建模领域,因此机器学习即服务(MLaaS,Machine-Learning-as-a-Service)工具的数量不断增加,这些工具旨在将工业中的判别建模商品化,

通过在很大程度上自动化的生产,验证和监视过程,这些过程几乎是所有判别建模任务所共有的。

 
生成建模的兴起
 
虽然判别模型迄今为止提供了机器学习技术进步的大部分动力,但在过去的三到五年中,该领域中许多最有趣的进步都是通过深度学习到生成建模任务的新颖应用而实现的。

特别是,媒体对生成建模项目的关注度越来越高,例如NVIDIA的StyleGAN,它能够创建人脸的超逼真图像,以及OpenAI的GPT-2语言模型,它能够通过简短的介绍段落完成文本的传递。

图1-3显示了自2014年以来3在面部图像生成方面取得的惊人进展。游戏设计和电影摄影等行业有明显的积极应用,自动音乐生成的改进也必将在这些领域内引起共鸣。 我们是否有一天会阅读由生成模型撰写的新闻文章或小说还有待观察,但最近这方面的进展是惊人的,毫无疑问,某一天可能就是这样。 虽然令人兴奋,但这也引发了关于互联网上虚假内容激增的道德问题,这意味着可能变得越来越难以信任我们通过公共沟通渠道看到和阅读的内容。

图1-3 使用生成建模的面部生成在过去四年中得到了显着改善 4

除了生成建模的实际应用(其中许多尚未被发现)之外,有三个更深层次的原因可以解释为什么生成建模可以被认为是解锁更复杂的人工智能形式的关键,这超出了判别建模可以独自实现的范畴。

首先,纯粹从理论的角度来看,我们不应满足于只能在数据分类方面表现出色,而且还应该首先寻求更全面地了解数据的生成方式。 这无疑是一个需要解决的难题,这是由于可行输出空间的维度高,同时创造的能被归类为数据集的样本数量相对较少。然而,正如我们将要看到的,许多驱动判别建模发展的相同技术,例如深度学习,也可以被生成模型利用。

其次,生成建模很可能是推动机器学习其他领域未来发展的核心,例如强化学习(通过试错来教agents以优化环境目标的研究)。例如,我们可以使用强化学习来训练机器人在特定地形上行走。一般方法是建立地形的计算机模拟,然后运行许多实验,其中agents尝试不同的策略。随着时间的推移,agents将了解哪些策略比其他策略更成功,因此逐渐改进。这种方法的一个典型问题是环境的物理特性通常非常复杂,需要在每个时间步长计算,以便将信息反馈给agents以决定其下一步行动。但是,如果agents能够通过生成模型模拟其环境,则不需要在计算机模拟或现实世界中测试策略,而是可以在其自己的想象环境中学习。在第8章中,我们将看到这个想法的实施,通过允许它直接从其自己的幻觉环境中学习,训练汽车尽可能快地在轨道上行驶。

最后,如果我们要真实地说我们已经建立了一种能够获得与人类相似的智能机器,那么生成建模肯定是解决方案的一部分。自然界中最好的生成模型之一就是阅读本书的人。花点时间考虑一下你是一个令人难以置信的生成模型。你可以闭上眼睛,从任何可能的角度想象大象会是什么样子。你可以想象你最喜欢的电视节目有许多看似合理的不同结局,你可以通过在脑海中处理各种未来并相应地采取行动来计划你的一周。目前的神经科学理论表明,我们对现实的感知并不是一个运作在我们的感官输入上以产生我们正在经历的预测,高度复杂的判别模型,而是一个受过训练的生成模型。从出生到产生我们周围环境的模拟,准确地匹配未来。有些理论甚至认为这种生成模型的输出是我们直接认为的现实。很明显,深入了解我们如何建立机器以获得这种能力将是我们对大脑运作和一般人工智能的持续理解的关键。

考虑到这一点,让我们开始进入令人兴奋的生成建模世界。 首先,我们将看一下最简单的生成模型示例和一些有助于我们完成本书后面将要遇到的更复杂架构的想法。

参考文献:

1 Tero Karras, Samuli Laine, and Timo Aila, “A Style-Based Generator Architecture for Generative Adversarial Networks,” 12 December 2018, https://arxiv.org/abs/1812.04948.
2 Alec Radford et al., “Language Models Are Unsupervised Multitask Learners,” 2019,
https://paperswithcode.com/paper/language-models-are-unsupervised-multitask.
3 Miles Brundage et al., “The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation,” February 2018, https://www.eff.org/files/2018/02/20/malicious_ai_report_final.pdf.
4 Source: Brundage et al., 2018. 

从零开始学会GAN 0:第一部分 介绍生成式深度学习(连载中)的更多相关文章

  1. 4.keras实现-->生成式深度学习之用变分自编码器VAE生成图像(mnist数据集和名人头像数据集)

    变分自编码器(VAE,variatinal autoencoder)   VS    生成式对抗网络(GAN,generative adversarial network) 两者不仅适用于图像,还可以 ...

  2. 4.keras实现-->生成式深度学习之用GAN生成图像

    生成式对抗网络(GAN,generative adversarial network)由Goodfellow等人于2014年提出,它可以替代VAE来学习图像的潜在空间.它能够迫使生成图像与真实图像在统 ...

  3. 本文可能是国内第一篇介绍C/4HANA Foundation的中文博客

    SAP C/4HANA从去年发布已经过去了一年多的时间,C/4HANA的从业者,对于这五朵云里包含的产品集,想必都有了一些了解. Jerry注意到,SAP C/4HANA Foundation这个概念 ...

  4. 4.keras实现-->生成式深度学习之DeepDream

    DeepDream是一种艺术性的图像修改技术,它用到了卷积神经网络学到的表示,DeepDream由Google于2015年发布.这个算法与卷积神经网络过滤器可视化技术几乎相同,都是反向运行一个卷积神经 ...

  5. (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇

    This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...

  6. TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN

    前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...

  7. 【深度学习与TensorFlow 2.0】入门篇

    注:因为毕业论文需要用到相关知识,借着 TF 2.0 发布的时机,重新捡起深度学习.在此,也推荐一下优达学城与 TensorFlow 合作发布的TF 2.0入门课程,下面的例子就来自该课程. 原文发布 ...

  8. ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四

    [导读]Kears作者François Chollet刚刚在Twitter贴出最近三个月在arXiv提到的深度学习框架,TensorFlow不出意外排名第一,Keras排名第二.随后是Caffe.Py ...

  9. Gradle2.0用户指南翻译——第一章. 介绍

    翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...

随机推荐

  1. MATLAB实现图像的代数运算

    目录 1.使用求补运算对各类图像进行处理 2.利用imlincomb函数将图像的灰度值放大1.5倍 3.利用imlincomb函数计算两幅图像的平均值. 4.图像的加法运算 5.利用imnoise函数 ...

  2. Mybatis batch 批量处理

    @Testpublic void batch() throws IOException { InputStream inputStream= Resources.getResourceAsStream ...

  3. ReDOS攻击

    正则表达式拒绝服务攻击(Regular Expression Denial of Service)当开发人员编写的正则表达式存在缺陷时,攻击者可以构造特殊的字符串来大量消耗服务器资源,最终造成拒绝服务 ...

  4. typescript实现类规则

    备注: 单独的 index.d.ts对于代码实现没有约束性,将约束和实现写在一个页面里有约束性,或者使用如下: // clock.interface.ts export interface Clock ...

  5. python 其实不用框架你也可以实现ORM

    """ ORM思路归纳: 1.将每张表映射成不同的表类,一个表类映射一张表.表类的类属性 需要有表名.字段名 将每个字段类型映射为字段类型类,一个字段类型类映射一个类 字 ...

  6. Cpython全局解释器锁原理剖析

    """In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple ...

  7. Linux第三阶段题型测试

    1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字. 解答: 1)最土的方法:ls -l /etiantian |cu ...

  8. 自学电脑游戏第四天(Swing)

    继续之前的 3.组合框(JComboBox) 例题:利用JComboBox设计一个选择城市的程序. import java.awt.*; import javax.swing.*; public cl ...

  9. [loj#2005][SDOI2017]相关分析 _线段树

    「SDOI2017」相关分析 题目链接:https://loj.ac/problem/2005 题解: 把上面的式子拆掉,把下面的式子拆掉. 发现所有的东西都能用线段树暴力维护. 代码: #inclu ...

  10. 数据检索grep

    linux操作中,总是会输出很多的内容.但是有些内容并不是我们重点关注的,所以为了看起来方便,也为了提升效率,就将不需要的内容过滤掉.  只输出想要的东西. grep: 用于搜索 模式参数(给定的字符 ...