GANs的原理-学习笔记

Gans

Gans全称Generative Adversarial Networks,既生成又对抗,所以先说一下生成和对抗模型分别是什么。

生成和对抗模型的算法:

  • 目的:计算f:x->y,或者p(y|x)
  1. 生成模型:
    1). 用参数表达p(x), p(x|y)
    2). 通过样本数据求出以上参数
    3). 利用Bayes rules求出p(y|x)
  2. 对抗模型:
    1). 用参数表达p(y|x)
    2). 通过样本数据求出以上参数

生成模型(generative model)和对抗模型(discriminative model)放在一起对比着更好理解。生成模型学习的是不同class各自的概率分布(如p(x)),而且p(x|y)中condition on y也显示了其生成的特征;对抗模型学习的是不同class之间的分界线在哪里(需要注意的是,对抗模型并非必须计算出一个概率数字p(x),其实质上对样本分布作了一个模拟,比如说决策树模型,虽然它预测结果靠的并不是生成具体的概率p(x),但是也能将样本分配到不同的class中去,这种预测结果本身就是暗含了样本概率分布的)。

正是因为生成类模型计算需要用到class的概率分布(p(x|y)),这导致了它具体实施起来十分困难,例如在一个图像识别的任务中,它必须要搞清楚p(是人的眼睛 | 出现在额头上)”,或者p(图片上的船形物体是船|出现在水边)这些十分复杂的概率,才能判断出图片上的是人脸还是船;而对抗模型则只需要搞清楚这张图片到底“是人脸”“不是人脸”,“是船”“不是船”就行了。

Gans本质是一种生成模型,并结合了对抗模型,它既有一个生成神经网络不断地把random noise处理成和原始概率分布接近的数据,又有一个对抗神经网络不断地学会区分原始数据和生成数据到底是原始的还是生成的。

具体实现方法:

  • 一些Notation:
    G():生成模型
    D():对抗模型
    x:原始数据(例如一张图片)
    z:random noise
    G(z):生成模型的输出
    D(x):对抗模型对真实数据的判断(是原始的还是生成的)
    D(G(z)):对抗模型对生成数据的判断(是原始的还是生成的)
  1. Flow:在一个epoch i i i 里发生了这些:

    1. A random noise z i z_i zi is generated
    2. z i z_i zi is fed into G(), and G() outputs G ( z i ) G(z_i) G(zi), which is the generated sample
    3. Original sample x i x_i xi is fed into D(). Generated sample G ( z i ) G(z_i) G(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值