写点什么

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

  • 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:243403
用户头像
刘燕 InfoQ高级技术编辑

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

关注

评论

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

智慧平安小区搭建,智慧社区综合服务平台开发

t13823115967

智慧城市 智慧社区管理平台开发

IDC发布2021年中国云计算10大预测;Docker 桌面为 M1 推出技术预览版

京东科技开发者

云计算 AI 程序人生

BitQy交易所软件系统开发|BitQy交易所APP开发

iOS 崩溃分析

ios 崩溃分析

23 种设计模式的有趣见解

xcbeyond

设计模式 七日更

Spring Cloud微服务实战

田维常

微服务

SQL:我为什么慢你心里没数吗?

Java架构师迁哥

源码解析Synchronized同步方法的八种使用场景,收藏

996小迁

Java 源码 架构 面试 synchronized

区块链钱包软件系统开发及费用

RPC 核心,万变不离其宗

yes

Java 微服务 后端 RPC

天源迪科获2020年度中国产业供应链(中央企业集采供应链)百强企业荣誉

DT极客

还记得你的时间胶囊吗?

熊斌

个人成长 七日更

完全懵掉的电话面试

escray

面试 面经 七日更 十日谈

盘点2020 | 云上建站流程全解,教你如何节约成本

老魚

云服务器 建站 盘点2020 web全栈

第十三周 学习总结

熊桂平

极客大学架构师训练营

Java并发编程:AQS的互斥锁与共享锁

李尚智

Java Java并发

区块链多币种钱包app系统开发

秒杀系统设计的挑战和问题(转载)

jorden wang

必须清除互联网世界的毒瘤:网络谣言背后存在病态心理

石头IT视角

源码解析Synchronized同步方法的八种使用场景,收藏

小Q

Java 学习 架构 面试 多线程

带宽、延时、吞吐率、PPS 这些都是啥?

小林coding

Linux 操作系统 网络

Kafka的控制器controller详解

数据社

kafka 七日更

源码输出纯净版SSM架构,收藏直接CV使用它不香吗?

小Q

Java 学习 编程 面试 ssm

堪称完美!阿里架构师亲自手撕”Spring Boot实战笔记“用60个案例给你整的明明白白

比伯

Java 编程 程序员 架构 技术宅

2020年,关于【区块链运营】工作的11条思考

猫Buboo

比特币 区块链+

IPFS质押挖矿系统开发方案

【年终总结】mybatis常见注解

田维常

mybatis

区块链商城系统开发模式制作

智慧公安防控管理,重点人员管控系统建设方案

t13823115967

智慧公安 情报研判系统建设

区块链交易所系统开发,合约交易模式软件方案

菜鸟实时数仓2.0进阶之路

Apache Flink

flink 流计算

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