前置知识
GAN(生成对抗网络)在semi-supervised learning(半监督学习)上取得了较强的实证成果,但是有两点是我们都没搞明白的:
- discriminator(判别器)是如何从与generator(生成器)的联合训练中收益的
- 为什么一个好的classification(分类)效果和一个好的生成器不能同时获得
本质目标
为了更好的寻找能正确分类的low-density boundary(低密度边界)
low-density boundary
为了防止非正确分类低密度边界的干扰,我们需要用生成器产生可见样本空间中的“补样”,填充一些低密度区域,此时的生成器产生的样本分布与真实分布是不一致的,因此生成器是“bad”的。
OpenAI提出的基于GAN的半监督学习的优化目标(损失函数)如下:
[站外图片上传中...(image-d74737-1558527258331)]
参数说明
- 标注集L={(x,y)},其中x为图像数据,{1,2,…,K}对应K个真类,还有一个K+1的假类
- P_G、P_D是对应于G(生成器)和D(判别器)的概率分布,P_D覆盖K+1个类的分布,前K个类是真类,第K+1个类是假类(生成器生成的),和CatGAN一样
- P是真实数据的概率分布
这个损失函数由三部分组成。第一部分是最大化在标注集L中log下的P_D条件概率的数学期望,这个是基本的监督学习的损失函数;第二部分是最大化在真实数据p中log下的P_D对前K个类的概率的数学期望;第三部分是最大化在生成数据P_G中log下P_D对第K+1类概率的数学期望。
这样看还是太复杂了吧,我这里用一些简单的语言来解释:
第一部分,是希望D能从标注数据L中接收任意输入(x,y),得到的输出y^与输入时的y一致,也就是正确分类,然后将这种概率最大化。
第二部分,是希望D能从真实数据P(包含未标注数据)中接收任意输入x,得到的输出y被认为是真类,将这种概率最大化。
第三部分,是希望D能从生成数据P_G(都是假的)中接收任意输入x,得到的输出y被认为是假类,将这种概率最大化。
这里的D实际上就是一个多分类神经网络,D的最后一层就是一个softmax激活函数。
理论推导
proposition1提议1
如果生成器D是完美的,即P_D与P的分布完全一致,那么公式的第二部分和第三部分就是矛盾的,如果第二部分大,则第三部分必然很小,反之亦然。
因此,当生成器是完美的时候,不仅生成器不起作用,而且未标记的数据也没有得到有效利用。
assumption1
假设1
收敛条件。当D收敛于一个训练集{L,U,G}(L是标注数据,U是未标注数据,G是生成数据),D能学到一个完全能正确分类的决策边界。更具体来说,(1)L中的数据均能正确分类;(2)G中的数据均被分在第K+1类(3)U中的数据均被分在前K个类中。
lemma1
corollary1
推论1
当生成的数据是无穷多的时候,根据Lemma1,我们有以下推论,D在softmax前输出的属于前K个类的值均小于等于0
proposition2
提议2
在满足推论1的情况下,我们所有的分类集合均正确分类。
直观地说,生成器生成补码样本,因此真实类的logits在补码样本中必须很低。因此,该鉴别器在低密度区域获得了类边界。
pic2
实验方法
Generator Entropy(生成熵)
Generator Entropy这里可以用L_PT代替
L_PT
Generating Low-Density Samples(生成低密度样本)
最小化它
Generating Low-Density Samples
生成器的目标函数(损失函数)
也就是生成熵+生成低密度样本
[图片上传失败...(image-75dd29-1558527258331)]
判别器的目标函数(损失函数)
loss2实验结果
当然是SOTA啦!
result
网友评论