初识对抗生成网络(GAN)

  在研究语义通信的时候,发现解码端很多都是用GAN或基于GAN来完成的。带着对GAN的好奇,对GAN进行了一个初步学习。这篇文章介绍一下和GAN相关的一些常识吧~
  本文围绕以下几个内容展开:
    1.什么是GAN?
    2.为什么要研究GAN?
    3.GAN具体的训练过程?
    4.GAN的优缺点
    5.GAN的应用
    6.现有的开源GAN项目

一、什么是GAN?

  GAN全称是Generative adversarial network,生成对抗网络。里面有两个关键词“生成”“对抗”。生成是GAN的作用,对抗是GAN的思想(现在不懂这句话也没关系,后面会介绍的~)。
  GAN有两个组成部分:生成网络(Generator)和判别网络(Discriminator)。给这两个网络下个定义。
    生成网络(Generator)负责生成模拟数据;
    判别网络(Discriminator)负责判断输入的数据是真实的还是生成的。
  GAN的精髓都在这两个网络上,前面说GAN的作用是生成,使用者希望能生成有效数据,也就是使用者想要的是良好的生成网络,但未经训练的网络生成效果是很差的,这时它需要一个“老师”来告诉它生成的数据是否有效并告诉它如何改进,这就是判别网络的作用:判别网络会对生成网络结果进行判断,如果发现了问题就把问题告诉生成网络,生成网络优化自己,这样生成网络的性能就会得到提升。
  上面一段话大致是GAN的思想,下面细化一下。上面一段话有一个问题:判断网络是怎么判断存在问题的?问题到达指什么?
  GAN常用于图像,就拿图像生成举例子。在图像生成任务中生成网络的作用就是生成图像。GAN会把生成图像和真实图像混在一起,一起送入判别网络中,判别网路需要将生成的和真实的进行区分。如果区分的好说明生成器不合格,没办法以假乱真。如果完全区分不出来那就说明生成器完全OK了。把上面的文字转换成图就是下面这样:
在这里插入图片描述
图源:https://blog.csdn.net/m0_61878383/article/details/122462196
  介绍了思想再来回头看看名字,“生成”“对抗”。生成是最终的目的——生成有效的数据,对抗是指生成器和判别器之间的关系,它们两个在对抗中不断优化迭代。
  GAN首次提出是在2014年(但是我在网上发现有点儿争议~),以论文形式发表:https://arxiv.org/pdf/1406.2661.pdf。它作为一种无监督算法,得到了很好的推广。

二、为什么会研究GAN?

  这里我分享一下自己的观点:
  1)首先是应用需求导向,AI时代模型训练需要大量的数据,通过人工采集标注已经被证明远远不够,所以自动化的生成数据是时代需要。同时还要保证生成的数据的有效的,所以对有效数据的高效生成变成了AI从业者必须克服的难关。
  2)其次是业务发展了,以图像为例。对于图像的使用不仅限于传输了,还包图像修复、图像合成、图像个性化生成等。图像的创造主体从人变成了AI,开始研究用AI做个性化生成。
  3)最后可能是对于无监督学习的需要,开始让机器自己监督自己训练,去形成机器间的对抗学习是无监督学习的一种重要方式。

三、GAN的具体训练过程

  其实训练过程就是生成器和判别器的博弈过程了。

  第一阶段:固定判别器,训练生成器

  使用一个还 OK 判别器,让一个「生成器G」不断生成“假数据”,然后给这个「判别器D」去判断。一开始,「生成器G」还很弱,所以很容易被揪出来。但是随着不断的训练,「生成器G」技能不断提升,最终骗过了「判别器D」。

  第二阶段:固定「生成器G」,训练「判别器D」

判别器「D」通过不断训练,提高了自己的鉴别能力,最终它可以准确的判断出所有的假图片。到了这个时候,「生成器G」已经无法骗过「判别器D」。

  循环一阶段和二阶段

  参考:https://zhuanlan.zhihu.com/p/622307792

  上面简单介绍下过程,现在回归到真实的网络训练上来。生成器和判别器是两个神经网络,神经网络的训练就是后向传播,也就是必须要找到损失函数,下面介绍下生成器和判别器的损失函数。
在这里插入图片描述
  如果用图来形容loss变化就是下面这样的:
在这里插入图片描述
图源:https://blog.csdn.net/m0_61878383/article/details/122462196

四、GAN的优缺点

  优点:

  1)本质上是一种架构,同时训练生成和判别网络,使两个问题都能变得很好,所以几乎适合所有问题。
  2)结果上看能生成更加清晰,更加真实的样本(理论一点儿说就是能更好的建模数据分布)
  3)使用无监督学习,不需要依赖大量标注数据。它可以从未标记的数据中学习出数据的分布和特征,可以被广泛的使用在无监督和半监督学习领域
  4)无需利用马尔科夫链反复采样,只是反向传播,无需在学习过程中进行推断,没有复杂的变分下界,避开近似计算棘手的概率的难题(我也不懂啥意思~),这点比VAE强。

  缺点:

  1)难训练,不稳定。训练GAN需要纳什均衡(存在优化方法使判别器和生成器都能达到最大收益),但是在实际训练中很容易D收敛,G发散。会有模式崩溃和模式塌缩的问题
  ps:模式崩溃和模式塌缩:生成器可能会陷入生成某些常见模式或样本的困境,导致模式崩溃。而模式塌缩是指生成器输出的样本缺乏多样性,倾向于生成同一或相似的样本。
  2)不适合离散形式数据,比如文本(目前GAN多用于生成图像数据)。
  3)评价指标困难:对于 GAN,很难找到一个普遍有效的评估指标来衡量生成样本的质量和多样性。通常需要结合人工评价和其他指标进行评估。
  4)训练时间较长:由于 GAN 模型的复杂性,训练时间往往较长。特别是对于复杂的数据集和高分辨率的图像,训练所需的计算资源可能很大。
  参考:https://zhuanlan.zhihu.com/p/73916148

五、GAN的应用:

  GAN的应用在这篇文章里面进行了介绍:https://zhuanlan.zhihu.com/p/73916148,总结一下还是图像的生成,这里写个目录
  1.生成图像数据集
  2.生成人脸照片
  3.生成照片,漫画人物
  4.图像到图像的转换
  5.文字到图像的转换
  6.语义到图像的转换
  7.自动生成模特
  8.照片到Emojis
  9.照片编辑
  10.预测不同年龄长相
  11.提高照片分辨率
  12.照片修复
  13.自动生成3D模型

六、现有的开源项目

  与GAN相关的成熟论文及源码都在下面这个项目里了:https://github.com/hindupuravinash/the-gan-zoo
  还发现一个pytorch版本的:https://github.com/eriklindernoren/PyTorch-GAN

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

03-微服务-Ribbon负载均衡

Ribbon负载均衡 1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 1.2.源码跟踪 为什么我们只输入…

FOURANDSIX:2.01

靶场下载 FourAndSix: 2.01 ~ VulnHub 信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:42 CST Nmap scan report for 192.168.1.1 Host is up (0.00030s latency). MAC Address: 00…

JavaScript 基础三part1.数组

JavaScript 基础三part1.数组 2.1 数组是什么2.2 数组的基本使用(1)声明(2)取值(3)一些术语(4)遍历数组 2.3 操作数组(1)修改(2)新增&…

SpringBoot日志打印Logback详解【子节点详解】【附案例】

笑小枫的专属目录 1. 背景2. 什么是Logback3. SpringBoot使用logback介绍4. 自定义logback配置5. 如何把日志同步到ES中6. logback配置属性详解根节点< configuration>子节点:< property>子节点:< appender>filetargetappendprudentlayout和encoderlayout和e…

Spring的bean的生命周期!!!

一.单例模式 单例&#xff1a;[启动容器]--->通过构造方法&#xff08;创建对象&#xff09;---->调用set方法&#xff08;注入&#xff09;--->调用init方法&#xff08;初始化&#xff09;----[容器关闭]----->调用destroy方法&#xff08;销毁&#xff09; app…

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义 流程图 流程图中各种图形的含义及用法解析 连接线符号 连接各要素&#xff0c;表示流程的顺序或过程的方向。 批注符号 批注或说明&#xff0c;也可以做条件叙述。 子流程 流程中一部分图形的逻辑…

SpringMVC通用后台管理系统源码

SpringMVC通用后台管理系统源码 整体的SSM后台管理框架功能已经初具雏形&#xff0c;前端界面风格采用了结构简单、 性能优良、页面美观大的Layui页面展示框架 数据库支持了SQLserver,只需修改配置文件即可实现数据库之间的转换。 系统工具中加入了定时任务管理和cron生成器&am…

代码随想录27期|Pthon|Day31|贪心算法|理论基础|455.分发饼干|376. 摆动序列|53. 最大子序和

理论基础 首先&#xff0c;贪心算法基本靠“做题感觉”&#xff0c;所以没有规范的总结和做题技巧&#xff0c;只能说见到过之后还能想起来。 一般情况可以看成是对于一个大的问题的子问题的局部最优的求解&#xff0c;然后可以推导出全局的最优。 这个过程没有证明&#xf…

【C#】知识点实践序列之Lock的锁定代码块

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂之知识点实践序列》文章。 2024年第1篇文章&#xff0c;此篇文章是C#知识点实践序列之Lock知识点&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 本篇验证Lock锁定代…

常用环境部署(十三)——GitLab整体备份及迁移

一、GitLab备份 注意&#xff1a;由于我的GitLab是docker安装的&#xff0c;所以我的操作都是在容器内操作的&#xff0c;大家如果不是用docker安装的则直接执行命令就行。 1、Docker安装GitLab 链接&#xff1a;常用环境部署(八)——Docker安装GitLab-CSDN博客 2、GitLab备…

Python常用模块之hashlib

常用模块 - hashlib模块 一、简介 Python的hashlib提供了常见的摘要算法&#xff0c;如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢&#xff1f;摘要算法又称哈希算法、散列算法。它通过一个函数&#xff0c;把任意长度的数据转换为一个长度固定的…

C# 全屏label控件实现的贪吃蛇。

C# 全屏label控件实现的贪吃蛇。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using stat…

两阶段提交协议三阶段提交协议

两阶段提交协议 分布式事务是指会涉及到操作多个数据库的事务,在分布式系统中&#xff0c;各个节点之间在物理上相互独立&#xff0c;通过网络进行沟通和协调。 XA 就是 X/Open DTP 定义的交易中间件与数据库之间的接口规范&#xff08;即接口函数&#xff09;&#xff0c;交易…

网络安全—模拟ARP欺骗

文章目录 网络拓扑安装使用编辑数据包客户机攻击机验证 仅做实验用途&#xff0c;禁止做违法犯罪的事情&#xff0c;后果自负。当然现在的计算机多无法被欺骗了&#xff0c;开了防火墙ARP欺骗根本无效。 网络拓扑 均使用Windows Server 2003系统 相关配置可以点击观看这篇文章…

安卓和Android是两种不同的操作系统?

实际上&#xff0c;安卓和Android并不是同一种操作系统&#xff01; Android是由Google开发并维护更新的一款操作系统&#xff0c;目前仅能运行在Pixel手机上。 Google Pixel 与 iPhone手机&#xff1a;哪个更好&#xff1f;Google Pixel 与 Apple iPhone哪个手机才是性价比最…

【 RF 射频 电缆】 MIL-C-17F 标准 规格

第〇、&#xff1f;&#xff1f; RGXXXXX 第一、应用场景 标准号应用场景–&#xff08;–&#xff09;RG-8 RG-9 RG-11粗缆以太网–RG-58细缆以太网–RG-59 RG-75电视系统–RG-62ARCnet网络和IBM 3270网络–RG142电信设备之间的互连 航空电子机架 雷达 GPS 医疗–RG178通信…

Unity坦克大战开发全流程——结束场景——失败界面

结束场景——失败界面 在玩家类中重写死亡函数 在beginPanel中锁定鼠标

红日靶场第一关 attck

之前因为事情耽搁了&#xff0c;今天争取把第一关红日靶场完成 目前找到了关于外网服务器的网址 之前有过扫描目录得知了登陆界面 和爆破得到的密码 目前我们的想法是把病毒上传到网页当中&#xff0c;所以我们应该找个文件注入点 但是再次之前 我们需要找到网页的绝对路径 …

抽奖的问题

import randomlucky_num [] # 存放中奖人名单&#xff0c;避免多次中奖 lucky_count 0 # 表示每一种奖品人数够了for time in range(0, 3): # 抽三次奖lucky_count 0 # 每次刷新print(f第一次抽奖现在开始&#xff0c;这次抽的是{3-time}等奖\n)# 判断奖品是哪个if time…

什么是 JSON?JSON详解

现在程序员还有谁不知道 JSON 吗&#xff1f;无论对于前端还是后端&#xff0c;JSON 都是一种常见的数据格式。那么 JSON 到底是什么呢&#xff1f; JSON 的定义 JSON &#xff08;JavaScript Object Notation&#xff09; &#xff0c;是一种轻量级的数据交换格式。它的使用…