原文地址:

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. Spring— 用更优雅的方式发HTTP请求(RestTemplate详解)

    RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率. 我之前的HTTP开发是用ap ...

  2. Gtest:Using visual studio 2017 cross platform feature to compile code remotely

    参考:使用Visual Studio 2017作为Linux C++开发工具 前言 最近在学Gtest单元测试框架,由于平时都是使用Source Insight写代码,遇到问题自己还是要到Linux下 ...

  3. MySQL/MariaDB数据库的复制加密

      MySQL/MariaDB数据库的复制加密 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的安全问题 1>.基于SSL复制 在默认的主从复制过程或远程连接 ...

  4. 常用conda命令【转载】

    转载地址:https://haoyu.love/blog900.html 一直在用 Conda,很多东西记不住,每次都要查 Doc.那好,就写在这里做个备忘好了. 在 bash 里面自动加载 cond ...

  5. python开发笔记-DataFrame的使用

    今天详细做下关于DataFrame的使用,以便以后自己可以翻阅查看 DataFrame的基本特征: 1.是一个表格型数据结构 2.含有一组有序的列 3.大致可看成共享同一个index的Series集合 ...

  6. 删除WordPress菜单wp-nav-menu中li的class或id样式

    我们都知道wordpress已经集成了一些通用的css样式,比如wp-nav-menu菜单会有很多的class,不想看到那么多的选择器,想要清净的世界要如何操作呢?随ytkah一起来看看 <li ...

  7. 3.Vue 实例

    创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,但是 V ...

  8. js判断是否是在微信浏览器中打开

    // js判断是否是在微信浏览器中打开 function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/Mi ...

  9. fibnacci数列递归实现

    斐波那契数列 Fibonacci sequence又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...

  10. SVN 常用 还原项目

    1.先修改本来两个文件,然后再提交到SVN 2.在日志界面,查看提交的文件,找到对应的版本号 3.找到对应的版本号(这里的版本号是1995,我提交生成的版本号 的前一个版本 才是我未作出修改的版本), ...