GAN的原理说起来很简单,就是一个生成网络,一个鉴别网络,两个网络不断对抗各自优化,道高一丈,魔高一尺,道再高一丈的过程。

那么gan到底是如何通过对抗,就可以使得随机的一张图可以生成我们想要的图片呢?

gan的目的很简单,希望构建一个从隐变量 Z 生成目标数据 X 的模型,也就是说假设了服从某些常见的分布(比如正态分布或均匀分布),然后希望训练一个模型 X=g(Z),这个模型能够将原来的概率分布映射到训练集的概率分布,目的就是进行分布之间的变换。

通俗的来讲,我们希望有一个模型G,可以使得输入随机分布的噪声X,而得到我们希望的分布Y,即Y=G(X), 而我们已有的标签就是希望得到的真实分布T。也就是说我们希望Y与T的分布可以越来越接近,达到同样的分布。

但是,难的就在于,我们如何去判断这个通过G构造出来的数据集,它的分布跟我们目标的数据集分布是不是一样的呢?也就是如何判断我们生成网络中生成的图与真实的图是相近的呢?

也就是求两个概率分布的相似度,有人可能会想到KL散度,但是这里不太适用,KL散度是已知两个概率分布的函数,来计算。但是这里我们并不知道它们的概率分布的表达式,也就没法用KL来计算,我们这里只知道的是一批数据。

那该怎么办呢?gan的思想就凸显出来了,既然没有合适的度量方法,那就交给网络,去学一个不就解决了吗?这也就是鉴别器的原型。

也就是构建一个网络L,输入为真实标签Z和生成器Y生成的分布,来输出两个分布之间的距离。Z是提前给定的,可以当作是网络的参数。公式简写为: Θ为参数。

同时,需要注意的是我们要的是描述分布之间的距离而不是样本的距离,而分布本身跟各个 yi 出现的顺序是没有关系的,因此分布之间的距离跟各个 yi 出现的顺序是无关的,也就是说,尽管 L 是各个 yi 的函数,但它必须全对称的!

也就是说,我们先找一个有序的函数 D,然后对所有可能的序求平均,那么就得到无序的函数了。无序的最简单实现如下图,可以简单的理解为:分布之间的距离,等于单个样本的距离的平均。

说了这么多,回归到对抗上来,对于L,我们希望当我们输入为真实分布式,L越小越好,也就是分布相同,而输入为生成的分布时,我们希望越大越好,因为L的作用就是区别不同的分布。但是对于生成网络来说,我们希望生成的分布与真实分布相同,也就是越相近越好,也就是输入到L中越小越好这时候,gan的思想就出来了:gan!

同时,不难发现,如果对损失函数无约束的话 Loss 基本上会直接跑到负无穷去了。这也是我们不希望的。必要给 D 加点条件,一个比较容易想到的方案是约束 D 的范围,比如能不能给 D 最后的输出加个 Sigmoid 激活函数,让它取值在 0 到 1 之间?事实上这个方案在理论上是没有问题的,然而这会造成训练的困难。因为 Sigmoid 函数具有饱和区,一旦 D 进入了饱和区,就很难传回梯度来更新参数了。

所以,就引入了Lipschitz 约束。我们分析问题发现,我们距离是为了表明两个对象的差距,而如果对象产生的微小的变化,那么距离的波动也不能太大,这应该是对距离基本的稳定性要求。

至于如何加到损失函数中,就有很多的方法了。

        如有错误, 欢迎各位批评指正!

GAN(生成对抗神经网络 )的一点思考相关推荐

  1. 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了

    生成对抗神经网络(Generative Adversarial Nets,GAN)是一种深度学习的框架,它是通过一个相互对抗的过程来完成模型训练的.典型的GAN包含两个部分,一个是生成模型(Gener ...

  2. 论文盘点:GAN生成对抗样本的方法解析

    ©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 引言 对抗样本的生成方式很多.一般情况下会分成三大类,第一种是基于梯度的生成方式 ...

  3. 54_pytorch GAN(生成对抗网络)、Gan代码示例、WGAN代码示例

    1.54.GAN(生成对抗网络) 1.54.1.什么是GAN 2014 年,Ian Goodfellow 和他在蒙特利尔大学的同事发表了一篇震撼学界的论文.没错,我说的就是<Generative ...

  4. DLbest系列1——GAN生成对抗网络2

    GAN 6 COGAN(耦合生成对抗网络,1个模型2个用途) 7 LSGAN(最小二乘GAN,均方差替换交叉熵) 7.1 训练思路 8 CycleGAN(风格转换) 8.1 训练思路 9 SRGAN( ...

  5. 深度学习(九) GAN 生成对抗网络 理论部分

    GAN 生成对抗网络 理论部分 前言 一.Pixel RNN 1.图片的生成模型 2.Pixel RNN 3.Pixel CNN 二.VAE(Variational Autoencoder) 1.VA ...

  6. 深度学习 GAN生成对抗网络-1010格式数据生成简单案例

    一.前言 本文不花费大量的篇幅来推导数学公式,而是使用一个非常简单的案例来帮助我们了解GAN生成对抗网络. 二.GAN概念 生成对抗网络(Generative Adversarial Networks ...

  7. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 下

    文章目录 1 测试鉴别器 2 建立生成器 3 测试生成器 4 训练生成器 5 使用生成器 6 内存查看 上一节,我们已经建立好了模型所必需的鉴别器类与Dataset类. 使用PyTorch构建GAN生 ...

  8. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上

    文章目录 1 数据集描述 2 GPU设置 3 设置Dataset类 4 设置辨别器类 5 辅助函数与辅助类 1 数据集描述 此项目使用的是著名的celebA(CelebFaces Attribute) ...

  9. GAN -- 生成对抗网络

    GAN -- 生成对抗网络 生成对抗网络(英语:Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习.该方法由伊 ...

  10. 【轩说AI】生成模型(2)—— GAN生成对抗网络 + WGAN + Conditional GAN + Cycle GAN

    文章目录 GAN生成对抗网络(Generative Adversarial Network) 神经网络的本质就是一个函数,一个用于拟合的函数 生成模型面临的前所未有的问题 GAN解决这一问题的思想 O ...

最新文章

  1. RHEL7: unbound(DNS server)的简单配置
  2. premiere pr 视频截图
  3. 【迁移学习(Transfer L)全面指南】2021年迁移学习发展现状及案例探究
  4. poj1018 Communication System (有道翻译完全拯救不了)
  5. Linux虚拟文件系统VFS的相关数据结构和操作
  6. ObservableScrollView实现
  7. 西瓜书+实战+吴恩达机器学习(十二)监督学习之AdaBoost
  8. 关于以主机命名的网站集
  9. openwrt: ipq4019 路由 资料汇总
  10. diskgenius数据恢复软件,亲测可用!
  11. matlab矩阵乘法不同行,矩阵乘法在numpy/matlab/数学上的不同
  12. JAVA 配合 Vue前台,完成中文、拼音全拼、拼音首字母检索
  13. vue验证码图片显示不出来,将图片转换为base64格式显示
  14. ISP 因特网服务提供商
  15. [摘录]第4章 不道德的谈判策略
  16. git--基本知识点--1--工作区/暂存区/版本库
  17. 移动端和前端开发的共性
  18. c语言while break用法举例,c语言中continue和break的用法
  19. 程序员在写作这条路上到底能走多远?
  20. SQLTracker跟踪工具用法

热门文章

  1. 基于RetinaFace+ArcFace的人脸识别测试和验证代码
  2. C语言利用指针实现字符串逆序输出
  3. 火车头采集伪原创插件
  4. linux发包密码,linux版本CC发包工具教程
  5. git软件版本管理工具
  6. 漫谈工业软件(2)-IEC61499标准
  7. 【bat】 计算机清理原理,使用bat脚本清理系统垃圾的方法
  8. 三月主题读书整理——整理收纳,过心动生活
  9. 基于Flink建设流批一体实时数仓
  10. 魔域mysql下载_魔域单机版下载-魔域单机版 登录补丁+私服补丁+SQL下载 (附GM命令大全)-KK下载站...