璀璨资讯网
首页 >> 互联网 >> 正文

简洁实用,一文读懂这门超越深度学习的新AI编程语言

日期:2019-07-13 23:02:30 来源:互联网 编辑:小狐 阅读人数:409

大数据文摘出品

编译:Stats熊、小七、宁静

AI的快速发展激起了很多人的学习热情,但是初学者苦于大量的手动编程而止步不前,有没有一种编程语言可以让那些在计算机科学和数学领域专业知识较少的人,也能使用简洁的代码量来完成具体的AI应用呢?

今天文摘菌为大家推荐一个专门用来预测的复杂模型和推理算法—Gen。下面随文摘菌一起来看看它的“前生今世”

Gen问世之前的AI学习库(框架)

在2015年,谷歌发布了一个采用数据流图进行数值计算的开放源代码应用程序软件库TensorFlow(基于数据流编程的符号数学)它可以帮助初学者和专家自动生成机器学习,而不需要做太多数算。这个平台现在被广泛的使用,希望帮助人工智能在某些方面实现民主化。

尽管它是自动且高效的,但是与人工智能的广泛前景相比,它的重点仅限于深度学习模式,总的来说这种模式既昂贵又有局限性。

简洁实用,一文读懂这门超越深度学习的新AI编程语言(图1)

但是现在有很多可用的人工智能技术,比如统计和概率模型,以及仿真引擎。其他一些概率编程虽然足够灵活,能够覆盖多种人工智能技术,但他们的运行效率很低。

Gen“缘起”

鉴于之前的AI应用框架不太灵活,研究人员试图研究一套以将自动化、灵活性和高效性都融合在一起,但Mansinghka(一位研究人员)说,“如果我们可以做到这样,也许我们可以通过更广泛的建模和推理算法集合来帮助实现民主化,就像TensorFlow一样有助于深度学习的研究。”

MIT的一队研究人员一直致力于使初学者快速入门人工智能,与此同时,他们的研究也帮助这一领域的专家不断取得了进步。研究人员发现,在基于概率的人工智能中,用推理算法对数据进行运算,并根据新数据不断调整概率来进行预测。这样做最终会生成一个可以对新数据进行预测的模型。

基于他们早期概率编程“Church”中使用的概念,研究人员将几种自定义的建模语言融入MIT的通用编程语言“Julia”中。每种建模语言都针对不同类型的人工智能建模方法进行了优化,使其变得更加通用。Gen还使用了各种不同的方法,例如优选法、变分推理、概率统计法和机器学习,为推理任务高级基础设施。除此之外,研究人员还进行了一些优化调整,以使其实现有效运行。

同时,本周召开的程序设计语言设计与实现大会上,研究者们做了一场以新型概率编程—Gen为题的演说,用户从不同的AI技术应用领域编写模型和算法,这些领域涉及到计算机视觉、机器人和统计学,而这些模型算法可以代替人去解决,那些复杂公式和手工编写高性能代码。

为什么要使用Gen?

举例来说,在研究者的文章中提到,一个简短的Gen编程,可以推断3D身体姿势,而这种复杂的计算机视觉推断任务需要用到自动、人机交互、增强现实等技术。而在屏幕之后,这些程序包括了那些组成执行图像渲染、深度学习和其他种类的概率模拟的组件。这些不同技术的结合使这项任务比一些研究人员早期的具有更高的准确性和速度。

研究表明,不管是初学者还是专家都能非常轻易地上手Gen,因为它使用起来非常简单,且在某些用例中是自动化的。一位电气工程和计算机科学系的Marco Cusumano Towner博士说,“这个项目的一个动机就是让那些在计算机科学和数学领域专业知识较少的人,更容易地使用自动化人工智能”他还说“我们同样也希望提高生产率,这意味着让专家更容易地高速迭代和原型化他们的人工智能”

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

一位大脑与认知科学部门负责概率计算机项目的研究员Vikash K.Mansinghka说,“Gen是第一个灵活高效自动化的,拥有最先进的性能,能够覆盖计算机视觉和数据科学中不同类型的事例。”

Uber的首席科学家兼人工智能副、剑桥大学教授Zoubin Ghahramani虽然没有参与这一项目,但是他说,“概率规划是自机器学习出现以来,人工智能最有前景的领域之一。Gen代表了这一领域的显著的进步,将有助于实现基于概率推理的人工智能的可扩展性和实际性发展。“

同样也没有参与此项研究的谷歌研究主管Peter Norving也赞扬了这项工作,他说,“Gen允许解决问题的人使用概率规划,如此对问题有一个更为原则性的方法,但不受概率规划设计者的选择所限制。”他还说,“通用编程语言…之所以成功是因为,它们使程序员更容易完成任务,同时也使程序员能创造出全新的东西来有效地解决新问题。Gen对于概率规划也是这样做的。”

探索“Gen”的本质

铺垫了这么多,那么Gen是怎么实现的呢?

Generative Function Interface(生成函数接口)以下简称GFI,GFI是一个“黑盒子”用来实现建模语言和特定推理算法之间的接口,Generative Function (生成函数)由建模语言器生成,具体实现过程是这样的:

将语法描述交由动态建模语言编译器生成Generative Function。

通过Generative Function实现GFI

为了理解下文先介绍两个名词:

Generative Function表示为元组的形式:G = (X, Y, f ,p,q)

接口方法

论文中介绍了5种接口方法:

generate (对约束条件的trace)-参数:u(Choice Map)x-以映射集合u和参数x作为输入并返回结果。

propose-参数x-返回t(Choice Map)权重w。

assess(评估Choice Map的可能性)此方法评估和计算由Generative Function生成的特定Choice Map(u)的可能性。

choice_gradients:choice_gradients(differentiation)此方法计算跟踪的对数概率的梯度参数x和/或随机值的值选择。

简洁实用,一文读懂这门超越深度学习的新AI编程语言(图2)

总览

下面将以一个回归任务为例,演示Gen的编程风格:

简洁实用,一文读懂这门超越深度学习的新AI编程语言(图3)

实验室外的“Gen”Gen的工业应用

外部用户已经找到了利用Gen进行人工智能研究的方法。例如,英特尔正在与MIT合作运用其用于机器人和增强现实的深度感应摄像头,利用Gen进行3D姿态估计。MIT实验室也在合作研究Gen在航空机器人领域的应用,以实现其在人道主义救援和灾难应急响应方面的应用。

MIT一直致力于人工智能的研究,因此Gen开始被用于雄心勃勃的人工智能项目。例如,Gen是MIT和IBM沃森人工智能实验室项目的核心,美国高级研究项目计划局也将其应用于正在进行的机器常识项目,旨在模拟一个18个月大的孩子所能拥有的人类常识。Mansinghka也是该项目的主要研究人员之一。

Mansinghka说,“对于Gen,研究人员第一次可以很容易地整合一系列不同的人工智能技术。看看人们在现阶段发现了什么是可能的,这将会是很有趣的。”

Gen的开放源代码是公开可用的,并且在即将举行的开放源代码人员会议上展示,包括Strange Loop和JuliaCon,这项工作在一定程度上也得到了美国国防高级研究计划局(DARPA)的支持。

相关报道:

本文相关词条概念解析:

人工智能

人工智能(ArtificialIntelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。另外,世界著名科幻电影大师史蒂文·斯皮尔伯格曾导演过一部名叫《人工智能AI》的科幻电影。讲述21世纪中期,由于气候变暖,南北两极冰盖的融化,地球上很多城市都被淹没在一片汪洋之中。2016年1月,Google旗下的深度学习团队Deepmind开发的人工智能围棋软件AlphaGo,以5:0战胜了围棋欧洲冠军樊麾。这是人工智能第一次战胜职业围棋手。

延伸 · 推荐

一文读懂序列建模(deeplearning.ai)

本文约字,10+分钟。本文为你详细介绍序列模型,并分析其在不同的真实场景中的应用。简介如何预测一个序列中接下来要发生什么事情是一个非常吸引人的课题,这是我对数据科学如此着迷的原因之一!有趣的是—人类的...

网友评论
  • runaway_47
    我还有朋友做前端后端的,用PHP、Java之类
    2019-10-22 11:57 730
  • 小龙龙0000
    关系非常大,因为开发人工智能的程序或者说机器人首选的就是python这门语言
    2019-10-21 06:23 488
  • 电一辅助三
    只是现在你受困的是你的学历觉得低了
    2019-10-15 01:28 765
  • solt020
    没有学历,只会Python这门编程语言,怎么找工作?
    2019-10-12 15:33 971
  • yamy717
    其实现在python找工作很好找
    2019-10-19 03:36 404
  • shining_50
    优秀的程序员应该掌握多少门编程语言?
    2019-10-18 23:37 988
  • AA恋沈
    如何选择自己的第二门编程语言?
    2019-10-14 12:08 754