MIT 的一个研究小组正努力让初学者更容易入门人工智能,同时也帮助专家进一步推进这个领域的发展。

在 PLDI 大会(Programming Language Design and Implementation conference)上发表的一篇论文中,研究人员介绍了一种名为“Gen”的新型概率编程系统。用户无需处理公式或者手写高性能的代码即可编写多个 AI 应用领域的模型和算法,例如计算机视觉、机器人学以及统计学 。Gen 还可以让专业研究人员编写先前不可行的复杂模型和用于预测任务的算法。

例如,在他们的论文中,研究人员展示了一个简短的 Gen 程序可以预测 3-D 身体姿势,这个高难度的计算机视觉预测任务在自治系统、人机交互和增强现实中均有应用。这个程序包括执行图形渲染、深度学习和不同类型的概率模拟组件。与其他早期系统相比,这些不同技术的结合提高了这个预测任务的准确性和速度。

由于其简单性以及在某些情况下的自动化,研究人员表示,Gen 可以被任何人轻松使用,包括新手和专家。“这项工作的一个目的是让缺乏计算机科学或数学知识的人更容易入门自动化人工智能,”论文第一作者、电气工程和计算机科学博士 Marco Cusumano-Towner 说,“我们还希望提高生产力,能够让专家更轻松地快速迭代以及制作 AI 系统原型。”

研究人员还展示了 Gen 通过使用另一个 Gen 程序简化数据分析的能力。该程序可以自动生成专家通常用于分析、解释和预测数据模式的复杂统计模型。这是建立在之前的工作基础之上的。之前的工作是让用户编写几行代码来获得金融趋势、航空旅行、投票模式和疾病传播等方面的灵感。与早期系统不同,早期系统需要大量的手动编码才能进行准确的预测。

“Gen 是第一个灵活、自动化、足够高效且能够涵盖计算机视觉和数据科学中不同用例的系统,并且性能足够好,”Vikash K. Mansinghka 表示。他是一个来自大脑和认知科学系的研究员,负责概率计算项目。

和 Cusumano-Towner、Mansinghka 一起合作论文的有 Feras Saad 和 Alexander K. Lew,他们都是 CSAIL 的研究生以及概率计算项目的成员。

全世界最佳

2015 年,Google 发布了 TensorFlow,这是一个开源的 API 库,可以让初学者和专家无需进行太多数学计算即可自动生成机器学习系统。现在已经得到了广泛使用,该平台正在帮助人工智能的某些方面民主化。但是,虽然 TensorFlow 足够自动化和高效,但它只是侧重于深度学习模型,与更广泛的 AI 相比,这些模型既昂贵又有限制。

现在有很多其他 AI 技术可用,例如统计和概率模型以及模拟引擎。一些其他的概率编程系统能够灵活涵盖几种 AI 技术,但它们运行效率低下。

研究人员力求将所有最优的特性 —— 自动化、灵活性和速度 —— 结合在一起。 “我们这么做也许可以使更广泛的建模和预测算法民主化,就像 TensorFlow 对深度学习起的作用,”Mansinghka 说。

在概率 AI 中,预测算法对数据执行操作,并基于新数据连续地微调概率以进行预测。最终会生成一个描述如何预测新数据的模型。

建立在早期概率编程系统Church中使用的概念基础之上,研究人员将几种自定义建模语言融入 Julia,这也是MIT 开发的一种通用编程语言。每种建模语言都针对不同类型的 AI 建模方法进行了优化,使其更加通用。 Gen 还使用各种方法(如优化、变分推断、某些概率方法和深度学习等)为预测任务提供高层基础设施。最重要的是,研究人员进行了一些调整,使其实现运行更加高效。

走出实验室

外部用户已经在寻找利用 Gen 进行 AI 研究的方法。比如英特尔正在与 MIT 合作,把 Gen 用于机器人和增强现实系统中使用的深度感知相机的 3D 姿势预测。MIT 林肯实验室也在就把 Gen 用于人道主义救援和灾难响应的空中机器人而开展合作。

在 MIT Quest for Intelligence 中,Gen 开始被用于雄心勃勃的 AI 项目。例如,Gen 是 MIT-IBM Watson AI Lab 项目以及美国国防部的国防高级研究计划署正在进行的机器常识项目的核心。该项目旨在模拟 18 个月大的孩子的常识。Mansinghka 是该项目的主要研究人员之一。

“在 Gen 的帮助下,这是第一次研究人员可以轻松整合一些不同的 AI 技术。看到人们现在发现的可能性将会很有趣,”Mansinghka 说。

Uber 首席科学家兼人工智能副总裁以及剑桥大学教授 Zoubin Ghahramani 表示,“自从深度学习出现以来,概率编程是人工智能前沿最有前途的领域之一。 Gen 代表了这个领域的重大进步,有助于基于概率推理的 AI 系统的大规模实际应用。”他并未参与 Gen 的研究。

谷歌的研究主管 Peter Norvig 也没有参与这项研究,他同样也赞扬了这项工作。 “[Gen] 让问题解决者使用概率编程,因此可以采用更原则的方法解决问题,但不受概率编程系统设计者的选择限制,”他说。 “通用编程语言之所以成功,是因为它们使程序员更容易完成任务,同时也使程序员能够创造一些全新的东西来有效地解决新问题。Gen 对概率编程也是如此。”

Gen 的源代码是公开的,将在即将举行的开源开发者大会上展示,包括 Strange Loop 和 JuliaCon。这项工作部分得到了 DARPA 的支持。

原文链接:
http://news.mit.edu/2019/ai-programming-gen-0626

人工智能新编程语言-Gen的更多相关文章

  1. 转 苹果的新编程语言 Swift 简介

    苹果官方文档地址 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Pro ...

  2. C、C++ 不得宠,微软正开发新的编程语言!

    76 年迭代与更新,编程语言界,谁主沉浮? 在六百多种编程语言中,对于开发者而言,其主观印象中或只有几种主流的编程语言,如 Java.C.C++.C#.新贵 Python 等,而之所以它们能够成为主流 ...

  3. gen语言

    概率编程语言(PPL)领域正经历着机器学习技术快速发展带来的奇迹般的复兴.在短短的几年里,PPL 已经从一个模糊的统计研究领域发展出十几个活跃的开源方案.最近,麻省理工学院(MIT)的研究人员推出了一 ...

  4. julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题

    这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...

  5. 入门人工智能的首选语言为什么会是Python?

    为何人工智能(AI)首选Python?当你读完这篇文章就会明白了.为何人工智能(AI)首选Python?读完这篇文章你就知道了.我们看谷歌的TensorFlow基本上所有的代码都是C++和Python ...

  6. The Swift Programming Language 中文翻译版(个人翻新随时跟新)

    The Swift Programming Language --lkvt 本人在2014年6月3日(北京时间)凌晨起来通过网络观看2014年WWDC 苹果公司的发布会有iOS8以及OS X 10.1 ...

  7. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  8. 苹果Swift编程语言新手教程【中国版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...

  9. [转]Swift 编程语言入门教程

    今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1   简介 2   Swift入门 3   简单值 4   控 ...

随机推荐

  1. UDS诊断学习笔记

    定义介绍: UDS(Unified Diagnostic Service)诊断的诊断服务.诊断协议是面向整车所有ECU(电控单元)的一种诊断通信协议,是诊断服务的规范化标准. UDS本质上是一系列服务 ...

  2. Kotlin协程重要概念详解【纯理论】

    在之前对Kotlin的反射进行了详细的学习,接下来进入一个全新的篇章,就是关于Koltin的协程[coroutine],在正式撸码之前先对它有一个全面理论化的了解: 协程的定义: 协和通过将复杂性放入 ...

  3. python笔记39-unittest框架如何将上个接口的返回结果给下个接口适用(面试必问)

    前言 面试必问:如何将上个接口的返回结果,作为下个接口的请求入参?使用unittest框架写用例时,如何将用例a的结果,给用例b使用. unittest框架的每个用例都是独立的,测试数据共享的话,需设 ...

  4. Dubbo源码分析:Invoker

    背景 调用对象!在调用过程可以使用Filter接口方法.Inovoker调用过程采用了装饰者设计模式.Filter最后一个ExcpetionFilter对象,这个对象之后就调用服务方法.服务对象是配置 ...

  5. 关于AndroidStudio的apk打包遇到的问题记录

    12月份末尾,想来个总结,主要是得记一些重要的. 首先就得是AndroidStudi内的apk打包,就是弄当前项目app的安装包出来. 下面就说下具体步骤和注意问题. 首先 : 看到AndroidSt ...

  6. Haskell语言学习笔记(95)Semiring

    semirings 模块 semirings 模块需要安装 $ cabal install semirings Installed semirings-0.2.0.1 Prelude> :m + ...

  7. Codeforces 1251D Salary Changing

    D. Salary Changing 大意: 有n个变量, 每个变量有一个取值区间, 要求给这n个变量赋值, 使得n个变量的和不超过S且中位数尽量大(n一定为奇数) 二分答案, 中位数大于等于mid就 ...

  8. [SPOJ] DIVCNT2 - Counting Divisors (square) (平方的约数个数前缀和 容斥 卡常)

    题目 vjudge URL:Counting Divisors (square) Let σ0(n)\sigma_0(n)σ0​(n) be the number of positive diviso ...

  9. shell脚本 mysql主从

    #!/bin/bash systemctl stop firewalld setenforce user="tom" password=" slave_ipaddr=&q ...

  10. 认识Nodejs

    一.概念 ①JavaScript运行环境:Node.js不是一门语言,不是库也不是框架,是一个JavaScript运行环境,简单点来讲就是Node.js可以解析执行JavaScript代码,也就是说J ...