逻辑、概率编程以及因果法则
Logic + probabilistic programming + causal laws
https://royalsocietypublishing.org/doi/pdf/10.1098/rsos.230785
![]()
摘要
概率规划旨在将随机模型直接融入规划过程,该过程的目标是为一个假设的智能体合成一系列动作,以实现某种目标。概率编程已迅速发展成为一种关键范式,它将概率概念与编程语言相结合,使人们能够使用递归和循环等编程原语来指定复杂的概率模型。概率逻辑编程则进一步旨在利用一阶逻辑构件,简化结构化概率分布的描述。本文简要讨论了通过概率(逻辑)编程的视角对概率规划进行建模的问题。尽管此类集成存在多种可能的形式,我们重点关注两个代表性示例:第一个是对流行的概率逻辑编程语言PROBLOG的扩展,允许在Horn子句(即Prolog程序)上标注概率;第二个是对流行的智能体编程语言GOLOG的扩展,允许通过动作、效果和观测对动态系统进行逻辑描述。这两种概率扩展分别突出了概率编程在解决概率规划中提出的非平凡建模问题时所具有的不同优势。具体而言,人们可以在一阶设定下实例化具有不断增长或缩小状态空间、离散与连续概率分布以及非唯一先验分布的规划问题。
关键词:统计关系学习,一阶逻辑,概率编程
引言
自动规划是人工智能领域的一个重要研究课题,拥有悠久而辉煌的历史 [1]。经典范式假设存在一个特定的初始状态,该状态由一组事实构成,并在一组能够以某种方式改变该状态的动作上进行定义。动作进一步通过其适用条件(即智能体执行该动作前必须为真的条件)和效果(即程序上相当于向状态中添加新事实并移除其他事实)来刻画。科学目标则是设计算法,合成一个动作序列,使智能体从初始状态达到期望的目标状态。
自早期起,自动规划便受到机器人应用的驱动。但人们发现,现实世界——更准确地说,机器人对世界的认知——几乎从来不是简单的一组真实事实,且智能体打算执行的动作也从未完全按照预期的方式运作。理解这种复杂性的一种方法是将“高层推理”(在此例中即规划器的搜索空间)与底层的感知-运动细节分离开来。从积极的一面看,这种分离使得计划表示可以保持有限、离散且简洁;但从消极的一面看,实现这种关注点分离需要投入大量专家知识,可能因此牺牲了对系统整体行为清晰性的把握。
顺便提及,通过在受控环境中反复测试机器人的执行器,人们可以用概率分布近似描述某个动作的不确定效果。类似地,基于对环境的最小化假设(表达为概率先验),通过重复采样,机器人可更新其先验,收敛到一个合理后验,从而近似环境的真实状态 [2]。为此,概率规划试图直接将此类模型融入规划过程。迄今为止,已有多种用于概率规划的语言和算法框架,例如 [3–6]。
本文简要讨论通过概率(逻辑)编程视角对概率规划进行建模的问题。概率编程已迅速发展成为一种关键范式,旨在将概率概念与编程语言相结合,使人们能够使用递归、循环等编程原语指定复杂的概率模型 [7]。概率逻辑编程则进一步旨在利用一阶逻辑构件,简化结构化概率分布的描述。
总体而言,概率编程语言的发展旨在支持概率机器学习应用中的模块化与重用。其原子构建块包含随机原语,其形式化表示也允许组合性 [7,8]。
尽管此类集成有多种可能的形式,我们重点关注两个代表性示例:第一个是对流行的概率逻辑编程语言 PROBLOG 的扩展,允许在 Horn 子句(即 Prolog 程序)上标注概率;第二个是对流行的智能体编程语言 GOLOG 的扩展,允许通过动作、效果和观测对动态系统进行逻辑描述。这两种概率扩展分别突出了概率编程在解决概率规划中提出的非平凡建模问题时所具有的不同优势。具体而言,人们可以在一阶设定下实例化具有不断增长或缩小状态空间、离散与连续概率分布以及非唯一先验分布的规划问题。更精确地说,我们将概述两个系统的特性:
— HYPE [9]:一个基于分布子句 [10] 的规划框架; — ALLEGRO [11]:一个扩展 GOLOG [12] 的高级控制编程框架。
这两个系统强调了概率编程的不同优势,我们认为这些优势对于概率规划中提出的复杂建模问题尤其有用。HYPE 能够轻松描述由于对象存在性不确定性导致的状态空间增长与收缩,因而与 BLOG 模型 [13,14] 密切相关。由于 HYPE 是 PROBLOG [15] 的扩展,它可受益于 PROBLOG 所探索的广泛应用和机器学习模型。1 该领域的动态特性通过将时间作为谓词参数予以实例化,因此可能最适合处理有限时域的规划问题。
ALLEGRO 将动作视为头等公民,建立在一个丰富的动力学和主观概率模型基础上,使其能够处理情境敏感的效果公理,以及施加于一阶公式上的非唯一概率测度。GOLOG 也被广泛应用于各类需在动态场景中运用结构化知识(如本体)的应用 [16],而 ALLEGRO 可继承这些发展成果。此外,GOLOG 已被证明可用于结构化大规模规划空间的搜索 [17]。最后,由于其包含迭代和循环构造,这类程序最适用于建模非终止行为 [18]。
接下来,我们将介绍这两个系统的核心形式化和算法贡献,最后讨论开放的计算问题。显然,这两个系统并非仅有的融合逻辑与概率元素用于规划的语言:关系型马尔可夫决策过程(MDP)[19]、一阶部分可观测马尔可夫决策过程(POMDP)[20],以及程度较轻的基于动作模型的动态贝叶斯网络 [21] 均属于更大范畴的一部分。然而,这些系统建立在强大且通用的逻辑基础之上:HYPE 是 PROBLOG 的扩展,因而允许使用逻辑编程指定概率断言;而 ALLEGRO 是 GOLOG 的扩展,后者是一种带有一些二阶逻辑特性的一阶逻辑方言。因此,它们展示了当概率与一阶逻辑在动态环境中统一时所能实现的可能性。这使我们的研究议程区别于 BLOG 及其动态版本 [13,14] 等提案——后者虽支持某些一阶特征,但不允许任意逻辑连接词和量词。
为准备后续讨论,让我们简要反思为何概率逻辑编程是一种强大的范式。
为何将概率编程与逻辑结合?
概率编程是一个不断发展的领域,其核心是将概率模型表示为可执行代码 [8,13,22–25]。这一方法使研究人员能够形式化、自动化并扩展建模与推理的诸多方面,使其更易于被更广泛的开发者和领域专家所理解和应用。通过整合来自多个领域的建模与推理方法,该技术还推动了新型可编程人工智能系统的发展。概率编程被广泛用于统计学和数据分析领域的问题建模与求解。诸如 STAN 和 BUGS [26] 等随机编程语言提供了一种形式化语言,能够以简洁、统一且可复用的方式描述广泛范围内的模型,并支持通用推理技术。Pyro 是一种基于 Python 编写并由 PyTorch 支持的概率编程语言,它支持灵活而富有表现力的深度概率建模,实现了深度学习与贝叶斯建模的统一 [27]。
当前主流讨论大致分为两类阵营。第一类聚焦于“传统”编程语言(如 Python),其努力集中在如何在程序代码中封装神经计算,例如 Pyro(以及一定程度上的 STAN)。另一极端则关注函数式编程和高阶编程语言的支持,以及如何为这类语言中的操作构造赋予指称语义——尤其是像“从正态分布中采样”这样的构造 [28]。对于程序代码而言,正确的采样策略(尤其涉及循环和高阶函数时),以及这些样本如何收敛以实现稳健推理,仍然是一个极具挑战性的问题 [24]。
在这一背景下,概率逻辑编程(PLP)[10,29–35] 成为一个引人注目的新方向。该概念涉及将概率融入逻辑程序的规则之中。(尽管本文主要聚焦于 PROBLOG,但历史上已有许多有趣提案尝试结合逻辑编程与概率,如上文所暗示;参见 [36]。)最初,其思路是为每个随机选择生成所有可能的证明,并确定这些“世界”的概率 [15]。然而,近期进展已催生出将程序编码为模型计数任务的策略 [37]。有趣的是,这一问题任务也可应用于其他多种表示形式,包括因子图、关系型贝叶斯网络和马尔可夫逻辑网络 [38]。所有这些共同构建了一个极其强大的管道,可提供精确推理能力。
我们认为,概率逻辑编程区别于其他概率编程技术的四个关键特征如下:
首先,概率逻辑编程具有扩展容忍性(elaboration tolerance),意味着它能轻松融入新知识,而无需修改整个程序。
其次,它允许纳入关系性知识,从而能够对随机对象及其属性进行建模。
第三,它能够处理约束条件,这使其适用于解决优化问题。
最后,它支持模块化的非概率计算,使得开发更大、更复杂的系统更为容易。
我们并非意在声称 PLP 能够解决经典概率程序(PPs)所面临的问题或表征挑战。在很大程度上,经典概率编程的关注点和应用场景与 PLP 并不重叠。虽然可以将一些简单的 PPs 示例重构为 PLPs,但显然需要更深入的研究。此外,尽管已有工作探索将逻辑编程与高阶编程相结合 [39],但在 PLP 框架下整合函数式构件和高阶编程仍需进一步研究。
让我们通过几个例子具体说明上述特征。回顾一下,声明式编程是一种编程范式,它表达计算的逻辑而不显式定义各步骤应如何执行。我们描述的是程序的“做什么”,而非“如何完成”。那么,在概率语境下,这种范式意味着什么?我们认为这意味着:(i) 决策的指令和逻辑是固定的,但 (ii) 概率本身(无论如何都是从数据中学习得到的)可以在无需修改逻辑指令的情况下进行更新;此外,(iii) 利用这些概率进行计算时无需用户输入。正如我们将展示的,像 PROBLOG 这样的语言(以及其他概率逻辑语言)能够轻松实现这一点。
假设有一种传染病正在人群中传播。若两人经常接触,且其中一人已被感染,则另一人被感染的概率为 0.6。目标是在给定一组初始感染者和人群内个体间联系图的前提下,预测疾病传播情况。我们可以使用以下程序:
![]()
该语句表明,随机选择的一个人有 0.1 的概率已被感染。两个随机选择的人之间有 0.1 的概率存在接触。最后,给定一个随机选择的感染者以及另一个与该感染者有接触的人,第二个人被感染的概率为 0.6。
显然,如果我们需要更新这些概率或将其中某些概率改为确定性值,逻辑规则本身不会受到影响。我们只需更新数值即可。例如,若要使传播过程变为确定性的,我们可以将上述第五行替换为:
事实上,麦卡锡(McCarthy)提出的“扩展容忍性”概念,被定义为一种形式化体系所具备的特性:它能方便地修改一组事实,以适应新现象或变化的环境。这意味着该形式化体系能够轻松融入新知识,而无需改动整个程序。他设想存在不同类型的扩展,其中最简单的一种是添加新的公式,他称之为“加法式扩展”。此外,第二种扩展类型是更改参数的取值。尽管他最终使用另一组示例探讨了这些概念,但不难看出,在非常具体的层面上,概率逻辑编程(PLPs)确实支持扩展容忍性。更新概率值,甚至将概率断言改为确定性断言,都可轻松实现,如下所示(示例改编自 [40,41]):
![]()
该程序现在还额外说明:易感人群感染疾病的可能性更高。
值得注意的是,此类语言可作为其他人工智能系统的接口,包括自然语言交互以及深度学习模型。例如,在文献 [42] 中,以下类型的问题可以被解析为 PROBLOG 程序:
2.1 你掷一枚公平的六面骰子两次。第一次掷出五、第二次掷出六的概率是多少?
此处,粗体文字显然代表一个概率模型,其余部分则是一个查询。相应地,文本将被解析并分词为如下形式的 PROBLOG 程序(包含一些用于概率和组合构造的附加语法,例如“有放回抽取”):
![]()
运行该程序即可返回问题的答案。
相反,在文献 [30,43] 中,逻辑推理被用来引导深度学习模型学习符合约束条件的概率分布。这些模型背后所依赖的是一种极其简单但普遍存在的计算任务——加权模型计数(weighted model counting)[44]。近年来,针对连续模型对该任务的扩展 [45] 已使基于逻辑的求解策略能够应用于一系列“非逻辑”(即经典)的概率编程语言 [46–48]。
HYPE
PROBLOG 旨在统一逻辑编程与概率规范,其含义是提供一种语言,既能指定概率分布,又能查询事件发生的概率。作为一个非常简单的例子,若要表达“物体 c 以某一概率位于桌子上”,以及“所有在桌子上的物体也都在房间内”,我们可以写作(自由变量默认为全称量化):
![]()
这句话表明,在时间点 t 移除物体 x 时,我们可以假定在 x 的后方存在一些物体——通常是一个这样的物体。这类程序可用于目标跟踪应用中,对被遮挡的物体进行推理。
在许多机器人应用 [2] 中,一个常见的设定是为动作和传感器定义带有误差分布的模型,例如高斯噪声模型。这些模型可以在 HYPE 中通过以下方式实例化:
![]()
第一条规则表明,当执行移动动作时,物体 x 的新位置是从一个正态分布中抽取的,该分布的均值为 x 当前位置加 1。第二条规则则说明,对 x 当前位置的观测会受到加性高斯噪声的影响。
作为一个自动规划系统,HYPE 实例化了一个马尔可夫决策过程(MDP)[49]。回顾可知,MDP 是由状态、动作、随机转移和奖励函数定义的,这些要素可以通过上述语法中的规则来实现,例如:
![]()
为了计算策略(即从状态和时间点映射到动作的函数),HYPE 结合了重要性采样(importance sampling)与 SLD 归结(SLD resolution),从而有效地弥合了高层符号化规范与编程模型中概率组件之间的鸿沟。HYPE 允许状态和动作既可以是离散的,也可以是连续的,从而构建出一个通用的规划系统。相关实证评估见文献 [9,51]。
总之,HYPE 继承了 PROBLOG 所展现的所有优势和建模能力。但如前所述,它并未提供专门的动作语言,或除用时间变量索引的常量外表示动作的便捷方式。而情况演算(situation calculus)则略有不同,它直接对动态世界进行建模,从而支持更灵活的语言来描述动作及其效果——下文将对此展开讨论。
ALLEGRO
GOLOG 语言已成功应用于涉及控制与规划的广泛领域 [16],其基础是一个简单的本体论:所有变化均源于命名的动作。它是一种建立在“情况演算”(situation calculus)之上的高层智能体编程语言 [12]——情况演算是带有(部分)二阶逻辑特性的一阶逻辑方言。初始状态描述了各属性的真值,而动作可以以非平凡且情境敏感的方式影响这些真值。特别地,GOLOG 是一种程序模型,其中执行动作是程序中最基本的指令,更复杂的迭代和循环构造则在此基础上定义。例如,一个用于清空包含未知数量积木的桌子的程序如下:
![]()
为了建模高斯误差模型,ALLEGRO 对具有不确定效果的动作给出了通用处理方式。一方面,动作的效果通过“后继状态公理”(successor state axioms)进行公理化,该公理整合了 Reiter 对框架问题(frame problem)的解决方案 [12]。因此,例如,使用移动动作改变物体位置可表达为:
![]()
这句话的意思是:如果执行了移动物体 x 的动作,那么它的位置(沿直线方向)会减少 y 个单位;而对于所有其他动作,其位置保持不变。为了处理不确定的效果,我们将区分智能体的意图与实际发生的结果。也就是说,令 move(x, y, z) 为一种新的动作类型,其中 y 是智能体期望实现的效果,z 是实际发生的结果。那么,后继状态公理可重写如下:
![]()
![]()
如上文所暗示的,作为对 GOLOG 的扩展,ALLEGRO 的语法旨在以简洁通用的方式表示完整或部分的计划与策略。此前的研究表明,GOLOG 程序能够控制规划搜索空间 [17],而近期工作则表明,概率动作程序是表示递归策略的一种更紧凑的方式。在程序终止时,ALLEGRO 程序可以用于检验目标被相信成立的(主观)概率。
例如,假设你希望让一个带有噪声传感器和执行器的机器人靠近一面墙。机器人会移动一段距离,但由于动作本身存在噪声,它需要反复感知以确保自己确实靠近了墙壁。这种“感知-行动”循环将重复执行,直到机器人以高概率确信自己已真正靠近墙壁为止。此类协议对应的 ALLEGRO 程序可能如下所示:
![]()
![]()
上述程序完整指定了行为,但同时它捕捉的是一个非常简单的例子。更复杂的问题场景可能涉及未指定的子程序(可能包含规划),如文献 [16] 所讨论;或者,部分指定的程序可用于定义和约束搜索空间,如文献 [17] 所示。
定性比较
在结束本文之前,简要比较这两种形式化方法的特性与属性是一个有趣的练习。当然,读者可能会认为,若能通过实证评估——例如,在一组特定领域内对两种形式化方法进行基准测试以比较其计算性能——这样的比较会更加丰富。尽管这在特定问题空间中是可行的(并值得在未来考虑),但正如下文将展示的,这两种语言并非完全可比。
5.1 静态建模
我们在此所指的“静态建模”,意为捕捉有限组随机变量上的概率分布。假设在一个命题语言中有若干原子命题(为简化起见),这些原子被赋予概率,并与非概率性的确定性子句(形式为 h ← b₁, ..., bₖ)结合使用。例如,以下是用 PROBLOG 编写的、基于 Pearl [56] 提出的“入室盗窃-地震-警报”贝叶斯网络示例的程序:
![]()
读者现在可以构建一组可能世界,以计算边缘概率。对于三个命题,原则上我们有八个可能世界。然而,在 PROBLOG 中如何解读这些原子和规则时存在一些需要注意的地方。我们赋予了概率的原子被称为“概率事实”(probabilistic facts),应与规则的头部区别对待。实际上,规则会与每个可能世界(仅由概率原子定义)结合使用,以判断规则头部是否可被推导出来。基于此,规则头部的成功概率即可被计算。
综合来看,我们有四个关于概率事实 b 和 e 的世界。这些世界的概率是通过将由 b 和 e 构成的文字的概率相乘而得到的,并且需理解任何命题 p 及其否定的概率之和必须等于 1。例如,在一个 b 为真而 e 为假的世界中,我们得到的概率是 0.1 × (1 - 0.2),即 0.08。依此类推,我们有:
世界 b ∧ ¬e,其概率为 0.08(如上所述);
世界 b ∧ e,其概率为 0.1 × 0.2 = 0.02;
世界 ¬b ∧ e,其概率为 (1 - 0.1) × 0.2 = 0.18;以及
最后,世界 ¬b ∧ ¬e,其概率为 (1 - 0.1) × (1 - 0.2) = 0.72。
现在,为了计算触发警报 a 的概率,我们考察每一个可能世界,并结合非概率性规则,查看 a 是否被蕴含。很容易看出,这仅在前三个世界中发生:在这里,要么入室盗窃为真,要么警报为真,因此立即可推出 a 成立。因此,触发警报的概率为 0.28。完整的语义处理请参见 [37]。
因此,逻辑程序的语义似乎特别适合于建模贝叶斯网络 [44]。相比之下,ALLEGRO 的语义基于一阶结构上的概率。因此,复制该网络所需的公式集并不完全相同,我们需要稍作调整。一方面,语义本身并未暗示某些原子不应具有概率——这在 PROBLOG 程序的语义中是隐含假设的。因此,例如,我们可以使用以下公式在 ALLEGRO 中表示该网络:
![]()
![]()
因此,在 ALLEGRO 中,由于存在三个命题,原则上我们确实有八个可能世界。然而,最后一个公式确保了“b 和 e 为假但 a 为真”的世界是不可能存在的。
现在,若将此与 PROBLOG 的四个可能世界进行对比,我们可以看到,对于计算 a 的概率而言,确实考虑的是 b 和 e 相同的真值设定(即前三个世界)。第四个世界 ¬b ∧ ¬e 不可能是 a 为真的世界,这一点已明确建立。然而,世界概率的计算方式有所不同,但最终得出的规范是等价的。例如,这些公式表明:所有 b 为真的世界总概率必须为 0.1。这本质上意味着上述第一和第二个世界(即 (1) 和 (2))的概率之和应为 0.1。同样,所有 e 为真的世界总概率必须为 0.2,因此第二和第三个世界(即 (2) 和 (3))的概率之和应为 0.2。通过求解这些约束条件,可以证明警报被触发的概率仍为 0.28。
乍看之下,公式在两种形式化方法之间需要如此映射似乎有些奇怪,但这并不令人意外。将 PROBLOG 程序翻译为概率命题理论 [37] 正是依赖于这类步骤来为命题世界分配概率——正如我们刚刚确立的,这需要考虑语言中的所有命题。
当然,期望建模语言能根据具体问题的需求提供合适的表达能力是完全合理的。显然,当用于刻画贝叶斯网络及其他相关类型的图模型时,PROBLOG 和 HYPE 比指定一阶公式上的概率要直接得多。对于后者,我们需要隐式地确定这些概率如何对应到贝叶斯网络或某种其他因子化表示 [57]。
然而,既然 PROBLOG 程序最终会被翻译成概率命题理论,人们可以设想,对于偏好图模型的用户而言,可能存在一种更自然的建模语言。然后,可以通过一个中间步骤将其翻译为 ALLEGRO 模型,以便将初始知识与丰富的动作理论结合使用。此外,有一种情况是,这两种形式化方法之间的静态知识库可能无需大量重写。考虑概率数据库 [58]:最简单的设置是元组独立概率数据库,其中每个命题被赋予一个独立的概率,并假设其与其他命题相互独立。在这种情况下,两种形式化方法的表示几乎是相同的,因为每个世界的概率本质上都是显式指定的:它由该世界中所有为真命题的概率乘积得到。
在一点上,这两种形式化方法存在深刻差异:逻辑程序允许使用归纳定义 [59]。例如,我们可以使用以下两个公式来捕捉图中路径的归纳定义:
![]()
这句话的意思是:每条边本身就是一个路径;如果节点 x 和 y 之间存在一条边,且从 y 到 z 存在一条路径,那么从 x 到 z 也存在一条路径。
ALLEGRO 基于情况演算(situation calculus),该框架允许包含某些二阶逻辑特征,例如对“情境”集合的归纳定义 [12]。然而,在实践中,归纳定义很少作为初始知识库的一部分被提供。(尽管文献中确实有一些相关研究 [60]。)在此方面,如果用户主要关注静态知识的推理,PROLOG 和 HYPE 可能显得更具吸引力。
5.2 观测与动作
我们此前已讨论过,这些语言确实允许对动态过程进行建模,但主要通过动态贝叶斯网络、隐马尔可夫模型、MDP、POMDP 及其他相关框架 [29,36] 来实现。这种建模通常通过为谓词引入时间参数,并在特定数量的时间步长内进行推理来达成。
然而,与情况演算(situation calculus)等动态语言相比,此类方法使这些语言的功能受到更多限制。在情况演算中,不仅可以定义持续性动作(其中时间为附加参数)[61],还能直接使用命名动作来刻画状态的动态变化。因此,它自然地适用于表达多种规划语言 [12]。情况演算还被扩展用于推理决策理论模型 [62] 以及 POMDP 的关系型扩展 [20]。其一阶逻辑特性也使其成为处理无界数量对象和无界时间序列的理想候选。例如,可以提出如下类型的投影查询:
— 执行动作 a₁ 到 aₖ 后,φ 是否为真? — 在整个序列的每一步中 φ 是否都为真?或者反过来,在序列开始到结束之间的任意时刻,φ 是否曾变为假? — 从当前状态开始执行的任何序列,φ 是否都将保持为真?
因此,人们不仅能在该语言中编写程序,还可以直接在语言内部验证这些程序的属性 [63]。
此外值得注意的是,动作类型本身可能比动态贝叶斯网络等形式化方法所能提供的功能更强大 [64]。例如,在先前使用的关于警报触发的贝叶斯网络背景下,我们可以编写能够以任意方式改变节点间边或添加新节点的动作。我们还可以推理动作的后果及其间接影响 [65]。
5.3 综合(合成)与策略执行
正如 HYPE 的介绍所明确指出的,该语言主要用于综合(synthesizing)一个策略。也就是说,它指定动作、效果及噪声模型,而该形式化体系的目的正是从这些规范中计算出一个策略。我们可以从两个方面将此与 ALLEGRO 进行对比:首先,基于信念的程序本身就是策略。因此,执行该程序等同于在适当表征前提下,执行一个 POMDP 策略 [66]。当然,这样的策略同样也可以被综合出来。目前已有大量关于归纳递归式程序结构的研究工作 [67]。因此,情况演算提供了一个全面的框架,可用于推理不同类型的策略并验证其属性。
5.4 不完整与部分规范
或许上述所有不同维度本质上都在说明表达能力上的差异。虽然 PROBLOG 和 HYPE 主要提供的是用于指定概率模型的框架,情况演算(situation calculus)则提供了一种更通用的语言,用于推理概率知识及其动态变化。例如,它允许表达多个信念分布、完全或部分地指定程序,并将概率知识与非概率性的、不完整的知识相结合(这进而要求使用多个分布)[68]。
所有这些意味着,情况演算语言的表达能力要强得多,因为它无法被简化为命题模型。回顾可知,PROBLOG 将其推理归约为加权命题公式,而情况演算则对应于模态一阶逻辑 [69]。因此,由于这种强大的表达能力,可以证明在完整语言中验证属性是高度不可判定的 [63]。对于 ALLEGRO 而言,验证属性相当于检查可能无限多个 POMDP 的性质。
当然,无需全盘接受这种完整的表达能力。根据具体应用需求,我们可以选择使用其某个片段,或许是一个与 PROBLOG 和 HYPE 非常相似的片段。这也是知识表示学界长期以来一直强调的观点 [12,16]:有时,拥有一个更具表达力的语言来研究所关注问题的特性是有益的;随后,我们会选择一个受限的片段来构建当前领域的实际应用。
结论
自动规划通常部署于具体应用情境中,而在高度随机和不确定的领域,规划模型可能源于复杂的机器学习与推理流水线,或基于具有未知因素的非平凡状态空间定义。本文介绍了两种概率编程系统,旨在实现此类流水线。事实上,将自动规划与概率编程相结合,近年来正受到广泛关注,例如 [14]。这些语言是通用的,其一阶表达能力不仅能够简洁地编码领域知识,还能获得计算上的优势。
使用概率编程和随机规范时的一个关键关注点在于,大多数系统通过蒙特卡洛采样进行推理。众所周知,此类方法只能提供渐近保证,且处理低概率观测值可能颇具挑战性。在这方面,近期已出现一些逻辑方法,能够在混合离散-连续概率空间中进行推理,并对计算结果提供紧致的边界约束 [45,46,70]。由于 HYPE、ALLEGRO 及许多类似系统均以概率推理作为核心计算基础,因此问题在于:上述方法能否为随机领域的稳健规划与编程框架提供支持?
此外,探索与传统概率编程语言之间更深层次的联系也可能带来额外价值。例如,在传统语言中进行学习的研究已取得相当多成果 [71]。同时,深度学习技术也可作为计算原语集成到此类语言中,如 Pyro 所示。值得探讨的是,这些理念是否能被融入 HYPE 和 ALLEGRO 中,从而统一一阶概率推理与学习。
原文链接:https://royalsocietypublishing.org/doi/pdf/10.1098/rsos.230785
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.