0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GAN原理及其在半监督学习中的意义

zhKF_jqr_AI 来源:未知 作者:李倩 2018-09-24 09:44 次阅读

编者按:《GANs in Action》作者Jakub Langr简述了对抗生成网络原理及其在半监督学习中的意义。

在许多研究人员和我的朋友看来,对抗生成学习/网络(Generative Adverserial Learning/Networks,GANs)很可能是AI的未来发展方向之一。GAN在商业上有很清晰的吸引力:可以基于较少的数据训练,可以创建迷人的应用(例如3D模型生成),有大量研究潜力。

本文包括一定的技术内容,也有一些高层的伪代码,但我将尽力让这篇文章容易理解,也希望这篇文章不会太枯燥。

你想挤上AI这趟车吗?

GAN这一切都是最前沿的内容,本文提到的一些内容甚至是一两年前刚在学术期刊上发布的内容。所以,除非你是这方面的博后,初次接触GAN可能会让你觉得不同寻常(至少对我来说是这样的)。同时这也意味着其中有一些研究没有对应的理论,你需要应对一些超奇怪的bug. 不过因为我最近完成了(好吧,我真的很喜欢上MOOC)Parag Mital开设的非常棒的Creative Applications of Deep Learning with TensorFlow(基于TensorFlow的深度学习创意应用)课程,我决定分享一些我学到的东西。

半监督学习大致上指在训练中同时使用标注过的(监督)和未标注过的(无监督)样本,这是一个比较老的概念了。它的核心思想意义很大:在典型的监督设定下,我们有大量没有使用的数据。例如,在房价(标注)数据上的线性回归。我们都明白线性回归可以生成房价,但大多数房子没有出售,然而我们也许仍然能取得相关数据,比如从城市规划数据中获取。这些数据可以给我们提供更多的信息,例如对比不同区域,哪里的房子相对而言供不应求,哪里大面积的房子更多。不以某种形式利用这些数据很蠢,但传统的算法没法使用它们。

因此,半监督学习(SSL)意味着使用不同技术以某种方式在机器学习(ML)模型的训练中添加这些数据。这并非微不足道:如果把训练ML想象出创建一棵决策树,接着通过检查是否得出正确答案评估决策树的表现。那么,很不幸,在未标注数据上,没有正确答案(因为在数据收集期间房子未曾出售),所以没法进行学习,因为ML算法无法连接正确答案(因此无法计算损失)。在这篇文章中,我希望集中讨论其中一种称为对抗生成网络的SSL技术。

GAN有两个网络组成。第一个网络创建世界的内在版本(即通常房子是什么样的):这称为生成模型(G),基本上它基于一切数据学习,因为它不需要标签,只需要数据集中典型房屋的所有特征。第二个网络,称为判别器(D),和G对抗,同时从真实数据集和生成器生成的房屋样本中取样,决定数据看起来是不是真的。

换句话说,想象我们正在尝试标注猫或狗,在这一情形下,G将学习如何生成图像,并逐渐使生成的图像越来越像猫或狗。

接着,我们大致上让G和D互相竞争,以产生最好的结果:我们希望每次G变得更好时,D也能变得更好,相互匹配(我们需要确保G或D没有胜出对方太多)。这也正是驱动AlphaGo的核心原则之一。基本上,我们让G生成图像,让D对此加以评判。所以G会传递一组图像给D,而D会输出0或1(代表真假)并传回G。接着G会根据哪些图像骗过了D、哪些没骗过而努力生成更好的样本。

来源:KDNuggets.com

所以我希望你明白了上面的过程,我们可以基于大量未标注数据构建一个生成器,并让它学习数据的某些结构(即,典型样本看起来是什么样的),接着让它在竞争中使生成数据尽可能接近真实数据。经过这一过程,我们可能得到一些看起来相当不错的合成数据,这些合成数据的数量几乎是无限的。另外,我想指出(省略大量说明):生成器只能生成和之前见过的数据相似的数据。人们很容易忘记这点,没有魔法。

请会拉丁语的同学谅解 ;-)

从最高层的抽象看,这一切大概是这样的:

# 获取数据

real_data = pd.read('real_data.csv') # 形状 (n样本, n特征加标签)

unlabelled_data = pd.read('unlabelled_data.csv') # 形状 (n样本, n特征)

# 创建两个对象

generator = GeneratorClass()

discriminator = DiscriminatorClass()

# 预训练生成器

generator.train(unlabelled_data)

# 获取合成数据

synthetic_data = make_compete(generator, discriminator, real_data)

# 形状 (任意数量, n特征)

好吧,细心的读者可能会注意到我们没有描述如何标记生成样本。理想情况下,我们想要生成标注数据(例如,附带价格的房屋,或者附带物体描述的图像)。感谢大量的训练实例,我们有办法做到这点。如果你回头看看之前的示意图,你会看到其中提到了称为“潜空间”的东西。潜空间是一种控制生成什么样的图像的方法。如果我们训练猫狗生成器,其中一个维度将控制图像有多像猫/狗。它也允许我们获取两者之间的中间值,所以我们可以得到狗猫或者七分猫三分狗。换句话说,潜空间可以看成某种种子因素——为G提供一些初始输入免得它总是生成一样的东西,但是事实上这一种子因素具备一致的潜(“隐藏”)性质,特定的维度对应某种意义的。

简单修改上面的伪代码,以清楚地表明这一点:

# 形状 (任意数量, n特征)

synthetic_cats = make_compete(generator, discriminator,

real_data, input_noise=latent_feature_space.cat)

# 形状 (任意数量, n特征)

synthetic_dogs = make_compete(generator, discriminator,

real_data, input_noise=latent_feature_space.dog)

最棒的地方在于,理论上,我们甚至不需要有为当前任务标注的数据就可以生成相应样本(不过有标注数据会有很大帮助)。例如,我们可能有打上了好孩子和坏孩子的数据,然后我们可以训练G生成猫或狗的新样本(根据潜空间的一个参数决定是猫是狗),其中既有好孩子,也有坏孩子(基于潜空间的另一个参数决定)。比方说,我们可以基于图像判断狗的好坏(例如,如果我们看到狗破坏财物就标记为坏孩子,否则就标记为好孩子)。那么我们就可以在潜空间中发现对应这些特征的参数,然后通过插值生成猫狗或者狗猫。

再举一个例子,我们可以下载大量未标注的名人面部图像,然后让G生成面部,并通过操作潜空间得到明确的雄性样本或雌性样本,接着据此训练另一个识别雄性或雌性图像的分类器(无需标注过的数据!)这正是我曾经做过的项目。你可能想要知道“我们如何得到不同属性的潜空间表示?”很不幸,这个问题的答案超出了本文的范围。

唷,时候不早了:我希望给出一些可以实际运行的代码,这样读者可以自行试验。不过,我觉得这篇博客文章已经够长了,所以,对实际代码感兴趣的读者,请访问我的另一篇博客文章:http://jakublangr.com/gans-code.html

想要加入对话?欢迎在jakublangr.com上评论,或者发推给我(langrjakub)。我正在撰写一本关于对抗生成网络的书,这里有一些样章:www.manning.com/books/gans-in-action

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40041
  • GaN
    GaN
    +关注

    关注

    19

    文章

    1765

    浏览量

    67958
  • 深度学习
    +关注

    关注

    73

    文章

    5237

    浏览量

    119907

原文标题:半监督学习背景下的对抗生成网络

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深非监督学习-Hierarchical clustering 层次聚类python的实现

    【深度学习基础-17】非监督学习-Hierarchical clustering 层次聚类-python实现
    发表于 04-28 10:07

    如何用卷积神经网络方法去解决机器监督学习下面的分类问题?

    人工智能下面有哪些机器学习分支?如何用卷积神经网络(CNN)方法去解决机器学习监督学习下面的分类问题?
    发表于 06-16 08:09

    基于半监督学习的跌倒检测系统设计_李仲年

    基于半监督学习的跌倒检测系统设计_李仲年
    发表于 03-19 19:11 4次下载

    基于半监督学习框架的识别算法

    人体行为识别是计算机视觉研究的热点问题,现有的行为识别方法都是基于监督学习框架.为了取得较好的识别效果,通常需要大量的有标记样本来建模.然而,获取有标记样本是一个费时又费力的工作.为了解决这个
    发表于 01-21 10:41 1次下载

    英伟达通过利用GAN及无监督学习,实现了场景间的四季转换

    英伟达近期在GAN相关研究和应用方面进展迅猛,在前一阵的成果展示中,通过利用生成对抗网络(GAN)及无监督学习两种深度学习技术,实现了场景间的四季转换,通俗来说,就是去除路旁的积雪或是
    发表于 05-16 15:55 2417次阅读

    你想要的机器学习课程笔记在这:主要讨论监督学习和无监督学习

    with experience E(一个程序从经验E中学习解决任务T进行某一任务量度P,通过P测量在T的表现而提高经验E(另一种定义:机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。) 不同类型的机器学习算法:主要
    发表于 12-03 17:12 420次阅读

    如何用Python进行无监督学习

    监督学习是一种用于在数据中查找模式的机器学习技术。无监督算法给出的数据不带标记,只给出输入变量(X),没有相应的输出变量。在无监督学习中,算法自己去发现数据中有趣的结构。
    的头像 发表于 01-21 17:23 3962次阅读

    机器学习算法中有监督和无监督学习的区别

    监督学习的好处之一是,它不需要监督学习必须经历的费力的数据标记过程。但是,要权衡的是,评估其性能的有效性也非常困难。相反,通过将监督学习算法的输出与测试数据的实际标签进行比较,可以很容易地衡量
    的头像 发表于 07-07 10:18 5376次阅读

    最基础的半监督学习

    导读 最基础的半监督学习的概念,给大家一个感性的认识。 半监督学习(SSL)是一种机器学习技术,其中任务是从一个小的带标签的数据集和相对较大的未带标签的数据中学习得到的。SSL的目标是
    的头像 发表于 11-02 16:08 2384次阅读

    监督学习最基础的3个概念

    导读 今天给大家介绍半监督学习中的3个最基础的概念:一致性正则化,熵最小化和伪标签,并介绍了两个经典的半监督学习方法。 没看一的点这里哈:半监督学习入门基础(一) 半监督学习 (SSL
    的头像 发表于 11-02 16:14 2684次阅读
    半<b class='flag-5'>监督学习</b>最基础的3个概念

    为什么半监督学习是机器学习的未来?

    为什么半监督学习是机器学习的未来。 监督学习是人工智能领域的第一种学习类型。从它的概念开始,无数的算法,从简单的逻辑回归到大规模的神经网络,都已经被研究用来提高精确度和预测能力。 然而
    的头像 发表于 11-27 10:42 3648次阅读

    监督学习:比监督学习做的更好

    监督学习是人工智能领域的第一种学习类型。从它的概念开始,无数的算法,从简单的逻辑回归到大规模的神经网络,都已经被研究用来提高精...
    的头像 发表于 12-08 23:32 1140次阅读

    基于人工智能的自监督学习详解

    监督学习让 AI 系统能够从很少的数据中学习知识,这样才能识别和理解世界上更微妙、更不常见的表示形式。
    的头像 发表于 03-30 17:09 5642次阅读
    基于人工智能的自<b class='flag-5'>监督学习</b>详解

    机器学习中的无监督学习应用在哪些领域

    监督学习|机器学习| 集成学习|进化计算| 非监督学习| 半监督学习| 自监督学习| 无
    发表于 01-20 10:52 4598次阅读
    机器<b class='flag-5'>学习</b>中的无<b class='flag-5'>监督学习</b>应用在哪些领域

    监督学习的一些思考

    监督学习的流行是势在必然的。在各种主流有监督学习任务都做到很成熟之后,数据成了最重要的瓶颈。从无标注数据中学习有效信息一直是...
    发表于 01-26 18:50 1次下载
    自<b class='flag-5'>监督学习</b>的一些思考