原文地址:

https://blog.csdn.net/ln1996/article/details/78459060

---------------------
作者:lnn_csdn
来源:CSDN

--------------------------------------------------------------------------------

花了一周多的时间读了一篇论文《Human-level concept learning through probabilistic program induction》(《通过概率规划归纳进行类人概念学习》),这是15年12月science的一篇封面文章,主要解决了小样本情况下的计算机学习问题。第一次读论文,而且是英文论文还是有点吃力,参考了很多其他的博客和新闻评论,自己也总结出了一些阅读笔记。

背景:
       我们知道,人类通过几个简单的例子就能够学会新的概念,但是对于传统的机器学习算法,却需要几十甚至是几百倍的数据训练才可以达到这样的程度。

举个例子:
       我们看到上图中左上角这个两轮车,我们一眼看到它的时候便知道它是代步工具;还可以根据它衍生出其他形状的两轮车;将这个二轮车解析为扶手、轮胎这一类更小的部件;还可以将它和其他的代步工具联合起来创造出其他的代步工具。
       对右边的这个图也是一样,看到一个字符便知道它是那个字符系统里的;手写字符可以写出其他的变体(人每次写字的字迹都是不一样的);解析字符的笔画;根据一些字符,解析他们的特点创造出新的字符。
       这说明,人类具有从极少量的数据中学习丰富概念的能力:归类、派生、解析、创造。
       本文试图模仿人类的学习能力建立一个学习模型,从稀少的数据中形成丰富的概念。

BPL:
       文章提出了BPL(贝叶斯规划学习)框架来进行类人概念学习。BPL框架具有三个重要的特性,分别是合成性、因果性、学习如何学习。合成性的意思是概念是由更简单的基本元素构成的,比如说一个字符是由更简单的笔画构成的;因果性指的物体是如何生成的这一抽象的关系。我们看到一个字符,就知道它是怎么写出来的,由哪些笔画构成、这些笔画间有什么关系;学习如何学习则指的是过去的概念知识能够帮助学习新概念,简单地说就是BPL可以从现有的字符中抽象出其部件,然后根据不同部件的因果关系创造新的字符。
       BPL框架把上述三个特性结合在一起,具体思路是:每一个“概念”均由多个简单的“基本元素”组成,“基本元素”之间有位置、时间、因果等关系,“基本元素”根据这些关系选择性的“组合”,就得到一个相应的“概念”的实例。将上述关系在BPL模型中进行参数化,通过一定的概率计算,自动的学习这些参数。

文章的主要内容:把BPL应用在手写字符的单样本概念学习中,实现了模拟手写字符,一次性分类手写字符,产生新的手写字符。 一些定义:

在学习这三个应用之前,先了解一些定义:

模拟手写字符:

将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)通过随机补偿函数即可得到二值图像,用灰色墨水画出轨迹。

一次性分类问题:

给出一个训练图像,5个训练图像的解析及得分,每个训练图像都能改造成测试图像。
       选取fast bottom-up方法引入一系列的候选解析,使用连续优化、局部搜索形成离散后验概率分布的近似值,得分高的即为最佳解析。
       这里的得分是log 后验概率
       得分越高,重构的图像越清晰,说明他们更有可能属于同一类。

产生新字符:
       问题定义:给定一个背景集中的几个例子,根据它们的特征创造出属于该背景集的新字符。
       解决方案:对这些例子进行解析,重新生成“经验”,即这个背景集中最常出现的笔画数目、子笔画的样式、相互位置关系等等,然后再根据这一经验去创造新的字符。

实验结果分析:
       研究者对这个AI系统进行了几项测试来检验BPL模型。

左边这个图是一次分类(one-shot classification)的测试结果,研究者给定一张字符图片,要求人类测试者和BPL机器从20张图片中选出和他同类的图片。人的错误率只有4.5%,BPL表现出了更低的错误率,只有3.3%,而深度卷积网络表现出了13.5%的错误率,HD模型的错误率最高34.8%,即使是优化后的深度卷积网络也有8%的错误率。因此BPL的优势是可以在概念的学习中对隐含的因果关系进行建模。

在这个一次分类(one-shot classification)实验中,研究者还对缺少“学习如何学习”或“合成性”特性的BPL模型做了测试,分别表现出了11%和14%的错误率,说明这两个特性对BPL起着重要作用(缺少“学习如何学习”(no learning to learn)的意思是破坏之前设计好的type level和token level生成模型的超参数,比如以token level为例,原来设计好的参数可能是让along这种位置关系的两个笔画在一定范围内进行连接,破坏后则是完全随机的一种连接方式。缺少“合成性”(no compositionality)的意思是说把字符看成一个整体,通过一条样条曲线进行拟合,而不是像之前一样做笔画和子笔画的拆分。)

右边这个图是做了一个视觉图灵测试,研究者向BPL系统展示它从未见过的书写系统中的一个字符例子,并让它写出同样的字符。并不是让它复制出完全相同的字符,而是让它写出9个不同的变体,就像人每次手写的笔迹都不相同一样。与此同时,人类测试者也被要求做同样的事情。最后,通过视觉图灵测试来比较人和机器产生的例子——研究者要求一组人类裁判分辨出哪些字符是机器写的,哪些是人类写的。 这个测试的评价参数为Identification level,理想情况下ID level的值为50% ,即裁判不能区分哪些是机器产生的,哪些是人产生的,最差的表现情况下ID level的值是100%,就是说人类裁判完全能够正确区分人类和机器。从图中可以看出BPL的ID level是52%,非常接近理想值。而缺少“学着如何学习”或“合成性”特性的BPL模型的ID level分别为80%和65%,说明这两个特性对BPL模型的拟人化非常重要。
       为了更直白地评价分解情况,研究者通过另外一个动态视觉测试来完成此项任务,并且换了一批裁判,每个裁判会被展示人类和机器写同一个字符的笔画过程,这时BPL在这一视觉图灵测试上的表现为59% ID level,不是那么理想了。如果再把学习到的笔画的书写顺序等先验知识去掉,结果仅为71% ID,因此捕捉正确的动态的因果关系对于BPL来说非常重要。
       后面的两组实验就不做具体讲解了,总之研究者通过这些实验告诉我们,BPL通过了视觉图灵测试,大多数人类裁判已经无法对BPL模型生成的字符和人类手写字符进行有效的区分了。

总结:
       作者在本文中基于贝叶斯准则提出了一种计算模型,用来模拟人类的学习能力,将其用于手写字符的单样本概念学习中,实现模拟手写字符、一次性分类手写字符、产生新的手写字符。在具有挑战性的一次性分类任务上,该模型实现了人类层面的性能且胜过最近的深度学习方法。该论文也通过“视觉图灵测试”探索了模型创造性泛化能力,表明该模型在很多方面和人类的行为是极为相似的。
       BPL的意义在于:模仿了人类对新事物的认知,通过少量的样本学习出一类事物。不同于目前主流的运用大量数据训练复杂模型的深度神经网络,BPL提供了学习模型的一种新思路。

【转载】 《Human-level concept learning through probabilistic program induction》阅读笔记的更多相关文章

  1. 最佳实践:深度学习用于自然语言处理(Deep Learning for NLP Best Practices) - 阅读笔记

    https://www.wxnmh.com/thread-1528249.htm https://www.wxnmh.com/thread-1528251.htm https://www.wxnmh. ...

  2. Paper Reading - Learning like a Child: Fast Novel Visual Concept Learning from Sentence Descriptions of Images ( ICCV 2015 )

    Link of the Paper: https://arxiv.org/pdf/1504.06692.pdf Innovations: The authors propose the Novel V ...

  3. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  4. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. 图记 2016.1.7 获取本地图片、Bitmap转image

    这几天完成的内容有: 1.“添加图片”按钮 2.添加图片功能 遇到的问题: 我想要将添加图片按钮放在右下角,所以采用了相对布局,但是问题随之二来,因为将导航栏设置成了半透明,所以图片放到右下角之后,半 ...

  2. Xshell设置全局配色

    1.个人比较喜欢的配色: [XTerm] text=00ff80 cyan(bold)=00ffff text(bold)=e9e9e9 magenta=c000c0 green=80ff00 gre ...

  3. nginx的stream模块和upstream模块

    nginx7层调度方式 使用upstream模块定义集群名称和节点地址 定义在server字段之外httpd字段之内 upstream staticweb { server 172.17.0.2; # ...

  4. 【转】高性能网络编程4--TCP连接的关闭

    TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么. 为方便阅读,我们可以带着以下5个问题来阅读本文: 1.当socket被多进程或者多线程共享时,关闭 ...

  5. beta版本——第三次冲刺

    第三次冲刺 (1)SCRUM部分☁️ 成员描述: 姓名 李星晨 完成了哪个任务 认证学校那一栏增加检测机制的ui设计 花了多少时间 1h 还剩余多少时间 1h 遇到什么困难 没有困难 这两天解决的进度 ...

  6. typeScript学习随笔(一)

    TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript  TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...

  7. SQL进阶系列之4HAVING字句的力量

    写在前面 SQL是面向集合的语言,与面向过程和面向对象语言都不一样 寻找缺失的编号 /* 寻找缺失的编号 */ CREATE TABLE SeqTbl (seq INTEGER PRIMARY KEY ...

  8. 伤透了心的pytorch的cuda容器版

    公司GPU的机器版本本比较低,找了好多不同的镜像都不行, 自己从anaconda开始制作也没有搞定(因为公司机器不可以直接上网), 哎,官网只有使用最新的NVIDIA驱动,安装起来才顺利. 最后,找到 ...

  9. 小程序~列表渲染~key

    如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容, <switch/> 的选中状态),需要 ...

  10. Python获取当前脚本文件夹(Script)的绝对路径

    Python获取当前脚本绝对路径 Python脚本有一个毛病,当使用相对路径时,被另一个不同目录下的py文件中导入时,会报找不到对应文件的问题.感觉是当前工作目录变成了导入py文件当前目录.如果你有配 ...