0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对比机器学习和程序语言的发展史

zhKF_jqr_AI 来源:未知 作者:李倩 2018-09-02 09:35 次阅读

编者按:Microsoft Semantic Machines资深研究科学家、UC Berkeley计算机科学博士Jacob Andreas对比了机器学习和程序语言的发展史,提出可组合性、模块化是神经网络的重要发展方向。

应用机器学习简史:

每当我们用能力更强、特征更简单、结构性限制更少的模型替换能力更弱、附带手工编写的结构性限制的模型时,模型质量提升了(模型更小,开发用时更短,在未见数据上的概括性更好)。

从NLP领域我们就能举出很多例子:线性模型取代了决策列表;Jelinek说:“我每开掉一个语言学家,语音识别系统的表现就会提高一点”;基于统计的机器翻译;最近一大波论文的实质是“将log-linear模型(双层神经网络)替换为一个三层神经网络”。

程序语言简史:

每当我们用带有少量高层构件的语言替换带有大量简单构件的语言时,程序质量提升了(同等复杂度的程序更短了,开发用时更短,包含bug的可能性降低)。

所有人都不写汇编了,接着,所有人都不写C了。(显然这是粗暴的过度概括,因为还有很多人在写汇编和C。争议更少的说法是使用底层语言写程序的人越来越少,使用底层语言更难写对程序。)

不知道你注意到了没有,在以上两个情形中,我们移动的都是同一个滑块——只不过方向不同。机器学习和程序语言设计最终目标是一致的:让特定的问题求解机器(不管是人类还是优化算法)产生正确的代码。在现实世界中,我们并不是因为机器学习内在地比手写代码更纯粹或者更美才偏爱机器学习——我们使用机器学习是因为它高效。如果今天有人发布了一个包含一些可组合的视觉原语的库,接着突然之间Facebook发现实习生可以比神经网络更高效地解决所有的图像标记问题,那么明天神经网络就会被弃之门外。

实际上,我们现在能够写出这样的库吗?

澄清一下,我指的不是类似OpenCV的东西,让你选择为特定任务预先实现的模型,然后在后处理部分加上你想要的操作。相反,我想要的是一些视觉原语,基于这些原语我们可以这样编写一个分类器:

load(image) andThen

detectObjects andThen

orderBy(salience) andThen

head andThen

name

或者这样给图像自动加上说明:

load(image) andThen

detectObjects andThen

describeAll

或者这样识别人脸:

load(image) andThen

detectObjects andThen

filter(name(_) == Face) andThen

drawBoundaries

detectObjects、describeAll等函数看起来是什么样?目前的经验提示它们应该是神经网络,但不是特定种类的神经网络:它们并不是为完成某个具体任务(比如给图像加上说明)而训练的,而是以可自由组合的方式进行训练:describeAll承诺可以接受任何“检测结果列表之类”的输入(可以直接来自detectObjects,也可以是经过后续过滤的),并生成一个字符串。这些函数的输入和输出都是实向量。无法结构化地强制“检测结果列表之类”的东西实际具有所需的语义,相反,我们完全依赖训练过程。

在当前的真实世界实现中,将网络层视为模块化、预先规定的单元,而将网络视为为特定任务定制的单一模型(需要端到端训练)。不过,一旦我们转移到模块化网络上,我们可以开始进行不存在训练数据的任务。例如,使用上面指定的原语“为图像中的人添加说明”:

load(image) andThen

detectObjects andThen

filter(name(_) == Face)

andThen describeAll

其实我们已经向这个方向迈步了:人们使用图像分类网络的前若干层初始化几乎所有视觉任务;尽管“注意力”是一系列组合多个网络层的复杂操作,人们在描述模型时突然开始将其用作原语。Roger Grosse关于矩阵分解模型的语法的出色论文(arXiv:1210.4856)也多少是这个风格,还有Christopher Olah对视作可复用模块组合的神经网络的类型理论细节的讨论(git.io/fAn4J)。

回到我们之前的程序语言讨论,我们观察到:

手工编写人类检测器对人类来说很难,但对神经网络而言很容易。

给定功能恰当的视觉原语,编写人类描述器很容易。但从头训练完成这一任务的神经网络需要大量人类描述的样本。(我们也许可以说,对人类来说“容易”,对神经网络来说“困难”。)

更进一步,有很多更类似人类而不是神经网络的机器学习技术,使用很小的数据集以及良好的预先指定的原语,比如,程序推导和语义解析。如果我们真的只在乎最少的人类干预,我们可以将指定的视觉原语交给机器学习子系统自动推导。

所以让我们编写这个库!这里有一些问题需要研究:首先,提供给人们的功能原语(或用于程序推导的模块)的正确组合是什么?接着,这些共享的表示真的可以被学习吗?我们如何基于现有的标记数据为这些模块搜寻参数配置?

作为概念证明,我和一些研究人员合作,写了三篇关于可组合模块化神经网络的论文:

Neural Module Networks(arXiv:1511.02799)

Learning to Compose Neural Networks for Question Answering(arXiv:1601.01705)

Modeling Relationships in Referential Expressions with Compositional Modular Networks(arXiv:1611.09978)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4769

    浏览量

    100693
  • 机器学习
    +关注

    关注

    66

    文章

    8402

    浏览量

    132536

原文标题:程序语言与神经网络

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    恒压变压器的发展史

    本电子书汇集了各类恒压变压器原理、产品以及它的的发展史,它的各项特性在电子行业得到普遍认可和广泛使用。清版主删除,以为附件超大了不能上传[此贴子已经被作者于2008-7-29 15:14:40编辑过]
    发表于 07-29 14:55

    中国电机工业发展史首发书籍下载

    工业和做好各项工作都具有重要指导意义。序言内容十分丰富,寓意非常深刻,我们一定要认真学习和贯彻落实,努力把电机工业和整个工业提高到新水平。中国电机工业发展史下载地址:[hide][/hide]
    发表于 11-08 21:18

    如何正确掌握程序语言

    学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要
    发表于 08-15 23:47

    Robot的发展史

    手的小东西。其实机器人的完整意义应该是一种可以代替人进行某种工作的自动化设备。它可以是各种样子,并不一定长得像人,也不见得以人类的动作方式活动。二.发展史机器人一词的出现以及工业机器
    发表于 09-25 15:43

    Linux系统发展史及版本更迭

    运维必知Linux系统发展史及版本更迭
    发表于 04-29 14:15

    5G的发展史

    5G到底是什么?为什么引得一众通讯巨头相继抢占先机?在这里,将用一组图带您梳理一下5G的发展史。在视频、游戏霸屏移动端的今天,4G已不能满足庞大的流量需求。4G即将成为明日黄花,5G即将接棒流量市场
    发表于 12-24 06:25

    萌新求助,求关于ARM发展史及各时期内核的知识点

    萌新求助,求关于ARM发展史及各时期内核的知识点
    发表于 10-22 06:29

    unix系统发展史

    unix系统发展史 unix系统发展史一、Multics计划1965年,AT&T贝尔电话实验室、通用电气公司、麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系
    发表于 01-18 12:42 1849次阅读

    3G发展史

    3G发展史
    发表于 10-29 12:55 751次阅读

    声卡的发展史

    声卡的发展史    
    发表于 12-26 11:23 1389次阅读

    C语言发展史

    发展史: C语言的祖先是BCPL语言。1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogrammi
    发表于 03-23 10:04 4027次阅读
    C<b class='flag-5'>语言</b>的<b class='flag-5'>发展史</b>

    直流电机的发展史

    直流电机的发展史(电源技术 是半月刊)-直流电机的发展史,有需要的可以参考!
    发表于 09-15 15:56 14次下载
    直流电机的<b class='flag-5'>发展史</b>

    自然语言处理和人工智能的概念及发展史 自然语言处理和人工智能的区别

    自然语言处理(Natural Language Processing, NLP)的定义是通过电脑软件程序实现人们日常语言机器自动处理。为了帮助计算机理解,掌握自然
    发表于 08-23 18:22 934次阅读

    机器人技术的发展史简介

    机器人的诞生地在美国,1962年美国研制出世界上第一台工业机器人,经过30多年的发展,美国现已成为世界上的机器人强国之一,基础雄厚,技术先进。综观它的
    发表于 12-20 10:17 1348次阅读

    电阻柜的发展史

    电阻柜发展史
    的头像 发表于 03-08 15:22 432次阅读