简介
Semi-supervised learning with generative adversarial networks.Cited-268。还是借助大佬的开源:sgan,这大佬的仓库里一堆的gan及变种,Star-5.5k。
关键字
GAN,SGAN,生成模型,深度学习,半监督学习,机器学习
正文
1. 目标和思路
本文目标有两个:一是半监督分类任务,二是提高生成器的图片质量。其思路是在GAN的基础上把判别器改成分类器来提高生成器和分类器的性能。
原有GAN的判别器是二分类器,区别真假样本,现在多了一些带标签的样本后,假设这些样本有K类,那么把判别器改为K+1类的分类器,第K+1类为异常类,对应生成器生成的伪样本,这样的GAN文献内称为SGAN。
训练SGAN时,按照GAN那样交替训练,更新判别器参数时真实样本按照其标签类别计算,生成样本按照异常类标签类别计算即可更新 参数;接下来是生成器的参数更新,原论文没提怎么更新,合计了下,猜想是按照1~K中随机选择一个作为其标签来操作的。
然后看了下大佬的开源,结果看到判别器有两个输出,一个是二分类的输出,一个是K+1分类器的输出,计算判别器参数更新的损失是,二分类损失+多分类损失;计算生成器参数更新的损失,用二分类的输出来计算。
不知道我的理解和开源代码的理解哪个正确,反正论文没写明,有机会跑下实验看看,应该是开源正确概率大些,毕竟人家实现了哈,应该有实验结果支撑。
2. 算法
如图(来自文献Algorithm1):
3. 效果
SGAN的目标有两个,一个是提高生成器质量,如图(文献Figure1),说明在图片中:
第二个目标是提高分类器性能,把G的参数固定住,单独训练分类器作为基准,对比SGAN,判别类别时取1~K类中的最大值作为类别,在不同的训练样本下情况如图(文献Table1):
参考资料
[1] Odena, Augustus. "Semi-supervised learning with generative adversarial networks." arXiv preprint arXiv:1606.01583 (2016).