GAN的全称是 Generative Adversarial Networks,中文名称是生成对抗网络。原始的GAN是一种无监督学习方法,巧妙的利用“博弈”的思想来学习生成式模型。

1 GAN的原理

GAN的基本原理很简单,其由两个网络组成,一个是生成网络G(Generator) ,另外一个是判别网络D(Discriminator)。它们的功能分别是:

生成网络G:负责生成图片,它接收一个随机的噪声 $z$,通过该噪声生成图片,将生成的图片记为 $G(z)$。

判别网络D:负责判别一张图片是真实的图片还是由G生成的假的图片。其输入是一张图片 $x$ ,输出是0, 1值,0代表图片是由G生成的,1代表是真实图片。

在训练过程中,生成网路G的目标是尽量生成真实的图片去欺骗判别网络D。而判别网络D的目标就是尽量把G生成的图片和真实的图片区分开来。这样G和D就构成了一个动态的博弈过程。这是GAN的基本思想。

在最理想的状态下,G可以生成足以“以假乱真”的图片 $G(z)$。对于D来说,它难以判断G生成的图片究竟是不是真实的,因此 $D(G(z)) = 0.5$ (在这里我们输入的真实图片和生成的图片是各一半的)。此时得到的生成网络G就可以用来生成图片。

2 GAN损失函数

从数学的角度上来看GAN,假设用于训练的真实图片数据是 $x$,图片数据的分布为 $p_{data}(x)$,生成网络G需要去学习到真实数据分布 $p_{data}(x)$。噪声 $z$ 的分布假设为$p_z(z)$,在这里 $p_z(z)$是已知的,而 $p_{data}(x)$ 是未知的。在理想的状态下$G(z)$ 的分布应该是尽可能接近$p_{data}(x)$,G将已知分布的$z$ 变量映射到位置分布 $x$ 变量上。

根据交叉熵损失,可以构造下面的损失函数:

$ V(D,G) = E_{x~p_{data}(x)} [ln D(x)] + E_{z~p_z(z)} [ln(1-D(G(z)))] $

其实从损失函数中可以看出和逻辑回归的损失函数基本一样,唯一不一样的是负例的概率值为 $ 1-D(G(z))$。

损失函数中加号的前一半是训练数据中的真实样本,后一半是从已知的噪声分布中取的样本。下面对这个损失函数详细描述:

1)整个式子有两项构成。 $x$表示真实图片,$z$表示输入G网络的噪声,而$G(z)$ 表示G网络生成的图片。

2)$D(x)$ 表示D网络判断真实图片是否真实的概率 ,即 $P(y=1 | x)$。而$D(G(z))$ 是D网络判断$G$生成的图片是否真实的概率。

3)G的目的:G应该希望自己生成的图片越真实越好。也就是说G希望 $D(G(z))$ 尽可能大,即$P(G(z) = 1 | x)$,这时 $V(D, G)$ 尽可能小。

4)D的目的:D的能力越强,$D(x)$ 就应该越大,$D(G(x))$应该越小(即假的图片都被识别为0)。因此D的目的和G的目的不同,D希望 $V(D, G)$ 越大越好。

3 GAN建模流程

在实际训练中,使用梯度下降法,对D和G交替做优化,具体步骤如下:

1)从已知的噪声分布 $p_z(z)$中选取一些样本

${z_1, z_2, ......, z_m}$

2)从训练数据中选出同样个数的真实图片

${x_1, x_2, ......, x_m}$

3)设判别器D的参数为 $\theta_d$,其损失函数的梯度为

$ \nabla \frac{1}{m} \sum_{i=1}^m [lnD(x_i) + ln(1-D(G(Z_I)))] $

4)设生成器G的参数为 $\theta_g$,其损失函数的梯度为

$ \nabla \frac{1}{m} \sum_{i=1}^m [ln(1-D(G(Z_I)))] $

在上面的步骤中,每更新一次D的参数,紧接着就更新一次G的参数,有时也可以在更新 $k$ 次D的参数,再更新一次G的参数。

生成对抗网络的损失函数如何设计_生成对抗网络(GAN)相关推荐

  1. 生成对抗网络的损失函数如何设计_如何检测极小人脸?试试超分辨率

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  2. 生成对抗网络的损失函数如何设计_理解生成对抗网络,一步一步推理得到GANs(一)...

    作者:Joseph Rocca 编译:ronghuaiyang 导读 GANs在2014年提出,然后就在图像生成领域取得了巨大的成功,但是其背后的原理却不是那么好理解,这篇文章带你从最基础的随机变量开 ...

  3. 学生教育云平台登录入口_国家中小学网络云平台登录入口_国家中小学网络云平台网...

    国家中小学网络云平台登录入口_国家中小学网络云平台网,国家中小学网络云平台资源包括防疫教育.品德教育.专题教育.课程学习.电子教材.影视教育及有关地方教育资源.教育部利用国家中小学网络云平台和中国教育 ...

  4. 生成对抗网络的背景与意义_生成对抗网络的意义

    生成对抗网络的背景与意义 为什么我们需要生成对抗网络:-(Why do we need Generative Adversarial Network: -) If we show a lot and ...

  5. 基于linux网络聊天室的设计,参考基于linux网络聊天室的设计.doc

    参考基于linux网络聊天室的设计 长沙理工大学<高级操作系统>课程设计报告学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 课程 ...

  6. 网络收敛是什么意思_深度学习网络收敛之后的loss数值代表什么?

    忽略loss函数直接对loss数值进行讨论... 嗯--- 天呐!流氓! loss数值代表啥呢?我觉得代表的就是你的模型输出与真实结果之间的距离(度量),这个距离的计算方式是你自己定义的(loss函数 ...

  7. 手机网络怎么共享给电脑_电脑没网络怎么回事?如何解决电脑没网络问题

    在网络故障处理中遇到过千奇百怪的问题,这里就说一个比较怪异的问题.一个网线插口,有的电脑插上网线可以正常上网,而有的电脑插上就显示断开连接.这是什么原因呢?该怎么解决电脑没网络呢?下面,小编就来跟大家 ...

  8. 网络工程课程设计_某学校网络设计

    网络工程课程设计--某学校网络设计 Spring框架是一个开源的JavaEE的应用程序 主要核心是IOC(控制反转/依赖注入)和AOP(面向切面编程)两大技术 1. 需求分析 1.1 用户需求 用户需 ...

  9. java web网络硬盘设计_基于JavaEE网络硬盘的设计与实现

    DOI. 10.14004巧cnkl.ckt. 2015,3111 1课题背景 随着信息化进程的加快,文件的存储数量的逐年递增,在朋友同事之间文件数据相互之间进行分享学习越来越频繁,因此在工作和生活中 ...

最新文章

  1. 审稿人眼中的好论文到底长什么样?
  2. Unable to open the physical file XXX.mdf
  3. Pat乙级1084 外观数列
  4. java logfaction_Java调试的变迁:从System.out.println到log4j
  5. 思科设备故障检测检查表
  6. mysql配置多个域名访问吗,tomcat部署多个项目,通过域名解析访问,不同的网站...
  7. 复杂update_Python 代码判断逻辑太复杂?这里有几条最佳实践和技巧
  8. methods中axios里的数据无法渲染到页面
  9. 深度揭秘“蚂蚁双链通” 1
  10. WMI服务故障,VBS脚本无法运行错误
  11. spring-data-jpa动态条件查询
  12. 【FPGA自学总结】Testbench测试代码推荐编写规范
  13. .NET破解之谷歌地图下载助手-睿智版
  14. 2022国产WMS仓库管理系统排名
  15. StretchDIBits函数
  16. 智能语音概念界定及技术架构
  17. 超酷HTML5 3D动画精选
  18. centos7 80端口被占用导致nginx或httpd无法启用的解决方法
  19. Redis 入门和 RedisTemplate 常用方法(常用命令 + 案例源码)
  20. Phoenix二级索引那些事儿(下)

热门文章

  1. NetCore Api 读取Apollo配置
  2. Android动画Animator家族使用指南
  3. 洗地机和扫地机器人哪个更值得买、哪个更好用?洗地机测评
  4. GC是什么,为什么要有GC?
  5. Linux毕业设计:基于OpenCV和QT库实现的人脸识别考勤/门禁系统(arm嵌入式ubuntu)
  6. python画二维矩阵图_Python实现二维数组输出为图片
  7. 照片记录APP:厂家业务员外勤到岗情况防作假的水印相机
  8. spring的BeanUtils属性copy
  9. React的Hooks
  10. linux 查找当前目录下文件,linux 怎么查找当前目录下最大的文件夹