AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

解决模式崩溃的两条思路:改进优化和网络架构

  • 2019-11-22
  • 本文字数:1991 字

    阅读完需:约 7 分钟

解决模式崩溃的两条思路:改进优化和网络架构

今天讲述的内容主要是 GAN 中的模式崩溃问题,首先将说明模式崩溃问题的本质,并介绍两种解决模式崩溃问题的思路,然后将介绍一种简单而有效的解决方案 MAD-GAN,最后一部分将给出 MAD-GAN 的强化版本 MAD-GAN-Sim。

解决模式崩溃的两条路线

GAN 的模式崩溃问题,本质上还是 GAN 的训练优化问题,理论上说,如果 GAN 可以收敛到最优的纳什均衡点,那模式崩溃的问题便自然得到解决。举例如下图,红线代表生成数据的概率密度函数,而蓝线代表训练数据集的概率密度函数,本来红线只有一个模式,也就是生成器几乎只会产生一种样本,而在理论上的最优解中,红线与蓝线重合,这时候在生成器中采样自然能几乎得到三种样本,与训练集的数据表现为一致。



当然,实际中几乎不会达到全局最优解,我们看似收敛的 GAN 其实只是进入了一个局部最优解。故一般而言,我们有两条思路解决模式崩溃问题:


1.提升 GAN 的学习能力,进入更好的局部最优解,如下图所示,通过训练红线慢慢向蓝线的形状、大小靠拢,比较好的局部最优自然会有更多的模式,直觉上可以一定程度减轻模式崩溃的问题。



2.放弃寻找更优的解,只在 GAN 的基础上,显式地要求 GAN 捕捉更多的模式(如下图所示),虽然红线与蓝线的相似度并不高,但是“强制”增添了生成样本的多样性,而这类方法大都直接修改 GAN 的结构。


MAD-GAN

今天要介绍的 MAD-GAN 及其变体便是第二类方法的代表之一。


它的核心思想是这样的:即使单个生成器会产生模式崩溃的问题,但是如果同时构造多个生成器,且让每个生成器产生不同的模式,则这样的多生成器结合起来也可以保证产生的样本具有多样性,如下图的 3 个生成器:



需要说明一下,简单得添加几个彼此孤立的生成器并无太大意义,它们可能会归并成相同的状态,对增添多样性并无益处,例如下图的 3 个生成器:



理想的状态是:多个生成器彼此“联系”,不同的生成器尽量产生不相似的样本,而且都能欺骗判别器。


在 MAD(Multi-agent diverse)GAN 中,共包括 k 个初始值不同的生成器和 1 个判别器,与标准 GAN 的生成器一样,每个生成器的目的仍然是产生虚假样本试图欺骗判别器。对于判别器,它不仅需要分辨样本来自于训练数据集还是其中的某个生成器(这仍然与标准 GAN 的判别器一样),而且还需要驱使各个生成器尽量产生不相似的样本。


需要将判别器做一些修改:将判别器最后一层改为 k+1 维的 softmax 函数,对于任意输入样本 x,D(x)为 k+1 维向量,其中前 k 维依次表示样本 x 来自前 k 个生成器的概率,第 k+1 维表示样本 x 来自训练数据集的概率。同时,构造 k+1 维的 delta 函数作为标签,如果 x 来自第 i 个生成器,则 delta 函数的第 i 维为 1,其余为 0,若 x 来自训练数据集,则 delta 函数的第 k+1 维为 1,其余为 0。显然,D 的目标函数应为最小化 D(x)与 delta 函数的交叉熵:



直观上看,这样的损失函数会迫使每个 x 尽量只产生于其中的某一个生成器,而不从其他的生成器中产生,将其展开则为:



生成器目标函数为:



对于固定的生成器,最优判别器为:



![]


可以看出,其形式几乎同标准形式的 GAN 相同,只是不同生成器之间彼此“排斥”产生不同的样本。另外,可以证明当



达到最优解,再一次可以看出,MAD-GAN 中并不需要每个生成器的生成样本概率密度函数逼近训练集的概率密度函数,每个生成器都分别负责生成不同的样本,只须保证生成器的平均概率密度函数等于训练集的概率密度函数即可。

MAD-GAN-Sim

MAD-GAN-Sim 是一种“更强力”的版本,它不仅考虑了每个生成器都分别负责生成不同的样本,而且更细致地考虑了样本的相似性问题。其出发点在于:来自于不同模式的样本应该是看起来不同的,故不同的生成器应该生成看起来不相似的样本。


这一想法用数学符号描述即为:



其中φ (x)表示从生成样本的空间到特征空间的某种映射(我们可选择生成器的中间层,其思想类似于特征值匹配),Δ (x,y)表示相似度的度量,多选用余弦相似度函数,用于计算两个样本对应的特征的相似度。


对于给定的噪声输入 z,考虑第 i 个生成器与其他生成器的样本生成情况,若样本相似度比较大,则 D(G_i(z))相比较 D(G_j(z))应该大很多,由于 D(G_j(z))的值比较小,G_j(z)便会进行调整不再生成之前的那个相似的样本,转而去生成其他样本,利用这种“排斥”机制,我们就实现了让不同的生成器应该生成看起来不相似的样本。


将上述限制条件引入到生成器中,我们可以这样训练生成器,对于任意生成器 i,对于给定的 z,如果上面的条件满足,则像 MAD-GAN 一样正常计算,其梯度为:



如果条件不满足,将上述条件作为正则项添加到目标函数中,则其梯度为:



这样尽量使得判别器更新后,条件能够满足。MAD-GAN-Sim 的思路非常直接清晰,不过代价就是增加非常多的计算量。


原文链接:


https://mp.weixin.qq.com/s/QFCJ7BxNvfj2L9Wlr6aq9A


作者介绍


小米粥,公众号“有三 AI”作者。该公号聚焦于让大家能够系统性地完成 AI 各个领域所需的专业知识的学习。


2019-11-22 22:243565
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 572.0 次阅读, 收获喜欢 1980 次。

关注

评论

发布
暂无评论
发现更多内容

React进阶(十一):create-react-app脚手架关闭 eslint 提醒

No Silver Bullet

React 12月日更 creat-react-app

​使用 Amazon Neptune 通过数据仓库构建知识图谱,借此补充商务智能体系

亚马逊云科技 (Amazon Web Services)

Data

云图说|初识数据库和应用迁移UGO

华为云开发者联盟

数据库 华为云 UGO 异构迁移

DM 分库分表 DDL “悲观协调” 模式介绍丨TiDB 工具分享

PingCAP

MySQL 中 blob 和 text 数据类型详解

Simon

MySQL

蓝格赛(中国)用TDengine落地聚合查询场景,效果如何?

TDengine

数据库 tdengine 后端

跟着动画学Go数据结构之堆排序

宇宙之一粟

golang 数据结构 排序算法 Go 语言 12月日更

React进阶(十二):HOOK

No Silver Bullet

React Hooks 12月日更

XEngine:深度学习模型推理优化

华为云开发者联盟

深度学习 模型推理 显存优化 计算优化 XEngine

JDK ThreadPoolExecutor核心原理与实践

vivo互联网技术

jdk ThreadPoolExecutor Java 开发

一文带你梳理Clang编译步骤及命令

华为云开发者联盟

编译 LLVM Clang编译 Clang 编译命令

java开发之SSM开发框架

@零度

Java ssm

内核干货不容错过,龙蜥内核的Load Averages剖析直播回顾上线了

OpenAnolis小助手

Linux Kenel 内核 龙蜥社区

「山东城商行联盟」数据库准实时数据采集系统上线,DataPipeline助力城市商业银行加快数字化转型

DataPipeline数见科技

数据库 中间件 数据同步 数据融合 数据管理

解析Redis操作五大数据类型常用命令

华为云开发者联盟

数据库 redis string 数据类型 getset

元宇宙地产:品牌和投资者的大好机会?

devpoint

以太坊 NFT 元宇宙 12月日更

webpack打包过程如何调试?

汪子熙

前端 前端开发 webpack 28天写作 12月日更

一文详解TDSQL PG版Oracle兼容性实践

腾讯云数据库

tdsql 国产数据库

利用极狐GitLab DevSecOps 功能检测 log4j 的多种方式

极狐GitLab

发布你的开源软件到 Ubuntu PPA

hedzr

#Ubuntu Debian packaging ppa

重装上阵——Graviton2提升Aurora性价比

亚马逊云科技 (Amazon Web Services)

Data

鲲鹏HCIA认证之初识鲲鹏

桥哥技术之路

鲲鹏

念叨了一年的游戏叙事书中文版终于出了!

博文视点Broadview

前沿干货!深度揭秘TDSQL新敏态引擎Online DDL技术原理

腾讯云数据库

tdsql 国产数据库

喜提双奖 | 旺链科技彰显综合硬实力!

旺链科技

区块链 产业区块链 供应链

轻松驾驭EB级千万QPS集群,TDSQL新敏态引擎元数据管控与集群调度的演进之路

腾讯云数据库

tdsql 国产数据库

如何将Amazon RDS与Amazon Aurora数据库迁移至Graviton2?

亚马逊云科技 (Amazon Web Services)

Data

dart系列之:手写Library,Library编写最佳实践

程序那些事

flutter dart 程序那些事 12月日更

一个简单的单体服务流量标记demo

zuozewei

Java 性能测试 全链路压测 12月日更

又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖

腾讯云数据库

tdsql 国产数据库

Go编译原理系列2(词法分析&语法分析基础)

书旅

Go 后端 编译原理

解决模式崩溃的两条思路:改进优化和网络架构_AI&大模型_小米粥_InfoQ精选文章