生成对抗网络(GAN)的前情提要

1.产生背景
  • 生成方法,所学到的模型称为生成式模型。
    • 生成方法通过观测数据学习样本与标签的联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)训练好的的模型即生成模型,能够生成符合样本分布的新数据。
    • 生成式模型在无监督深度学习方面占据主要位置,可用于在没有目标类标签信息的情况下捕捉观测到或可见数据的高阶相关性。
  • 判别方法,所学到的模型称为判别式模型。
    • 判别方法由数据直接学习决策函数f(X)或者条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)作为预测的模型,即判别模型。
    • 判别模型经常用在用监督学习方面
    • 判别方法关心的是对于给定的输入X,应该预测什么样的输出Y
  • 困难和前景
    • 有监督学习经常比无监督学习获得更好的模型,但又极度学习需要大量的标注数据长远来说,无监督学习更有前景
    • 支持无监督学习的生成式模型遇到两大困难
      • 人们需要大量的先验知识去对真实世界进行建模,建模的好坏直接影响生成模型的表现
      • 真实世界的数据很复杂,用来拟合的模型的计算量往往非常庞大,甚至无法承受
  • 提出
    • 2014年,Generative Adversarial Networks,GAN 由蒙特利尔在读博士Ian Goodfellow(导师Bengio)提出
2.基本原理
  • GAN起源于博弈论中的二人零和博弈(获胜1,失败-1)
    • 由两个互为敌手的模型组成
      • 生成模型(假币制造团队)
      • 判别模型(警察团队)
    • 竞争使得两个团队不断改进他们的方法直到无法分别出假币和真币
  • 生成模型中的问题
    • 自编码器
    • 概率模型
      • 按照某种概率分布生成数据,得到最能覆盖训练样本的概率分布
      • 需要确定样本的概率模型,即显式的定义概率密度函数
  • GAN模型
    • 估计样本概率分布而不需要显示定义概率分布
    • 生成模型
      • 捕捉样本数据的分布,用服从某一分布(均匀分布、高斯分布)的噪声z生成一个类似真实训练数据的样本
      • 可以看作是一种映射函数
    • 判别模型
      • 一个二分类器,估计一个样本来自训练数据(而非生成数据)的概率。若样本来自训练数据则输出大概率,否则输出小概率
    • 目标函数
      • m i n G m a x D V ( G , D ) = 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(G,D)=E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_{z}(z)}[log(1-D(G(z)))] minGmaxDV(G,D)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
      • 其中,G代表生成模型,D代表判别模型, p d a t a ( x ) p_{data}(x) pdata(x)表示真实数据x的分布, p z ( z ) p_{z}(z) pz(z)表示噪声变量z的分布
      • 训练GAN时,判别模型希望目标函数最大化,也就是使判别模型判断真实样本为’真‘,判断生成样本为’假‘的概率最大化
      • 判别模型也可以写成损失函数的形式
        L ( G , D ) = − 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 ) ) ) ] L(G,D)=-E_{x\sim p_{data}(x)}[logD(x)]-E_{z\sim p_{z}(z)}[log(1-D(G(z)))] L(G,D)=Expdata(x)[logD(x)]Ezpz(z)[log(1D(G(z)))]
      • 与判别模型相反,生成模型希望该目标函数最小化,也就是降低判别模型对数据来源判断正确的概率,要最小化判别模型的判别准确率
      • 生成模型训练目标 V ( G , D ) = 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 ) ) ) ] V(G,D)=E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_{z}(z)}[log(1-D(G(z)))] V(G,D)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))],但其在实际应用中的效果并不好,因此我们使用如下目标:
        V = E z ∼ p z ( z ) [ − l o g ( D ( G ( z ) ) ) ] V=E_{z\sim p_{z}(z)}[-log(D(G(z)))] V=Ezpz(z)[log(D(G(z)))]
  • GAN模型训练
    • GAN在训练的过程中固定一方,更新另一方的网络权重
    • 交替迭代,在此过程中双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡(纳什均衡)
    • 此时生成模型的数据无限逼近训练数据的真实分布,判别模型不再能判断出数据来源于真实数据还是生成数据
  • 固定G,训练D时,最优的判别器为: D G ∗ = p d a t a ( x ) p g ( x ) D_{G}^{*}=\frac{p_{data}(x)}{p_{g}(x)} DG=pg(x)pdata(x)
    • p g p_{g} pg表示在数据x上学习得到的生成样本的分布
    • 全局最优的生成函数值-log4
  • 优势和不足
    • 优势
      • 任何一个可微分函数都可以参数化D和G(如深度神经网络)
      • 支持无监督方法实现数据生成,减少了数据标注工作
      • 生成模型G的参数不是来自于数据样本本身,而是来自于判别模型D的一个反传梯度(想当于训练样本一个间接的作用)
    • 不足
      • 无需预先建模,数据生成的自由度太大
      • 得到的是概率分布,但是没有表达式,可解释性差
      • D与G无法同步,训练难度大,会产生梯度消失问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值