[2022]李宏毅深度学习与机器学习第六讲(必修)-GAN

  • 做笔记的目的
  • GAN
    • generator
    • Unconditional generator
    • Theory Behind
    • Tips for GAN
      • WGAN
    • 如何评价 GAN
    • Conditional Generation
    • Cycle GAN

做笔记的目的

1、监督自己把50多个小时的视频看下去,所以每看一部分内容做一下笔记,我认为这是比较有意义的一件事情。
2、路漫漫其修远兮,学习是不断重复和积累的过程。怕自己看完视频不及时做笔记,学习效果不好,因此想着做笔记,提高学习效果。
3、因为刚刚入门深度学习,听课的过程中,理解难免有偏差,也希望各位大佬指正。

GAN

generator

输入一个分布,同时输入(不输入也可以)一个x,之后输出一个复杂的分布,就是generator。Generator有很多应用,而GAN就是训练generator的方法。

但是为什么输出有的时候需要是一个分布那?下面这个例子是给出一个游戏画面,预测下一个游戏画面,因为有很多种可能(turn right or turn left),如果是预测模型,模型就会两个都选,即turn right and turn left,这样预测的游戏画面就会出错。因为不可能同时向左转又向右转。

所以当我们任务需要创造力的时候需要生成式模型,同样的输入有不同的输出,所以就要加一个Simple Distribution。比如写诗比如画画比如聊天机器人。

Unconditional generator

这里选的分布是高斯分布,但是实际上不同的分布差距也不是很大。

生成图片之后在进入判别器,判断是真的还是假的。两个都在不断进化,第一代Generator 不知道如何画,Discriminator 也不是很强,两个相互进化。


这里训练的步骤就是,先让生成器随便生成,然后判别器判断,两个分开update。

  1. 固定generator G 更新discriminator D,
  2. 固定discriminator D,之后更新generator G
  3. 不断重复过程1和过程2,提高网络性能。

Theory Behind

生成器的目标是,让生成的分布和真是分布尽可能地相近,这里就有很多不同的方法衡量,比如,Js Divergence、KL Divergence,但是要如何计算就成了一个问题,因为我们不知道两个是什么分布。Gan让我们可以计算出Div。

虽然我们不知道,两个分布是什么,但是我们可以sample出一些样例。

我们在看看Discriminator,他的目标方程就很类似于2分类,而他的目标方程和JS divergence有关系,所以可以用这个代替,具体做法如下图:

large divergence 对应大的 m a x V ( D , G ) maxV(D,G) maxV(D,G),反之对应小的。

所以做法是如下图,将目标做了一个转化。

这里不是一定要用js divergence,可以用不同的divergence,不同的divergence有对应不同的方法去设计目标函数。

Tips for GAN

WGAN

GAN是以不好训练而闻名,所以训练GAN需要一些小技巧。首先提出一个问题,JS divergence 可能并不是非常适合。可以看出,原始的data和生成的data的分布其实并不重合。如果sampling 的不够多那么判别器可以画一条线分开,所以两个分布不重合,但是JS divergence 如果不重合就一直是log2。


上面这种图就暴露出来了问题,当两个分布不重合时,计算距离在变小但是JS divergence并不变。所以可能需要另外一种衡量方法,比如Wasserstein distance:一个分布变到另一个分布需要走多少路程。

但是可以从下面的这个图片看出来,不同的moving plans,计算出来的值并不相同。作者这里介绍的是,选出距离最小的作为Wasserstein distance。但是这是一个优化问题,不过先把这个问题放一放,我们继续往后看。

这样就可以正确的衡量了,这种方法就是WGan。

但是如何计算Wasserstein distance,是一个问题,这里直接说结论,如下图,然后D必须要平滑,但如何做到这个1-Lipschitz那?

方法如下:
原始的方法,就是限制weight,这样能让方程更加平滑。

也可以第二个方法,用Spectral Normalization Gan结果会比较好,就算有SNGAN,GAN也不是很好训练。
因为两个模型是互动的,一旦一个出现问题,那么train 可能就停下来了,两个模型一定要棋逢对手,这是一个前瞻的技术,有待解决。train GAN不是一个容易的事情,但是研究的人很多。
用GAN生成文字是最困难的

这里训练是用梯度下降来训练,但是不能算微分,因为这个改变了一些值,输出可能不会改变,因为取了一个max。所以可以用强化学习来做,但是强化学习很难训练,GAN也很难训练,所以用GAN产生文字很难。

不够谷歌发的一篇论文效果还可以,ScrachGAN。

如何评价 GAN

很长时间GAN是用人眼来衡量的,但是人眼去判断并不一定非常可观。所以如何评价GAN的好坏,也是一个有待研究的课题。
可以跑一个分类器,对于单张图片,如果分类器的分布越密集,那么说明效果非常好。

将产生的东西放到一个分类,如果分布比较集中,那么效果就不错,但是这种方法不一定有用,可能会出现model collapse,可能他产生的图片一直是某几张,Diversity比较小。今天还没有很好的办法如何避免mode collapse,但是这个问题是可以看出来的。

但是这个问题是可以看出来的,mode Dropping产生的资料也够,但是分布没有资料的大,这样很难发现,而且mode Dropping现在并没有解决。

如何衡量生成器的Diversity,可以用一个分类器,对生成的图像分类,把所有的分类统计一下,如果分布均匀就说明Diversity可以。Quality 看的是一张图片,但是diversity看的是整个图片。

一般使用Inception Score,用Inception去衡量。可以去最后一层,取出向量看距离,sample很多,然后看看数据的分布。

FID算是一个比较常用的评价指标,从下图看,看起来所有的GAN都差不多。但是这个是实验的时候,用的是同一个网络架构,但是可能不同的gan适配不同的网络架构。

有时候GAN很好,但是不一定很好,所以Gan的评估很困难。

Conditional Generation

之前讲的都是随机的分布,这里可以给一个X。输出文字,然后根据z的不同,生成的图片也不同。

之前的判别器,不管用了。

可以修改一下判别器,输入两个。这个需要成对的资料,但是这样是不够的,还要加,文字和图片不配对。

Conditional GAN,也可以看一个文字产生图片,也可以是看一个图片,产生图片。

GAN虽然更真实,但是想象力更加丰富,所以一般是GAN+supervised。

Cycle GAN

普通的网络比较难处理没有配对的资料,但是GAN可以。


原始的GAN

可以看到原始的GAN,并不是很管用,因为输出和输入没有关系,可以用Cycle GAN。增加一个新的目标,这样就限制了第一个G的输出。

把他弄成双向的,这个就是cycle GAN。

Cycle GAN也可以文字风格转换,不仅仅是图像风格转换。

[2022]李宏毅深度学习与机器学习第六讲(必修)-GAN相关推荐

  1. [2022]李宏毅深度学习与机器学习第四讲(选修)-GNN

    [2022]李宏毅深度学习与机器学习第四讲(选修)-GNN 做笔记的目的 GNN NN4G DCNN MoNET GTA GIN 做笔记的目的 1.监督自己把50多个小时的视频看下去,所以每看一部分内 ...

  2. [2022]李宏毅深度学习与机器学习课程内容总结

    [2022]李宏毅深度学习与机器学习课程内容总结 课程感受 第一讲必修 ML的三个步骤 第一讲选修 深度学习发展趋势 反向传播 从线性模型到神经网络 为什么要用正则化技术 为什么分类是用交叉熵损失函数 ...

  3. [2022]李宏毅深度学习与机器学习第十二讲(必修)-Reinforcement Learning RL

    [2022]李宏毅深度学习与机器学习第十二讲(必修)-Reinforcement Learning RL 做笔记的目的 What is RL Policy Gradient Version 1 Ver ...

  4. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips

    文章目录 一.深度学习步骤回顾 二.常规指导 三.训练过程中Loss很大 3.1 原因1:模型过于简单 3.2 原因2:优化得不好 3.3 原因1 or 原因2 ? 四.训练过程Loss小.测试过程L ...

  5. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Convolutional Neural NetWork(CNN)

    文章目录 一.图片分类问题 二.观察图片分类问题的特性 2.1 观察1 2.2 简化1:卷积 2.3 观察2 2.4 简化2:共享参数 - 卷积核 2.5 观察3 2.6 简化3:池化 2.6.1 M ...

  6. 李宏毅深度学习笔记——呕心整理版

    李宏毅深度学习笔记--呕心整理版 闲谈叨叨叨: 之前看过吴恩达的一部分课程,所以有一定理论基础,再看李宏毅的课程会有新的理解.我先以有基础的情况写完学习过程,后续再以零基础的角度补充细节概念(估计不会 ...

  7. 深度学习vs机器学习 | 这些本质区别你知道多少?

    作者 | Walker [磐创AI导读]:深度学习和机器学习已经变得无处不在,那它们之间到底有什么区别呢?本文我们为大家总结了深度学习VS机器学习的六大本质区别.欢迎大家点击上方蓝字关注公众号:磐创A ...

  8. 深度学习入门笔记(六):误差反向传播算法

    专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...

  9. 2020李宏毅深度学习hw1

    2020李宏毅深度学习hw1 1.导入包 import sys import pandas as pd import numpy as np 2.加载数据 data = pd.read_csv('tr ...

最新文章

  1. 在C ++中检查一个数组是否是另一个数组的子数组
  2. 表视图(UITableView)与表视图控制器(UITableViewController)
  3. Flash 与数学:圆的切线(2)
  4. js小学生图区_js实现图片区域可点击大小随意改变(适用移动端)代码实例
  5. Hive map阶段缓慢,优化过程详细分析
  6. hdu 1754 线段树 水题 单点更新 区间查询
  7. jmeter接口测试json详解
  8. c语言个人日记本系统的设计,[设计]c语言程序课程设计日记本管理系统.doc
  9. 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
  10. 手机局域网关闭计算机的方法,用手机控制电脑关机 方法介绍【图文】
  11. java 100以内的偶数的和_java 2.3 循环语句计算100以内的偶数和(五种方法)
  12. CleanMyMac最新4.10.5版本 智能一键扫描清理工具
  13. What‘s next for AlphaFold and the AI protein-folding revolution / 什么是AlphaFold和AI蛋白质折叠革命的下一步?
  14. Mybatis Plus 看这篇就够了,通俗易懂,一发入魂
  15. three.js 构建简单的房间
  16. 用bat批量启动多个软件/程序
  17. python.plt 画三维图像
  18. 【错误异常大全】:正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
  19. 陈景润定理与哥德巴赫猜想
  20. HDU 2112-HDU Today

热门文章

  1. 最常见的家居风水问题点评
  2. Mac 本地以 docker 方式配置 neo4j
  3. matlab中cheb1ord函数,matlab cheb1ord
  4. 部编版是什么版本_部编版和人教版的区别是什么
  5. k8s k3s云容器性能测试-边端云端性能测试
  6. Jupyter Notebook修改默认主题字体大小 - 放大字号后眼睛再也不累了
  7. 样本分析(TeslaCrypt,AES)
  8. 【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型
  9. linux web漏洞扫描arachni
  10. ckeditor+ckfinder配置