首页 > 人工智能(Artificial Intelligence) > 生成对抗网络

生成对抗网络(GAN)基本原理

GAN,即生成对抗网络,是一个生成模型,也是半监督和无监督学习模型,它可以在不需要大量标注数据的情况下学习深度表征。最大的特点就是提出了一种让两个深度网络对抗训练的方法。

GAN基本原理

GAN 的思想就是生成器网络和判别器网络的彼此博弈。

GAN 主要就是两个网络组成,生成器网络(Generator)和判别器网络(Discriminator),通过这两个网络的互相博弈,让生成器网络最终能够学习到输入数据的分布,这也就是 GAN 想达到的目的--学习输入数据的分布。其基本结构如下图所示,从下图可以更好理解G 和 D 的功能,分别为:

D 是判别器,负责对输入的真实数据和由 G 生成的假数据进行判断,其输出是 0 和 1,即它本质上是一个二值分类器,目标就是对输入为真实数据输出是 1,对假数据的输入,输出是 0;

G 是生成器,它接收的是一个随机噪声,并生成图像。

在训练的过程中,G 的目标是尽可能生成足够真实的数据去迷惑 D,而 D 就是要将 G 生成的图片都辨别出来,这样两者就是互相博弈,最终是要达到一个平衡,也就是纳什均衡。

v2-d36c35e3bb9ba1aac119304b225c0cda_1200x500.jpg

结合整体模型图示,再以生成图片作为例子具体说明下面。我们有两个网络,G(Generator)和D(Discriminator)。Generator是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。Discriminator是一个判别网络,判别一张图片是不是“真实的”。它的输入是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。

GAN模型目标函数

在训练过程中,生成网络的目标就是尽量生成真实的图片去欺骗判别网络D。而网络D的目标就是尽量把网络G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。这个博弈过程具体是怎么样的呢?

先了解下纳什均衡,纳什均衡是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。对应的,对于GAN,情况就是生成模型 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别模型再也判别不出来结果,准确率为 50%,约等于乱猜。这是双方网路都得到利益最大化,不再改变自己的策略,也就是不再更新自己的权重。

我们想要将一个随机高斯噪声z通过一个生成网络G得到一个和真的数据分布$P_{data}(x)$差不多的生成分布$P_G(x;\theta)$,其中的参数θ是网络的参数决定的,我们希望找到 θ 使得 $P_G(x;\theta)$ 和 $P_{data}(x)$ 尽可能接近。

GAN模型的目标函数如下:

v2-f07986304329af1335e474987f32a005_r.jpg

在这里,训练网络D使得最大概率地分对训练样本的标签(最大化log D(x)和 log(1-D(G(z))) ),训练网络G最小化log(1 – D(G(z))),即最大化D的损失。而训练过程中固定一方,更新另一个网络的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布,也就是生成的样本更加的真实。

或者我们可以直接理解G网络的loss是log(1-D(G(z)),而D的loss是-(log(D(x)) + log(1-D(G(z)))

然后从式子中解释对抗,我们知道G网络的训练是希望D(G(z))趋近于1,也就是正类,这样G的loss就会最小。而D网络的训练就是一个2分类,目标是分清楚真实数据和生成数据,也就是希望真实数据的D输出趋近于1,而生成数据的输出即D(G(z))趋近于0,或是负类。这里就是体现了对抗的思想。

损失函数

损失函数,D 的是

 v2-7a9e75eb92aca45927d829b27ec07719_hd.png

G 的是

v2-1d63bbab4311d97fbc959d1f5b3bdf4e_hd.jpg

G 网络的训练目标就是让 D(G(z)) 趋近于 1,这也是让其 loss 变小的做法;而 D 网络的训练目标是区分真假数据,自然是让 D(x) 趋近于 1,而 D(G(z)) 趋近于 0 。这就是两个网络相互对抗,彼此博弈的过程了。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。