走进生成对抗式网络(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生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看