生成对抗网络GAN(一) 简介和变种


基本概念[1]

目标函数

零和游戏(zero-sum game)
纳什均衡
minimax算法
GAN借鉴了零和游戏的思想,引入生成网络和辨别网络,让两个网络互相博弈,当辨别网络不能辨别数据来自于真实分布还是生成网络的时候,此时的生成网络可以当做一个数据分布到另一个数据分布的转化器。
假设生成网络 G G G,辨别网络 D D D,noise数据 z z z,noise分布 p z ( z ) p_z(z) pz(z),data数据 x x x,data分布 p g p_g pg
目标函数:
m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] min_{G}max_{D}V(D,G)=\mathbb E_{x \sim p_{data}(x)}[log D(x)]+\mathbb E_{z \sim p_{z}(z)}[log(1-D(G(z)))] minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
max: 最大化辨别网络的辨别能力
min: 相当于最大化把 G ( z ) G(z) G(z)当成 x x x的概率(以假乱真)
###训练流程
这里写图片描述
实际参数更新如下图
这里写图片描述

优缺点

优点:

  • 不需要马尔科夫链
  • 不需要对隐变量做推断

缺点:

  • p g ( x ) p_g(x) pg(x)没有显式的表达
  • D D D G G G的训练需要同步,不好训练
    ##GAN种类
    ###DCGAN[2]
    DCGAN(deep convolutional generative adversarial networks)主要的贡献是成功的将CNN用到GAN,然后可以使用训练好的GAN当做监督学习的特征提取器。
    对CNN结构的主要调整包括:
  • 不再使用pooling,discriminator和generator分别使用strided convolution和fractional-strided convolution
  • generator和discriminator使用batchnorm,对于训练深层的generator非常关键,generator的输出层和discriminator的输入层不使用batchnorm
  • 删除深层网络中的全连接层
  • generator的所有层的激活函数(最后一层使用Tanh)使用ReLU
  • discriminator所有层的激活函数使用LeakyReLU

LS-GAN[3]

LS-GAN使用least squares作为loss function:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBc8z0gz-1618585505507)(./1495529121066.png)]
a是fake data的label,b是real data的label
相比于原始GAN的sigmoid的交叉熵,有两个优势:

  • 得到的分布更接近真实分布,效果更好(不仅考虑分类正确,还对距离远的施加惩罚)
  • 训练过程稳定,减弱了vanishing gradient的影响(对比两个函数曲线可知)

两组参数
a=-1, b=1, c=0
a=0, b=1, c=1

参考文献

[1].Generative Adversarial Nets
[2].Unsupervised representation learning with deep convolutional generative adversarial networks.
[3].Least Squares Generative Adversarial Networks

后面的技术分享转移到微信公众号上面更新了,【欢迎扫码关注交流】

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值