原文地址:

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. EFK(Elasticsearch+Filebeat+Kibana)收集容器日志

    介绍 Elasticsearch 是一个实时的.分布式的可扩展的搜索引擎,允许进行全文.结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档. Beats 是数据采集的得力工具 ...

  2. 04-JavaScript的操作

    本篇主要介绍获取元素的方法.操作元素.数组和字符串的操作方法.定时器和封闭函数.以及贪吃蛇案例: 一.获取元素的方法 1.document.getElementById:可以使用内置对象documen ...

  3. LFS7.10——构建LFS系统

    参考:LFS7.10——准备Host系统 LFS7.10——构造临时Linux系统 本文正式开始构建LFS系统,后面所有命令的执行都是在root用户下完成的. 这时开始构建LFS前准备工作 更改$LF ...

  4. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  5. HttpClient代码设置代理

    由于对接faceBook接口,本地测试时候要设置代理才能调试. (http和https通用) public SSLContext createIgnoreVerifySSL() throws NoSu ...

  6. git免密

    免账号密码输入 git clone https://lichuanfa%40gitcloud.com.cn:lcf13870752164@git.c.citic/Citic-Data/bigdata_ ...

  7. 5、Python之包管理工具pip

    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算.画图.操作文件.聊天-- 我们可以通过Cmd终端.Pycharm.Jupyter三种平台使用pip ...

  8. 给jenkins更换工作空间

    如果使用jenkins的默认工作空间,它默认安放在 /var/lib/jenkins 目录下,但这个在分配Linux磁盘的时候,一般为40G,时间长或者项目多的话,很容易将磁盘空间占满,所以我们需要将 ...

  9. IntToBinaryString

    void IntToBinaryString(int devisor,char* pBinStr) { int i; int remainder; ;i<;i++) { remainder=de ...

  10. django-文件上传和下载--fastDFS安装和配置

    5.1 安装fastdfs依赖包 一:下载安装FDFS依赖: libfastcommon 下载地址:https://codeload.github.com/happyfish100/libfastco ...