GAN 生成对抗神经网络

GAN

文章目录

  • GAN
    • GAN的结构
    • GAN的目标函数
    • GAN的训练
    • GAN的优势和不足
      • 优势
      • 不足

GAN的结构

GAN的设计灵感来源于博弈论中的零和博弈(Zero-sum Game),在零和博弈中,参与双方的收益是完全相反的,一方的收益必然导致另一 方的损失,总收益为零。

GAN 主 要 由 两 部 分 组 成 : 生 成 器 ( Generator ) 和 判 别 器 (Discriminator),它们分别扮演了两个不同的角色。 生成器的任务是生成接近真实数据分布的样本,而判别器的任务则是尽可 能地区分真实的样本和生成器生成的样本。 通过生成器和判别器之间的对抗,GAN可以学习到生成高质量样本的能力。

以图片生成为例: 生成器是一个生成图片的网络,它使用服从某一分布(均匀分布或高斯 分布)的噪声生成一个类似真实训练数据的图片,记作𝐺(𝒛),追求效果 是越像真实图片越好。 判别器是一个二分类器,用来判断一个图片是不是“真实的” ,它的输入是采样的真实图片𝒙以及生成器生成的图片𝐺(𝒛),输出是输入图片是真实图片的概率,如果输入图片来自真实数据,那么判别器输出大的概率,否则,输出小的概率。

image-20240425145159732

GAN的目标函数

GAN的目标是使生成器生成的数据能够骗过判别器,因此需要定义一个目标函数,使得判别器判断真实样本为“真” 、生成样本为“假”的概率最小化。
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G\max_DV(D,G)=E_{\boldsymbol{x}\thicksim p_{data}(\boldsymbol{x})}[logD(\boldsymbol{x})]+E_{\mathbf{z}\thicksim p_{\mathbf{z}}(\mathbf{z})}[\log{(1-D(G(\mathbf{z})))}] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
其中, V ( D , G ) V(D,G) V(D,G)表示真实样本和生成样本的差异程度; p d a t a ( x ) p_{data}(x) pdata(x)表示真实数据 x x x的分布, p z ( z ) p_{z}(z) pz(z)表示噪声z的分布, D ( x ) D(x) D(x)表示判别器认为 x x x是真实样本的概率, D ( G ( z ) ) D(G(\mathbf{z})) D(G(z))表示判别器认为生成样本 G ( z ) G(\mathbf{z}) G(z)是假的概率。

训练GAN的时候,判别器希望目标函数最大化,也就是使判别器判断真实样本为“真” 、判断生成样本为“假”的概率最大化,要尽量最大化自己的判别准确率。可以写作损失函数的形式:
L ( G , D ) = − E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] − E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] L(G,D)=-E_{x\sim p_{data}(x)}[\log D(x)]-E_{z\sim p_z(z)}[\log(1-D(G(z)))] L(G,D)=Expdata(x)[logD(x)]Ezpz(z)[log(1D(G(z)))]
与判别器相反,生成器希望目标函数最小化,也就是迷惑判别器,降低其对数据来源判断正确的概率,也就是最小化判别器的判别准确率。如果采用零和博弈,生成器的目标是最小化𝑉(𝐷, 𝐺),而实际操作时发现零和博弈的训练效果并不好,生成模型一般采用最小化公式:
E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] E_{\mathbf{z}\sim p_{\mathbf{z}}(\mathbf{z})}[\log\left(1-D(G(\mathbf{z}))\right)] Ezpz(z)[log(1D(G(z)))]

GAN的训练

GAN的训练过程包含三个步骤:

  1. 使用采样的真实数据𝒙训练判别器,即输入真实数据𝒙到判别器,前向传播,得到输出为1(表示判断结果为真),之后使用反向传播算法更新判别器的参数。
  2. 使用生成器生成的数据𝐺(𝒛)训练判别器,即输入生成器生成的数据𝐺(𝒛)到判别器,前向传播,得到输出为0(表示判断结果为假),之后使用反向传播算法再次更新判别器的参数。
  3. 最后,使用生成器生成的数据𝐺(𝒛)训练生成器,即输入生成器生成的数据𝐺(𝒛)到判别器,采用上一步训练好的判别器的参数(冻结判别器的参数)前向传播,得到输出为1(表示判断结果为真),之后使用反向传播算法更新生成器的参数,这一步的目的在于训练更好的生成器,以迷惑判别器,使之将生成器生成的数据判别为真。

在这个过程中,双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡。此时,生成器生成的数据分布无限接近真实数据的分布,判别器判别不出输入的是真实数据还是生成的数据,输出概率都是百分之五十。

image-20240425150923061

训练算法如下
在这里插入图片描述

GAN的优势和不足

优势

  1. 任何一个可微分函数都可以参数化D和G(如深度神经网络)
  2. 支持无监督方法实现数据生成,减少了数据标注工作
  3. 生成模型G的参数更新不是来自于数据样本本身(不是对数据的似然性进行优化),而是来自于判别模型D的一个反传梯度。

不足

  1. 无需预先建模,数据生成的自由度太大
  2. 得到的是概率分布,但是没有表达式,可解释性差。
  3. D与G训练无法同步,训练难度大,会产生梯度消失问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pymilvus执行多向量搜索

pymilvus执行多向量搜索 从 Milvus 2.4 开始,引入了多向量支持和混合搜索框架,单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用&#xff…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-1.3

前言: 本文是根据哔哩哔哩网站上视频“正点原子[第二期]Linux之ARM(MX6U)裸机篇”的学习笔记,在这里会记录下正点原子Linux ARM MX6ULL 开发板根据配套的哔哩哔哩学习视频所作的实验和笔记内容。本文大量的引用了正点原子哔哔哩网…

Python的上下文管理器(以PIL库为例)

在Python中,上下文管理器是一种支持上下文管理协议的对象,这种协议包括两个方法:__enter__()和__exit__()。这些方法使对象能够在代码块开始时执行一些设置或初始化工作(通过__enter__()),以及在代码块结束…

初学python记录:力扣2739. 总行驶距离

题目: 卡车有两个油箱。给你两个整数,mainTank 表示主油箱中的燃料(以升为单位),additionalTank 表示副油箱中的燃料(以升为单位)。 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了…

new String和直接赋值的一些问题

分析1 我们先看以下代码: String str1 "abc"; // 在常量池中String str2 new String("abc"); // 在堆上System.out.println(str1 str2)以上结果的输出是什么? 输出:false 前置知识: 在JVM中&#xff0c…

C++静态变量

C语言中与“静态”相关的词包括,静态全局变量,静态局部变量和静态函数,关键词是static。C语言中的变量从作用域分,可以分为全局变量和局部变量;从存储方式分,可以分为静态存储方式和动态存储方式。 1. 静态…

电脑怎么拖动文件到想要的位置?电脑上拖拽没了的文件怎么找回

在日常的办公和学习中,电脑文件拖拽操作是每位用户都不可或缺的技能。然而,有时在拖动文件时,可能会因为误操作或其他原因,导致文件消失或移至未知位置。本文将详细解析如何在电脑上轻松拖动文件到指定位置,并为您提供…

【前端必看】10年资深前端工程师,聊点行业现状与自我突破!

作为一名拥有10年前端开发经验的资深工程师,曾在蚂蚁金服等一线大厂历练,现在则在一家上市公司享受较为宽松的工作节奏。今天,我想和大家聊聊前端开发的就业现状,以及如何在这个竞争激烈的市场中突出重围。 感兴趣的可以看看这个…

php空合并运算符,三元运算符,PHP高级

什么是空合并运算符 提出问题 下面的php代码,来自于laravel框架,请问这里的 ?是什么意思 $request->user()?->tokenCan(*)解释 在这段 PHP 代码中,? 是一个 空合并运算符。它用于将两个表达式组合在一起,并返回第一个…

HTTP简述

简述一次网络请求过程 域名解析 通过URL查找服务器IP 如访问百度,www.baidu.com, www是服务器名baidu可以理解为公司名或私人名com是域名根服务器 浏览器先访问本地文件Host文件,检查文件中是否有与域名匹配的IP地址,如果有直接访…

【重学Python】Day5 长篇:字符串和常用数据结构

字符串和常用数据结构 一、转义字符二、切片三、字符串的处理四、格式化输出五、列表list1、列表的基本运算2、列表的添加、删除元素3、列表的切片4、列表的排序 六、生成式和生成器七、元组八、集合九、字典 在Python程序中,如果我们把单个或多个字符用单引号或者双…

GaussDB轻量化运维管理工具介绍

前言 本期课程将从管理平台的架构出发,结合平台的实例管理、实例升级、容灾管理和监控告警的功能和操作介绍,全面覆盖日常运维操作,带您理解并熟练运用GaussDB运维平台完成运维工作。 一、GaussDB 运维管理平台简介 开放生态层 友好Web界面…

OWASP发布十大开源软件安全风险及应对指南

​ 最近爆发的XZ后门事件,尽管未酿成Log4j那样的灾难性后果,但它再次敲响了警钟:软件供应链严重依赖开源软件,导致现代数字生态系统极其脆弱。面对层出不穷的安全漏洞,我们需要关注开源软件 (OSS)风险 ,改进…

通过代理IP实现匿名网上冲浪

目录 前言 一、代理IP的原理 1.1 什么是代理IP? 1.2 代理IP的工作原理 二、使用代理IP实现匿名网上冲浪的代码示例 三、如何获取代理IP 四、使用代理IP的注意事项 五、总结 前言 在互联网上冲浪是我们生活中常见的一项活动,然而,在某…

XiaodiSec day017 Learn Note 小迪安全学习笔记

XiaodiSec day017 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day 17 主要内容: php 框架 thinkPHPyiilaravel 使用 fofa 搜索 thinkphp 市面上 thinkphp5 版本较多 url 结构 域名/.php(文件名)/index(目录)/index(函数名)模块名-控…

XL7015输出12V电源设计

描述 XL7015是一款高效、高压降压型DC-DC转换器,固定150KHz开关频率,可提供最高0.8A输出电流能力,低纹波,出色的线性调整率与负载调整率。XL7015内置固定频率振荡器与频率补偿电路,简化了电路设计。PWM控 制 环 路 可 …

Android 组件提供的状态保存(saveInstanceState)与恢复(restoreInstanceState)

在Android的组件Activity中,有这样一对方法: onSaveInstanceeState 和 onRestoreInstanceState 这两对方法,可以让我在Activiy被异常销毁时,保存状态;以及在Activity重建时,恢复状态。 比如:当我们在输入…

只有IP没有域名怎么实现HTTPS访问

只有IP地址没有域名可以实现HTTPS访问?虽然通常情况下SSL证书是与域名关联并颁发的,但确实存在针对IP地址发放的SSL证书。这种类型的证书允许服务器通过HTTPS协议为其公网IP地址提供安全的Web服务。这意味着用户可以直接在浏览器中输入服务器的IP地址&am…

免翻!全球最大免费书库Zlibrary最新镜像,国内可直接访问,赶紧下书

刚刚,“知识大航海”群里,有位群友分享了一个Zlibrary镜像地址,感谢这位群友的热心分享,这个地址国内可以直接访问! 在“王不留”GZ号,写“zlib”四个字母,有Zlibrary镜像网址、官方网址&#x…

搜维尔科技:如何选择最佳的xsens动作捕捉设备

xsens介绍 如何选择最佳的xsens动作捕捉设备 选择最佳的 Xsens 动作捕捉设置并不总是像我们希望的那样简单。根据每个人的情况,会有不同的选择、要求和挑战。 这就是我们创建此博客的原因:帮助您做出最适合您的决定。 您已经决定继续使用 Xsens 了吗…