作者:Joseph Rocca

编译:ronghuaiyang

导读

GANs在2014年提出,然后就在图像生成领域取得了巨大的成功,但是其背后的原理却不是那么好理解,这篇文章带你从最基础的随机变量开始,一步一步推理得到GANs,非常的详细,一定要看看!由于文章较长,分两部分分享给大家,今天是第一部分。

介绍

Yann LeCun将其描述为“过去10年机器学习领域最有趣的想法”。当然,这样一个来自深度学习领域的杰出研究者的赞美,对于我们正在谈论的主题来说,总是一个很好的广告!事实上,自从2014年Ian J. Goodfellow和他的合著者在Generative Adversarial Nets中介绍生式对抗网络(GANs)以来,它已经取得了巨大的成功。

那么什么是生成性对抗性网络呢?是什么让它们如此“有趣”?在这篇文章中,我们将看到对抗性的训练是一个极有启发性的想法,简单美,代表了机器学习的真正进步的概念,更尤其是生成模型(以同样的方式作为反向传播是一个简单但很聪明的技巧,使神经网络变得如此受欢迎和有效)。

在讨论细节之前,让我们先简要介绍一下GANs的用途。生成对抗性网络属于生成模型。这意味着他们能够产生新的内容。为了说明“生成模型”的概念,我们可以看一些使用GANs获得结果的著名的例子。

Ian Goodfellow及其合著者对GANs能力的说明。这些是在两个数据集:MNIST和TFD上进行训练后对抗网络生成的样本。对于这两种情况,最右边的列是离生成的直接相邻样本最近的真实数据。这表明产生的数据实际上是生成的,而不仅仅是由网络记忆的。

很自然,这种生成新内容的能力让GANs看起来有点“神奇”,至少乍一看是这样。在下面的部分中,我们将克服GANs的魔法,以便深入研究这些模型背后的思想、数学和建模。我们不仅会讨论生成对抗网络所依赖的基本概念,而且,我们还会一步一步地构建这些概念,并从一开始就对这些概念进行推理。

废话不多说,让我们一起重新发现GANs !

:虽然我们试图使本文尽可能地可以独立的阅读,但仍然需要具备机器学习的基本先验知识。然而,大多数概念将在需要时保留,并提供一些参考资料。我们尽力使这篇文章读起来尽可能流畅。不要犹豫,在评论部分会提到你想要阅读的更多内容(可能会有更多关于这个主题的文章)。

概要

在下面的第一部分中,我们将讨论从给定的分布生成随机变量的过程。然后,在第2节中,我们将通过一个例子说明,GANs试图解决的问题可以表示为随机变量生成问题。在第3节中,我们将讨论基于匹配的生成网络,并展示它们如何回答第2节中描述的问题。最后在第4节中,我们将介绍GANs。更特别的是,我们将展示带有损失函数的通用架构,并与之前的所有部分进行链接。

生成随机变量

在本节中,我们将讨论随机变量的生成过程:我们将提醒一些现有的方法,特别是允许从简单的均匀随机变量生成复杂随机变量的逆变换方法。尽管所有这些似乎都与我们的主题GANs有些不同,我们将在下一节中看到与生成模型的深层联系。

均匀随机变量可以伪随机生成

计算机基本上是确定的。因此,从理论上讲,不可能生成真正随机的数字(即使我们可以说“什么是随机?”这个问题很难回答)。然而,定义生成属性非常接近理论随机数序列的数字序列的算法是可能的。具体地说,计算机能够使用伪随机数字生成器生成一个数字序列,该序列近似地遵循0和1之间的均匀随机分布。均匀的情况是一个非常简单的情况,在此基础上可以用不同的方式构建更复杂的随机变量。

由一个操作或过程的结果表示的随机变量

有不同的技术旨在生成更复杂的随机变量。其中包括逆变换法、拒绝抽样法、Metropolis-Hasting算法等。所有这些方法都依赖于不同的数学技巧,这些技巧主要是包括用一个操作的结果(相对于更简单的随机变量)来表示我们希望的随机变量。

拒绝抽样表示随机变量是一个过程的结果,这个过程不是从复杂的分布中抽样,而是从一个众所周知的简单分布中抽样,并根据某些条件接受或拒绝抽样值。重复这个过程直到采样值被接受,我们可以证明在接受的条件正确的情况下,有效采样的值将遵循正确的分布。

在Metropolis-Hasting算法中,我们的想法是找到一个马尔可夫链(MC),使这个MC的平稳分布对应于我们想要对随机变量进行抽样的分布。一旦这个MC找到了,我们就可以在这个MC上模拟一个足够长的轨迹,考虑到我们已经达到了一个稳定的状态,然后我们用这种方法得到的最后一个值可以被认为是从感兴趣分布中得到的。

我们不再深入讨论拒绝抽样和Metropolis-Hasting抽样的细节,因为这些方法并不能引导我们理解GANs背后的概念(尽管如此,感兴趣的读者可以参考Wikipedia中有针对性的文章和链接)。让我们更加关注一下逆变换方法。

逆变换方法

逆变换方法的想法只是代表我们的复杂性—在本文中“复杂”应该理解“不简单”的感觉,而不是在数学意义上的复杂,我们知道如何生成随机变量函数的结果应用于一个统一的随机变量。

我们以一维的例子来考虑。假设X是一个复杂随机变量,U是一个均匀随机变量,取值范围为[0,1],我们知道如何抽样。我们提醒你一下,一个随机变量是由它的累积分布函数 (CDF)完全定义的。随机变量的CDF是一个从随机变量的定义域到区间[0,1]的函数,并且在一维中定义。

在U为均匀随机变量的特殊情况下,我们有

为了简单起见,我们在这里假设函数CDF_X是可逆的,它的逆表示为

(使用泛函的逆,该方法可以很容易地推广到非可逆的情况下,但这真的不是我们想要关注的重点)。如果我们定义

我们有

我们可以看到,Y和X有相同的CDF然后定义出的随机变量。因此,通过定义上面的Y(作为一个均匀随机变量的函数),我们成功地定义了一个具有目标分布的随机变量。

综上所述,逆变换法是一种使一个均匀的随机变量通过一个精心设计的“变换函数”(逆CDF)来生成一个服从给定分布的随机变量的方法。实际上,“逆变换法”的概念可以推广到“变换法”的概念,即更一般地,将随机变量作为一些更简单的随机变量的函数来生成(不一定是一致的,那么变换函数就不再是逆CDF)。从概念上讲,“变换函数”的目的是对初始概率分布进行变形/重塑:转换函数从初始概率分布相对于目标概率分布过高的地方入手,将其放到初始概率分布过低的地方。

逆变换法的图解。蓝色表示[0,1]上的均匀分布。橙色表示标准高斯分布。灰色:从均匀分布到高斯分布的映射(逆CDF)。

生成模型

我们尝试生成更加复杂的随机变量…

假设我们对生成大小为n×n像素的狗的黑白正方形图像感兴趣。我们可以将每个数据重新塑造为一个N=n×n维向量(通过将列叠加在一起),这样狗的图像就可以用一个向量来表示。然而,这并不意味着所有的向量变回正方形之后都表示为狗!因此,我们可以说,N维向量可以有效地给到一些东西,看起来像一只狗,这个N维向量的分布是根据特定的概率分布在整个N维向量空间中的(一些空间中的点很可能代表狗,而另外的可能不像)。本着同样的精神,在这个N维向量空间中,存在着猫、鸟等图像的概率分布。

然后,生成一个新的dog图像的问题等价于在N维向量空间中按照“dog概率分布”生成一个新的向量的问题。实际上,我们面临的问题是根据特定的概率分布生成一个随机变量。

在这一点上,我们可以提到两件重要的事情。首先,我们提到的“狗的概率分布”在一个非常大的空间是一个非常复杂的分布。其次,即使我们可以假设存在这样的底层分布(实际上存在看起来像狗的图像和其他不像狗的图像),我们显然不知道如何显式地表达这种分布。前面的两点使得从这个分布中生成随机变量的过程非常困难。接下来让我们尝试解决这两个问题。

… 所以让我们在变换方法中使用神经网络作为变换函数吧!

我们在生成dog的新图像时遇到的第一个问题是,在N维向量空间上的“dog概率分布”是一个非常复杂的问题,我们不知道如何直接生成复杂的随机变量。然而,我们很清楚如何生成N个不相关的均匀随机变量,我们可以利用变换方法。为此,我们需要将N维随机变量表示为将一个非常复杂的函数,应用在生成一个简单的N维随机变量上!

在这里,我们可以强调这样一个事实,即找到变换函数并不像描述逆变换方法那样简单,只需对累积分布函数(我们显然不知道)求出封闭形式的逆。转换函数不能显式表达出来,我们必须从数据中进行学习。

在大多数情况下,非常复杂的函数自然意味着神经网络建模。然后,通过神经网络对变换函数进行建模,该神经网络将一个简单的N维均匀随机变量作为输入,并返回另一个N维随机变量,该随机变量在训练后应遵循正确的“dog概率分布”。一旦网络架构设计完成,我们仍然需要对其进行训练。在接下来的两节中,我们将讨论两种方法来训练这些生成网络,包括GANs背后的对抗性训练!

图解使用神经网络生成模型的概念。显然,我们讨论的维度比这里表示的要高得多。

英文原文:https://towardsdatascience.com/understanding-generative-adversarial-networks-gans-cd6e4651a29

https://www.toutiao.com/i6725010195707068942/

生成对抗网络的损失函数如何设计_理解生成对抗网络,一步一步推理得到GANs(一)...相关推荐

  1. 生成对抗网络的损失函数如何设计_生成对抗网络(GAN)

    GAN的全称是 Generative Adversarial Networks,中文名称是生成对抗网络.原始的GAN是一种无监督学习方法,巧妙的利用"博弈"的思想来学习生成式模型. ...

  2. 生成对抗网络的损失函数如何设计_如何检测极小人脸?试试超分辨率

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  3. 生成对抗网络GAN损失函数loss的简单理解

    原始的公式长这样: min⁡Gmax⁡DV(D,G)=Ex∼pdata (x)[log⁡D(x)]+Ez∼pz(z)[log⁡(1−D(G(z)))]\min _{G} \max _{D} V(D, ...

  4. 笔记本电脑网络连接显示红叉_物联网设备的网络连接---上篇

    在一个物联网场景中,设备连接是底层基础.由于物联网设备的多样性,涉及到各个工业领域中的标准或规范,这就需要综合的软硬件技术将它们连接起来. 本文分别从物联网组网技术和传输协议的角度来介绍物联网系统所面 ...

  5. 玩转python网络爬虫 黄永祥_玩转Python网络爬虫

    第1章理解网络爬虫 1 1.1 爬虫的定义 1 1.2 爬虫的类型 2 1.3 爬虫的原理 3 1.4 爬虫的搜索策略 5 1.5 反爬虫技术及解决方案 6 1.6 本章小结 8 第2章爬虫开发基础 ...

  6. vb fso方式访问网络上的共享文件夹_经常遇见的网络故障详细分析及解决方法!...

     故障1:交换机刚加电时网络无法通信  [故障现象] 交换机刚刚开启的时候无法连接至其他网络,需要等待一段时间才可以.另外,需要使用一段时间之后,访问其他计算机的速度才快,如果有一段时间不使用网络,再 ...

  7. python网络爬虫技术课后答案_尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案...

    尔雅<Python网络爬虫技术(2020年秋季学期)>网课答案 法律的一般含义是() 答:法律是由国家创制并保证实施的行为规范 下列属于急症手术的是 答:肝破裂 脾气统摄血液的功能,实际上 ...

  8. 数据采集技术python网络爬虫项目化教程_数据采集技术Python网络爬虫项目化教程 黄锐军课程资源.zip-KC17.pptx...

    原文件部分截取内容: 1.7.1 Web学生管理程序 Shenzhen Institute Of Information Technology 教师:黄锐军 深圳信息职业技术学院 学生的记录包括学号N ...

  9. 网络聊天程序的设计与实现

    网络聊天程序的设计与实现 文章目录 网络聊天程序的设计与实现 一.实验题目 二.实验目的 三.背景知识 四.代码 一.实验题目 网络聊天程序的设计与实现 二.实验目的 使用socket编程,了解soc ...

最新文章

  1. Jackson、FastJson快速入门(整合SpringMVC)
  2. 开发日记-20190914 关键词 汇编语言王爽版 第五章
  3. python中operator.itemgetter函数
  4. mysql高级查询 二_MySQL高级查询(二)
  5. (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
  6. SQL Server中的MTVF和CE模型变化
  7. ip以及端口转发数据、根据端口转发显示内网的web的方法介绍
  8. VS2017更改设置目录一劳永逸的方法
  9. FPGA芯片手册阅读技巧
  10. Redis 发布/订阅模式
  11. spark 集群搭建 详细步骤
  12. 如何通过Excel文件批量生成PDF417二维码
  13. 目标检测的图像特征提取之(二)LBP特征
  14. Excel,Word,PowerPoint2016通过命令行安装License过程
  15. 网络安全应急响应实施过程
  16. 小球斜抛公式用C语言怎么写,利用C4droid绘制小球斜抛运动轨迹(考虑空气阻力)...
  17. RS485 光照度传感器 pc串口工具调试设备 亲身体验
  18. 什么是匈牙利命名法?有什么规则?
  19. WE LUCKY小幸运咖啡的自我介绍
  20. 职场必备技之二阶堂红丸

热门文章

  1. 大数据分析考试复习资料
  2. Linux运维三剑客
  3. ubuntu 14.04 交叉编译ffmpeg
  4. C#实现在现有图片的指定位置添加文字
  5. VisionMobile:2012年移动开发者经济报告(一)关键内容
  6. 百问网7天物联网智能家居 学习心得 打卡第四天
  7. 如何让新网站快速被百度收录
  8. Linux基本命令及编程环境实验
  9. nRF52832 之ADC的使用
  10. 【Java语言基础】面向对象之封装、继承、抽象类、接口、多态综合知识习题及总结day11