走进生成对抗式网络(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

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre