前文,我们已经写了两种演绎推理:自然演绎推理和归结演绎推理。
自然演绎推理:自然演绎推理——基于王永庆著《人工智能原理与方法》的深度解析-CSDN博客
归结演绎推理:归结演绎推理——基于王永庆著《人工智能原理与方法》的深度解析-CSDN博客
自然演绎推理、归结演绎推理、与 / 或形演绎推理均为基于经典逻辑的推理方法,旨在从给定前提推出结论,但它们在推理思路、逻辑形式和应用场景上存在差异。
相同点: 三者都是经典逻辑推理方法,都以已知前提为基础,遵循逻辑规则推导结论,目的都是实现逻辑证明或问题求解,且都在人工智能的知识推理领域有着重要应用,为专家系统、定理证明等提供了理论和方法支持。
不同点:
(1)自然演绎推理是从一组已知为真的事实出发,依据经典逻辑的基本推理规则(如 P 规则、T 规则、假言推理、拒取式推理等),按逻辑演绎的方式逐步推出结论,更接近人类自然的推理思维过程;
(2)归结演绎推理是将待证明的问题转化为子句集,利用海伯伦理论构建理论基础,通过鲁宾逊归结原理不断消解子句,以推出空子句来证明原命题的成立,侧重于通过逻辑公式的标准化和归结操作来实现推理;
(3)与 / 或形演绎推理则是利用与 / 或图的形式,正向演绎从事实出发应用 B 规则扩展与 / 或图,逆向演绎从目标出发应用 A 规则反向扩展,双向演绎结合两者,通过图的扩展和节点匹配来完成推理,强调推理过程的图形化表示和对不同推理方向的支持 。
一、与/或形正向演绎推理
(一)基本思想与定义
与 / 或形正向演绎推理是一种基于与 / 或图(And/Or Graph)的推理方法,其核心思想是从已知事实出发,通过规则将事实逐步分解为子目标的合取或析取,最终推导出目标公式。王永庆指出,该方法适用于由事实驱动的推理场景,核心是将事实和规则表示为与 / 或结构,通过规则的匹配和应用扩展推理图,直至目标节点出现。
核心概念:
(1)与节点(And Node):表示子目标的合取(如 A ∧ B),需所有子节点成立。
(2)或节点(Or Node):表示子目标的析取(如 A ∨ B),任一子节点成立即可。
(3)B 规则:形如 B → W 的规则,其中 B 是单文字,W 是与 / 或形公式,用于扩展事实的与 / 或图。
(二)表示形式与推理过程
1. 事实的与 / 或图表示
事实通常表示为无蕴含词的与 / 或形公式,转化步骤:
(1)消去蕴含词和等价词(→, ↔)。
(2)否定词仅作用于原子公式(德摩根定律)。
(3)变量标准化,避免量词约束冲突。
示例:事实 (P ∨ (Q ∧ R)) → S 转化为 ¬ P ∧ (¬ Q ∨ ¬ R) ∨ S,对应的与 / 或图如下:
S (或节点)
/ | \
/ | \
/ | \
P Q R
(与节点,需Q和R同时成立)
2. 规则的应用(B 规则)
B 规则 B → W 用于扩展与 / 或图:
若事实图中存在文字 B,则将 W 作为子节点连接到 B。
示例:规则 P → (Q ∧ R) 应用于事实中的 P,生成 Q 和 R 作为与节点。
3. 目标的表示与匹配
目标公式需表示为子句集,推理过程中检查与 / 或图的叶节点是否包含目标子句的文字。
(三)算法描述
1. 初始化与 / 或图
将事实转化为与 / 或图,根节点为事实公式的顶级析取 / 合取节点。
2. 规则匹配与扩展
python代码示例:
def forward_deduction(facts, rules, goal_clauses): # 步骤1:构建初始与/或图 graph = build_and_or_graph(facts) # 步骤2:应用B规则扩展图 for rule in rules: for node in graph.nodes: if node.literal == rule.antecedent: expand_graph(node, rule.consequent) # 扩展为与/或子节点 # 步骤3:检查目标匹配 if check_goal_matching(graph, goal_clauses): return graph else: return None
3. 目标匹配算法
遍历与 / 或图的叶节点,若存在目标子句的所有文字(通过合一),则目标成立。
(四)应用与示例
1. 示例:数学定理证明(正向推理)
问题:已知 A ∨ (B ∧ C),规则 B → D,C → E,目标 D ∨ E。
事实与 / 或图:
A (或节点)
/ \
/ \
B C (与节点)
应用 B 规则:
B → D 扩展 B 为 D。
C → E 扩展 C 为 E。
目标匹配:扩展后的图叶节点为 A, D, E,包含目标 D ∨ E,推理成功。
2. 与 / 或图的性质
(1)完备性:若目标可从事实推出,正向演绎推理必能找到路径。
(2)局限性:目标公式需为子句形式,事实需为无蕴含的与 / 或形。
二、与 / 或形逆向演绎推理
(一)基本思想与定义
逆向演绎推理从目标公式出发,通过A 规则(形如 W → A,其中 A 是单文字,W 是与 / 或形公式)反推支持目标的事实,适用于目标驱动的推理场景。王永庆强调,逆向推理的核心是将目标表示为与 / 或图,通过规则反向匹配事实子句。
核心概念:
(1)A 规则:用于将目标分解为子目标,如 W → A 表示若 W 成立,则 A 成立。
(2)事实表示:事实需为单文字或合取式,作为推理的终止条件。
(二)表示形式与推理过程
1. 目标的与 / 或图表示
目标公式转化为与 / 或图的步骤与正向类似,但方向相反:目标 D ∨ E 表示为或节点,子节点 D 和 E。
2. 规则的应用(A 规则)
A 规则 W → A 用于扩展目标图:
若目标图中存在文字 A,则将 W 作为父节点,分解为 W 的与 / 或结构。
3. 事实的匹配
事实需为单文字(如 B, C),当目标图的叶节点匹配事实时,推理终止。
(三)算法描述
1. 目标与 / 或图构建
python代码示例:
def backward_deduction(goal, rules, facts): # 步骤1:构建目标与/或图 graph = build_goal_and_or_graph(goal) # 步骤2:应用A规则反向扩展 for rule in rules: for node in graph.nodes: if node.literal == rule.consequent: expand_goal_graph(node, rule.antecedent) # 反向扩展父节点 # 步骤3:检查事实匹配 if check_fact_matching(graph, facts): return graph else: return None
2. 事实匹配算法
遍历目标图的叶节点,若与事实中的单文字匹配(通过合一),则事实支持目标。
(四)应用与示例
1. 示例:故障诊断(逆向推理)
问题:目标 “系统故障 F”,规则 (A ∧ B) → F,C → A,事实 B, C。
目标与 / 或图:
F
|
A (与节点)
/ \
B C
应用 A 规则:C → A 扩展 A 的子节点 C。
事实匹配:叶节点 B 和 C 匹配事实,推理成功。
2. 逆向推理的特性
(1)目标导向性:直接针对目标分解,避免无效搜索。
(2)事实约束:事实需为单文字,限制了复杂事实的表示。
三、与 / 或形双向演绎推理
双向演绎则是结合正向和逆向,同时从事实和目标出发,直到两者的与 / 或图相交。说明如何结合两者的规则,以及如何判断相交条件,示例要体现双向推理的协同过程。
(一)基本思想与定义
双向演绎推理结合正向和逆向推理,同时从事实和目标出发,通过正向扩展事实图、逆向扩展目标图,直至两者的与 / 或图相交(即事实图的叶节点与目标图的叶节点匹配)。王永庆指出,该方法适用于复杂问题,通过双向搜索减少推理空间。
(二)表示形式与推理过程
1. 双向图构建
(1)正向图:事实 + B规则,自底向上扩展。
(2)逆向图:目标 + A规则,自顶向下扩展。
2. 相交条件
事实图中的某个节点与目标图中的某个节点通过合一匹配,且路径连通。
(三)算法描述
python代码示例:
def bidirectional_deduction(facts, b_rules, goal, a_rules): forward_graph = build_and_or_graph(facts) backward_graph = build_goal_and_or_graph(goal) while True: # 正向扩展 for rule in b_rules: expand_forward_graph(forward_graph, rule) # 逆向扩展 for rule in a_rules: expand_backward_graph(backward_graph, rule) # 检查相交 intersection = find_intersection(forward_graph, backward_graph) if intersection: return merge_graphs(forward_graph, backward_graph, intersection) if no_more_expansion(forward_graph, backward_graph): return None
(四)应用与示例
1. 示例:自然语言理解(双向推理)
事实:“猫追老鼠”(表示为 Chase(Cat, Mouse))
目标:“存在动物捕食”(表示为 ∃x, y Predate(x, y))
规则:
正向 B 规则:Chase(x, y) → Predate(x, y)
逆向 A 规则:Predate(x, y) → Chase(x, y)
(1)正向扩展:事实图中 Chase(Cat, Mouse) 应用 B 规则,生成 Predate(Cat, Mouse)。
(2)逆向扩展:目标图中 Predate(x, y) 应用 A 规则,反推 Chase(x, y)。
(3)相交匹配:正向的 Predate(Cat, Mouse) 与目标的 Predate(x, y) 合一,推理成功。
2. 双向推理的挑战
(1)复杂度:需同步维护两个图,计算相交节点。
(2)合一效率:跨图的节点匹配需要高效的合一算法。
四、三种推理方法对比
方法 | 驱动方向 | 规则类型 | 事实表示 | 目标表示 | 适用场景 |
正向演绎 | 事实驱动 | B 规则 | 与 / 或形公式 | 子句集 | 数据丰富的场景 |
逆向演绎 | 目标驱动 | A 规则 | 单文字 / 合取式 | 与 / 或形公式 | 目标明确的场景 |
双向演绎 | 双向驱动 | B+A 规则 | 与 / 或形公式 | 与 / 或形公式 | 复杂问题求解 |
五、与 / 或形推理的数学基础与应用边界
(一)数学基础
(1)与 / 或图的逻辑等价:事实与 / 或图等价于析取范式,目标与 / 或图等价于合取范式。
(2)规则的逻辑含义:B 规则对应蕴含式 B → W,A 规则对应逆蕴含式 W → A。
(二)应用边界
(1)事实限制:正向推理要求事实为无蕴含的与/或形,逆向推理要求事实为单文字。
(2)目标形式:正向目标需为子句,逆向目标需为与 / 或形。
(3)合一要求:谓词逻辑推理需处理变量合一,增加计算复杂度。
六、总结与前沿发展
王永庆在《人工智能原理与方法》中提出的与 / 或形演绎推理体系,通过与 / 或图的结构化表示,实现了事实与目标的双向推理。正向推理适用于数据驱动场景,逆向推理适合目标导向问题,双向推理则在复杂场景中平衡效率。
未来发展方向:
(1)图神经网络融合:用 GNN 优化与 / 或图的扩展策略,提升推理效率。
(2)不确定性处理:将模糊逻辑引入与 / 或图,处理不精确知识。
(3)跨模态推理:结合视觉与语言的与 / 或图,实现多模态问题求解。
通过示例与算法的深度解析,读者可掌握与 / 或形推理的核心机制和应用方法。在实际问题中,需根据数据特征和目标形式选择合适的推理方向,并结合规则优化策略提升效率。与 / 或形推理的结构化特性使其在专家系统、自动规划等领域具有独特优势,是符号推理的重要组成部分。