当前位置: 首页 > news >正文

生成对抗网络(GAN)

生成模型是深度学习领域难度较大且较为重要的一类模型。生成对抗网络能够在半监督或者无监督的应用场景下进行生成任务的学习。目前而言,生成对抗网络在计算机视觉、自然语言处理等领域取得了令人惊叹的成果。生成对抗模型是近年来复杂数据分布上无监督学习最具前景的方法之一。本文简单从生成对抗网络的定义、理论推导、模型缺点及相应对抗网络的变体等内容作出一定的归纳和总结。

引言
生成对抗网络(Generative Adversarial Network, GAN)是一种通过两个神经网络相互博弈的方式进行学习的生成模型。生成对抗网络能够在不使用标注数据的情况下来进行生成任务的学习。生成对抗网络由一个生成器和一个判别器组成。生成器从潜在空间随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别器的输入则为真实样本或生成器的输出,其目的是将生成器的输出从真实样本中尽可能分别出来。生成器和判别器相互对抗、不断学习,最终目的使得判别器无法判断生成器的输出结果是否真实。

例如,生成器可以看作货币造假者,目的是制造足够以假乱真的假币;判别器可以看作验钞机,负责判断钞票是否为假币,它能够随着假币质量的提高而不断升级,保持对假币的识别能力。

定义
给定数据分布
,希望设计生成器,使得生成器所产生的数据分布
尽可能接近
。为了学习相应的数据分布,首先随机初始化一个噪音分布
,然后将随机初始化的噪音分布作为生成器
的输入,得到输出
;判别器
判断
是来自于初始数据分布,或者来自生成器的生成。

生成对抗网络
我们可以形式化地定义生成器和判别器:
判别器
的训练目标是最大化分类的准确率,而生成器
的训练目标则是最小化判别器
的准确率。二者的估值函数是完全相反的,因而形成了零和博弈。在博弈中,

两名玩家按照极小化极大估值函数
进行博弈的过程:

生成对抗网络的批量学习算法定义在Algorithm 1。算法的核心思路为,迭代更新判别器和生成器的参数,直到判别器和生成器都能达到较好的效果。

理论推导
本节主要证明两个问题:

生成对抗网络中的极小化极大值博弈问题中,存在全局最优解:

通过Algorithm 1能够收敛到此全局最优解。
全局最优解
首先求解判别器估值函数的最大值。考虑对于任意的生成器
,判别器
的最优解。给定生成器
的情况下,判别器的优化目标是最大化估值函数
。即最大化:
要使积分的值最大化,需要使积分的内部最大化。设:

求该函数的极大值:

故判别器的最优解在
取到。将
代入估值函数
,得

其次求解生成器估值函数的最小值。注意到,当
时,有
。进一步对
作变换:

其中,
是Kullback-Leibler散度,定义为信息熵与交叉熵之比,衡量两分布之间的差异;
是Jensen-Shannon散度,用以解决
散度不对称的问题。
散度和
散度都是非负的,且
散度只有在
取到0。

因此 C ( G ) C(G) C(G)在满足当且仅当
的条件下,估值函数
能够取到全局最小值
。这意味着,在全局最优解的状态下,生成器能够产生与原始数据分布相同的样本。

算法收敛性
我们还需要证明,在Algorithm 1的算法中,如果

的容量足够大,且在判别器每个更新步骤都能达到最优的情况下,生成器的输出分布
收敛到
。证明过程如下:

考虑
是关于
的函数。对于每个
来说,
是凸的。凸函数上确界的子导数包括函数在达到最大值处的导数。即:如果对于任意的

都是关于
的凸函数,且
,假如
,则有:
这相当于在给定相应
的情况下,在最优
处计算
的梯度下降更新。随着判别器
不断更新,
不断更新。在判别器的更新步骤达到最优的状态下,生成器的输出分布也相应达到最优,而此最优正是全局最优。这证明了通过Algorithm 1可以收敛到全局最优解。

缺点
一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。GAN由于定义的特性,在训练中可能会出现以下问题:

不稳定收敛
当生成器和判别器都可以访问其整个策略集时,生成对抗网络具有唯一的全局最优点。但在实际场景中,我们可以访问的数据并不一定是整个策略集。而当它们具有受限策略集时,未必能够稳定收敛到全局最优点。

模式崩溃
GAN经常遭受模式崩溃,从输入数据中丢失整个模式以至于无法正确泛化。 例如,在包含每个数字的许多样本的MNIST数据集上训练的GAN可能只会生成数字0的图片。

发生这种情况的一种原因是生成器与判别器相比学习速度太快。如果判别器
保持不变,那么最优生成器将只输出的元素。例如,如果在生成MNIST数据集的GAN训练期间,对于几个epoch,判别器以某种方式更喜欢数字0比其他数字稍微多一点,则生成器可能会抓住机会只生成数字0。即使在判别器改进后,生成器也无法逃脱局部最小值。

梯度消失
如果判别器与生成器相比学习速度太快,那么判别器几乎可以完美地区分
. 在这种情况下,生成器
可能会有非常高的损失,无论它向哪个方向改变
,这意味着梯度都将会是接近于零,这会导致生成器无法学习。

变体
条件对抗网络
条件对抗网络(Conditional Adversarial Network, CAN)在标准的GAN基础上,允许模型根据附加信息有条件地生成样本。具体来说,我们可以在原有生成器和判别器的输入端拼接额外信息y,y可以是类别标签,或是其他模态的任何信息。生成器
的输入端接收噪音分布
的采样,以及额外信息y,在判别器
的输入端接收y,整体的目标函数变为:
条件对抗网络的模型结构如图2所示:

条件对抗网络
通过条件对抗网络,可以实现符合特定要求的数据的生成。例如:生成给定标签的图片、可控文本生成等等。

Wasserstein 生成对抗网络
为了应对4.2节中出现的梯度消失问题,Wasserstein提出了一种新的生成对抗网络WGAN,它主要是从以下两个方面进行改进:

将判别器的策略集限制为利普希茨连续。利普希茨连续函数限制了函数改变的速度,符合利普希茨条件的函数的斜率,必小于一个称为利普希茨常数的实数。即:
. 这限制了判别器的斜率变化,抑制了判别器的学习速度,在一定程度上改进了生成器梯度消失的问题。
将整个模型的估值函数改为:
。这限制了生成器在初始时刻的梯度,有效地解决了梯度消失问题。
总结
本文就生成对抗网络的定义、原理、缺点以及相应的改进简要作了一份综述。生成对抗模型是近年来复杂数据分布上无监督学习最具前景的方法之一。GAN在图像生成、语义分割、数据增强等领域有着广泛的应用。GAN作为一种训练范式,在深度学习发展的当今仍然占有一席之地,如结合变分自编码器的VAEGAN,结合Attention机制的TransGAN等等。

相关文章:

  • 云服务器windows service2022 部署git服务器
  • 【开题报告】基于SpringBoot的中小企业设备管理系统的设计与实现
  • Linux使用ifconifg命令,没有显示ens33
  • 数据结构:反射
  • Java的JDBC编程
  • 集合框架面试题
  • Kubernetes(k8s)进阶
  • Apache Airflow (九) :Airflow Operators及案例之BashOperator及调度Shell命令及脚本
  • 创芯科技USB_CAN【库文件】
  • Python 如何实现职责链设计模式?什么是职责链设计模式?Python 职责链设计模式示例代码
  • 算法萌新闯力扣:存在重复元素II
  • ElasticSearch综合练习题,ES为8版本,使用Kibana运行语句
  • 接口和抽象类
  • 【cpolar】Ubuntu本地快速搭建web小游戏网站,公网用户远程访问
  • 【机器学习12】集成学习
  • “大数据应用场景”之隔壁老王(连载四)
  • JavaScript 奇技淫巧
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React16时代,该用什么姿势写 React ?
  • Sass 快速入门教程
  • sublime配置文件
  • Swift 中的尾递归和蹦床
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 半理解系列--Promise的进化史
  • 多线程事务回滚
  • 欢迎参加第二届中国游戏开发者大会
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 悄悄地说一个bug
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 原生 js 实现移动端 Touch 滑动反弹
  • Spring第一个helloWorld
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #Linux(make工具和makefile文件以及makefile语法)
  • $.proxy和$.extend
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (9)目标检测_SSD的原理
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)我也是一只IT小小鸟
  • ******之网络***——物理***
  • ./configure,make,make install的作用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .libPaths()设置包加载目录
  • .NET Core 中的路径问题
  • .NET Standard 的管理策略
  • @media screen 针对不同移动设备
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [100天算法】-实现 strStr()(day 52)
  • [CF407E]k-d-sequence
  • [CISCN 2019华东南]Web11