新春过后不久(2 月 4 日- 9 日),我们就迎来了 2017 年人工智能领域的首个重磅会议——AAAI-17,这也是第 31 届 AAAI 人工智能大会。机器之心在这场会议前后对该会议的亮点进行了跟踪报道和深度解读,详情参阅机器之心的相关报道《人工智能顶级会议 AAAI-17 亮点前瞻:洞见人工智能最前沿》、《提升人工智能准确度, 微软解读多项 AAAI-17 研究》、《MIT AAAI-17 研究展示:为规划算法加入人类直觉》、《AAAI-17 获奖论文深度解读(上):从无标签监督学习到人工智能道德框架》和《AAAI-17 获奖论文深度解读(下):蒙特卡罗定位和推荐系统》。
而在本届 AAAI 大会上,华人力量的崛起也是一个非常值得关注的看点。在接收论文的列表上,我们也能很明显地看到大量华人研究者的名字,当然,其中有很多论文实际上是中外研究机构合作的成果,比如由加州大学伯克利分校和今日头条实验室合作发表的论文《一个用于时间模型中联合参数和状态估计的近似黑箱的在线算法(A Nearly-Black-Box Online Algorithm for Joint Parameter and State Estimation in Temporal Models)》。这篇论文的作者有来自伯克利电气工程与计算机科学系的 Yusuf B. Erol、吴翼(Yi Wu)和 Stuart Russell,以及来自今日头条实验室的李磊(Lei Li)。
论文摘要:对于时间模型而言,在线的联合参数和状态估计是一个核心问题。现有的绝大多数方法不是受限于特定类别的模型(比如 Storvik 过滤器),就是计算成本过高(例如,particle MCMC)。我们提出了一种全新的近似黑箱算法(nearly-black-box algorithm)——预设参数滤波算法(Assumed Parameter Filter/APF),这是一种用于状态变量的粒子滤波(particle filtering)和用于参数变量的预设密度滤波(assumed density filtering)的混合。它具有以下优势:(a)它是在线的并且在计算上是高效的;(b)适用于带有任意转变动态(transition dynamics)的离散和连续参数空间。和一些标准算法相比,在计算负载固定时,APF 在几种不同的模型上都生成了更加准确的结果。
大会结束之后,机器之心对 Yusuf B. Erol、吴翼和李磊进行了专访,请他们解读了这份研究成果并谈了谈对其它一些问题的看法。在此之前,先让我们对本文的这三位主角作一个简单介绍。
Yusuf Bugra Erol 和吴翼都是著名计算机科学学者 Stuart Russell 教授的博士学生,其中吴翼参与过的论文《Value Iteration Networks》在去年 12 月的 NIPS 2016 上获最佳论文奖(参看报道《机器之心对话 NIPS 2016 最佳论文作者:如何打造新型强化学习观?》)。而现任今日头条科学家、头条实验室总监的李磊也曾在伯克利进行过博士后研究(参看机器之心的专访《头条实验室科学家李磊:准确率更高的问答系统和概率程序语言》)。
以下是机器之心对该论文的这三位作者的采访内容:
论文解读
机器之心:首先请为我们简单介绍一下这篇论文的研究成果。
李磊:人工智能研究的恒久主题之一是对通用表示框架和快速推理算法的探索。时序概率模型中(即随时间变化的模型),参数和隐变量的在线联合估计通常比较困难。本文针对非常广泛的概率时序模型,提出一个通用且高效的参数和隐变量估计算法,称作预设参数滤波算法(Assumed Parameter Filter/APF)。这个算法将可用来解决几乎任意的时间序列模型中推理问题,且是在线估计,所以可以解决很长或者持续时间序列的问题。
机器之心:您提出的算法有什么看点?
Yusuf Erol:我们的算法有以下特色:
1. 通用,适用于(几乎)任意时间序列模型(状态空间模型);
2. 适用于持续时间序列数据;
3. 可以处理未知状态和参数的联合估计,之前的算法很多都只能估计未知状态,而能估计未知参数的算法都是离线的,比较慢;
4. 理论上可以逼近真实解。
机器之心:可以举例说明一下吗?
Yusuf Erol:举个例子,医院急症看护病房每个病人都接了很多监测仪器,持续测量血压、心跳、呼吸等生理指标。很多指标的采样频率很高,数据量非常大,靠护士监管看不过来,需要通过算法从这些持续监测的生理指标时间序列数据中实时自动的分析出病人状态,以便预测并应对突发情况,比如突发休克。这个问题一个方法是通过建立多维时间序列模型,这些模型刻画了人身体内生理运转状况,其中有些变量是没有直接监测到的(通常称作状态(state)),比如血管内流量大小和速度,还有一些是因人而异的参数比如脑容量大小、身高和体重等。需要解决的问题是有了时间序列模型和观测数据(比如血压和心跳)后,如何实时快速的估计出未知的变量和参数。
为了方便的实验验证各种模型,需要一个通用的表示框架,以及一个通用黑盒的推理方法。我们采用概率编程语言 BLOG 作为表述模型的框架,这个框架可以描述非常广泛的模型,我们论文解决的就是在通用框架里面有了观测数据、有了模型时,如何快速且自动地做推理。
机器之心:这个算法能够怎样帮助用户?
李磊:概率程序可以给一线工程师和应用方提供简单快速验证各种设想的方案,使用方只要熟悉他需要解决的问题学会这个建模语言,即使不了解机器学习如何做推理,也可以通过概率程序的自动推理引擎来做解决方案,极大地降低了机器学习使用门槛。通过概率程序来表达时间序列模型也有同样的便利。
机器之心:APF 和以往的 SSM 比有那些优势?
Yusuf Erol:传统 SSM 推理算法(Particle filter, PMCMC 等)要么只能估计动态隐变量,不能估计静态参数(SMC algorithms);要么只适用特定模型(Extended Parameter Filter); 要么虽然通用但速度很慢,是离线算法(PMCMC)。我们的算法在上述三方面都有优势。
机器之心:SSM 的适合的应用有哪些?
Yusuf Erol:SSM 适合应用于需要对时间变化建模的数据。
机器之心:您认为输入的预设参数会对结果造成什么影响?
Yusuf Erol:我们算法的误差一方面来自于用于逼近的统计量是有限维度的。只要模型本身的真实后验概率可以计算,我们算法就可以工作得很好。尤其是如果参数的真实后验分布是高斯分布,那么就可以在理论上证明算法收敛。应用中发现实际效果比理论更好。
机器之心:可以使用一个生成器来自动生成不同的预设密度吗?可以变成完全的黑箱算法吗?
吴翼:这是一个很有趣的问题,要让算法真正完全黑箱(black-box),需要对任意近似分布(approximate distribution)都能进行统计量(sufficient statistics)的更新计算。对于任意指数类(exponential family)的分布,可以利用变分推理(variational inference)技术进行后验概率计算。当然,自然而然的问题是:我们能不能用一个程序来帮助人自动做数学计算呢?从这个大的角度看,这是一个很难的问题,也是很有趣的问题。学术界有非常多的尝试,比如大家熟知的 Mathematica 软件就是一个成功的产品,现在大家也尝试用深度学习的方法让 AI 自动进行数学定理的证明。希望在不久的将来,AI 可以完成开放性问题的数学证明。
机器之心:今日头条在这方面有哪些计划和打算,会把这项研究应用到产品中吗?
李磊:有好几个可能应用,今日头条的主产品是个性化内容推荐,把推荐做好,需要对文章图片视频进行分析,理解文章里面有哪些人物和事件,多个文章里面的同一事件是如何演化的,这里需要时序模型;今日头条的产品运营中有很多记录的时间序列数据,比如每个时刻各个地区的访问量、阅读停留时间,时间序列模型也可以对这些数据建模;我们的数据中心检测同样有很多数据,比如每分每秒每个服务器的负载、流量、温度等,通过时间序列对其建模可以做预测,进行灾害预警。
关于概率编程
机器之心:听说您们负责了一个 DARPA 项目的子项目 PPAML,能简单介绍一下吗?
吴翼:PPAML 的全名是 Probabilistic Programming for Advanced Machine Learning。是由 DARPA(Defense Advanced Research Projects Agency)推动的一项历时 4 年的基础科学研究。DARPA 中文名是国防高等研究计划署,隶属于美国国防部,致力于各种前瞻性研究,历史上一直都是各种黑科技的孵化器和诞生器。从基础的科学研究到美国绝密的武器装备的研究,DARPA 都有涉及。比如互联网的雏形就诞生于 DARPA,现在普及大众的人脸识别技术也是 DARPA 最先推动的,美国的很多自动驾驶、机器人、无人机技术也是 DARPA 推动的。PPAML 项目作为一项基础科学研究(当然不是绝密的军工项目了,不然我作为中国人也不可能参与其中),旨在推动概率编程语言的进步和发展,来让各个科学领域享受到计算机科学和机器学习科学的红利,提高各个科学领域的数据分析效率以推动整个科学界的更快发展。
机器之心:请您简要介绍一下概率编程(PP)和深度学习的区别,以及各自的优势和劣势。
李磊:概率编程是通过程序语言来定义概率模型,由通用的概率推理系统来自动求解。深度学习的模型也可以通过程序来定义和求解,这一点上两者是相似的。最大的区别在表达能力和推理算法,深度学习的模型是可导(或次可导)函数构成的,概率程序表达能力通常更强,神经网络模型可以表达成为概率程序的一个特殊子类别。
由于深度学习的模型具有很强的特殊性,因此深度学习系统可以相对容易地采用梯度下降算法来求解。而概率程序的通用算法通常基于马尔可夫链蒙特卡罗法(MCMC)。广义而言,概率编程语言考虑的模型是任意可以用程序表达的结构:而我们知道程序中有分支(if)、循环(for loop)、递归(recursion),一个图灵完备(Turing complete)的编程语言需要能够表达任意可在图灵机上执行的程序。由于概率编程语言具有极强的表达性,这给自动推断系统带来了很大的难度——当然,因为通用,最大的局限是推理速度缓慢。
我们的工作就是在保持概率编程表达性的前提下提高推理速度。也正是由于概率编程强大的表达能力,可以让概率编程惠及更多的受众,比如其他领域的科学家、认知科学家、数据科学家等等。使用者不需要对机器学习的推理算法有深入了解,只需要掌握建模语言,即可方便快速地构建和应用机器学习模型。
机器之心:您认为用编译的方法来优化机器学习的意义大吗?
吴翼:由于概率编程语言强大的模型表示能力,其背后的通用推理系统往往效率低下。系统的效率低下往往有着两个方面的原因:1. 推断算法收敛速度慢; 2. 算法执行和系统实现效率低下。要提高概率编程语言的推断效率,显然我们需要双管齐下。概率编程语言和普通的编程语言(比如 Python、C、Java)的编译有着本质的不同。对于普通编程语言(例如 C 语言),编译器并不会更改程序员写的代码语义,只是在代码上做同语义的改写。比如程序员写了 print("hello world!"),那么正确的编译器不论怎么改写,用户执行编译后的可执行代码,执行的结果都是在屏幕上显示「hello world」。然而对于概率编程语言却并不是这样:程序员只是用编程语言描述了模型是什么,至于怎么根据这个模型计算、算法怎么实现,都是编译器需要操心的事情。
一般来说概率编程语言所采用的系统设计,往往是读入用户输入的模型,并存储成某种数据结构,然后选用开发人员预先写好的某个算法,在这个数据结构上进行计算。这样的执行方式是解释性的(interpretive,比如 Python 就是解释性的语言),有很多的冗余。而一个好的概率编程语言编译器,需要对于用户输入的不同模型结合选用的算法做深度的分析和优化,并自动生成专门对于当前模型定制的算法实现。比如我们的 Swift 编译器,就可以在采用相同算法的前提下,将概率编程语言的推断速度提高 100 倍以上。
机器之心:这个研究在哪些方向上还能继续拓展?
Yusuf Erol:非常高维的状态空间模型中的推理算法,理论上更强的结果等。
吴翼:引入更多程序语言编译优化的算法来加速推理。比如部分计算。我们也在一直完善和加强 compiler,增加特性,提高性能,增加可用性等等。我们也在考加更多的算法让整个概率编程语言系统有更多的算法可用。
其它问题
机器之心:您如何评价这届 AAAI 会议中的华人力量(华人的论文数量和质量以及代表性论文)?
李磊:现在人工智能领域的研究者越来越多,也越来越多样化,他们研究着更多样的问题,产出着更多更好的成果,这是很好的趋势。但作为科研工作者,我们更关注研究本身,但不关注这个研究是什么种族的人做的。当然,我们也尽一切努力推动中国的人工智能研究,这也是为科学进步做贡献。
机器之心:科学理念上的信仰对您搞研究重要吗?对不同理念的研究应该持什么态度?
李磊:之前做时间序列用贝叶斯模型多,最近几年做自然语言的问题用神经网络模型多。派别之争对我来说意义不大,但我喜欢贝叶斯模型的清晰结构和可解释性,也喜欢神经网络在大量标注数据下的效果,Frequentist 方法用得少却不排斥。科学研究讲求方法论,多样化才有可持续性。
机器之心:在您看来人工智能现阶段是更受限于算法还是运算力?
李磊:人工智能模型、推理算法、计算速度一直是紧密关联,螺旋上升的。目前三者都各自有挑战。
机器之心:今日头条在人工智能上主要有哪些方向的研究?
李磊:围绕自然语言理解和图像视觉做了一些研究,自然语言理解方面,比如新闻生成、自动摘要、文本分类、自动问答、评论分析;图像视觉方面,比如视频内容理解、分类、相似和重复内容识别、物体检测追踪等。
机器之心:您还希望通过人工智能帮助哪些其它方向上的发展?
李磊:比如医疗监控、辅助诊断、心理建模分析、环境变量建模分析等。