天天看点

Human-level concept learning through probabilistic program induction

论文:《Human-level concept learning through probabilistic program induction》 

背景:

  近年来,深度学习表现出接近人类水平的认知效果。但我们发现,深度学习仍然需要大量的训练数据才可以让机器进行“学习”,在这一点上,人类可以仅仅通过一个或几个简单的例子就可以学习新的概念,识别并派生新的概念,并且学习更丰富的特征,例如举一反三,分解等。

  那么人类是怎样从稀疏的数据中进行学习概念并且进行类比的呢?

  这篇文章在手写字符实验中也参考人类学习的能力,创造性的提出使用朴素贝叶斯分类器来进行一次分类学习,即可以识别仅见过一次的字符,并可以根据该字符进行新的类型的“创造”。该方法通过了图灵测试,仅有25%的人可以成功分辨给定字符是由计算机生成还是由人类手写得到。

Human-level concept learning through probabilistic program induction

  如上图所示,在A或B图中,i)中我们可以通过仅有的一个例子进行分类;ii)中可以产生新的例子;iii)中对例子进行分析parse;iv)中派生出新的类型。

  通过图i)我们可以只通过一张新型双轮机器得到该新概念与其他的界限区分,在ii)中可以生成其他形式变形的双轮车,iii)中可以解析该双轮车的部件,并且在iv)中与其他类型结合生成新类型的车

  我们在模型中加入组合性、因果性和自主学习的能力,可以从极少的例子中进行学习。

    组合性:丰富的概念可以从简单的概念组合得到。

    因果性:将噪声加入模型中,利用噪声生成更真实、自然的字符。

    自主学习:通过生成层次化学习,可以通过之前的学习生成新的概念。

  所以我们希冀于仿照人类的学习方式建立贝叶斯概率学习模型:仅通过少数的例子仿照人类组合性、因果性和自主学习,去实现分类、解析和举一反三。

Bayesian Program Learning:

  BPL模型将concept表示成概率program,通过重组parts、subparts来得到低层的type,进而生成raw data。本文进行了one-shot分类、生成新例和生成新概念的实验。简而言之,BPL可以通过现有的碎片信息来重新加工,捕捉真实世界中的因果关系,重生成多层面的结果。

数据集:

  文章以手写字符为例比较了人类,BPL和其他一些算法在学习概念(concept learning task)上的差别,这一任务用到的视觉概念来自于Omniglot,这是一个我们从50个书写系统中收集到的1623个手写字符(Fig 2),包含每个字符的图片和笔画。(这里所说的视觉概念可以理解成一个字符,比如说中文里一个“高”字,不同的人可能写出不同版本的高,但这些都是“高”这个concept的examples)

  关于Omniglot数据集:首先从www.omniglot.com网站上获取这么多字符的图片(printed form),再在Amazon Mechanical Turk (AMT)上雇佣志愿者来看图手写这些字符,手写过程会被记录,包括何时提笔,何时落笔,字符笔画的书写顺序等,这样就相当于进行了笔画的拆分。 

Human-level concept learning through probabilistic program induction

  概念类Ψ和M个该类的token

Human-level concept learning through probabilistic program induction

 θ以及对应的二值图像I之间的联合概率分布为: 

Human-level concept learning through probabilistic program induction

  一个字符类Ψ={κ,S,R}Ψ={κ,S,R}是由κκ段笔画S={S1,...,Sκ}S={S1,...,Sκ}以及他们之间的位置关系R={R1,...,Rκ}R={R1,...,Rκ}组成的,如“二”这个字符类,是由2段笔画,并且相互独立的位置关系构成的。联合概率为

Human-level concept learning through probabilistic program induction

  其中笔画数目κκ是由经验频率(empirical frequencies)估计的多项式P(κκ)采样得到的。如下图我们看出所有的字符中,1笔2笔的字符最多,3,4,5笔的稍少,笔画更多的则更少。根据统计结果我们可以估计出笔画数目k为不同值得一个概率P(k). 

Human-level concept learning through probabilistic program induction

  得到笔画数目以后再来考虑各个笔画是什么。一段笔画是落笔-提笔的一个阶段(Fig. 3A, iii),其中每次暂停分割开了许多的子笔画(Fig. 3A, ii),即Si={si1,....sini}Si={si1,....sini},子笔画的数目nini是由经验频率采样得到,如下图,可以得到的一个结论是一个字符的笔画越多,笔画越简单(子笔画少)。

Human-level concept learning through probabilistic program induction

  每段子笔画sijsij表示成3次B样条曲线,包含3个参数sij={zij,xij,yij}sij={zij,xij,yij},zijzij是当前子笔画在library of primitives中的index,xijxij是样条的5个控制点,yijyij是尺度因子,如Fig S1所示。则联合分布。

Human-level concept learning through probabilistic program induction
Human-level concept learning through probabilistic program induction

  其中是一个从经验bigrams中学到的一阶马尔科夫过程。大概的意思就是说我们通过事先准备好的子笔画数据库进行采样,得到不同的子笔画,进而构造出不同的笔画,当然子笔画与子笔画之间是否会连续出现是受经验制约的,表示成一阶马尔科夫过程。(bigram是指给定seed primitive后,我们可以得到5个最可能的接下来的动作,即second primitive,这可以用一阶马尔科夫表示。) 

Human-level concept learning through probabilistic program induction

  得到P(SiSi)以后,他们之间的空间关系RiRi表示的是笔画SiSi的起点与之前的笔画{S1S1,…,Si−1Si−1}的关系,共定义了4种关系:ξi=ξi={Independent, start, end, along},他们的可能性为θRθR(34% independent, 5% start, 11% end, and 50% along)。 

笔画和关系都确定以后,一个字符类就创建好了,如下图所示。 

Human-level concept learning through probabilistic program induction

 生成模型:

  BPL通过简单的概率模型来表示concept,通过parts (Fig. 3A, iii)/ subparts (Fig.3A, ii)/ relation (Fig. 3A, iv)组合来生成概念,BPL定义了一个生成模型,可以通过对现有parts/subparts的重新组合得到新的concept type。然后新的概念类同样可以表示成一个生成模型,这个低层次的生成模型可以生成该概念的新的例子-token(Fig. 3A, v),这样BPL就是生成模型的生成模型了。

Human-level concept learning through probabilistic program induction

 (A)通过选择数据库中的原始运行数据(颜色编码)生成新类型,结合这些子部分(II)形成主要部分(III),并利用主要部分和关系定义简单的程序(IV)。通过运行这些程序,新的规则生成(v),然后又将其作为原始数据呈现(VI)。(B)继而产生新的规则。

Human-level concept learning through probabilistic program induction

  将BPL生成模型分为两个部分:type level和token level。Type level主要是构建字符的解析结构,token level是根据解析结构产生手写字符的过程。 

       type level: 

       (1)从背景数据集中得到的经验分布(就是前期的一些统计规律)中取样k个part,每个part中取样n个subpart 

       (2)从背景数据集中学习得到离散笔画集,构造一个part的模版

       (3)通过采样每个subpart的一些控制点和尺度参数,将part表示成参数化的曲线(到这一步已经得到了笔画的轮廓,轨迹);

       (4)根据relation(attached along,attached at start)得到笔画间粗略的位置关系(独立放置、开始、结束、还是沿着之前的subpart) 

       token level: 

       (1)引入适当的噪声来生成笔画曲线S(m)

       (2)笔画开始位置L的精确选定,从背景集中能够得到笔画的空间位置关系,结合上一笔,取样即可得到part的开始位置

       (3)进行放射变换A(m)以及加入适当的噪声

       (4)通过随机补偿函数即可得到二值图像,用灰色墨水画出轨迹

One-shot Classification:

  给定1张字符图片,要求人类测试者和BPL机器从20张图片中选出和他同类的图片(如Fig 1B i所示)。人类作为skilled one-shot learners,错误率为4.5%,而BPL的错误率更好一些,3.3%。而Deep learning相关的model如convnet:13.5%error,HDmodel,34.8%error,这些模型都是在一系列计算机视觉任务上表现良好的模型,deep siamese convnet在one-shot learning任务上做了优化,其结果是8% error,误差还是比我们的结果高了2倍多。因此BPL的优势是可以在概念的学习中对隐含的因果关系进行建模。这里其实还需要考虑深度学习等学习方法其实并不是适用于one-shot实验这一事实。

  BPL的另一个关键点在于,如果没有learning to learn的机制,或者compositionality的机制,会产生较高的error(11%和14%)。no learning to learn的意思是破坏之前设计好的type level和token level生成模型的超参数,比如以token level为例,原来设计好的参数可能是让along这种位置关系的两个笔画在一定范围内进行连接,破坏后则是完全随机的一种连接方式。no compositionality的意思是说把字符看成一个整体,通过一条样条曲线进行拟合,而不是像之前一样做笔画和子笔画的拆分。 

Human-level concept learning through probabilistic program induction

Generating New Examples:

  人类对于one-shot learning的能力并不仅仅用来做classification。他还可以生成同一概念的新例子。研究者向BPL系统展示它从未见过的书写系统(例如,藏文)中的一个字符例子,并让它写出同样的字符。并不是让它复制出完全相同的字符,而是让它写出9个不同的变体,就像人每次手写的笔迹都不相同一样。例如,在看了一个藏文字符之后,算法能挑选出该字符用不同的笔迹写出来的例子,识别出组成字符的笔画,并重画出来。与此同时,人类测试者也被要求做同样的事情。最后,通过视觉图灵测试来比较人类的creative outputs和机器产生的例子——研究者要求一组人类裁判(来自亚马逊土耳其机器人,Amazon Mechanical Turk)分辨出哪些字符是机器写的,哪些是人类写的。 

  如图5所示,给定人类产生的9个新样例和机器产生的样例,人类裁判挑选出人类的作品,我们称为identification(ID)level。理想情况是50% ID level,即裁判不能区分哪些是机器产生的,哪些是人产生的,最差的performance是100%,就是说人类裁判完全能够正确区分人类和机器。从Fig 6B 中看出,147个人类裁判只实现了52%的ID level,这个结果只稍稍比50%的随机概率要好一点。而对于BPL lesion来说,没有了learning to learn和compositionality,图灵测试就简单多了(80% ID level和65% ID level),因此这两条principle对于BPL具有human-like 生成模型起到了关键作用。 

Human-level concept learning through probabilistic program induction

Generating New Concepts:

  人类的能力不仅仅能从一个给定的concept中产生新样例,同时我们可以产生新的concept。我们通过给测试者展示10个foreign alphabet中的1个的几个例子,让他产生新的属于该alphabet的字符。如图7A所示。BPL可以通过加一个nonparametric prior在type level上得到新的类,同时复用所给的例子的stroke来保证书写风格上的一致。人类裁判(N=117)比较了人类测试者和BPL在这一任务上的结果,如图7A所示,先给裁判看i再看iii,让他判断human or machine,最终裁判只得到了49%的ID level,这和随便猜没啥区别。另外,BPL lesion(没有type-level的learning to learn)则达到了69%ID level。 

  最后,124 个裁判比较了在完全unconstrained的情况下生成new concept(不受限于某个特定的alphabet,即Fig 7B),达到51%的ID level。BPL lesion的结果分别是68%和64%,说明compositionality和learning to learn都是通过视觉图灵测试的关键。

Human-level concept learning through probabilistic program induction

结论:

  总结一下,这篇文章的大致流程是:首先使用了一个background set来模拟人的经验,将background set中的字符拆分成笔画(连贯的一笔),每个笔画再拆分成若干个子笔画(笔根据笔画中的停顿),并且记录各个子笔画之间的连接关系,由此得到了一堆子笔画及其之间连接关系的分布。以上是在background set上完成的,相当于人的先验知识,产生式模型是子笔画、笔画以及相互之间关系的联合概率分布。用概率分布可以生成新的图像,也可以计算生成某个图像的概率。 

  这种机制采取了和人类思维相近的步骤。人有大量先验知识(background set),这些知识首先会被分析并提取出各个层次的feature(part、subpart),之后大脑会尝试对这些feature进行不同的组合,包括完全不同领域的知识,并且从中筛选出有意义的组合(绝大多数都是完全没有意义的),当接收到一个全新的知识时,会与某些已经尝试过的组合非常契合,经过进一步适应,就能非常快的接受这样一个新的知识。当然人不仅可以利用先验知识准备一堆组合为新的知识服务,还可以通过内部的筛选机制,将有用的组合直接呈现给意识,也就是灵感迸发的时候。这篇工作将大脑的这种举一反三的能力运用了出来,可以说是非常有意义的,当然这篇工作中,feature的提取和组合用的是简单的拆分和条件概率的计算,对组合的筛选也是用的最简单的评分和排序,都是浅层的模型。用浅层的模型来完成复杂信息的组合和筛选是不现实的,以后如果能与深度网络结合起来,相信能有更大的突破,具有更强的举一反三地能力。

  尽管人工智能的前景正在改变,在学习新概念上人类仍远优于机器:人类只需要更少的例子,却能以多种形式运用概念。我们的工作表明,语义合成性、因果关系和学会学习将帮助机器弥补这种差距。机器学习和计算机视觉的研究者正开始探索建立在简单程序归纳上的方法,我们的结果表明这种方法可以使人工智能在分类任务中达到人类的水平,并能在视觉图灵测试中骗过大多数裁判。在每项测试中,只有不到25%的裁判的表现显著好过随机猜测。

  虽然能够成功完成这些任务,在识别视觉概念中的结构上BPL仍无法与人类相比。它缺乏平行、对称、可选要素(如“7”的小角)等外显知识,也不知道一个笔画的收尾与其他笔画的联系。而且,人类还运用了对其他能力的概念:绘画、说明、沟通以及概念组合。概率程序可以掌握概念学习与运用的多个方面,但这只会发生在它们拥有更抽象和复杂结构时。更复杂的程序还能适合学习超出简单知觉范畴的复杂概念及其因果关系。例子包括物理构件(如工具、车辆和家具)、分形结构(如河流和树木)甚至抽象知识(如自然数、自然语言语义和物理理论)。

  知晓人类如何学会所有这些概念是一个长期目标。在近期,将我们的方法应用到其他类型的符号化概念可能非常具有前景。人类文化提供了许多符号系统,如手势、舞蹈、口语和手语。和字母一样,这些概念可以从一个或几个示例中学到,即便其象征性还不明显。人们通常可以根据有限的经验认出甚至给出新的例子。BPL的语义合成性、因果关系和学会学习等原则或许有助于解释这是如何发生的。

  为了说明BPLBPL如何应用于语音领域,口语程序可以被指导将构成音素系统性地汇成音节,再进一步汇成词素和整个词语。给出一个词语抽象的音节和音素分析,因果模型就可以生成现实语音标记。我们已经发现了一个利用语义合成性和学会学习原则的原型模型,它可以模仿人学习新口头词汇的某些方面。

  我们的工作侧重于成年学习者,这引出了自然发展问题。如果儿童和BPI一样,在学习写字时有归纳性偏向,那么这一模型就有助于发现为什么儿童觉得有些字母难写,以及哪种教学过程最为有效。比较儿童和BPL在不同阶段的分析和泛化行为,这有助于评估模型学会学习的机制并给出改善意见。将我们的测试拿给婴儿做,据此可以知道孩子在学习感知字母时,是否更依赖建立在他们原始写作经验之上的语义合成性和因果关系。因果关系的再呈现已经被纳入到现在的BPL模型中,但它们很可能是通过更深的层次结构模型嵌入到“学会学习”这一过程中。

  最后,我们希望上述工作有助于揭示概念的神经表征,并推动更多基础神经学习模型的发展。此前的行为研究和我们的结果共同表明,人们部分地通过推断抽象程序学习新的手写字母。我们可以像分析BPL那样解码人类学习新知时的大脑运动前区皮质(或者其他行动导向区域)的活动吗?最近,大型脑模型和深度递归神经网络也将重点放在了字母识别和生产任务上,但通常是从每一概念的大样本示例中学习。我们将此文介绍的新模型视作这些神经模型的一个挑战。我们希望它能融合BPL已经给出实例的语义合成性、因果关系和学会学习三原则。

学习:

“Human-level concept learning through probabilistic program induction”阅读笔记

Human-level concept learning through probabilistic program induction 中文翻译

《Human-level concept learning through probabilistic program induction》阅读笔记

类人概念学习:机器学习下一个飞跃?  

别担心,目前来看,人类还是比机器聪明的

继续阅读