无需数学就能写AI,MIT提出AI专用编程语言Gen

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

例如,3-D 人体姿态是一项困难的计算机视觉推理任务,在自动系统、人机交互和增强现实(AR)中均有应用。在论文中,研究人员展示了简短的 Gen 程序如何推理 3-D 人体姿态。Brn每天发布大量与生活相关的资讯平台

看起来十分简单,但在后台,该程序包括执行图形渲染、深度学习和概率模拟类型的组件。与一些研究人员所开发的早期系统相比,这些不同技术的结合可以提高这项任务的准确性和速度。Brn每天发布大量与生活相关的资讯平台

Brn每天发布大量与生活相关的资讯平台

论文图 6:人体姿态推理任务的建模、推理代码以及评估结果。模型使用静态 DSL 编写,调用图形引擎从姿态参数中渲染深度图像。自定义提议结合静态 DSL 和 TensorFlow DSL,通过深度神经网络来传递观察到的深度图像,并提出姿态参数。Brn每天发布大量与生活相关的资讯平台

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

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

「Gen 是第一个足以涵盖计算机视觉和数据科学中不同案例的灵活、自动化、高效的系统,且性能非常好。」MIT 脑与认知科学系(Department of Brain and Cognitive Sciences)的研究员 Vikash K. Mansinghka 说,他负责运行概率计算项目。Brn每天发布大量与生活相关的资讯平台

集自动化、灵活性和速度优势于一身Brn每天发布大量与生活相关的资讯平台

2015 年,谷歌开源 TensorFlow 以来,它已经成为了最为流行的深度学习框架。然而,即使 TensorFlow 足够自动化和高效,但它只侧重于深度学习模型,对范围更广的人工智能而言,这些模型既昂贵又有限。Brn每天发布大量与生活相关的资讯平台

如今,业内已经有大量的 AI 技术,例如统计和概率模型、模拟引擎等。一些概率编程系统虽然足够灵活,可以覆盖到多种 AI 技术,但运行不够高效。Brn每天发布大量与生活相关的资讯平台

研究人员寻求的是集其所长于一身:自动、灵活、快速。Mansinghka 说,「如果我们能做到这一点,或许就能向 TensorFlow 对深度学习那样,有助于民主化更广泛的模型和推理算法。」Brn每天发布大量与生活相关的资讯平台

在概率性 AI 中,推理算法会对数据执行操作,并基于新数据连续地调整概率,从而最终做出预测。Brn每天发布大量与生活相关的资讯平台

借鉴了早期概率编程系统 Church 中的概念,研究人员将几种自定义建模语言结合到 Julia 中,每种建模语言都对不同类型的 AI 建模方法进行优化,使其更加通用。利用优化、变分推理、某些概率方法以及深度学习等各种方法,Gen 还为推理任务提供了高级基础结构。Brn每天发布大量与生活相关的资讯平台

外部机构就 Gen 与 MIT 展开合作Brn每天发布大量与生活相关的资讯平台

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

在 MIT 追求人工智能的环境下,Gen 开始被用于野心勃勃的 AI 项目中。例如,Gen 对 MIT-IBM 沃森人工智能实验室以及美国国防部先进研究项目局(Department of Defense』s Defense Advanced Research Projects Agency)正在进行的「机器常识」项目极为重要,该项目旨在建模 18 个月大婴儿水平的人类常识知识库。Mansinghka 是该项目的主要研究者之一。Brn每天发布大量与生活相关的资讯平台

Mansinghka 表示:「借助于 Gen,研究人员首次得以很容易地集成大量不同的 AI 技术。」Brn每天发布大量与生活相关的资讯平台

优步首席科学家和 AI 副总裁、剑桥大学教授 Zoubin Ghahramani 表示:「自深度学习出现以来,概率编程是最有潜力的前沿人工智能领域之一。Gen 代表了这一领域的重大进展,并将有助于概率推理 AI 系统的可扩展和实际实现。」Brn每天发布大量与生活相关的资讯平台

谷歌研究主管 Peter Norvig 也非常赞赏这项工作,他说:「Gen 允许用户使用概率编程解决问题,因此对各种问题有更具原则性的方法,且不受限于概率编程系统设计上的一些缺陷。通用编程语言之所以能成功,是因为它们能令程序员更容易完成任务,Gen 对于概率编程的意义同样在此。」Brn每天发布大量与生活相关的资讯平台

举个栗子Brn每天发布大量与生活相关的资讯平台

研究人员编写了一个简短的 Gen 程序来做贝叶斯线性回归:给定(x, y)平面上的一组数据点,他们想找出一条能很好拟合这些数据点的线。Brn每天发布大量与生活相关的资讯平台

典型的 Gen 程序通常包含三个主要组件。Brn每天发布大量与生活相关的资讯平台

首先,定义一个生成模型:利用额外语句扩展的 Julia 函数,即从概念上模拟一个假数据集。下面的模型对 slope 和 intercept 参数进行采样,然后 x 轴上的参数可以作为输入,且对相应 y 轴进行采样。他们将所做的随机选择命名为 @trace,这样就可以在推理程序中引用这些选择。Brn每天发布大量与生活相关的资讯平台

using GenBrn每天发布大量与生活相关的资讯平台

@gen function my_model(xs::Vector{Float64})Brn每天发布大量与生活相关的资讯平台

slope = @trace(normal(0, 2), :slope)Brn每天发布大量与生活相关的资讯平台

intercept = @trace(normal(0, 10), :intercept)Brn每天发布大量与生活相关的资讯平台

for (i, x) in enumerate(xs)Brn每天发布大量与生活相关的资讯平台

@trace(normal(slope * x + intercept, 1), "y-$i")Brn每天发布大量与生活相关的资讯平台

endBrn每天发布大量与生活相关的资讯平台

endBrn每天发布大量与生活相关的资讯平台

其次,研究人员编写了一个推理程序,用于操纵模型的 Execution Traces。推理程序是常规的 Julia 代码,并利用 Gen 的标准推理库。Brn每天发布大量与生活相关的资讯平台

下面的推理程序会输入数据集,并迭代地运行 MCMC 算法,以拟合 slope 和 intercept 参数:Brn每天发布大量与生活相关的资讯平台

function my_inference_program(xs::Vector{Float64}, ys::Vector{Float64}, num_iters::Int)Brn每天发布大量与生活相关的资讯平台

# Create a set of constraints fixing theBrn每天发布大量与生活相关的资讯平台

# y coordinates to the observed y valuesBrn每天发布大量与生活相关的资讯平台

constraints = choicemap()Brn每天发布大量与生活相关的资讯平台

for (i, y) in enumerate(ys)Brn每天发布大量与生活相关的资讯平台

constraints["y-$i"] = yBrn每天发布大量与生活相关的资讯平台

endBrn每天发布大量与生活相关的资讯平台

# Run the model, constrained by `constraints`,Brn每天发布大量与生活相关的资讯平台

# to get an initial execution traceBrn每天发布大量与生活相关的资讯平台

(trace, _) = generate(my_model, (xs,), constraints)Brn每天发布大量与生活相关的资讯平台

# Iteratively update the slope then the intercept,Brn每天发布大量与生活相关的资讯平台

# using Gen's metropolis_hastings operator.Brn每天发布大量与生活相关的资讯平台

for iter=1:num_itersBrn每天发布大量与生活相关的资讯平台

(trace, _) = metropolis_hastings(trace, select(:slope))Brn每天发布大量与生活相关的资讯平台

(trace, _) = metropolis_hastings(trace, select(:intercept))Brn每天发布大量与生活相关的资讯平台

endBrn每天发布大量与生活相关的资讯平台

# From the final trace, read out the slope andBrn每天发布大量与生活相关的资讯平台

# the intercept.Brn每天发布大量与生活相关的资讯平台

choices = get_choices(trace)Brn每天发布大量与生活相关的资讯平台

return (choices[:slope], choices[:intercept])Brn每天发布大量与生活相关的资讯平台

endBrn每天发布大量与生活相关的资讯平台

最后,研究人员在一些数据上运行推理,得到下面的结果:Brn每天发布大量与生活相关的资讯平台

xs = [1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]Brn每天发布大量与生活相关的资讯平台

ys = [8.23, 5.87, 3.99, 2.59, 0.23, -0.66, -3.53, -6.91, -7.24, -9.90]Brn每天发布大量与生活相关的资讯平台

(slope, intercept) = my_inference_program(xs, ys, 1000)Brn每天发布大量与生活相关的资讯平台

println("slope: $slope, intercept: $intercept")Brn每天发布大量与生活相关的资讯平台

论文:Gen: A General-Purpose Probabilistic Programming System with Programmable InferenceBrn每天发布大量与生活相关的资讯平台

Brn每天发布大量与生活相关的资讯平台

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

本文还介绍了一些能够结合 Gen 灵活性和性能的方法:Brn每天发布大量与生活相关的资讯平台

1、生成函数接口,一种封装概率和/或可微计算的抽象Brn每天发布大量与生活相关的资讯平台

2、具有自定义编译器的特定领域语言,对不同的灵活性/性能进行权衡Brn每天发布大量与生活相关的资讯平台

3、能够编码条件独立性和重复计算常见模式的连符,支持缓存加速Brn每天发布大量与生活相关的资讯平台

4、标准推理库,支持在 Gen 中编写作为程序的自定义建议分布Brn每天发布大量与生活相关的资讯平台

本文研究表明,在处理非线性状态空间建模、现实世界时序数据结构学习、鲁棒回归以及基于深度图像的 3D 人体姿态估计等问题上,Gen 的性能优于当前最佳的概率编程系统,有时超出多个数量级。Brn每天发布大量与生活相关的资讯平台

注:文章为作者独立观点,不代表Soo56立场Brn每天发布大量与生活相关的资讯平台

也许你还喜欢

ups不间断电源原理分析

当前在电源市场上,所销售的电源类型较多,不同类型的电源,相应的功能与作用有所不同。在超

空间背景音乐怎么添加图文教程分享

怎样免费添加QQ空间背景音乐其实步骤也不多,很简单,主要有以下几个步骤,详情如下

万能转换器破解版怎么用?具体操作方

万能格式转换器是一款功能强大的格式转换软件,音频、视频、图片、光驱设备都可以通过万

rmvb转mp4格式转换器图文教程

在我们日常娱乐和日常工作中,现在网络上一些高清的视频一般都是rmvb格式的,而一些播放设

支付宝网络系统异常怎么解决

支付宝支付出现网络系统异常是因为IE浏览器设置Internet选项不恰当而导致的,去重新设置

win10蓝牙驱动破解版安装图文教程

win10蓝牙驱动怎么安装?请看下面具体操作方法。

微孔抛光镜面加工计数详解

一般来说,对于小孔微孔进行抛光,传统的加工方法可能会导致孔洞磨损,或者加工效果不理想。

短视频内容管理助手有哪些?怎么好用

随着短视频的普及,越来越多的人开始将大量的时间和精力投入到短视频的制作和分享中。因

模具设计学习知识分享

今天,我想谈谈我在模具设计CAD方面的一些心得体会。作为一个从事这个行业多年的工程师,

seo优化排名软件详细介绍

1. SEMrush SEMrush,一款广受好评的SEO神器,被誉为业内最佳的SEO分析工具。功能包括全