让那些对计算机科学和数学知识不多的人用简洁的代码完成特定的AI应用怎么样?今天给大家推荐一个专门用于prediction-Gen的复杂模型和推理算法。下面就和消化菌一起来看看它的“前世今生”吧。Gen出来之前的AI学习库(框架)。2015年,谷歌发布了一个开源应用软件库TensorFlow(一种基于数据流编程的符号数学系统),它使用数据流图进行数值计算,可以帮助初学者和专家自动生成机器学习系统,而无需进行过多的数学运算。该平台现在被广泛使用,希望以某种方式帮助人工智能民主化。尽管它是自动和高效的,但它的重点仅限于深度学习模型,与人工智能的广泛前景相比,深度学习模型通常是昂贵且有限的。但如今有许多可用的AI技术,例如统计和概率模型以及模拟引擎。其他一些概率编程系统足够灵活,可以涵盖各种人工智能技术,但它们运行效率很低。Gen“Origin”鉴于以前的AI应用程序开发框架不够灵活,研究人员试图开发一个将自动化、灵活性和效率结合起来的系统,但Mansinghka(研究人员)说,“如果我们能做到这一点,也许我们可以帮助用更广泛的建模和推理算法使研究民主化,就像TensorFlow促进深度学习研究一样。”麻省理工学院的一组研究人员一直致力于让初学者快速上手,同时,他们的研究也帮助该领域的专家不断取得进步。研究人员发现,在基于概率的人工智能中,推理算法对数据进行操作,并根据新数据不断调整概率以进行预测。这样做最终会产生一个可以对新数据进行预测的模型。基于他们早期的概率编程系统“Church”中使用的概念,研究人员将几种自定义建模语言合并到麻省理工学院开发的通用编程语言“Julia”中。每种建模语言都针对不同类型的AI建模方法进行了优化,使其更加通用。Gen还使用各种方法,如优化、变分推理、概率统计和机器学习,为推理任务提供高级基础设施。此外,研究人员还进行了一些优化调整,使其高效工作。同时,在本周举行的编程语言设计与实现大会上,研究人员就一种新的概率编程系统——Gen.用户编写来自不同人工智能技术应用领域的模型和算法。这些领域涉及计算机视觉、机器人学和统计学,而这些模型算法可以代替人去求解那些复杂的公式和手动编写高性能代码。为什么要使用Gen?例如,研究人员在文章中提到,一个简短的Gen程序可以推断出3D人体姿势,而这种复杂的计算机视觉推断任务需要使用自动化系统、人机交互、现实增强技术。在屏幕背后,这些程序包括构成图像渲染、深度学习和其他类型的概率模拟的组件。与一些研究人员开发的早期系统相比,这些不同技术的结合使得任务能够以更高的准确性和速度执行。研究表明,初学者和专家都可以很容易地掌握Gen,因为它使用起来非常简单,并且在某些用例中是自动化的。“这个项目的动机之一是让那些在计算机科学和数学方面专业知识较少的人更容易获得自动化人工智能,”电气工程和计算机科学系研究员MarcoCusumanoTowner博士说,并补充说“我们还希望提高生产力,这意味着让专家更容易高速迭代和原型化他们的人工智能系统。”研究人员还通过使用另一个Gen的程序展示了Gen简化数据分析的能力,该程序自动生成复杂的统计模型,专家经常使用这些模型来分析、解释和预测数据的基本趋势。与需要大量手动编码才能做出准确预测的早期系统不同,它建立在研究人员之前的工作之上,允许用户仅编写几行代码来揭示和理解金融趋势、航空旅行、投票模式和疾病传播和其他趋势。“Gen是第一个灵活高效的自动化系统,具有最先进的性能,可以涵盖计算机视觉和数据科学中不同类型的案例,”首席科学家兼人工智能副总裁VikashK.ZoubinGhahramani说。优步和一位未参与该项目的剑桥大学教授表示,“概率编程是自机器学习出现以来人工智能最有前途的领域之一。Gen代表了该领域的重大进步,并将促进基于概率推理的人工智能系统的可扩展和实用开发。同样没有参与这项研究的谷歌研究总监彼得诺文也赞扬了这项工作,他说,“Gen允许问题解决者使用概率编程,这样他们对问题有一个更有原则的方法,但不是受其影响。”受限于概率编程系统设计者的选择。他还说,“通用编程语言……之所以成功,是因为它们让程序员更容易完成任务,也让程序员能够创造全新的东西,有效地解决新问题。”Gen对概率编程也是如此。《探索Gen》的本质铺垫了这么多,那么Gen是如何实现的呢?下面将以论文的第三、四部分为例介绍实现机制,抽象细菌略过枯燥的公式论文中的推理。首先说明原理,有兴趣的读者可以阅读论文原文。原文链接:http://delivery.acm.org/10.1145/3320000/3314642/pldi19main-p645-p.pdf?ip=118.144.138.198&id=3314642&acc=OA&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2EE959BD37CA561672&__acm__=1562839037_72bcb9e83ef52bd8c297ff545e867515GenerativeFunctionInterface(GenerativeFunctionInterface)简称GFI,GFI是一个“黑盒子”,用于实现建模语言与具体推理算法之间的接口,GenerativeFunction(生成函数)由建模语言编辑器生成,具体实现过程为如下:用户将使用@gen语法来描述需要实现的功能;语法描述将交给动态建模语言编译器生成GenerativeFunction;为了通过GenerativeFunction实现GFI,引入两个术语来理解:ChoiceMap是指向真实值的地址GenerativeFunctions之间的映射表示为一个元组:G=(X,Y,f,p,q)接口方法论文介绍了5个接口方法:generate(traceofconstraints)-参数:u(ChoiceMap),x-以映射集u和参数x为输入,返回结果;propose-parameterx-returnst(ChoiceMap),weightw;assess(evaluatethepossibilityofChoiceMap):该方法通过GenerativeFunction生成的特定ChoiceMap(u)的可能性进行评估和计算;update:update方法调整执行轨迹在(t,x)中的随机选择,这是迭代推理算法中的常见模式,如MCMC和MAP优化;choice_gradients:choice_gradients(differentiation)该方法计算梯度参数x和/或随机值,用于跟踪值选择的对数概率。具体的执行过程可以参考下图中foo()函数的trace和choicemap的生成过程。系统概述下面将以一个回归任务为例,展示Gen的编程风格:a给定一个数据集(x,y),需要推断x和y之间的关系并检测异常值。这是一个典型的回归问题;图b是使用@gen语法生成的描述模式;图c是图b生成的地址空间;图f和g显示了在“Julia”(上面提到的麻省理工学院开发的通用编程语言)中的实现的两个用户程序,各自实现了不同的算法来解决任务,结果显示出不同的效率,如图h所示.实验室外的“Gen”:Gen的工业应用谈了这么多,Gen开源了吗?有工业用例吗?见下文:外部用户已经找到了利用Gen进行AI研究的方法。例如,英特尔正在与麻省理工学院合作,利用其用于机器人和增强现实系统的深度感应相机,利用Gen进行3D姿态估计。麻省理工学院林肯实验室也正在合作研究Gen在空中机器人领域的应用,以实现其在人道主义救援和灾难应急响应中的应用。MIT一直致力于人工智能研究,因此Gen开始被用于雄心勃勃的人工智能项目。例如,Gen是MIT和IBM的Watson人工智能实验室项目的核心,DARPA也在将其应用于正在进行的MachineCommonSense项目,该项目旨在模拟18个月大的孩子可以拥有的东西。人类的常识。Mansinghka也是该项目的主要研究人员之一。“有了Gen,研究人员第一次可以轻松地整合一系列不同的AI技术。看看人们在这个阶段发现什么是可能的,这将很有趣,”Mansinghka说。Gen的Open源代码是公开的,并在即将举行的开源开发者大会上展示,包括StrangeLoop和JuliaCon,这项工作也得到了美国国防高级研究计划局(DARPA)的部分支持。
