作者: Joseph Rocca
编译:荣怀阳
里德
GANs于2014年提出,此后在图像生成领域取得了巨大的成功,但其背后的原理并不是很了解。 本文从最基础的随机变量出发,一步一步推理得到GANs。 因为非常详细,所以请一定要看。 因为文章很长,所以分成两个部分和大家分享。 今天是第一部。
介绍
Yann LeCun将其表述为“过去10年来集中在机器学习领域的计算机创意”。 当然,这些来自深度学习领域杰出研究者的赞美,对于我们谈论的主题来说,始终是一个好广告。事实上,2014年Ian J. Goodfellow和他的合作伙伴在Generative Adversarial Nets上发表了一篇文章
那么,什么是生成性对抗性网络呢? 什么东西这么“有趣”呢? 在本文中,我们将看到对抗性训练是一个非常有启发性的想法,简单而美丽,代表了机器学习真正进步的概念,特别是生成模式。 (同样作为反向传播很简单,但却是非常聪明的技巧,使神经网络如此受欢迎和有效。
在讨论细节之前,让我简单介绍一下GANs的用途。 抗性网络的生成属于生成模型。 这意味着他们可以创造新的内容。 为了说明“生成模型”的概念,让我们看一下使用GANs获得结果的一些有名的例子。
Ian Goodfellow及其合作者对GANs能力的说明。 这些是在两个数据集,MNIST和TFD上进行训练后,对抗网络生成的样本。 在这两种情况下,最右边的列是与生成的直接相邻采样最接近的实际数据。 这表明,生成的数据实际上是生成的,不仅仅是互联网。
当然,生成这种新内容的能力让GANs看起来有点像“魔法”。 至少看起来是这样。 下一节将克服GANs魔法,以深入研究这些模型背后的思想、数学和建模。 我们不仅讨论对抗网络的基本概念的产生,而且一步步构建这些概念,从一开始就推论这些概念。
少说废话,一起重新发现GANs吧!
注
我们试图尽可能独立地阅读本文,但需要机器学习的基本先验知识。 但是,大多数概念将根据需要保留,并提供一些参考资料。 我们努力尽可能顺利地阅读这篇文章。 请不要犹豫。 评论部分会出现更多想读的内容(可能有更多关于这个主题的文章)。
概要
以下第一节介绍了从给定分布生成随机变量的过程。 并且,在第2节中,作为一例,说明可以将GANs要解决的问题表示为随机变量生成问题。 第3节讨论基于匹配的生成网络,并展示如何回答第2节所述的问题。 最后第四节介绍了GANs。 另外,给出了具有损失函数的通用体系结构,并将其与到目前为止的所有部分链接起来。
生成随机变量
本节讨论随机变量的生成过程。 注意现有的方法,特别是能够从简单的均匀随机变量生成复杂的随机变量的逆变换方法。 所有这些似乎都与我们的主题GANs略有不同,但在下一节我们将看到它与生成模型的深刻联系。
均匀变量可以伪随机生成
计算机基本上是确定的。 因此,理论上,不可能生成真正随机的数字(这个问题很难回答) 但是,有可能定义生成具有与理论随机数序列非常接近的属性的数字序列的算法。 具体来说,计算机可以使用伪随机数字生成器来生成近似遵循0和1之间的均匀随机分布的数字串。 均匀情况是非常简单的情况,在此基础上可以用不同的方法构造更复杂的随机变量。
由一个操作或过程的结果表示的随机变量
有各种用于生成更复杂的随机变量的技术。 这包括逆变换法、拒绝采样法、Metropolis-Hasting算法等。 所有这些方法都依赖于不同的数学技巧。 这些技巧主要包括对于更简单的随机变量,在一个操作的结果中表示所需的随机变量。
拒绝采样意味着随机变量不是从复杂分布中采样,而是从众所周知的简单分布中采样,是基于一定条件接受或拒绝采样值过程的结果。 重复该过程直到采样值被接受,如果被接受的条件正确,可以证明有效采样值遵循正确的分布。
在Metropolis-Hasting算法中,考虑找到马尔可夫链(MC ),使得该MC的平滑分布与希望对随机变量进行采样的分布相对应。 如果找到了这个MC,我们就可以在这个MC上模拟足够长的轨迹。 考虑到我们已经达到稳定状态,我们认为用这种方法得到的最后一个值是从感兴趣的分布中得到的。
有关拒绝采样和Metropolis-Hasting采样的更多信息将不再详细讨论。 因为用这些方法无法理解GANs背后的概念。 尽管如此,感兴趣的读者请参考与维基百科目标相符的文章和链接。 让我们更多地关注逆变换方法。
逆变换方法
逆变换方法的想法只是表示了我们的复杂性。 文中“复杂”应该理解“不简单”的感觉而不是数学上的复杂,知道如何将生成随机变量函数的结果应用于统一的伴随
机变量。我们以一维的例子来考虑。假设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/