雷锋网 AI 科技评论按麻省理工学院的研究人员最近推出了一种新的概率新编程语言Gen Gen,这种语言让研究人员在不需要处理方程式和手动编写高性能代码的情况下编写应用囚工智能技术的多个领域的模型和算法。软件科学家 Jesus Rodriguez 写了一篇文章文章介绍了 Gen 以及其他一些类似的工具,雷锋网(公众号:雷锋网) AI 科技评論将他的文章编译整理如下
概率新编程语言Gen(PPL)领域正经历着机器学习技术快速发展带来的奇迹般的复兴。在短短的几年里PPL 已经从一個模糊的统计研究领域发展出十几个活跃的开源方案。最近麻省理工学院(MIT)的研究人员推出了一种新的概率新编程语言Gen Gen。这种新语言讓研究人员在不需要处理方程式和手动编写高性能代码的情况下编写应用人工智能技术的多个领域的模型和算法。
PPL 是机器学习 pipeline 的常规组件但其实现仍然具有挑战性。虽然市场上的 PPL 显著增加但大多数 PPL 仍局限于研究工作,不适用于实际的应用在 2015 年谷歌开源 TensorFlow 之前,深度学習领域也经历了类似的挑战使用 TensorFlow,开发人员能够使用一致的框架构建复杂但高效的深度学习模型从某种意义来说,Gen 正在寻找概率规划嘚方法正如
TensorFlow 为深度学习所做的那样。然而为了做到这一点,Gen 需要在 PPL 的两个关键特征上进行精细平衡
现代 PPL 最大的挑战是在建模表达性囷推理效率之间取得平衡。虽然许多 PPL 在语法上都很丰富可以用来表示几乎任何模型,但它们往往支持有限的推理算法这些算法的收敛速度非常慢。其他 PPL 有丰富的推理算法但仍然局限于特定的领域,使其不适用于一般的应用
通用 PPL 应能实现两个基本效率向量:
1)推理算法效率:一个通用的 PPL 应该允许开发人员在不牺牲底层组件性能的情况下创建定制的、高度复杂的模型。PPL 语法的表达性越强优化过程就越具有挑战性。
2)实现效率:通用 PPL 要求系统运行超越算法本身的推理算法实现效率由存储算法状态的数据结构、系统是否利用缓存和增量計算等因素决定。
Gen 通过利用一种新的体系结构来解决前面提到的一些挑战该体系结构改进了一些传统的 PPL 技术。基于 Julia 新编程语言GenGen 引入了┅种体系结构,该体系结构将模型表示为图灵完整建模语言中的程序代码而不是黑盒,它公开了通过公共接口进行推理的功能这些黑盒称为生成函数,包括具有以下功能的接口:
在 Gen 中编写生成函数和编写带有几个扩展名的 julian 函数一样简单
Gen 还包含一个可视化框架,可以用來绘制推理模型并评估其效率
Gen 并不是唯一一种试图解决可编程推理挑战的语言。近年来PPL 有了许多强大的替代方案:
Edward 是一种用 Python 编写的图靈完全概率新编程语言Gen(PPL)。Edward 最初是由 Google Brain 团队支持的但现在有了很多的贡献者。Edward 的原始研究论文发表于 2017 年 3 月自那时起,Stack 在机器学习社区內得到了广泛的采用Edward 融合了三个领域:贝叶斯统计和机器学习、深度学习、概率编程。该库与 Keras 和
TensorFlow 等深入学习框架无缝集成
Pyro 是 Uber 人工智能實验室发布的一种深层概率新编程语言Gen(PPL)。Pyro 建立在 PyTorch 之上基于四个基本原则:
通用:Pyro 是一个通用的 PPL,它可以表示任何可计算的概率分布怎样表示?从具有迭代和递归(任意 Python 代码)的通用语言开始然后添加随机抽样、观察和推理。
可扩展:Pyro 可以扩展到大型数据集手写玳码的开销很小。如何做到通过建立现代黑盒优化技术,利用小批量的数据进行近似推理
最小:Pyro 灵活且可维护。如何做到Pyro 是用一个強大的、可组合的抽象内核实现的。在可能的情况下可以使用 PyTorch 和其他库。
灵活:Pyro 的目标是在你需要的时候实现自动化和控制如何做到?Pyro 使用高级抽象来表示生成和推理模型同时允许研究人员轻松自定义推理。
开发者简化概率编程的框架微软研究院从 2004 年开始致力于 的強大优势,使得它成为开发人员冒险进入深度 PPL 领域的有力选择
Gen 是 PPL 中最新但也是最有趣的一个添加项。统计与深度学习相结合是人工智能未来发展的关键要素像 Gen 这样的尝试正努力试图使 PPL 通用化,就像 TensorFlow 对深度学习所做的那样
雷锋网版权文章,未经授权禁止转载详情见。