zoukankan      html  css  js  c++  java
  • tensorflow学习5----GAN模型初探

    生成模型:

    通过观测学习样本和标签的联合概率分布P(X,Y)进行训练,训练好的模型能够生成符合样本分布的新数据,在无监督学习方面,生成式模型能够捕获数据的高阶相关性,通过学习真实数据的本质特征,刻画样本数据的分布特征,生成与训练样本相似的新数据

    生成式模型的分类:1. Autoencoder 2.自回归模型 3.生成对抗网络(gan,,generative adversarial networks)

    Generative Adversarial Nworks: 1. generative model--->G     2.discriminative model------>D

    Generative model: 生成模型捕捉样本数据的分布。

    Discriminative model :是一个二分类器,用于判别输入数据是否真实。

    总结:模型的优化过程属于二元极小极大博弈问题,模型训练时固定一方,更新另一方的参数,交替迭代,使得对方的错误最大化。最终,G 能估测出样本数据的分布。

    Generitive Adversarial Networks Advantage :

    1.可以渐进的逼近任意概率分布,可以认为是一种非参数的产生式建模方法,如果鉴别器训练良好,那么生成器可以玩美的学习到训练样本的分布 GAN是渐进一致的!generative adversarial model

    2.GAN 是整幅图像进行衡量、评价和生成,生成采样的运行时间更短,一次产生一个样本,GAN考虑了整体信息且速度相对较快。

    3.GAN理论上可以训练任何生成网络,可以训练生成靠近真实数据的地方产生样本点的模型,没有必要遵循任何种类的因子分解去设计模型。

    4.劣势: 训练过程的稳定性和收敛性难以保证。

    目前Generative Adversarial Networks 的分类:

    1.CGAN:Conditional generative adversarial networks.

    2.DCGAN: deep convolution generative adversarial networks.

    3.VAEGAN:自动编码生成对抗网络

    GAN的起源:

    来源于博弈论的纳什均衡,包含generative model(G) 和 discriminative model (D) 。

    目的: D辅助G产生与真实数据分布一致的伪数据。


    GAN用于二次场降噪:

    1.模型的输入为随机高斯白噪声信号z。 --------->二次场实测信号

    2.噪声信号经由生成器经由G模型 映射到某个新的数据空间,得到生成数据G(z)。

    3.由D 模型 根据真实数据x(二次场反演的理论信号)与生成数据G(z)的输入来分别输出一个概率值,表示D判断输入是真实数据还是生成虚假数据的置信度,以此判断G的产生数据的性能的好坏。

    4.当D不能区别真实数据x和生成数据G(z)时,认为生成器G达到最优。


    D的目标是区分两者: D(x)尽可能大,而同时使D(G(z))尽量小,两者差异尽可能大。

    G的目标: 使产生的数据在D上的表现D(G(z))尽量与真实数据在D上的表现D(x)一致,让D不能区分生成数据与真实数据。

    D和G相互竞争相互对抗,G和D的性能在迭代过程中不断提高,直到最后D(G(z))和真实数据的表现D(x)一致后不再优化。

    加入求期望的操作,使G产生的数据既与真实数据有一定相似,同时又不完全同于真实数据,提高了模型的泛化能力。


    注意: GAN不需要预设数据分布,理论上可以完全逼近真实数据,这也是GAN最大的优势。

    特别注意,对于较大的图片,较多像素的情形,简单GAN的方式不太可控,经常出现训练崩塌的情形。


    GAN中,每次学习参数的更新过程,为了防止这种情形,设为D更新K回,G才更新1回。

    CGAN: 给GAN添加约束条件:草稿图生成图片

    DCGAN:将有监督的学习模型CNN和无监督学习的GAN结合在一起。

    infoGAN:输出改为G(z,c),有隐含意义的一组隐变量c和不能分解的有意义的noise z。

    对抗网路的目的是在高维非凹的参数空间中,找到纳什均衡。但在GAN中使用梯度下降只会找到低的损失,不能找到真正的纳什均衡。


    对工程实践的四点建议:

    1. discriminative model 最后一层去掉 sigmod 

    2.生成器与判别器的loss不取log

    3.每次更新判别器D之后,把D中参数的绝对值截断到一个固定常数

    4.用ADAM


    GAN的应用

    1.图片合成。

    2.深度GAN模型,进行图片修补能根据确实区域的周边区域进行语义层面的修补,如 DCGAN+ADAM完成图像修补。

    3.超分辨率:图像增强。  方法将16*16低分辨率图片作为约束条件,生成最合理解释的64*64的真实图片。

    如此较好的超分辨率结果仅在小类别、规则分割的图片中适用。

    超分辨率最通用的方法(super resolution generative adversarial networks,SRGAN)不依赖小类细化类别的数据集,能对各种类型的图片进行降噪和增强。SRGAN的特色是:

    1.将图像空间的损失,替换为一个生成图像整体方差的约束项,以保证图像的平滑性

    2.将真实数据与生成数据分别输入VGG-19网络根据得到的特征图的差异来定义损失项并对该差异加上规则化的处理。

    3.结合三个损失:对抗损失,图像平滑项,特征图差异,送入GAN网络,生成超分辨率图片。


    草稿图复原、图片上色、视频预测、文字生成图片(CGAN,以文本描述为条件来产生图像)(方法:文本进行编码后的特征与随机噪声信息串接输入产生器产生图像-->而编码后的文本特征也同时作为监督信号输入判别器以构建目标函数)


    计算智能---》 认知智能-------》感知智能

  • 相关阅读:
    oracle 日期和时间转换
    layui 分页 java后端封装
    excel 时间格式
    excel的编程VBA
    excel条件格式
    python列表变成字符串
    Django的ORM源码学习
    robot 源码解读6【元类和描述符类】
    @staticmethod
    python 类定义后调用名称也执行内部代码
  • 原文地址:https://www.cnblogs.com/ChenKe-cheng/p/8947050.html
Copyright © 2011-2022 走看看