李宏毅生成对抗网络2021学习笔记

什么是generator?

有一个从一个简单分布(这种分布的表达式我们可以写出来)这个网络以这个分布中采样得到的向量作为输入,输出另一个复杂的分布。能够做到这种事情的网络就是生成式网络。
在这里插入图片描述
为什么要是一个“分布”?
视频预测:
在这里插入图片描述
如果不是分布的话,可能在遇到某一情况下时,向左转和右转的情况同时存在资料库中,精灵就会分裂成两个。

在这里插入图片描述
如果我们在输入中加入一个分布中的采样,他的输出也就是有概率的一个分布。
在这里插入图片描述
当下最有名的生成器:generative adversarial network (GAN)
unconditional GAN:输入只有采样的分布,没有x
在这里插入图片描述
在GAN中,除了Generator还要训练一个Discriminator,它输入Gen生成的分布,给这个结果打分(输出一个标量)
在这里插入图片描述
要指出的是GAN的generator和discriminator都是自己设计的,可以是CNN也可以是transformer。

算法步骤:
在这里插入图片描述
在这里插入图片描述

GAN的理论介绍

在这里插入图片描述
pg是生成的分布,pdata是真实的分布,目标:Pg和Pdata越接近越好。
我们衡量两个分布之间的差别,用到Div函数,我们要做的就是找一组generator的参数,使得两个分布相近。
在这里插入图片描述
问题:实际操作中Div函数很难计算,因为实际上要知道pg和pdata的表达形式几乎是不可能的。但是GAN在训练的时候,只需要能够从两个分布中采样出数据来就可以计算散度。
在这里插入图片描述
计算散度依靠的是discriminator
我们要训练D,使得真实分布中采样的数据得分高,虚假数据得分低。在训练D使得其目标函数最大化的时候,红框框部分可以通过推导证明和JS divergence是有关的。
所以D的目标函数,就可以反映出两个分布的散度。
在这里插入图片描述

所以我们就用红框框的式子代替G的目标函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过改变D的目标函数,可以用不同的Divergence来度量两个分布的散度。

在这里插入图片描述

GAN的训练技巧

优化JS divergence的问题:
在大部分情况下,Pg和Pdata重叠的部分很少
在这里插入图片描述
问题:只要两个分布没有重叠,JS divergence算出来的值永远是log2
在这里插入图片描述
尝试用其他的度量分布之间差异的方法:Wasserstein distance。想象P分布是一个土堆、要将P移动到Q的平均距离就是Wasserstein distance
在这里插入图片描述
这就出现另一个问题,要将分布p转换为分布q的样子,是有多种方案的。算的时候,穷举所有的Wasserstein distance,取最小的一个作为结果。
在这里插入图片描述
如果能够算出W,可以从discriminator的目标函数中看出来损失是越来越小的,因为生成分布pg和目标分布pdata之间的距离可以量化地显示出来了。
计算Wasserstein distance的方法:这里的x是network的输入换成y更贴切,E代表期望
在这里插入图片描述
可以保持D符合1-Lispschitz的方法:
在这里插入图片描述
理论和实操上的一个差异:
虽然理论中要优化Discriminator,但是在实际中D每次只更新一次,然后就又轮到了G更新参数,D的下一次更新继承了上一次更新的参数。也就是说并不是像理论上的D的loss function收敛之后再更新G的参数。

即便如此GAN还是比较难train的、因为D和G的进步要依赖对方,只要其中一个不再进步了,另一个也会随之停滞下来了。
在这里插入图片描述
要调超参数使得D的loss下降,但是只能调一次,如果中间训练的时候有某一次loss没有下降,就很危险了。
更多的训练技巧:
在这里插入图片描述
其他generator:
在这里插入图片描述

GAN的评价

在早期,是直接用人看的。但是显然这样有问题。
针对特定的任务,存在一些评估方法。可以训练一个图片分类器,将生成的图片作为输入,查看分类情况。
在这里插入图片描述
gen可能会产生多张重复图片
在这里插入图片描述

评判生成图片的多样性:
多样性低:
在这里插入图片描述
多样性高:
在这里插入图片描述
多样性和quality的同时考虑:inception score
当生成某个特定种类的时候,多样性肯定是很低的,inception score不适用。
FID:在softmax之前,将向量拿出来,所有生成的图片产生的softmax之前的向量在高维中代表一系列的点,假设真实的图片和产生的图片分布都是高斯分布,计算这两个高斯分布的Frechet distance
在这里插入图片描述
还有一种情况,GAN可能只是背下来了图片资料,而且是不好去比对发现的。
在这里插入图片描述

Conditional generation

除了z作为输入之外,我们还想输入一个x作为控制输出结果的变量。比如text-to-image就是一个cgan问题
在这里插入图片描述
在设计D的时候,打分除了关心图片是否真实,还要判断图片和x是否匹配

在这里插入图片描述

除了用文字作为condition,还可以用图片作为condition。
在这里插入图片描述
出现模糊的情况是因为会有多种可能,用GAN之后可能会出现额外的东西,效果最好的是GAN+supervised
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值