生成对抗网络原理

news2024/11/11 10:53:22

GAN的原理

GAN是在2014年由Ian Goodfellow等人提出的,发表在论文“Generative Adversarial Networks”中。

 GAN的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布。生成器和鉴别器是这样一对博弈关系:鉴别器惩罚生成器,鉴别器收益,生成器损失;生成器进化,使鉴别器对自己惩罚小,生成器收益,鉴别器损失。

GAN 的基本思想是让生成器和判别器两个模型相互博弈,通过不断地训练,使生成器生成的样本更接近真实数据的分布,判别器则尽可能地将生成器生成的样本和真实数据区分开来。在训练过程中,生成器的目标是尽可能地欺骗判别器,而判别器的目标是尽可能地区分生成器生成的样本和真实数据。

● G是一个生成式的网络,它接收一个随机的噪声z(随机数),通过这个噪声生成图像

● D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片

DCGAN

DCGAN,全称Deep Convolutional Generative Adversarial Networks,是一种基于深度学习的生成式对抗网络(GAN)模型。它是由Radford等人在2015年提出的。

DCGAN在传统的GAN的基础上,使用了卷积神经网络作为生成器和判别器的架构,以取代原来的全连接网络。这种架构使得DCGAN在生成高分辨率图像时更加有效,并且生成的图像更加真实和细节更加清晰。除此之外,DCGAN还通过对生成器和判别器的一些设计调整,进一步提升了生成图像的质量和多样性。

WGAN

WGAN(Wasserstein GAN)是在2017年由Martin Arjovsky、Soumith Chintala和Leon Bottou在论文"Wasserstein GAN"中提出的。

WGAN是一种基于GAN(Generative Adversarial Networks)的改进方法,通过使用Wasserstein距离(Wasserstein Distance)代替原先GAN中的JS散度(Jensen-Shannon divergence)来提升GAN的稳定性和生成图像的质量。

在原先的GAN中,由于JS散度在两个分布重叠部分的梯度消失,因此训练过程中容易出现梯度消失或梯度爆炸等问题。而Wasserstein距离能够避免这些问题,同时也能够提升生成器和判别器的表现。

WGAN的主要思想是在判别器中引入一个约束条件,使其输出的结果满足Lipschitz连续性,从而使Wasserstein距离的梯度始终存在,避免了梯度消失和梯度爆炸的问题。此外,WGAN还引入了权值裁剪(Weight Clipping)技术,对判别器的权重进行裁剪,从而限制其变化范围,进一步提升了WGAN的稳定性。

WGAN在图像生成、图像修复、图像翻译等领域都有广泛的应用。

CycleGAN

CycleGAN是在2017年提出的,由Jun-Yan Zhu等人在论文《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》中提出

CycleGAN是一种基于生成对抗网络(GAN)的图像转换算法,它可以将一种领域的图像转换为另一种领域的图像,而不需要配对的训练数据。CycleGAN的主要思想是使用两个GAN模型,分别从两个领域的图像中学习到映射函数,并通过循环一致性损失(Cycle Consistency Loss)来保持映射的一致性。

CycleGAN的网络结构由两个生成器和两个判别器组成。其中一个生成器将一个领域的图像映射到另一个领域,另一个生成器将其反转。两个判别器分别判别两个领域的图像是否真实,其中一个判别器专门用于判别从另一个领域转换而来的图像是否真实。

循环一致性损失是CycleGAN的核心,它的基本思想是将两个领域的图像分别通过两个映射函数转换为另一个领域的图像,然后再通过这两个映射函数将转换后的图像转换回原来的领域。如果这两个转换过程是一致的,即转换后的图像与原来的图像差别不大,那么就认为这两个映射函数是有效的。循环一致性损失是这个一致性的量化度量,它的定义是原图像与反转后转换回来的图像之间的差别。在训练过程中,循环一致性损失可以使生成器学习到更加一致的映射函数,从而提高图像转换的质量。

GauGAN

GauGAN是一种基于GAN的图像翻译模型,旨在将简单的草图转换为复杂的、逼真的场景图像。它由纳米晶体管公司NVIDIA于2019年发布,名字"GauGAN"取自著名艺术家保罗·高更 (Paul Gauguin)的名字。

GauGAN的主要思想是使用一个生成器网络,通过学习从简单的用户输入(如颜色标记和草图)到逼真的场景图像之间的映射,从而创建艺术品般的图像。与其他图像生成技术不同的是,GauGAN能够实现高度逼真的图像翻译,包括细节和纹理,让用户能够轻松创建出真实感极强的图像。

ConditionGAN

Conditional GAN (CGAN) 是一种基于 GAN 的生成模型,它可以在生成图像时,根据输入的条件信息来控制生成结果。在传统的 GAN 中,输入的噪声信号(latent vector)是随机的,没有任何意义,而 CGAN 则引入了一个额外的条件向量(condition vector),它可以是任何形式的向量,例如文本描述、标签等,通过将这个条件向量与随机噪声向量联合输入到生成器中,就可以控制生成图像的样式、内容和特征。

CGAN 的基本原理和 GAN 相同,只是在生成器和判别器的输入中添加了条件向量,这样就可以让生成器和判别器都考虑到这些条件信息。在训练过程中,条件向量会与噪声向量联合输入到生成器中,同时判别器也会将条件向量作为输入。生成器的目标是生成与条件向量相关联的逼真图像,而判别器的目标是将真实图像与生成的图像区分开来。

CGAN 可以应用于许多图像生成任务,如图像翻译、图像修复、图像转换等,其在生成高质量图像方面表现出色。例如,可以使用 CGAN 实现从草图生成真实图像,从黑白图像生成彩色图像,或者从标签生成相应的图像等任务。

GAN的应用

结构化学习(Structured Learning)是指一类机器学习方法,它的目标是预测结构化对象,如序列、树形结构和图等。与传统的机器学习方法不同,结构化学习方法会考虑对象内部的结构信息,从而提高模型的预测准确性。结构化学习方法通常需要定义一个包含了输入、输出以及结构信息的联合空间,然后在这个联合空间上进行模型学习和推断。

GAN也是结构化学习的一种。与分类和回归类似,结构化学习也是需要找到一个X→Y的映射,但结构化学习的输入和输出多种多样,可以是序列(sequence)到序列,序列到矩阵(matrix),矩阵到图(graph),图到树(tree)等等。

GAN(生成对抗网络)在计算机视觉、自然语言处理、音频处理等多个领域中得到了广泛的应用。以下是一些GAN的应用示例:

  1. 图像生成:GAN可以生成逼真的图像,如逼真的人脸、风景等,可以应用于虚拟现实、游戏、电影等领域。

  2. 图像修复:GAN可以通过输入带有缺陷的图像和对应的掩膜,生成与原图像相似的修复图像,可以应用于图像去噪、去水印、恢复图像等领域。

  3. 超分辨率:GAN可以将低分辨率图像转换为高分辨率图像,可以应用于视频、图像处理等领域。

  4. 图像转换:GAN可以将一种图像转换为另一种图像,如将夏季景色转换为冬季景色,可以应用于虚拟现实、游戏、电影等领域。

  5. 音频生成:GAN可以生成逼真的音频,如逼真的人声、乐曲等,可以应用于语音合成、音乐创作等领域。

  6. 文本生成:GAN可以生成逼真的文本,如逼真的小说、新闻等,可以应用于自然语言处理、智能对话等领域。

  7. 动画生成:GAN可以生成逼真的动画角色,可以应用于游戏、动画制作等领域。

GAN 的特点及优缺点:

特点

 ● 相比较传统的模型,他存在两个不同的网络,而不是单一的网络,并且训练方式采用的是对抗训练方式

 ● GAN中G的梯度更新信息来自判别器D,而不是来自数据样本

优点

● GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链

● 相比其他所有模型, GAN可以产生更加清晰,真实的样本

● GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域

● 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊

● 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的

缺点

● 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多

● GAN不适合处理离散形式的数据,比如文本

● GAN存在训练不稳定、梯度消失、模式崩溃的问题

参考

GAN相关模型理论以及Pytorch实现_肥宅_Sean的博客-CSDN博客

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

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

相关文章

系统架构设计

高性能 客户端内部缓存客户端到服务器之间缓存:CDN,网络专线数据库前加缓存Sessioin等信息共享NoSQL数据库分片,读写分离web层无关态集群负载均衡GeoDNS 就近原则,边缘计算存储异步,解耦,削峰:消息队列离线…

MySQL学习笔记第五天

第06章多表查询 多表查询概述: 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段&#xff0…

第二十章 渲染管线

渲染管线是计算机图形中最基础最核心的部分,它是将3D场景显示到2D平面的技术过程。在DirectX课程中,我们就介绍了渲染管线,分为固定渲染管线和可编程渲染管线(Shader)。但是在DirectX 10版本之后统一了渲染架构&#x…

【Java】面试常问知识点(Java基础)

JVM java 栈:线程私有,生命周期和线程,每个方法在执行的同时都会创建一个 栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。方法的执行就对应着栈帧在虚拟机栈中入栈和出栈的过程;栈…

Photoshop如何使用蒙版之实例演示?

文章目录 0.引言1.给单调的天空添加蓝天白云2.清除头发边缘的杂色3.制作景深效果4.制作枯荣共存的树5.制作双重曝光肖像 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其配套素材结合网上相关资料进行…

【Linux内核解析-linux-5.14.10-内核源码注释】内核启动kernel_init解释

源码 解释1 static int __ref kernel_init(void *unused): 声明一个静态整型函数kernel_init(),该函数不会被其他文件访问,使用__ref标记表示该函数是可重定位的,并且该函数不需要任何参数。 wait_for_completion(&kthreadd_done);: 等待…

FL Studio 2023中文高级版水果编曲软件下载

FL Studio 2023中文版是一款非常经典的音乐制作软件,这款软件除了可以为用户提供全面的音乐制作功能之外,还有丰富的主题和皮肤供用户选择,让用户不但做出的音乐具有自己的风格,连制作的音乐的过程也个性十足,非常适合…

荔枝派Zero(全志V3S)驱动开发之串口

系列文章目录 文章目录 系列文章目录前言一、修改及编译设备树1、修改设备树文件2、编译 kernel 二、移植 minicom1、配置buildroot2、编译 buildroot 三、拷贝到 SD 卡四、测试验证1、确认 minicom 是否正常2、确认串口3、发送测试4、接收测试 前言 修改设备树打开 uart1 和 …

14-4-进程间通信-共享内存

之前学习了无名管道,命名管道,消息队列。 还剩下:共享内存,信号,信号量。 本章讨论的是共享内存。 一、共享内存的应用场景 A进程有自己的存储空间; B进程也有自己的存储空间; A进程和B进…

使用物联网技术进行肥胖管理是可行的吗?

在物联网和可穿戴设备的帮助下,个人现在可以监测自己的健康指标,如心率、血糖水平和身体活动。这些个性化的见解帮助人们对自己的生活方式做出明智的决定,从而带来更好的体重管理结果。 利用物联网技术成功管理肥胖症 肥胖是一个全球性的健…

还在挣扎文件

由于在老式打印机里面每打下一行都要进行回车和换行,在windows系统里面也延续了这个惯例,但是c语言是只有换行,但是为了兼容,会自动进行转换;比如,它在写入文件的时候换行会自动转换为回车加换行&#xff0…

加强网络风险生命周期

当今业务环境中云原生应用程序的激增帮助组织简化了运营。 企业现在可以近乎实时地监控数据、与客户互动并分享见解,帮助他们克服曾经阻碍生产力的低效率问题。 然而,使用云也极大地扩展了企业可利用的攻击面。 CSPM、CWPP、CNAPP、SAST、SCA、IaC、D…

网络基础3【网络层、数据链路层】

目录 一.网络层 1.IP协议 (1)基本概念 (2)协议头格式 2.网段划分 3.特殊的IP地址 4.IP地址的数量限制 5.私有IP地址和公网IP地址 6.路由 二.数据链路层 1.以太网 2.以太网帧格式 3.MAC地址 4.对比MAC地址和IP地址 …

【图】邻接矩阵

图的存储结构分为邻接矩阵和邻接表两种,带权的图叫做网。 邻接矩阵 邻接矩阵适合边多的图 无向图 两个顶点之间的连线是双向的,一个一维数组存顶点,一个二维数组存边 若有边则值为1,反之为0 邻接矩阵需要知道点数、边数、一个二维…

ARM微处理器的指令集概述

ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM微处理器的指令集是加载(Load)/存储(Store)型的,也即指令集仅能处理寄存器中的数据&#xff0…

【论文笔记】Attention和Visual Transformer

Attention和Visual Transformer Attention和Transformer为什么需要AttentionAttention机制Multi-head AttentionSelf Multi-head Attention,SMA TransformerVisual Transformer,ViT Attention和Transformer Attention机制在相当早的时间就已经被提出了&…

Word2vec原理+实战学习笔记(二)

来源:投稿 作者:阿克西 编辑:学姐 前篇:Word2vec原理实战学习笔记(一) 视频链接:https://ai.deepshare.net/detail/p_5ee62f90022ee_zFpnlHXA/6 5 对比模型(论文Model Architectur…

锐捷(十七)锐捷单臂路由的配置

一 实验拓扑 二 实验需求 用单臂路由实现不同vlan间的通信,即要求vlan10的主机和vlan20的主机之间通过三层实现互访 三 实验分析 路由器的物理接口可以被划分成多个逻辑接口,这些被划分后的逻辑接口被形象的称为子接口。值得注意的是这些逻辑子接口不能…

Redis高级——键值对设计

1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id]长度不超过44字节不包含特殊字符 例如:我们的登录业务,保存用户信息&a…