【MIT 推出编程语言 Gen,从方程式和手写代码上解放工程师】

电影资讯 浏览(895)

  雷锋网 AI 科技评论按,麻省理工学院的研究人员最近推出了一种新的概率编程语言 Gen,这种语言让研究人员在不需要处理方程式和手动编写高性能代码的情况下,编写应用人工智能技术的多个领域的模型和算法。软件科学家 Jesus Rodriguez 写了一篇文章,文章介绍了 Gen 以及其他一些类似的工具,雷锋网 AI 科技评论将他的文章编译整理如下。

  概率编程语言(PPL)领域正经历着机器学习技术快速发展带来的奇迹般的复兴。在短短的几年里,PPL 已经从一个模糊的统计研究领域发展出十几个活跃的开源方案。最近,麻省理工学院(MIT)的研究人员推出了一种新的概率编程语言 Gen。这种新语言让研究人员在不需要处理方程式和手动编写高性能代码的情况下,编写应用人工智能技术的多个领域的模型和算法。

  PPL 是机器学习 pipeline 的常规组件,但其实现仍然具有挑战性。虽然市场上的 PPL 显著增加,但大多数 PPL 仍局限于研究工作,不适用于实际的应用。在 2015 年谷歌开源 TensorFlow 之前,深度学习领域也经历了类似的挑战。使用 TensorFlow,开发人员能够使用一致的框架构建复杂但高效的深度学习模型。从某种意义来说,Gen 正在寻找概率规划的方法,正如 TensorFlow 为深度学习所做的那样。然而,为了做到这一点,Gen 需要在 PPL 的两个关键特征上进行精细平衡。

  表达性与效率

  现代 PPL 最大的挑战是在建模表达性和推理效率之间取得平衡。虽然许多 PPL 在语法上都很丰富,可以用来表示几乎任何模型,但它们往往支持有限的推理算法,这些算法的收敛速度非常慢。其他 PPL 有丰富的推理算法,但仍然局限于特定的领域,使其不适用于一般的应用。

  image.php?url=0MiU47Eb9w

  通用 PPL 应能实现两个基本效率向量:

  1)推理算法效率:一个通用的 PPL 应该允许开发人员在不牺牲底层组件性能的情况下创建定制的、高度复杂的模型。PPL 语法的表达性越强,优化过程就越具有挑战性。

  2)实现效率:通用 PPL 要求系统运行超越算法本身的推理算法。实现效率由存储算法状态的数据结构、系统是否利用缓存和增量计算等因素决定。

  Gen

  Gen 通过利用一种新的体系结构来解决前面提到的一些挑战,该体系结构改进了一些传统的 PPL 技术。基于 Julia 编程语言,Gen 引入了一种体系结构,该体系结构将模型表示为图灵完整建模语言中的程序代码,而不是黑盒,它公开了通过公共接口进行推理的功能。这些黑盒称为生成函数,包括具有以下功能的接口:

  1.构建模型的工具:Gen 提供多种可交互操作的建模语言,每种语言的灵活性/效率权衡都不一样。单个模型可以组合来自多个建模语言的代码。生成函数利用了非常适合模型和增量计算的数据结构。

  2.裁剪推理的工具:Gen 为推理编程提供了一个高级库,仅通过生成函数与模型交互,它实现了推理算法模块的构建。

  3.评估:Gen 提供了一个经验模型,用以评估其在已知推理问题中对备选方案的性能。

  下图说明了 Gen 的体系结构。可以看到,框架支持差异推理算法,以及基于生成函数概念的抽象层。

  image.php?url=0MiU47yWCp

  使用 Gen

  开始使用 Gen 是很简单的事情。可以使用 Julia 软件包管理器安装该语言工具。

  pkg> add

  在 Gen 中编写生成函数和编写带有几个扩展名的 julian 函数一样简单。