李宏毅《机器学习》总结 - GAN
GAN(Generative Adverserial Network),用于生成图片等
直观理解
算法的流程可理解为以下两步:
首先,有两个 network,分别是 generator(G) 和 discriminator(D)。其中 G 能根据参数输出图片,
- 固定 G,更新 D,使得 D 给 G 生成的图片尽量低分,给真实的非生成图片尽量高分
- 固定 D,更新 G,使得 D 给 G 生成的图片的分数越高越好
详细理解
对于无外界要求的情况(如生成插画,可能会有“黑头发”“蓝眼睛”等限制,现在先不考虑这个限制)
和之前模式一样,想要看到由 G 生成的 和 P_data 越接近越好,这个用一种散度 JS Div 来衡量。现在就想要找到最小的 G。
问题在于,JS Div 并不好求。如何做呢?
考虑如何寻找最好的 D,就是要让 最大(上图),发现这个函数的意义实际上是求了个一个 cross entropy(因为,以 为例:求期望实际上是 ,发现 实际上代表的是一个概率的分布,因此原式也可以写成 ,这不就是交叉熵去掉负号嘛!)
又因为最大化了 (交叉熵的负值),也就是最小化了交叉熵,可以发现 D 训练的本质就是训练了一个 binary classifier
此外,经过推导发现 和前面提到的 div 有关,因此可以用 代替之。
因此,可以把训练目标: 改变为 了,这样,我们就通过从 和 sampling 来求得散度
JS Divergence 的问题
如果两个分布(如:G 和 data)没有相交的话,JS Div 的结果恒为 ,这样就无视了距离,不好。
一种解决措施是把 JS Divergence 换成 W distance(WGAN)
WGAN
考虑两个分布 和 ,定义他们两个的距离为 W distance,是用一个推土机把 “推成” 的样子,所需要移动的距离
这样定义的好处就是,就算两个分布不相交,依然有高低之分。
这样就可以进行训练了。但是直接用 W distance,求解过程很复杂,需要进行一些估测:
其中, 需要足够平滑,需要 maximize 期望之差,而这个式子的含义就是让在 data 中的图片,经过 D 之后的值,越大越好,而由 G 生成的图片的 D 越小越好
直观理解为什么足够平滑?因为不然的话可能 data 的值成 了,而 G 的值成 了
那么如何让 D 足够平滑呢?几种方案:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2023-02-12 ABC268 题解