APP下载

无需数学就能写AI MIT提出AI专用程式语言Gen_研究

消息来源:baojiabao.com 作者: 发布时间:2024-05-19

报价宝综合消息无需数学就能写AI MIT提出AI专用程式语言Gen_研究

在本周的提交程式语言设计与实现大会(PLDI)的一篇论文中,MIT 研究人员介绍了一种全新的概率程式设计系统 Gen。从计算机视觉到机器人和统计,使用者可以通过 Gen 为应用 AI 技术的多个领域编写模型和演算法,且无需处理方程式或手动编写高效能程式码。此外,Gen 还允许研究人员编写用于预测任务的复杂模型和推理演算法,这在之前是不可能做到的。

例如,3-D 人体姿态是一项困难的计算机视觉推理任务,在自动系统、人机互动和增强现实(AR)中均有应用。在论文中,研究人员展示了简短的 Gen 程式如何推理 3-D 人体姿态。

看起来十分简单,但在后台,该程式包括执行图形渲染、深度学习和概率模拟型别的元件。与一些研究人员所开发的早期系统相比,这些不同技术的结合可以提高这项任务的准确性和速度。

论文图 6:人体姿态推理任务的建模、推理程式码以及评估结果。模型使用静态 DSL 编写,呼叫图形引擎从姿态引数中渲染深度影象。自定义提议结合静态 DSL 和 TensorFlow DSL,通过深度神经网络来传递观察到的深度影象,并提出姿态引数。

研究人员表示,由于其简单性,从新手到专家,Gen 可以被任何人轻松使用。“这项工作的一个动机是让电脑科学或数学专业知识较少的人更容易做自动化人工智能,”论文第一作者、电气工程和电脑科学系博士生 Marco Cusumano-Towner 说。“我们还希望它能提高生产力,这意味着专家可以更轻松地快速迭代 AI 系统,做出原型。”

研究人员还展示了 Gen 通过使用其他 Gen 程式简化资料分析的能力,该程式可自动生成通常由专家用于分析、解释和预测资料中基础模式的复杂统计模型。这种能力建立在研究人员先前工作的基础上,也就是让使用者可以编写几行程式码来发现对金融趋势、航空旅行、投票模式以及疾病传播的洞见。但不同的是,早期系统需要大量的手动编码才能进行准确的预测。

“Gen 是第一个足以涵盖计算机视觉和资料科学中不同案例的灵活、自动化、高效的系统,且效能非常好。”MIT 脑与认知科学系(Department of Brain and Cognitive Sciences)的研究员 Vikash K. Mansinghka 说,他负责执行概率计算专案。

集自动化、灵活性和速度优势于一身

2015 年,Google开源 TensorFlow 以来,它已经成为了最为流行的深度学习框架。然而,即使 TensorFlow 足够自动化和高效,但它只侧重于深度学习模型,对范围更广的人工智能而言,这些模型既昂贵又有限。

如今,业内已经有大量的 AI 技术,例如统计和概率模型、模拟引擎等。一些概率程式设计系统虽然足够灵活,可以覆盖到多种 AI 技术,但执行不够高效。

研究人员寻求的是集其所长于一身:自动、灵活、快速。Mansinghka 说,“如果我们能做到这一点,或许就能向 TensorFlow 对深度学习那样,有助于民主化更广泛的模型和推理演算法。”

在概率性 AI 中,推理演算法会对资料执行操作,并基于新资料连续地调整概率,从而最终做出预测。

借鉴了早期概率程式设计系统 Church 中的概念,研究人员将几种自定义建模语言结合到 Julia 中,每种建模语言都对不同型别的 AI 建模方法进行优化,使其更加通用。利用优化、变分推理、某些概率方法以及深度学习等各种方法,Gen 还为推理任务提供了高阶基础结构。

外部机构就 Gen 与 MIT 展开合作

外部使用者已经在寻找利用 Gen 进行 AI 研究的方法。例如,英特尔与 MIT 合作,将 Gen 用于机器人和 AR 系统,尤其内部基于深度感知摄像头的 3D 姿态估计。MIT 林肯实验室(Lincoln Laboratory)也在合作开发 Gen 在人道主义救援和灾害应对空中机器人中的应用。

在 MIT 追求人工智能的环境下,Gen 开始被用于野心勃勃的 AI 专案中。例如,Gen 对 MIT-IBM 沃森人工智能实验室以及美国国防部先进研究专案局(Department of Defense’s Defense Advanced Research Projects Agency)正在进行的“机器常识”专案极为重要,该专案旨在建模 18 个月大婴儿水平的人类常识知识库。Mansinghka 是该专案的主要研究者之一。

Mansinghka 表示:“借助于 Gen,研究人员首次得以很容易地整合大量不同的 AI 技术。”

优步首席科学家和 AI 副总裁、剑桥大学教授 Zoubin Ghahramani 表示:“自深度学习出现以来,概率程式设计是最有潜力的前沿人工智能领域之一。Gen 代表了这一领域的重大进展,并将有助于概率推理 AI 系统的可扩充套件和实际实现。”

Google研究主管 Peter Norvig 也非常赞赏这项工作,他说:“Gen 允许使用者使用概率程式设计解决问题,因此对各种问题有更具原则性的方法,且不受限于概率程式设计系统设计上的一些缺陷。通用程式语言之所以能成功,是因为它们能令程序员更容易完成任务,Gen 对于概率程式设计的意义同样在此。”

举个栗子

研究人员编写了一个简短的 Gen 程式来做贝叶斯线性回归:给定(x, y)平面上的一组资料点,他们想找出一条能很好拟合这些资料点的线。

典型的 Gen 程式通常包含三个主要元件。

首先,定义一个生成模型:利用额外语句扩充套件的 Julia 函式,即从概念上模拟一个假资料集。下面的模型对 slope 和 intercept 引数进行取样,然后 x 轴上的引数可以作为输入,且对相应 y 轴进行取样。他们将所做的随机选择命名为 @trace,这样就可以在推理程式中引用这些选择。

using Gen

@gen function my_model(xs::Vector{Float64})

slope = @trace(normal(0, 2), :slope)

intercept = @trace(normal(0, 10), :intercept)

for (i, x) in enumerate(xs)

@trace(normal(slope * x + intercept, 1), "y-$i")

end

end

其次,研究人员编写了一个推理程式,用于操纵模型的 Execution Traces。推理程式是常规的 Julia 程式码,并利用 Gen 的标准推理库。

下面的推理程式会输入资料集,并迭代地执行 MCMC 演算法,以拟合 slope 和 intercept 引数:

function my_inference_program(xs::Vector{Float64}, ys::Vector{Float64}, num_iters::Int)

# Create a set of constraints fixing the

# y coordinates to the observed y values

constraints = choicemap()

for (i, y) in enumerate(ys)

constraints["y-$i"] = y

end

# Run the model, constrained by `constraints`,

# to get an initial execution trace

(trace, _) = generate(my_model, (xs,), constraints)

# Iteratively update the slope then the intercept,

# using Gen's metropolis_hastings operator.

for iter=1:num_iters

(trace, _) = metropolis_hastings(trace, select(:slope))

(trace, _) = metropolis_hastings(trace, select(:intercept))

end

# From the final trace, read out the slope and

# the intercept.

choices = get_choices(trace)

return (choices[:slope], choices[:intercept])

end

最后,研究人员在一些资料上执行推理,得到下面的结果:

xs = [1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]

ys = [8.23, 5.87, 3.99, 2.59, 0.23, -0.66, -3.53, -6.91, -7.24, -9.90]

(slope, intercept) = my_inference_program(xs, ys, 1000)

println("slope: $slope, intercept: $intercept")

论文:Gen: A General-Purpose Probabilistic Programming System with Programmable Inference

摘要:概率建模和推理对于很多领域都是极为重要的。概率程式语言得到更广泛采用的关键挑战在于设计灵活且效能良好的系统。本文介绍的新概率程式设计系统 Gen 具有可用于建模以及终端使用者自定义和推理优化的全新语言结构。Gen 使得能够解决多领域问题的概率程式编写变得切实可行。Gen 程式能够结合 Julia 编写的生成模型、TensorFlow 中的神经网络以及基于 Monte Carlo 可扩充套件库的推理演算法和数值优化方法。

本文还介绍了一些能够结合 Gen 灵活性和效能的方法:

1、生成函式界面,一种封装概率和/或可微计算的抽象

2、具有自定义编译器的特定领域语言,对不同的灵活性/效能进行权衡

3、能够编码条件独立性和重复计算常见模式的连符,支援快取加速

4、标准推理库,支援在 Gen 中编写作为程式的自定义建议分布

本文研究表明,在处理非线性状态空间建模、现实世界时序资料结构学习、鲁棒回归以及基于深度影象的 3D 人体姿态估计等问题上,Gen 的效能优于当前最佳的概率程式设计系统,有时超出多个数量级。

注:文章为作者独立观点,不代表Soo56立场

2019-06-29 18:47:00

相关文章