解读人类水平的概念学习和一次性泛化

开发 开发工具
本文主要介绍人类水平的概念学习和一次性泛化的相关知识。

近日,在 Yuanjun Gao 的带领下,我们讨论了 Lake 等人的《Human-level concept learning through probabilistic program induction》[1] 和 Danilo J. Rezende 等人的《One-Shot Generalization in Deep Generative Models》[2] 这两篇论文。这些论文旨在模仿人类从少数样本中学习的能力。第一篇论文介绍了贝叶斯程序学习(BPL/Bayesian Program Learning)框架——一种允许这种学习能力的概率模型,而第二篇文章在深度生成模型中实现了这一想法。

一、人类水平的概念学习(Human Level Concept Learning)

从 Lake 的论文 [1] 的介绍来看,一次性学习(one shot learning)的动机是很清晰的:「人们可以从仅仅一个或一小撮样本中学习一个新的概念,而机器学习的标准算法需要几十或几百个表现类似的样本。」论文通过三种能力表述了这种学习。给定一个单一的对象,人类可以:

1. 分类新样本,

2. 生成类似类型的新样本,

3. 把它解析成部分,并理解它们的关系。

人类水平的概念学习

论文 [1](上图)的图 1 中的示例很好的描述了它。当给定(i)的红色框中的单个对象时,可以对下面的对象进行分类,无论它是否是类似类型。此外,人类可以创建类似于(ii)中的样本。人类也可以如(iii)中所示把它解析成三个较小的部分并且幻想如(iv)中所示的新样本。

1. 贝叶斯程序学习

论文介绍了贝叶斯程序学习(BPL)框架,该框架能使一个算法获得上面描述的那些能力。BPL 框架基于三个基本思想:

  • 组合性(Compositionality)
  • 因果关系(Causality)
  • 学会学习(Learning to learn)

BPL 方法学习简单的随机程序以表示概念,通过各部分、子部分和空间关系 [1] 来组合式地构建它们。关于类型 Ψ、该类型的 M 个 toke θ(1),...,θ(M) 和对应图像 I(1),...,I(M) 的联合分布可以被表示为:

贝叶斯程序学习

2. 关于手写字符的例子

提供一个示例可以让人更容易理解 BPL 及其基本思想。假设我们正在通过不多的几个样本来学习一组新的手写字符。字符可以基于通过按下笔开始和提起笔(在下面的图中定义为「部分(part)」)终止的一下笔划来解析。然后,每个笔划可以通过笔的短暂停顿(下面的「子部分(subpart)」)进一步分隔。如果给出字符「B」,则「B」可以被解析为两部分:一个是直的部分和另一个有两个曲线的部分。此外,第二部分可以进一步分成一组两个半圆。

在该模型中,手写字符的生成可以使用生成过程来描述。该过程可以分为类型生成(type generation)和令牌生成(token generation),如论文 [1] 的图 3 所示。

手写字符的生成

总结来说,类型生成过程是:

  1. 确定部分的数量。
  2. 对于每个部分,确定子部分的数量(以部分的数量为条件)。
  3. 对于每个子部分,从基元(primitives)「顺序」地采样实际符号(以前一个子部分为条件)。它完成每个部分。
  4. 对于每个部分,采样每个部分的关系(以当前部分和之前的部分为条件)。举个例子,一个关系可以是「当前部分应当与先前部分的哪一点衔接上」。
  5. 关系和部分定义了一类字符

给定一种类型,手写字符的实际图像(令牌和图像生成过程)通过以下方式生成(对人写一个字时笔是如何动的进行建模)

  1. 对于每个部分,增加一个运动变化(因为手写字符每次看起来稍有不同)。
  2. 对于每个部分,依次对开始位置进行采样,以它与先前部分的关系与轨迹为条件。
  3. 对于每个部分,对轨迹进行采样,以其形状和开始位置为条件。
  4. 添加全局变换。
  5. 通过随机渲染函数创建图像,使用灰度墨水对笔画轨迹进行排序并解释像素值。

上面的例子很好地解释了 BPL 的三个基本思想。字符可以被认为是从简单原语(「B」由一个直棒和半圆构造而成)构成。基于笔划和停顿进行解析的事实抓住了真实世界过程的自然因果结构。此外,通过「开发能让以前的经验来助于学习新概念的分层先验」,来让模型学会学习 [1]。(分析「B」学习了新的,原语和关系,其稍后可以很容易地用于学习其它字符)。

文章 [1] 的图 4(下图)显示了 BPL 如何通过解析来学习一个新的图形。左侧面板显示了给定一个示例的最好的五个学习解析,以及如何用它来重新适配一个新的样本。右面板将机器解析与实际情况,即人是如何解析它们的,进行比较。

关于手写字符的例子

二、与人类能力相比

1. 新样本的分类

给定新字符的单个图像,分类任务是从 20 个不同字符中选择相同类型的图像。结果如文章 [1] 的图 6A 所示(下图)。BPL 和人类显示出了相似的错误率(3.3%和 4.5%)。

论文还在「损害(lesioning)」算法的某些部分之后尝试了相同的任务。例如,在「学习去学习(Learning-to-learn)」步骤中的损害移除无类型生成过程并导致了 11%的错误率。损害「组合性」步骤要求每个字符只使用单个笔划学习,并导致了 14%的错误。这些结果表明这两个想法在 BPL 中是有多么基础性。

新样本的分类

2. 新样本/概念的产生

对其进行了「视觉图灵测试(Visual Turing Test)」以检查这种能力。给定一个示例字符,人类和 BPL 创建了一组新的样本。然后,参与者判断哪个集合是由人(或机器)创建的。新创建的样本如文章 [1] 的图 5 所示。如图所示,很难区分它们。您可以在图标题的结尾处查看答案。实验结果示于文章 [1] 的图 6B 中(上图)。由于它是图灵测试,50%的辨识(ID)水平表明两种情况很难区分。评判者平均只有 52%的辨识水平。

为了更直接地检验解析方法,所绘制字符以电影幻灯片的形式展示给评判者。结果是 59%的辨识率水平。此外,对产生新的概念,而不是新的样本的同样的实验也做了测试。BPL 也达到了接近 50%的辨识水平。

新样本/概念的产生

3. 将对象解析成部分并理解它们的关系

如文章 [1] 的图 4(从顶部开始的第三个图)所示,BPL 的解析能力是相当合理的,并且可以与人类解析相比。

4. 讨论

BPL 理解视觉概念中结构的能力仍然非常有限。它缺乏平行线、对称性、可选元素(如交叉笔画)等许多知识。它也缺乏人类使用学习到的概念用于其他任务,如规划、通信和概念组合 [1] 的能力。然而,对于人类,这些是从多年的教育中学到的。一次性学习和归纳这些东西似乎不是一个容易的任务。论文还提到了对概念的神经表达和更多神经基础的学习模型发展的希望,这就带来了下一篇文章。

三、深度生成模型中的一次性泛化(One-Shot Generalization in Deep Generative Models)

这篇文章使用了深度生成模型来进行图像的一次性泛化学习。它建立在反馈(feedback)和注意(attention)的原理上。

1. 模型

(1)注意(attention)

该模型结合了注意机制来学习图像。在这篇文章中,实现了空间变换(ST)的注意过程 [3],其对形状和大小是不变的。它使用参数 λ 处理输入图像 x 以生成输出:

其中 κh 和κw 是一维核,⨂是两个核的张量外积,*表示卷积。

(2)顺序生成模型

下面的数学表达式和文章 [2] 的图 2(如下所示)简洁地描述了模型:

在每个步骤 t = 1...T,K 维隐含变量 zt 都是独立进行采样的。可以使用注意机制来合并外部上下文或侧面信息片段 x'。

该模型是现有模型(如 DRAW [4]、复合 VAE [5] 和 AIR [6])的泛化。然而,它引入了隐藏的 canvas 步骤,其允许在隐藏空间中构造预图像。另一个需要注意的是,它允许对模型进行采样,而不将画布 ct 的结果反馈到隐藏状态 tht,这会使其更高效。

其生成样本的能力在不同的数据集中都有所体现。作为一个例子,来自二值化 MNIST 数据集的样本生成的结果如下所示。

3. 一次性泛化的使用

生成新样本或新类型。这篇文章使用上述生成模型对给定小样本进行了演示。它类似于上面论文中描述的能力。然而,模型不是通过学习单个图像(或少量图像)来产生样本,而是生成单个类型的新样本,该单个类型并不是训练集的一部分。为了做到这点,它使用一个条件生成模型,如文章 [2] 的图 2b 或生成过程的「上下文」部分所示。

(1)生成新样本

论文测试了两种不同情况下的能力。

  • 使用所有可用的字母对模型进行训练。但是删除每个字母表中的三个字符以形成测试集。
  • 在 50 个字母中,30 个用于训练,20 个用于测试。换成 40-10 和 45-5 的训练测试数据拆分方式也同样进行了测试。

结果如下所示(文章 [2] 的图 9 和 10),并且在不同的训练测试数据拆分的情况下也比较了训练和测试的对数似然。

文章 [2] 的图 5 显示在 45-5 拆分的训练和测试对数似然中存在一点差异,但是其在其它情况下表现了出来。这表明过度拟合与小训练数据集一起出现。然而,由此产生的字符表明,即使在过拟合的情况下,它还是生成了合理的新样本。

(2)新类型的生成

论文还测试了该过程是否可以通过显示一个字符图像来生成新类型。结果如文章 [2] 的图 11 所示。(结果是主观的。)

4. 讨论

此论文使用深度生成过程来模仿人类的一次性泛化能力。它表明,当提供未见过的样本时,该过程可以产生新样本或新类型。相比于使用对象自然发生的因果结构的 Lake [1] 的 BPL 模型,这种方法适用于许多场景。然而,还是有一些的限制,这还需要未来进一步研究。它仍然需要合理的数据量来避免过度拟合。虽然它适用于任何图像(通过不使用专用结构的方式),但它不能将结构解析为更小的部分。

原文地址:https://casmls.github.io/general/2017/02/08/oneshot.html

【本文是51CTO专栏机构机器之心的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2024-02-28 08:18:13

Java日志项目

2023-11-03 08:27:46

2013-04-17 09:16:37

2014-08-04 14:38:25

LinuxToken

2019-08-06 09:21:45

2021-08-12 09:48:21

Webpack Loa工具Webpack

2023-09-26 07:11:15

KubernetesJob节点

2024-04-03 09:00:10

2012-09-18 15:04:31

Office 2013微软

2009-12-25 14:46:53

Windows 7文件关联

2010-11-24 16:32:50

2014-03-06 15:16:18

安全管理linux安全

2022-10-17 00:07:55

Go语言标准库

2020-05-28 08:29:54

目录脚本测试

2019-01-06 16:15:50

云计算SaaSIaaS

2021-07-26 09:56:19

AI 数据人工智能

2012-02-01 16:48:54

后门Putty

2011-04-18 13:36:42

2020-11-02 13:44:56

CentOSK8SLinux

2009-05-06 17:20:53

密码认证SafeNetAladdin
点赞
收藏

51CTO技术栈公众号