Skip to content

因子图:命题网络的计算表示

Derivation chain position: Layer 3 — Computational Methods [computational boundary] → [this document] → Belief Propagation

本文档定义因子图作为命题网络的计算表示。 因子图不是 Jaynes 理论的一部分——它是一种工程选择,用于高效近似推理。 依赖 03-propositional-operators.md 的算子定义。

Status: Target design

1. 动机:从精确推理到可计算近似

Jaynes 框架(01-plausible-reasoning.md)给出了精确的推理规则。对于 n 个二值命题,精确推理要求:

P(Aᵢ | evidence, I) = ∑_{x∖ᵢ} P(x₁, ..., xₙ | evidence, I)

即对所有其他变量求和以获得边缘后验。这需要遍历 2ⁿ 种赋值——对任何实际规模的知识网络都不可计算。

02-maxent-grounding.md 告诉我们,当知识被写成局部约束和局部特征时,MaxEnt / Min-KL 联合分布会具有乘积结构:联合概率可表示为局部因子的乘积。这给出了稀疏的局部表示,使局部消息传递成为可能;它不自动保证精确推理总是容易,复杂度仍取决于图结构和 treewidth。

因子图正是利用这种乘积结构的计算表示。 它是一种二部图,将联合分布分解为局部势函数的乘积,使得消息传递算法(见 07-belief-propagation.md)可以高效地近似计算边缘后验。

需要强调的是:

  • 因子图不是 Jaynes 理论的一部分。 Jaynes 的三条规则(加法、乘法、MaxEnt)定义了正确的联合分布,但没有指定如何计算它。
  • 因子图是一种工程选择。 它是诸多可能的计算方案之一(其他方案包括蒙特卡罗采样、变分推断等)。我们选择因子图是因为它自然地表达命题网络的局部约束结构。
  • 本文档只定义表示。 在因子图上执行的推理算法(Belief Propagation)在 07-belief-propagation.md 中定义。

2. 因子图形式

2.1 定义

因子图是一种二部图(bipartite graph),包含两种节点:

  • 变量节点(variable node):代表命题。每个变量节点对应一个二值命题,状态空间为 {0, 1},携带先验函数 φ(x) = [1−π, π],其中 π 是命题为真的先验概率。
  • 因子节点(factor node):代表约束。每个因子节点连接一组变量子集,定义一个势函数 ψ(x_S),其中 S 是该因子连接的变量集合。
变量节点 = 命题(携带信念值)
  prior  → 初始合理性 π ∈ [0,1]
  belief → 由推理引擎计算的后验合理性(因子图本身不定义计算方式)

因子节点 = 约束(连接多个变量的超边)
  连接一组变量子集 S
  势函数 ψ(x_S) 由约束的语义确定

变量节点只与因子节点相连,因子节点只与变量节点相连——这是二部图的定义。

2.2 联合分布分解

因子图表示的联合分布为:

P(x₁, ..., xₙ | I) ∝ ∏ⱼ φⱼ(xⱼ) · ∏ₐ ψₐ(x_Sₐ)

其中:

  • φⱼ(xⱼ) 是变量 j 的先验函数(一元因子):φⱼ(1) = πⱼ, φⱼ(0) = 1−πⱼ
  • ψₐ(x_Sₐ) 是因子 a 在其连接变量子集 Sₐ 上的势函数
  • ∝ 表示正比于(归一化常数由全局归一化给出)

对于一组已选定的局部对象 φ, ψ,这个分解精确给出了它们所定义的联合分布——没有信息损失。 乘积结构是 MaxEnt 局部约束的直接后果(见 02-maxent-grounding.md)。因子图只是换了一种表示方式,使得消息传递算法成为可能。

2.3 超图结构

命题网络中的约束天然涉及多个变量的联合状态。例如:

  • 合取 ∧(A₁, ..., Aₖ, M) 涉及 k+1 个变量
  • 多前提推理 [A₁∧...∧Aₖ] ↝ C 涉及 k+2 个变量(含中间变量 M)

普通图的边只连接两个节点,无法表达三个及以上变量的联合约束。因子节点就是超边(hyperedge)——它同时连接所有参与变量,势函数定义在它们的联合状态空间上。

因子图的二部形式是超图的标准表示方法:每个超边对应一个因子节点,超边的端点是它连接的变量节点。

3. 算子到势函数的映射

03-propositional-operators.md 定义了命题算子的概率语义。本节将每种算子映射为因子图中的势函数。

核心原则:确定性算子的势函数由真值表唯一确定。 一致状态(逻辑上允许的赋值)获得 ψ=1,不一致状态(逻辑上禁止的赋值)获得 ψ=0。因子层面没有自由参数。系统中唯一的自由参数是节点先验 π 和软蕴含的 (p₁, p₂)。

3.1 否定 ¬

否定是一个二元因子,连接变量 A 和 ¬A,约束两者真值互补(见 03-propositional-operators.md §1 中 ¬ 的定义)。

A ¬A ψ
0 1 1
1 0 1
0 0 0
1 1 0

确定性因子:ψ=1 当且仅当 A 和 ¬A 真值互补。

在因子图中,否定通过引入辅助变量节点 ¬A 来表达。¬A 是一个独立的变量节点,否定因子约束 A 和 ¬A 始终互补。

3.2 合取 ∧

合取因子连接 k 个前提变量 A₁, ..., Aₖ 和一个结果变量 M,约束 M 当且仅当所有前提为真时为真(见 03-propositional-operators.md §1 中 ∧ 的定义)。

A₁, ..., Aₖ M ψ
全部为 1 1 1
全部为 1 0 0
任何其他 1 0
任何其他 0 1

确定性多元因子:ψ=1 当且仅当 M 的值与合取语义一致,即 M = (A₁ ∧ ... ∧ Aₖ)。

当 k=2 时退化为二元合取:ψ(1,1,1)=1,其余 M=1 的行均为 0。

3.3 严格蕴含 →

严格蕴含是二元因子,连接前提 A 和结论 B,编码硬约束 P(A∧¬B|I)=0(见 03-propositional-operators.md §2.1)。

A B ψ
0 0 1
0 1 1
1 0 0
1 1 1

确定性因子:禁止 A=1, B=0(前提成立但结论不成立)。A=0 时因子不约束 B("前提不成立时不发表意见")。

注意蕴含因子是有方向的:A→B 和 B→A 是不同的约束。

3.4 等价 ↔

等价是二元因子,约束 A 和 B 同真同假(见 03-propositional-operators.md §2.3)。

A B ψ
0 0 1
0 1 0
1 0 0
1 1 1

确定性因子:ψ=1 当且仅当 A=B。

还原关系:在 Jaynes 理论层面,A↔B 还原为两个蕴含约束 A→B 和 B→A。在因子图表示中,可以用单个等价因子直接编码(联合势等于两个蕴含势的乘积),也可以展开为两个蕴含因子。两种表示在数学上等价。

3.5 矛盾 ⊗

矛盾是二元因子,约束 A 和 B 不能同时为真(见 03-propositional-operators.md §2.4)。

A B ψ
0 0 1
0 1 1
1 0 1
1 1 0

确定性因子:唯一禁止的状态是 A=1, B=1。

3.6 互补 ⊕

互补是二元因子,约束 A 和 B 恰好一个为真(见 03-propositional-operators.md §2.5)。

A B ψ
0 0 0
0 1 1
1 0 1
1 1 0

确定性因子:ψ=1 当且仅当 A≠B。互补 = 矛盾 + 析取,等价于否定关系。

3.7 软蕴含 ↝

软蕴含是二元因子,连接 A 和 B,带参数 (p₁, p₂)(见 03-propositional-operators.md §4)。

A B ψ
1 1 p₁
1 0 1−p₁
0 0 p₂
0 1 1−p₂

这是本系统中唯一带连续参数的因子。所有其他因子都是确定性的(ψ ∈ {0, 1})。

这里必须分清两层语义:

  • 03-propositional-operators.md 中, 是精确 Jaynes 语义下的粗粒度摘要算子(p₁,p₂) 表示某个未展开精确子结构在接口 (A,B) 上呈现出来的有效条件统计。
  • 到了本计算层,我们需要把这个摘要算子编译成一个可参与乘积联合分布的局部对象;这里选择的实现就是一个 CPT-shaped local potential

也就是说,因子图中的 ↝ 因子不是在重新定义 的理论含义,而是在实现它。

参数含义:

  • p₁ = 局部前向支持统计:在孤立/两端口极限下等于 P_eff(B=1|A=1)
  • p₂ = 局部必要性 / 缺席判别度:在孤立/两端口极限下等于 P_eff(B=0|A=0)

支持性约束:

p₁ + p₂ > 1

这等价于:

P(B=1|A=1) > P(B=1|A=0)

也就是 A 的出现会提高 B 的概率。因子图层沿用 03-propositional-operators.md 中对 ↝ 的定义:↝ 只编码正支持关系;若 A 会削弱 B,应改写为 A ↝ ¬B 或使用更细的严格结构展开。

编译原则:按行归一化。

Σ_B ψ↝(A,B) = 1

因此这个局部因子在形式上长得像一个条件概率表。这样做的目的是保留一个重要的极限一致性:

  • 当这条 ↝ 因子孤立存在时,ψ↝(A,B) 就严格等于一个二值条件通道;
  • 当一个更细的精确子图被压缩成只暴露 (A,B) 两个接口时,ψ↝ 可以精确承载该子图的有效条件统计。

但一旦把它放回更大的粗因子图中,与其他局部因子共同参与

P(x) ∝ ∏ φ · ∏ ψ

那么 (p₁,p₂) 就不应再被机械理解为整张图上的全局 P(B|A);此时它们是局部支持参数,而真实的后验条件概率由整个联合分布共同决定。

与旧单参数模型的关系: 当 p₂ = 0.5 时,ψ(0,0) = ψ(0,1) = 0.5,即 A 为假时因子对 B 提供均匀(无信息)权重。这等价于"前提为假时不发表意见"的行为——恰好是当前粗推理算子的语义。单参数形式中的 p 对应此处的 p₁,而 p₂ 被隐式固定为 0.5(MaxEnt 无信息值)。

3.8 多前提 ∧ + ↝

多前提推理"A₁, ..., Aₖ 共同支持 C"在因子图中分解为两个因子的复合结构(见 03-propositional-operators.md §5):

A₁ ─┐
A₂ ─┤  ∧(确定性因子,§3.2)
 ⋮  ├───→ M ───↝──→ C(参数化因子,§3.7)
Aₖ ─┘
  1. 合取因子(§3.2):连接 A₁, ..., Aₖ 和辅助变量 M。M=1 当且仅当所有前提为真。确定性,无参数。
  2. 软蕴含因子(§3.7):连接 M 和 C。参数 (p₁, p₂) 编码推理的不确定性。

这个分解清晰地分离了两种关注:前提如何组合(∧,确定性)和前提整体如何支持结论(↝,参数化)。在之前的文档中,这种模式被称为 "noisy-AND"——现在显式分解为两个独立的因子,消除了命名上的歧义。

4. 与精确 Jaynes 推理的关系

对于一组已经选定的局部因子 φ, ψ,因子图编码的联合分布与该局部乘积分解所定义的联合分布完全相同——没有信息损失。

具体地说:

  1. 03-propositional-operators.md 在精确 Jaynes 语义中定义了每种算子的概率含义(尤其是 ↝ 作为 coarse summary 的意义)。
  2. 02-maxent-grounding.md 说明了在局部约束下,posterior 可以写成乘积形式。
  3. 本文档把这些局部对象编译成因子图中的 φψ,从而得到可计算的乘积分解。

三者描述的是同一个联合分布的三种视角:

视角 描述 所在文档
概率语义 算子在精确 Jaynes 框架中的意义 03-propositional-operators.md
分布形式 MaxEnt/Min-KL 给出的联合分布形式 02-maxent-grounding.md
计算表示 选定的局部对象如何编译成因子图 本文档

表示的改变不引入近似——近似发生在推理算法层面。在因子图上执行的消息传递算法(Belief Propagation, 见 07-belief-propagation.md)在含环图上是近似的,但因子图本身精确地保留了这套局部乘积分解所定义的联合分布。需要注意的是,↝ 的 (p₁,p₂) 在这里已经是编译后的局部支持参数,而不是对整张粗图最终 P(B|A) 的直接声明。

4.1 什么样的 potential 才符合 Jaynes

并不是任何局部打分函数都自动符合 Jaynes。一个因子图层的 potential 家族要与上游理论一致,至少需要满足以下条件:

  1. 非负性:
ψ_a(x_{S_a}) ≥ 0

这样 ∏ φ · ∏ ψ 才能定义一个合法的未归一化密度。

  1. 可归一化性:
0 < Z = Σ_x ∏ φ · ∏ ψ < ∞

这样全局联合分布

P(x|I) = (1/Z) ∏ φ · ∏ ψ

才存在。

  1. 语义来源明确:
    每个 ψ_a 要么来自严格逻辑约束的真值表,要么来自对某个 coarse summary 的显式编译规则。局部 potential 不能是脱离理论语义的任意权重。

  2. 证据以乘法方式进入:
    新的观测不是通过修改 BP 规则进入,而是通过额外的 evidence factor 进入联合分布:

P(x | E, I) ∝ P(x | I) · λ_E(x)

其中:

  • 硬证据可写成 λ_E(x) = 1[x ⊨ E]
  • 软证据可写成相应的 likelihood factor

这正是 Jaynes 条件化 / Bayes 更新在因子图层的实现。

  1. MaxEnt / Min-KL 发生在上游:
    如果新信息改变的是约束集合本身,而不只是一次观测,那么新的 posterior 应由 02-maxent-grounding.md 的 MaxEnt / Min-KL 原则重新确定;因子图和 BP 只负责表示和近似边缘化这个 posterior,不替代上游选择原则。

在这些条件下,因子图层的 potential 并没有背离 Jaynes;它只是把同一个 posterior 换成了局部乘积分解的计算表示。

5. 从命题网络到因子图的构造

给定一个命题网络(由命题和算子构成),以下过程将其转换为因子图:

步骤 1:命题 → 变量节点

每个命题 Aᵢ 创建一个变量节点,先验函数 φᵢ(x) = [1−πᵢ, πᵢ]

步骤 2:确定性约束 → 确定性因子节点

对每个确定性算子(→, ↔, ⊗, ⊕),创建一个因子节点,势函数由 §3 中对应的真值表确定。连接该因子节点到参与的变量节点。

如需辅助变量(如否定关系引入的 ¬A),同时创建辅助变量节点和否定因子。

步骤 3:软蕴含 → 参数化因子节点

对每个软蕴含 A ↝ B (p₁, p₂),创建一个因子节点,势函数按 §3.7 的参数化定义。

步骤 4:多前提合取 → 合取因子节点

对每个多前提推理,引入辅助变量 M,创建合取因子(连接前提和 M)和蕴含/软蕴含因子(连接 M 和结论)。

结果

构造完成后的因子图满足:

  • 每个命题恰好对应一个变量节点
  • 每个约束恰好对应一个因子节点(或按显式编译规则分解为多个因子节点)
  • 在给定这套编译约定后,因子图的联合分布 ∏φ·∏ψ 精确等于该编译所定义的联合分布

构造过程是确定性的——同一个命题网络总是产生同一个因子图(模辅助变量的命名)。


交叉引用

  • 上游(理论层):
  • 01-plausible-reasoning.md — Cox 定理、概率规则
  • 02-maxent-grounding.md — MaxEnt/Min-KL、乘积分解
  • 03-propositional-operators.md — 算子的概率语义定义(本文档的势函数直接映射自此)
  • 下游(计算层):
  • 07-belief-propagation.md — 因子图上的消息传递算法,将势函数转化为信念值的计算过程
  • 工程层:
  • docs/foundations/gaia-ir/02-gaia-ir.md — 因子图在工程实现中的节点 schema、因子类型和序列化格式。本文档定义计算语义,Gaia IR 设计文档定义数据合约