数学角度的GAN的改进方法

从数学角度看为什么要改进GAN

GAN的discriminator评估的方式其实是计算 P G P_G PG P d a t a P_{data} Pdata的JS散度。但是JS 散度面对一个问题:当两个分布没有重合,得到的JS散度就是 l o g 2 log2 log2(同时之前从散度角度理解GAN,使用JS散度还面临mode collapse和mode dropping的问题)。但是很大概率不重合:

  • data本身的问题:数据是高维空间的低维流线分布
  • 采样的问题:就算两个分布有重合部分,但是通过采样,可能重合部分会很少
    这样使用JS的缺点,直观来讲就是类似,分类问题,只要分类错误loss都是相同的,不论分类结果与正确结果的差异性。
    discriminator的第二个问题是,它是一个二分类问题,使用sigmoid函数:GAN中的sigmoid函数
    可以看到,假的点位于左边,其函数微分都是零(尽管不是很fake的情况,由于sigmoid很快饱和),梯度回传,将会造成生成样本点基本不会移动(因为generator更新需要用到discriminator的梯度)。改进的方法是不要将discriminator训练的太好——生成的样本点在discriminator的得分不要全部零。针对这个点,Least Square GAN 解决方法是将log损失改为L2 loss:LSGAN作者博客。L2 loss只有在生成的数据和实际数据完全重合,梯度才会为零。具体代码实现loss:
D_loss = 0.5 * (torch.mean((D_real - 1)**2) + torch.mean(D_fake**2))
G_loss = 0.5 * torch.mean((D_fake - 1)**2)

这里看到discriminator的损失函数和log的时候不一样,但是目标一致,最小化loss。

Wasserstein GAN

之前是JS散度评估两个分布之间的差异性,WGAN提出了另外一种评估的方式:earth mover’s distance,也是衡量两个分布之间差异性的方法:earth mover’s distance是什么以及解法
假设两个分布P,Q,其中 x p x_p xp x q x_q xq分别是两分布中采样的点,用 r ( x p , x q ) r(x_p,x_q) r(xp,xq)表示两点要移动的量,那么定义earth mover’s distance为: B ( r ) = ∑ x p , x q r ( x p , x q ) ∣ ∣ x p , x q ∣ ∣ B(r) = \sum\limits_{x_p,x_q} r(x_p,x_q)||x_p,x_q|| B(

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值