李宏毅《机器学习》总结 - GAN

GAN(Generative Adverserial Network),用于生成图片等

直观理解

算法的流程可理解为以下两步:
首先,有两个 network,分别是 generator(G) 和 discriminator(D)。其中 G 能根据参数输出图片,

  1. 固定 G,更新 D,使得 D 给 G 生成的图片尽量低分,给真实的非生成图片尽量高分
  2. 固定 D,更新 G,使得 D 给 G 生成的图片的分数越高越好

详细理解

对于无外界要求的情况(如生成插画,可能会有“黑头发”“蓝眼睛”等限制,现在先不考虑这个限制)
image
和之前模式一样,想要看到由 G 生成的 PG 和 P_data 越接近越好,这个用一种散度 JS Div 来衡量。现在就想要找到最小的 G。
问题在于,JS Div 并不好求。如何做呢?
image
考虑如何寻找最好的 D,就是要让 V(G,D) 最大(上图),发现这个函数的意义实际上是求了个一个 cross entropy(因为,以 yPdata 为例:求期望实际上是 yP(y)×logD(y),发现 D(y) 实际上代表的是一个概率的分布,因此原式也可以写成 yD(y)×logD(y),这不就是交叉熵去掉负号嘛!)
又因为最大化了 (交叉熵的负值),也就是最小化了交叉熵,可以发现 D 训练的本质就是训练了一个 binary classifier
此外,经过推导发现 maxV(D,G) 和前面提到的 div 有关,因此可以用 V(D,G) 代替之。

因此,可以把训练目标:G=argminGDiv(PG,Pdata) 改变为 G=argminGmaxV(G,D) 了,这样,我们就通过从 Gdata sampling 来求得散度

JS Divergence 的问题

如果两个分布(如:G 和 data)没有相交的话,JS Div 的结果恒为 log2,这样就无视了距离,不好。
image

一种解决措施是把 JS Divergence 换成 W distance(WGAN)

WGAN

考虑两个分布 PQ,定义他们两个的距离为 W distance,是用一个推土机把 P “推成” Q 的样子,所需要移动的距离
image

这样定义的好处就是,就算两个分布不相交,依然有高低之分。

image

这样就可以进行训练了。但是直接用 W distance,求解过程很复杂,需要进行一些估测:
image
其中,D 需要足够平滑,需要 maximize 期望之差,而这个式子的含义就是让在 data 中的图片,经过 D 之后的值,越大越好,而由 G 生成的图片的 D 越小越好
直观理解为什么足够平滑?因为不然的话可能 data 的值成 + 了,而 G 的值成
image
那么如何让 D 足够平滑呢?几种方案:
image

posted @   SkyRainWind  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2023-02-12 ABC268 题解
点击右上角即可分享
微信分享提示