常见的GAN网络的相关原理及推导

在上一篇中我们给大家介绍了GAN的相关原理和推导,GAN是VAE的后一半,再加上一个鉴别网络。这样而导致了完全不同的训练方式。

GAN,生成对抗网络,主要有两部分构成:生成器,判别器。

生成器网络的主要工作是负责生成样本数据,输入的是高斯白噪声z,输出的是样本数据向量x:

判别器网络的主要工作是负责检测样本的数据增加,输入真实或者生成的样本数据,输出样本的标签:

由于生成器和判别器都是需要经过网络进行训练的,所以两者都要能够微分。

生成对抗网络的工作方式是让第一代的G产生一些图片,然后把这些图片和一些真实的图片丢到第一代的D里面去学习,让第一代的D能够分别生成的图像和真实的图片。在训练第二代的G,第二代的G产生的图片,能够骗过第一代的D,在训练第二代的D,依次迭代。

那么,问题就来了,如何训练新一代的G来骗过上一代的D呢?

我们可以把新一代的G和上一代的D连起来形成一个新的NN,我们训练最终的输出接近1,然后我们那中间的结果当做我们新的图片的输出。

优化函数

生成器G固定之后,使用来评价Pdata和Pz之间的差异。优化方式,对于生成器优化而言,我们要最小化价值函数,对于判别器而言,我们要优化最大价值函数,不断的交替进行之后,能够达到有个平衡点,称之为纳什均衡点。

生成器最小化目标即为判别器将生成数据识别为假的概率的log值,对于上述提到的均衡点,它是判别代价函数的鞍点。

对于GAN的训练算法,步骤如下:

a、执行D-step的minibatch优化k次:

  1.从先验分布p(z)随机生成m个随机噪声向量z

  2.从数据集分布p(x)里随机获取m个样本x

  3.使用随机梯度上升优化判别器的代价函数

b.执行G-step的minibatch优化1次:

  1.从先验分布p(z)随机生成m个随机噪声向量z

  2.使用梯度下降优化生成器的代价函数

我们可以通过下面的曲线进一步理解训练过程:

其中,绿线为生成器的数据分布,黑线为真实数据的分布,蓝线为判别器的结果分布。

GAN的问题:

GAN的训练比较困难,主要存在收敛难,很难达到纳什均衡点,并且无法有效监控收敛状态,另一方面,模型容易崩溃,判别器快速达到最优,能力明显强于生成器,生成器将数据集中生成在判别器最认可的空间上,即输出多样性低,不使用于离散输出(不可微分)。

常见的GAN网络的相关原理及推导的更多相关文章

  1. GAN网络从入门教程(二)之GAN原理

    在一篇博客GAN网络从入门教程(一)之GAN网络介绍中,简单的对GAN网络进行了一些介绍,介绍了其是什么,然后大概的流程是什么. 在这篇博客中,主要是介绍其数学公式,以及其算法流程.当然数学公式只是简 ...

  2. GAN网络原理介绍和代码

    GAN网络的整体公式: 公式各参数介绍如下: X是真实地图片,而对应的标签是1. G(Z)是通过给定的噪声Z,生成图片(实际上是通过给定的Z生成一个tensor),对应的标签是0. D是一个二分类网络 ...

  3. GAN背后的数学原理

      模拟上帝之手的对抗博弈——GAN背后的数学原理 简介 深度学习的潜在优势就在于可以利用大规模具有层级结构的模型来表示相关数据所服从的概率密度.从深度学习的浪潮掀起至今,深度学习的最大成功在于判别式 ...

  4. GAN网络之入门教程(四)之基于DCGAN动漫头像生成

    目录 使用前准备 数据集 定义参数 构建网络 构建G网络 构建D网络 构建GAN网络 关于GAN的小trick 训练 总结 参考 这一篇博客以代码为主,主要是来介绍如果使用keras构建一个DCGAN ...

  5. 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上

    GAN网络架构分析 上图即为GAN的逻辑架构,其中的noise vector就是特征向量z,real images就是输入变量x,标签的标准比较简单(二分类么),real的就是tf.ones,fake ...

  6. 嵌入式操作系统VxWorks中网络协议存储池原理及实现

    嵌入式操作系统VxWorks中网络协议存储池原理及实现 周卫东 蔺妍 刘利强 (哈尔滨工程大学自动化学院,黑龙江 哈尔滨,150001) 摘  要  本文讨论了网络协议存储池的基本原理和在嵌入式操作系 ...

  7. 网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析

    网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析 CPM CPT CPC CPA CPS SEM SEO在网络营销中是什么意思?SEO和SEM的区别是? CPM(Cost ...

  8. php特级课---5、网络数据转发原理

    php特级课---5.网络数据转发原理 一.总结 一句话总结: OSI七层模型 路由器 交换机 ARP 代理ARP 1.OSI7层模型? 电缆 MAC地址 ip 端口 应用 1层 通信电缆 2层 原M ...

  9. GAN网络从入门教程(一)之GAN网络介绍

    GAN网络从入门教程(一)之GAN网络介绍 稍微的开一个新坑,同样也是入门教程(因此教程的内容不会是从入门到精通,而是从入门到入土).主要是为了完成数据挖掘的课程设计,然后就把挖掘榔头挖到了GAN网络 ...

随机推荐

  1. R - C Looooops POJ - 2115 (exgcd)

    题目大意:很好理解,一个for循环语句,从a开始到b结束,步长是c,模数是pow(2,k) 问,最少循环多少次,才能到达b,如果永远都到不了b,输出FOREVER 题解:其实就是求一个线性方程,cx= ...

  2. linux通过进程名查看其占用端口

    1.先查看进程pid ps -ef | grep 进程名 2.通过pid查看占用端口 netstat -nap | grep 进程pid 参考: https://blog.csdn.net/sinat ...

  3. [RCTF2015]EasySQL

    [RCTF2015]EasySQL EasySQL github 打开靶机,是如下界面 到注册页面,试了一下,username 和 email 处有过滤,直接 fuzz 一下哪些字符被禁了 注册成功之 ...

  4. 看完肯定懂的 Java 字符串常量池指南

    字符串问题可谓是 Java 中经久不衰的问题,尤其是字符串常量池经常作为面试题出现.可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细分析起来却又发现不太明白. 背景说明 ...

  5. 总结:js世界中的特殊符号

    常用符号:+ ++ - -- || / /' && 等 这些基本上每天都能用到,但是 js 世界中有些特殊符号是不常用的,我也是偶然在阅读大神代码的时候发现的,一番查找之后得出了以下结 ...

  6. Windows环境,获取当前线程的ID,GetCurrentThreadId

    GetCurrentThreadId 打印格式:0x%08lx 头文件:processthreadsapi.h (include Windows Server 2003, Windows Vista, ...

  7. 获取 ProgramData 之类的环境变量(文件夹路径)的值

    GetEnvironmentVariable Recognized Environment Variables https://docs.microsoft.com/en-us/windows/dep ...

  8. c++中set 的用法

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  9. linux sort 命令实用手册

    Linux 中的sort 命令是一个很实用的工具,用于对文本内容以行为单位进行ASCII 码排序,默认按照升序进行排序(当然也可以按照降序). sort 命令的格式如下: sort `参数` `文件名 ...

  10. bootstrap-内联文本元素-小号文本

    说明 使用 <small> 标签包裹,其内的文本将被设置为父容器字体大小的 85% 示例 <!DOCTYPE html> <html lang="zh-CN&q ...