赞
踩
生成式对抗网络(GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一.
模型通过框架中(至少)两个模型:生成模型(Generative Model)和差别模型(Discriminative Model)的互相博弈学习产生相当好的输出.
原始GAN理论中,并不要求G和D都是神经网络,只需要是能拟合相应生成和差别的函数即可.但是实用中一般均使用深度神经网络作为G和D.捕获数据分布的生成模型G,和样本来自训练数据的概率的差别模型D.G的训练程序是将D错误的概率最大化.
假设我们有两个网络,G(Generator)和D(Discriminator).它们的功能分别是:
G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记作G(z)
D是一个差别网络,差别一张图片是不是"真实的".它的输入参数是x,x代表一张图片,输入D(x)代表x为真实图片的概率,如果为1就代表100%是真实的图片,而输出为0就代表本能是真实的图片
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗差别网络D.而D的目标就是尽量把G生成的图片和真实的图片分别开来,这样G和D构成了一个动态的"博弈过程"
最后博弈的结果是什么? 在最理想的状态下,G可以生成中心"以假乱真"的图片G(z).对于D来说,它难以判定G生成的图片空间是不是真实的,因此D(G(z)) == 0.5
在这种情况下,这个0.5就是纳什均衡点
但是在我们实际的训练过程中是很难达到0.5这个最理想的状态.实际的训练过程中可能是0.49,0.48,0.52,它不是说达到0.5就停下来,而是达到某个范围内停下来.
比如说概率非常频繁地停在某个区间范围内,我们就可以把它停下来,其实说白了,我们不一定非得定一个结束的指标,比如说你可以看它的损失,如果它频繁地停在某个区间,就可以停下来了,但是也不是绝对的情况,它可能是一个局部的平衡
生成式对抗网络它可以做什么呢?
再比如说之前的杨幂换头变成小龙女,这个就是用GAN做的.
GAN可以做的事情比较多,目前应用到商业上的主要是数据增强和语义分割
GAN更多的是应用到图像上,RNN更多的是用在文本上
因为它比RNN更加不可控,简单来讲GAN只能简单来判断它是真文字还是假文字,但是文字不是用真假判断就能知道它是什么意思的.
GAN是更好的生成模型,在某种意义上避免了马尔科夫链式的学习机制,这全程它能够区别于传统的概率生成模型.传统概率生成模型一般都需要进行马尔科夫链式的采样和推断,而GAN避免了这个计算复杂度特别高的过程,直接进行采样和推断,从而提高了GAN的应用效率, 所以其实际应用场景也就更为广泛.
某次GAN是一个非常灵活的设计框架,各种类型的损失函数都可以整合到GAN模型当中,这样使得针对不同的,我们可以设计不同类型的损失函数,都会在GAN的模型下进行学习和优化.
再次,最重要的一点是:当概率密度不可计算的时候,传统依赖于数据自然性解释的一些生成模型就不可以在上面进行学习和应用,但是GAN在这种情况下依然可以使用,这是因为GAN引入了一个非常聪明的内部对抗的训练机制,可以逼近一些不是很容易计算的目标函数.
一个最朴素的GAN模型实际上是将一个随机变量(可以是高斯分布,或者01之间的均匀分布),通过参数化的概率生成模型(通常是用一个神经网络模型来进行参数化),进行概率分布的逆变换采样,从而得到一个生成的概率分布.
GAN的或者一般概率生成模型的训练目的,就是要使得生成的概率分布和真实数据的分布尽量接近,从而能够解释真实的数据.但是在实际应用中,我们完全没有办法知道真实数据的分布.我们所能够得到的只是从这个真实的数据分布中所采样得到的一些真实数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。