博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DualGan
阅读量:5172 次
发布时间:2019-06-13

本文共 1114 字,大约阅读时间需要 3 分钟。

文章的思想来源

这篇文章的灵感来源是Xia et al 提出的一篇做机器翻译的文章NIP Dual【2】。这篇文章的一个例子很好的解释了对偶的思想。首先假设我们有两个人A和B,A会英文不会法语,B会法语不会英文。A要和B进行交流,A写了一段话,通过翻译器GA翻译成法语,但A看不懂法语,只能将翻译的结果直接发给B;B收到这段话之后,用自己的理解整理了一下,通过翻译器GB翻译成英文直接发给A;A收到之后,要检查B是否真正理解自己说的话。如此往复几次,A和B都能确认对方理解了自己。在这个例子中,翻译器A和B分别是两个生成器,A和B分别担任了判别器的角色。

 

原始GAN存在的问题

在wgan这篇文章中系统的阐述了原始GAN存在的一些问题。

(1)当我们通过最小化 来训练G时会出现难训练、无法优化G的问题

  由于实际上Pg与Pdata很难有不可忽略的重叠,当D太强时,我们发现JS散度就固定是常数log2,C(G)就为一个固定值,所以导致G梯度消失。当D太弱时,会导致G梯度不准,四处乱跑。所以G和D必须同步得很好才行。

(2)原始GAN提出了优化方案:通过最小化来训练G。但会出现梯度不稳定、模型崩溃的问题

  在原始GAN的距离度量 方式下,G的loss可以被化简成一下形式:

  

从上面这个式子,我们可以看到在最优D时,我们想要最小化生成器loss就既要减小KL散度又要同时增大JS散度,这就产生了矛盾导致梯度不稳定

 第二,即便是前面那个正常的KL散度项也有毛病。因为KL散度不是一个对称的衡量,KL(P_g || P_r)KL(P_r || P_g)是有差别的。

  换言之,KL(P_g || P_r)对于上面两种错误的惩罚是不一样的,第一种错误对应的是“生成器没能生成真实的样本”,惩罚微小;第二种错误对应的是“生成器生成了不真实的样本” ,惩罚巨大。第一种错误对应的是缺乏多样性,第二种错误对应的是缺乏准确性。这一放一打之下,生成器宁可多生成一些重复但是很“安全”的样本,也不愿意去生成多样性的样本,因为那样一不小心就会产生第二种错误,得不偿失。这种现象就是大家常说的collapse mode。

 

WGAN进行优化后G和D的损失函数:

 

DualGAN的思想

判别器损失:

Z,Z'为噪声。形式与WGAN一致。

生成器损失:

网络结构

 生成器使用U-Net。

判别器使用patchGAN

 

 拓展:防止判别器过于自信

 (1)单边标签平滑

  D的优化目标从1变成0.9

(2)样本噪声

  对输入D的样本添加噪声来挑战D。使真假样本的流形更加接近,同时防止D轻易找到完全分离真假样本的判别器边界。

 

转载于:https://www.cnblogs.com/J-K-Guo/p/7716559.html

你可能感兴趣的文章
django orm 数据查询详解
查看>>
JarvisOJ Basic 熟悉的声音
查看>>
C# list导出Excel(二)
查看>>
CAS 单点登录模块学习
查看>>
Android应用开发-网络编程①
查看>>
input中的name,value以及label中的for
查看>>
静态库制作-混编(工程是oc为基础)
查看>>
jQuery 显示加载更多
查看>>
Confluence 6 系统运行信息中的 JVM 内存使用情况
查看>>
Confluence 6 升级以后
查看>>
用JS实现版面拖拽效果
查看>>
二丶CSS
查看>>
《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
查看>>
JS一些概念知识及参考链接
查看>>
TCP/IP协议原理与应用笔记24:网际协议(IP)之 IP协议的简介
查看>>
SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
查看>>
游戏中的心理学(一):认知失调有前提条件
查看>>
WHAT I READ FOR DEEP-LEARNING
查看>>
【Ruby】Ruby在Windows上的安装
查看>>
Objective C 总结(十一):KVC
查看>>