机器学习入门之GAN用于半监督学习
小标 2018-12-12 来源 : 阅读 1593 评论 0

摘要:本文主要向大家介绍了机器学习入门之GAN用于半监督学习,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍了机器学习入门之GAN用于半监督学习,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。


概述

GAN的发明者Ian Goodfellow2016年在Open AI任职期间发表了这篇论文,其中提到了GAN用于半监督学习(semi supervised)的方法。称为SSGAN。 
作者给出了Theano+Lasagne实现。本文结合源码对这种方法的推导和实现进行讲解。1

半监督学习

考虑一个分类问题。 
如果训练集中大部分样本没有标记类别,只有少部分样本有标记。则需要用半监督学习(semi-supervised)方法来训练一个分类器。

wiki上的这张图很好地说明了无标记样本在半监督学习中发挥作用: 

如果只考虑有标记样本(黑白点),纯粹使用监督学习。则得到垂直的分类面。 
考虑了无标记样本(灰色点)之后,我们对样本的整体分布有了进一步认识,能够得到新的、更准确的分类面。

核心理念

在半监督学习中运用GAN的逻辑如下。

无标记样本没有类别信息,无法训练分类器;

引入GAN后,其中生成器(Generator)可以从随机信号生成伪样本;

相比之下,原有的无标记样本拥有了人造类别:真。可以和伪样本一起训练分类器。 

举个通俗的例子:就算没人教认字,多练练分辨“是不是字”也对认字有好处。有粗糙的反馈,也比没有反馈强。

原理

框架

GAN中的两个核心模块是生成器(Generator)和鉴别器(Discriminator)。这里用分类器(Classifier)代替了鉴别器。 

训练集中包含有标签样本和无标签样本。 
生成器从随机噪声生成伪样本。 
分类器接受样本,对于类分类问题,输出维估计,再经过softmax函数得到概率:其前维对应原有个类,最后一维对应“伪样本”类。 
的最大值位置对应为估计标签。


三种误差

整个系统涉及三种误差。

对于训练集中的有标签样本,考察估计的标签是否正确。即,计算分类为相应的概率: 


对于训练集中的无标签样本,考察是否估计为“真”。即,计算不估计为类的概率: 


对于生成器产生的伪样本,考察是否估计为“伪”。即,计算估计为类的概率: 


推导

考虑softmax函数的一个特性: 


即,如果输入各维减去同一个数,softmax结果不变。 
于是,可以令,有,保持不变。


期望号略去不写,利用后两种代价变为: 


上述推导可以让我们省去,让分类器仍然输出K维的估计。

对于第一个代价,由于分类器输入必定来自前K类,所以可以直接使用的前K维: 


引入两个函数,使得书写更为简洁:


三个误差: 


优化目标

对于分类器来说,希望上述误差尽量小。引入权重,得到分类器优化目标: 


对于生成器来说,希望其输出的伪样本能够骗过分类器。生成器优化目标与分类器的第三项相反: 


实验

本文的实验包含三个图像分类问题。分类器接受图像,输出类分类结果。生成器从均匀分布的噪声生成一张图像。

MNIST

10分类问题,图像为28*28灰度。

生成器是一个3层线性网络: 

分类器是一个6层线性网络: 

训练样本60K个,测试样本10K个。 
选择不同数量的训练样本给予标记,考察测试样本中错误个数。使用不同随机数种子重复10次:

有标记样本

20

50

100

200

占比    0.033%    0.083%    0.17%    0.33%    

错误个数    1677±452    221±136    93±6.5    90±4.2    

Cifar10

10分类问题,图像为32*32彩色。

生成器是一个4层反卷积网络: 

分类器是一个9层卷积网络: 

训练样本50K个,测试样本10K个。 
选择不同数量的训练样本给予标记,考察测试样本中错误个数。使用不同的测试/训练分割重复10次:

有标记样本1000200040008000
占比2%4%8%16%
错误个数21.83±2.0119.61±2.0918.63±2.3217.72±1.82

SVHN

10分类问题,图像为32*32彩色。

生成器(上)以及分类器(下)和CIFAR10的结构非常类似。 

训练样本73K,测试样本26K。 
选择不同数量的训练样本给予标记,考察测试样本中错误个数。使用不同的测试/训练分割重复10次:

有标记样本50010002000
占比0.68%1.4%2.7%
错误个数18.84±4.88.11±1.36.16±0.58

USC的Shao-Hua Sun也给出了一个Tensorflow实现。但没有处理训练集中的无标签样本,个人认为对原文理解有偏差。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 1
看完这篇文章有何感觉?已经有1人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程