李宏毅机器学习——对抗生成网络(GAN)
代码部分参考:李宏毅机器学习作业6-使用GAN生成动漫人物脸_iwill323的博客-CSDN博客
目录
基本概念介绍
生成器(generator)
什么时候需要输出一个分布
Generative Adversarial Network (GAN)
discriminator(鉴别器)
GAN的基本思想和算法
应用实例
Anime Face Generation(动画人脸生成)
Progressive GAN——真实人脸生成
The first GAN
BigGAN
设定目标与训练
GAN 的训练目标:让生成器产生的与真实数据之间的分布接近
借助Discriminator 的力量计算 Divergence
从Objective Function到JS divergence
使用其他的divergence
JS divergence存在的问题
PG和Pdata重叠的范围很小
重叠部分少导致的问题
Wasserstein distance
Wasserstein distance概念:另一种计算divergence的方法
Wasserstein distance好处
计算方法和WGAN
GAN is still challenging
GAN for Sequence Generation
Conditional Generation(CGAN)
cycle GAN
实现方式
More style-transfer GAN
StarGAN
Text Style Transfer
文本摘要
无监督翻译
无监督语音辨识
生成器效能评估
图片质量:对一张图片
图像的多样性:对所有(一批)图片
模型崩溃Mode Collapse
Mode Dropping
Mode Collapse与Mode Dropping的区别
如何衡量生成图片的多样性
量化指标
Inception Score (IS)
Frechet Inception Distance (FID)
We don’t want memory GAN
其他的评估办法
总结
基本概念介绍
生成器(generator)
区别于给定x输出y的神经网络,现在给神经网络的输入添加一个从简单分布(Simple Distribution)中随机采样的变量,生成一个复杂的满足特定分布规律的输出(Complex Distribution)
分布:高斯分布、均一分布
z所选择的不同的distribution之间的差异并没有真的非常大,generator会想办法把这个简单的distribution对应到一个复杂的distribution。所以可以简单地选择“正态分布”
方法:
- X,Z两个向量直接接起来,变成一个比较长的向量,作为network的input
- X跟Z正好长度一样,相加以后当做network的input
什么时候需要输出一个分布
当我们的任务需要一点创造力的时候,一个输入有多种可能的输出,这些不同的输出都是对的,但又只需要输出一个对象,这时就需要使用generator,在网络中加入随机输入,让网络在复杂分布中随机选择一个对象输出(输出有几率的分布)。
Generative Adversarial Network (GAN)
GAN是众多generator中比较有代表性的一个,而GAN的种类也非常多,常常会出现重名的GAN和奇奇怪怪的GAN名字。
以unconditional generation(不考虑x,只考虑z)为例,假设Z是从一个normal distribution里采样出来的向量,通常会是一个low dimensional的向量,维度是你自己决定的,丢到generator裡面,输出一个非常高维的向量,希望是一个二次元人物的脸
discriminator(鉴别器)
Discriminator也是一个神经网络(可以考虑使用CNN、transformer等),可以将generator输出的图像转换成数字,越接近于1,说明图像越真实,品质越高。
GAN的基本思想和算法
generator和discriminator是对抗关系,discriminator通过真实的图像来监督generator的图形生成,两者不断相互进化。
1、随机初始化generator和discriminator。
2、固定generator不变,更新discriminator。
将generator产生的图像和数据库样本比较,让discriminator分辨二者之间的差异,从而把二者区分开。具体地说,就是 real ones 经 0过 D,输出值大(接近 1),generator 产生的数据 (generated ones) 经过 D,输出值小(接近 0)。
该训练可以当作分类的问题来做(把样本当作类别1,Generator產生的图片当作类别2),然后训练一个classifier;也可以当作regression的问题来做(样本对应输出1,generator產生的图形对应输出0)
3、固定discriminator不变,更新generator。
从gaussian distribution采样作為generator输入,產生一个图片,把这个图片丢到Discriminator裡面,Discriminator会给这个图片一个分数,Generator训练的目标是要Discriminator的输出值越大越好,说明它产生的数据可以以假乱真
4、不断循环上述过程,直至产生很好的图像
实际中可以把 generator 和 discriminator 组成一个大的网络结构,如下图所示,前几层为 generator,后几层为 discriminator,中间 hidden Layer 的输出就是 generator 的输出,更新generator的时候就只更改前面几层,而更新discriminator的时候就只更改后面几层。
理解:
Generator 或 Discriminator每次只有一个在训练。训练时,所掌握的是对方上一轮训练的信息。其实这就像是双方每一次交手后,知道对方最新的技术水平,然后回去提升自己。精妙,但是对训练过程提出了更高要求:如果其中一个训练过程中某几步loss上升,就会对另一个的训练会产生负面影响,后者又可能会对前者产生负面影响,恶性循环,导致训练“坏掉”。
应用实例
Anime Face Generation(动画人脸生成)
Progressive GAN——真实人脸生成
生成“没有看过的\连续变化的”人脸。generator输入一个向量 输出一张图片。把输入的向量,做内插interpolation,看到两张图片之间连续的变化。
The first GAN
BigGAN
设定目标与训练
GAN 的训练目标:让生成器产生的与真实数据之间的分布接近
从给定简单的 Normal Distribution 采样数据,经过 Generator,得到的输出分布PG,使其接近目标分布Pdata。于是要计算PG与Pdata这两个分布之间的距离,用Divergence表征,找一个genenrator尽量使Divergence小。
问题在于我们无法知道PG和Pdata的分布。GAN 告诉我们,不需要知道 PG 跟Pdata的分布具体长什麼样子,只要能从 PG 和 Pdata这两个分布中采样,就有办法算 Divergence。
关于采样:从数据库裡面随机采样一些图片出来,就得到 Pdata;从 Normal Distribution 裡面采样向量丢给 Generator,让 Generator 產生一堆图片出来,那这些图片就是从 PG采样出来的结果
借助Discriminator 的力量计算 Divergence
Discriminator训练目标是看到Pdata给一个较高的分数,看到PG给一个比较低的分数。这个 Optimization 的问题如下(要Maximize 的东西叫 Objective Function,如果 Minimize 就叫它 Loss Function):
之所以写成这个样子,是因为在最开始设计时,希望在训练Discriminator时能够按照分类问题的方式考虑,事实上这个 Objective Function 就是 Cross Entropy 乘一个负号。Discriminator可以当做是一个分类器,它做的事情就是把从 Pdata 采样出来的真实 Image当作 Class 1,把从 PG 采样出来的假 Image当作 Class 2,训练过程等价于训练一个二元分类器。
从Objective Function到JS divergence
经过推导可以发现,
图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ... 前言 经过大半年断断续续的学习和实践,终于将深度学习的基础知识看完了,虽然还有很多比较深入的内容没有涉及到,但也是感觉收获满满.因为是断断续续的学习做笔记写代码跑实验,所以笔记也零零散散的散落在每个角 ... 对抗生成网络GAN(优化目标篇) 快要面试,故对GAN进行稍许复习 目的 对抗式生成网络GAN提出的目的是估计样本的密度函数pr(x;θ)p_r(x;\theta)pr(x;θ),且并不显式的估计密 ... 导读:GAN的风暴席卷了整个深度学习圈子,任何任务似乎套上GAN的壳子,立马就变得高大上了起来.那么,GAN究竟是什么呢? 相关资料下载 加助教小姐姐的威信即可免费获取: 1. GAN的基本思想 GA ... 生成器,判别器 G:生成网络生成的都为假的 D:判别网络判别真实数据与来自生成网络的假数据 判别网络其实就是进行一个图像二分类 生成网络需要fc层输出个数为h*w*c(c=1or3 即为一张图片的形式 ... 视频链接:https://www.bilibili.com/video/BV1tE411Z78A 在李宏毅GAN教程(1) 的基础上增添修改内容 文章目录 Basic idea of GAN 生成器G ... 文章目录 Conditional GAN 介绍 具体算法 设计Discriminator Stack GAN 图片到图片 Patch GAN 应用在speech enhancement Video G ... 目前有时间的时候学习一下gan的知识,但是时间也不多,这里记录一下所学,不要太期待喔,完全是学习李宏毅老师课程的笔记,由于是新手,欢迎大家交流指错. 引言 GAN已经作为一种思想来渗透在ML的其余领域 ... 这一节的回顾也意味着深度学习基础课程学习进入了尾声了,GAN作为性能远超我们上一节提到的VAE的一个存在还是有很多出彩的地方的: 首先引用理查德费曼的一句话-'What I cannot create ...李宏毅机器学习——对抗生成网络(GAN)相关推荐
最新文章
热门文章