人工智能新编程语言-Gen
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的更多相关文章
- 转 苹果的新编程语言 Swift 简介
苹果官方文档地址 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Pro ...
- C、C++ 不得宠,微软正开发新的编程语言!
76 年迭代与更新,编程语言界,谁主沉浮? 在六百多种编程语言中,对于开发者而言,其主观印象中或只有几种主流的编程语言,如 Java.C.C++.C#.新贵 Python 等,而之所以它们能够成为主流 ...
- gen语言
概率编程语言(PPL)领域正经历着机器学习技术快速发展带来的奇迹般的复兴.在短短的几年里,PPL 已经从一个模糊的统计研究领域发展出十几个活跃的开源方案.最近,麻省理工学院(MIT)的研究人员推出了一 ...
- julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题
这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...
- 入门人工智能的首选语言为什么会是Python?
为何人工智能(AI)首选Python?当你读完这篇文章就会明白了.为何人工智能(AI)首选Python?读完这篇文章你就知道了.我们看谷歌的TensorFlow基本上所有的代码都是C++和Python ...
- The Swift Programming Language 中文翻译版(个人翻新随时跟新)
The Swift Programming Language --lkvt 本人在2014年6月3日(北京时间)凌晨起来通过网络观看2014年WWDC 苹果公司的发布会有iOS8以及OS X 10.1 ...
- Apple Swift编程语言入门教程
Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1 简介 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 ...
- 苹果Swift编程语言新手教程【中国版】
Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...
- [转]Swift 编程语言入门教程
今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1 简介 2 Swift入门 3 简单值 4 控 ...
随机推荐
- unicode转换为中文
unicode转换为中文 \u5f53\u5730\u65f6\u95f42019\u5e747\u670813\u65e5\uff0c\u82f1\u56fd\u8d1d\u5fb7\u798f\u ...
- 如何查看自己steam库里游戏是哪个区的
1 开启Steam开发者模式,切换到控制台,以便调出游戏区域数据 1.1 首先找到Steam的快捷方式,在目标一行中最后输入 -dev (前面带空格),然后重新运行. 1.2 如下图上方标签切换到控制 ...
- CentOS6.9下手动编译并安装Python3.7.0
CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...
- charAt,charCode,fromCharCode区别
1.charAt 返回字符串指定位置的字符 2.charCode 返回字符串指定位置字符Unicode编码 3.fromCharCode 用Unicode编码创建字符串 我们来看下例子 var str ...
- 使用Zookeeper实现负载均衡原理
思路 使用Zookeeper实现负载均衡原理,服务器端将启动的服务注册到,zk注册中心上,采用临时节点.客户端从zk节点上获取最新服务节点信息,本地使用负载均衡算法,随机分配服务器. 创建项目工程 M ...
- c#中的继承学习总结
c#的继承方法,大体上和c++的类似,但是有点区别的,我这里刚刚初学,因此把重点记录下. 1.派生类继承了父类,那么,如果父类的方法和数据都是public,那么派生类都会继承.派生类可以直接调用父类的 ...
- MyBatis框架的基本要素-核心接口和类的作用范围
通过上面运行案例-查询用户表中的记录数. 非集成环境下的最佳作用域范围: SqlSessionFactoryBuilder 用过即丢,推荐作用域在方法体内. SqlSessionFactory 最佳作 ...
- Tips on Java
1.JAVA种数组的两种定义方式. int[] nums; int nums[]. 2.整型默认为int,如果需要long,须加l或L.小数默认double,d或D可省略,但如果需要float,须加f ...
- redis 设置为只读模式
数据库的只读模式,对于在系统出现重大故障,但是又不影响用户的查询操作还是很重要的 对于redis 设置只读模式需要分不同的场景 master-slave cluster single master-s ...
- JMeter学习1
Jmeter的组织方式相对比较扁平,直接是TestPlan(相当于Project),TestPlan下创建的ThreadsGroup(相当于TestCase), Jmeter一个TestPlan也是一 ...