Gan学习

2023-11-07

参考博客:https://blog.csdn.net/u010678153/article/details/54629393 

                  https://www.cnblogs.com/Charles-Wan/p/6238033.html

 

GAN原理介绍

说到GAN第一篇要看的paper当然是Ian Goodfellow大牛的Generative Adversarial Networks(arxiv:https://arxiv.org/abs/1406.2661),这篇paper算是这个领域的开山之作。

GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是:

  • 生成模型G是一个生成图片的网络,生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z ,通过这个噪声生成图片,记做G(z),追求效果是越像真实样本越好。
  • 判别模型D是一个判别图片的网络,判别模型 D 是一个二分类器,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。如图所示:

那么GAN是如何来做的呢?首先,我们又一个第一代的Generator,然后他产生一些图片,然后我们把这些图片和一些真实的图片丢到第一代的Discriminator里面去学习,让第一代的Discriminator能够真实的分辨生成的图片和真实的图片,然后我们又有了第二代的Generator,第二代的Generator产生的图片,能够骗过第一代的Discriminator,此时,我们在训练第二代的Discriminator,依次类推。

 

如何训练新一代的Generator来骗过上一代的Discriminator,方法其实很简单,你可以把新一代的Generator和上一代的Discriminator连起来形成一个新的NN,我们希望最终的输出接近1,然后我们就可以拿中间的结果当作我们的新的图片的输出,下图很形象的显示了上面的过程:

在训练的过程中固定一方,更新另一方的网络权重(即上图中的update the parameters),交替迭代,在这个过程中,双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡(纳什均衡),此时生成模型 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别模型再也判别不出来结果,在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5,约等于乱猜。

这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。

以上只是大致说了一下GAN的核心原理,如何用数学语言描述呢?这里直接摘录论文里的公式:

图片描述

简单分析一下这个公式:

  • 整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。
  • D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。
  • G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。
  • D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)

那么如何用随机梯度下降法训练D和G?论文中也给出了算法:

å¾çæè¿°

这里红框圈出的部分是我们要额外注意的。第一步我们训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。

最右边的一列是真实样本的图像,前面五列是生成网络生成的样本图像,可以看到生成的样本还是很像真实样本的,只是和真实样本属于不同的类,类别是随机的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gan学习 的相关文章

  • Google Material Design 设计分享

    Material design 核心思想是把物理世界的体验带进屏幕 还原最贴近真实的体验 达到简洁与直观的效果 详情请参阅 https developer android com design Google对app设计的一些要求案例 1 用
  • 充电管理BQ25619使用

    特征说明 1 Power On Reset POR 该装置通过VBUS usb充电口 和VBAT 电池 中的电压较高者给内部供电 当VBUS的电压上升到超过V BUS UVLOZ值或VBAT的电压超过V BAT UVLOZ值时 睡眠比较器
  • 谈前后端分离开发模式

    前后端分离的开发模式 系统分析阶段 系分和前端开发人员约定好页面上所需的逻辑变量 进入功能开发阶段 前端开发人员进行前台页面结构 样式 行为层的代码编写 并根据约定好的变量 逻辑规则 完成不同情况展示不同的表现 而后端开发人员 只需要按照约
  • 【软件测试 #3】软件测试基本概念作业题

    测试项目周期包括以下哪个阶段 1 0分 A 需求测试阶段 B 测试设计阶段 C 测试执行阶段 D 以上都是 正确答案 D 我的答案 D得分 1 0分 2 在进行静态白盒测试的过程中 正式审查的基本要素不包括下列哪一项 1 0分 A 确定问题

随机推荐

  • 加入SC-SIG,构建智能合约及分布式应用

    为了让更多开发者参与到智能合约库组件优化中 近期社区持续开展 智能合约库有奖征码 活动 随着活动的进行大家对智能合约库的关注度与讨论度日趋高涨 在此背景下 FISCO BCOS智能合约与分布式应用专项兴趣小组 Smart Contract
  • ue4,用三星MR开发时,出现分屏,而且屏幕在左上角是怎么回事?

    这个问题困扰了几天 后来测试发现跟模式无关 跟三星MR设置无关 因为正常的地图是可以看的 最后终于找到了原因 如果设置了窗口 全屏 分辨率的话 会出现这种情况 不用的话就好了 至于为什么不能设置 目前不知道 在用MR开发 并且只开启Wind
  • 在ubuntu环境下执行openssl编译和安装

    参考链接 工具系列 Ubuntu18 04安装Openssl 1 1 1 Tinywan的技术博客 51CTO博客 密码学专题 openssl编译和安装 MY CUP OF TEA的博客 CSDN博客 openssl 编译安装 下载 sou
  • Axure学习之路01——元件介绍

    本系列博客的目的是记录Auxure软件使用的一些要点 学习课程来自 Axure 9从入门到精通 目录 一些设计资源 基本元件 图片 占位符 图像热区 动态面板 内联框架 中继器 表单元件 文本框 文本域 下拉列表 列表框 复选框 单选按钮
  • 如何产生10个100-1000的随机数

    假设max 1000 min 100 random nextInt 1000 是取0 1000之间的数 max min 1 是901 取余数所得的数应该是0 900吧 最后再加上最小数 100 0 900 最小数一起加 得出100 1000
  • Linux下安装运行keil uVision 4 (MDK v4.7)

    前几日把Keil uVision mdk v4 7 在ubuntu 12 04LTS上运行起来了 过程还算顺利 分享下步骤给需要的朋友 先上个安装完的屏幕截图 我用的是老土的Gnome Classic界面 可以看到wine菜单里有keil
  • CVE-2022-22965:Spring远程代码执行漏洞

    CVE 2022 22965 Spring Framework远程代码执行漏洞 本文仅为验证漏洞 在本地环境测试验证 无其它目的 漏洞编号 CVE 2022 22965 漏洞说明 Spring framework 是Spring 里面的一个
  • Mac下如何彻底删除IntelliJ IDEA

    有时候破解版idea 或者对idea进行各种操作后 idea 坏 掉了 那就要删除再重新安装一个 但是单纯的将整个idea移入废纸篓后 重新安装idea 会恢复到删除之前的状态 里面包含你写的代码啊 破解是改变的文件的 十分麻烦 今天老9教
  • 详解MySQL的三层架构(连接层、服务层、引擎层)

    首先来看一张很经典的图 连接层 Connectors 即为连接层 我们在访问MySQL服务前 第一件事就是建立TCP链接 经过三次握手建立连接成功后 MYSQL对TCP传输过来的账号密码做身份认证 权限获取 TCP链接收到请求后 必须要分配
  • 膜拜大佬!java设计模式刘伟课后答案

    一 先来解读 23种设计模式要点 1 单例模式 Singleton Pattern 2 工厂模式 3 抽象工厂模式 Abstract Factory Pattern 4 模板方法模式 Template Method Pattern 5 建造
  • 劳务派遣管理系统_适合人力资源外包、劳务派遣和劳务外包公司使用的人力资源管理系统有哪些?...

    人力资源外包 劳务派遣和劳务外包使用的管理系统有啥不一样 从区别上 人力资源外包里面的 包 指的是人力资源部门的职能 而劳务派遣则派的是 人 由劳务派遣单位与被派遣劳动者签订劳动合同 对于劳务外包而言 包的是 活儿 当然也包了 人 劳务外包
  • 飞书与德勤管理咨询达成战略合作,赋能企业实现智慧运营与管理

    3月19日 飞书宣布与德勤管理咨询达成战略合作 双方将携手整合资源 渠道以及解决方案 通过德勤管理咨询智慧运营方案 以及飞书高效 愉悦的一站式沟通与协作平台 为中国的各类企业客户提供高效管理 智慧管理解决方案 伴随着经济全球化与信息技术革新
  • 图像质量评估指标:PSNR / SSIM 原理及Python代码

    PSNR 峰值信噪比 Peak Signal to Noise Ratio 用于衡量两张图像之间差异 例如压缩图像与原始图像 评估压缩图像质量 复原图像与ground truth 评估复原算法性能等 公式 其中 MSE 为两张图像的均方误差
  • 【Spring Boot丨序列化、反序列化】

    序列化 反序列化 概述 Jackson 序列化和反序列化 简介 自定义序列化器 注册外部序列化程序 指定类的 Json 序列化 反序列化 主页传送门 传送 概述 序列化是将对象转换为字节序列的过程 而反序列化则是将字节序列恢复为对象的过程
  • Linux下实用批处理脚本

    本文首发在我的个人博客 https jlice top p 7q1p8 欢迎大家前去参观 么么哒 经常需要在Linux下批量处理图片 想了想 还是写个实用的批处理小脚本一劳永逸 代码 SRC为待处理目录 DST为目标目录 也就是保存处理后的
  • RedHat系统NetworkManage网络管理工具简介及相关命令(lspci、lshw)

    1 RedHat网络管理工具简介 在早期的Linux发行版本中几乎所有的网络服务都是network服务 从RHEL7开始 红帽官方建议采用NetworkManage方式配置网络 而不建议再使用network服务这种传统的方式配置网络 因为网
  • C++中对象的动态建立与释放详解

    我们知道可以用new运算符可以动态的分配内存 用delete运算符可以释放这些内存 当我们使用new运算符动态的分配一个内存之后 会自动返回一个该内存段的起始地址 也就是指针 下面先给出一个new和delete基本应用的例子 回顾一下它的基
  • Python自动化工具(自动化操作)

    一 多层目录的遍历 1 绝对路径和相对路径 相对路径 此路径下的 比绝对路径短 绝对路径 完整的路径 根目录开始 C盘等 C 或 开始 2 不同系统的路径问题 import os 来适应不同系统 版本windows和liunx 3 多层级的
  • 最大堆 和 优先队列

    最大堆 MaxHeap java import java util Random 后面测试用 public class MaxHeap
  • Gan学习

    参考博客 https blog csdn net u010678153 article details 54629393 https www cnblogs com Charles Wan p 6238033 html GAN原理介绍 说到