走进生成对抗式网络(GAN)摘记

2024-02-14 17:18

本文主要是介绍走进生成对抗式网络(GAN)摘记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自从OpenAI的Ian J.Goodfellow大神发的开创性文章GAN以后,GAN的发展是膨胀式的,工业界的各个大牛也随之加入GAN蓬勃发展的大军中。除了OpenAI之外,工业界好多公司都参与到了GAN的研究中,包括了Facebook、Google、Apple等公司。其中一个发表比较的多的就是Facebook的Soumith Chintala,他参与发表了DCGAN、LPGAN、WGAN以及SSGAN,其中WGAN也是得到了大量的关注,该文详细的对GAN的缺陷进行了深入解析,然后提出了具有里程碑式的改进,个人认为这对后续GAN的发展起到了很关键的作用;另外Google也是在GAN相关方向上发表了4篇以上的论文,G家的工程能力再一次凸显出来,一上来就结合adboost、unrolled、autoencoder等方向发表了几篇文章;除此之外就连Apple也将自己对外发表的第一篇AI论文SUGAN献给了GAN领域,该SUGAN文章讲述如何利用合成图像而不是随机向量作为输入结合GAN对合成图像的质量进行无监督的改善提升然后用于训练。


       随着GAN在目标优化上的不断持续改进,目前应用方向也得到了一些扩展,涉及的方向包括但不限于如下:图像生成,文本生成图像,根据场景生成视频,骨架图检索,图像超分辨率,通讯保护等。由于GAN的生成对抗特性,它特别适用于不同域上的特征映射,这个想象空间就会非常大,结合之前DL的一些常见应用可以展望如下结合域上的一些应用:图像文本结合,图像语音结合,图像视频结合等。另外它可以天然的去做无监督学习、半监督学习等。


在观察了工业界以及应用上的一些动向后,需要来看下到底GAN的目标函数是怎样的?在调研中发现,生成对抗式网络的目标函数也是经过了很多轮的改进。首先GAN文章提出了生成对抗式网络,其基本公式如下:


其中D函数代表判别网络,G代表生成网络,整个优化目标需要最大化判别网络D判别正确的概率(公式第一项)同时需要最小化G生成的样本被判别出来的概率(公式第二项)。在实际的训练过程中:1)早期G网络很弱,D网络总是能判别出来G生成的样本,这时候公式第二项的梯度会很弱,所以早期的时候会采用最大化log D(G(z))的方式来获取更强的梯度;2)训练过程中会训练k步D网络,然后再训练一步G网络,总是让D网络足够强。论文中提到的实际训练中的第一个技巧也预示着在后续的训练中只要D网络特别强,那么论文公式一中的第二项会让G网络的梯度变很弱,这时候训练过程就进行不下去了,所以在训练GAN的时候别把D网络训练得太强。WGAN文章提出在训练集样本概率密度函数与生成样本概率密度函数两者分布的可重叠部分很少时,GAN中优化公式一的损失函数就会变为一个常数,从而梯度就会消失,网络也就训练不下去了。除此之外,WGAN基于GAN文章中的内容将目标函数转化了下,从拉进生成样本的概率密度分布与训练集样本的概率密度分布为目标提出了如下损失函数用来度量两个概率密度分布的距离(WGAN公式一):


接着文章将其转化成了WGAN公式二:


再接着转化成WGAN公式三:


由于公式三中的f函数必须满足论文中提出的K-Lipschitz条件,所以在实际训练WGAN网络的时候,可以通过限制网络参数在某一固定取值空间内即,然后每次更新完网络参数w,都将其裁剪到上述的固定取值空间。在WGAN解决了原始GAN的梯度消失问题后,接着在实践中,大家又发现了其他的问题那就是LSGAN文章中提出的modecollapse现象,在WGAN的公式三中,可能会出现生成的样本和一部分真实样本已经非常相近,但该公式三还会一直在这部分真实样本上持续不断的产生梯度,当这部分样本占很大多数时,网络就会一直陷入这批真实样本上的持续优化中,另一部分少数真实样本的概率分布可能就会学不到。基于上述观察LSGAN提出了LSGAN公式六:


在实际训练中文章显示LSGAN方法在生成网络梯度方面具有更加鲁棒的特性,另外


部分采用像素级别的L1距离。MRGAN论文观察到之前GAN的方法大多采用将随机向量z映射到一个样本空间,这样可能会增加GANs网络的学习难度,文中提出让 z 从一个样本空间先映射过来,也就是有一个 z = encoder(X) 的过程,从而再,G(encoder(X))。这样可以让生成样本尽可能靠谱点,也就是让G生成网络能力尽可能强些,这样整个训练也会更加平稳,并且这里也同时可以更好的解决mode collapse问题,因为通过让z = encoder(X),该方法RGAN已经显示的让生成网络能覆盖所有的样本空间。MRGAN的目标函数如下:


在实际训练中,会迭代地去训练MRGAN公式二与RGAN公式一。




这篇关于走进生成对抗式网络(GAN)摘记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709123

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五