18元序干预语义与反事实推演

元序 WorldScript 干预语义与反事实推演

将元序的因果机制从「观察性规则匹配」推进到「干预性因果建模」,完整定义 do-算子、因果图、反事实查询的形式化语义。
本文档是《14形式化语义》第八章的扩展与深化,将干预语义从「M3 规划占位」推进为完整理论。
前置阅读:《14形式化语义》《04元序规则》《16验证与确认体系》。


一、为什么需要干预语义

1.1 观察性因果的局限

元序当前的 When 规则是观察性的:

When 环境.温度 < 目标温度:
    提升 加热器.功率 +0.1

这条规则的语义是「当观察到温度低于目标时,触发功率提升」。它回答的是:在当前状态下,哪些规则的条件被满足?

但这不是真正的因果。真正的因果问题是:

  • 干预问题:如果我强制把温度设为 0.5(而不是等它自然变化),系统会怎样?
  • 反事实问题:如果刚才没有触发加热规则,温度现在会是多少?
  • 归因问题:温度上升了 0.2,其中多少归因于加热器功率,多少归因于自然散热?

观察性规则无法区分「相关」和「因果」。两个状态同时变化,可能是因果关系,也可能是共同原因的结果(混杂)。

1.2 Pearl 的结构因果模型

Judea Pearl 的因果关系阶梯(Causal Hierarchy)分三层:

层级 名称 典型问题 元序对应
L1 关联(Association) X 变化时 Y 如何变化? 当前 When 规则
L2 干预(Intervention) 如果强制 X=x,Y 会怎样? 本文档定义的 do
L3 反事实(Counterfactual) 如果当时 X=x,结果会不同吗? 本文档定义的反事实查询

元序当前处于 L1。本文档将其推进到 L2 和 L3。

1.3 干预语义与元序公理的关系

公理 与干预语义的关系
A1 容错存续 干预不崩溃系统,干预后偏差被观测和收敛
A2 因果涌现 干预切断入边,剩余因果链仍按涌现规则执行
A3 尺度嵌套 干预可施加在任意层级域,效果跨层级传播
A4 自演化 干预可作为演化的实验手段(影子验证本质是干预)
A5 状态连续 干预值是连续的,干预后状态平滑过渡

二、因果图的形式化

2.1 因果图定义

定义 2.1(因果图):元序程序 P 的因果图是一个有向无环图(DAG):

G_P = (V, E)

其中:

  • V 是节点集,每个节点是一个状态维度 状态场.字段
  • E 是有向边集,边 X → Y 表示 X 是 Y 的直接原因

边的来源:

  1. When 规则:规则条件中的状态访问 → 规则动作修改的状态
  2. Link 联动:源状态 → 目标状态(聚合或约束)
  3. Track 预判:被跟踪状态 → 预判动作修改的状态
  4. Evolve 演化:偏差源 → 被调整的参数

定义 2.2(因果路径):从 X 到 Y 的因果路径是因果图中从 X 到 Y 的有向路径。

path(X, Y) = [X = v₀, v₁, ..., vₙ = Y]  其中 (vᵢ, vᵢ₊₁) ∈ E

定义 2.3(直接原因集):Y 的直接原因集是所有指向 Y 的边的起点:

PA(Y) = { X | (X → Y) ∈ E }

2.2 因果图的构建

元序程序加载后,运行时自动构建因果图:

// 示例程序
State 环境 [温度, 目标温度]
State 加热器 [功率]

When 环境.温度 < 环境.目标温度:
    提升 加热器.功率 +0.1

When 加热器.功率 > 0.3:
    提升 环境.温度 +0.03

对应的因果图:

环境.目标温度 ──┐
               ▼
          环境.温度 ◄──── 加热器.功率
               │              ▲
               └──────────────┘

注意:环境.温度 → 加热器.功率(第一条规则)和 加热器.功率 → 环境.温度(第二条规则)形成反馈回路。因果图严格来说是有向图(允许环),而非严格 DAG。反馈回路是元序的核心特性。

2.3 因果图的层级标注

每个节点携带层级域标注(微/中/宏),边可跨层级:

微域.单车.车速 ──聚合→ 中域.路段.平均车速 ──约束→ 宏域.城市.拥堵指数

跨层级边的干预效果会自动沿层级传播。


三、do-算子的形式化语义

3.1 干预操作的定义

定义 3.1(do-算子):干预 do(X = x) 表示强制将状态维度 X 设为值 x,并切断所有指向 X 的因果边(X 的入边被冻结,X 不再受其原因影响)。

do(X = x, σ, G) = (σ[X ← x], G[X 的入边被移除])

其中:

  • σ[X ← x]:状态 σ 中 X 的值设为 x
  • G[X 的入边被移除]:因果图中所有指向 X 的边被临时移除

关键性质:干预不是赋值。赋值 X = x 只是改变 X 的值;干预 do(X = x) 同时改变 X 的值并切断其入边,意味着 X 的值不再由其上游原因决定。

3.2 干预后的转移函数

定义 3.2(干预后转移):在干预 do(X=x) 下,单 Tick 转移函数为:

⟦P⟧_{do(X=x)}(σ) = ⟦P[PA(X) 被冻结]⟧(σ[X ← x])

即:

  1. X 的值固定为 x,不被任何规则修改
  2. 所有读取 X 的规则仍正常评估(X 作为原因影响其他维度)
  3. 所有修改 X 的规则被跳过(X 的入边已切断)

3.3 多变量干预

定义 3.3(联合干预):同时干预多个变量:

do(X₁=x₁, X₂=x₂, ..., Xₖ=xₖ)

所有被干预变量的入边同时被切断,值同时固定。

3.4 干预的语法

元序中干预通过 do() 表达式声明:

// 单变量干预
do(环境.温度 = 0.5)

// 联合干预
do(环境.温度 = 0.5, 加热器.功率 = 0.0)

// 干预后推演
推演 do(环境.温度 = 0.5) 后 10 个Tick的 环境.温度 轨迹

3.5 干预与观察的区别

维度 观察 X = x 干预 do(X = x)
X 的值 x x
X 的入边 保留 切断
X 受上游影响
混杂因素 可能影响结果 被阻断
回答的问题 "X 为 x 时,Y 是多少?" "如果强制 X=x,Y 会是多少?"

示例:观察到「冰淇淋销量高时溺水死亡多」,这是相关(混杂因素是夏天)。干预 do(冰淇淋销量=高) 不会增加溺水死亡,因为干预切断了「夏天→冰淇淋销量」的边,夏天不再同时影响两者。


四、反事实推演的形式化

4.1 反事实的定义

定义 4.1(反事实查询):给定实际运行轨迹 σ₀, σ₁, ..., σ_t,反事实查询「如果在 Tick k 时 do(X=x),系统会怎样?」的回答为:

CF(X=x, k, horizon=H) = ⟦P⟧_{do(X=x)}^H(σ_k)

即:

  1. 取 Tick k 的实际状态 σ_k(不是初始状态)
  2. 在 σ_k 上施加干预 do(X=x)
  3. 从干预后的状态出发,重新推演 H 个 Tick
  4. 输出干预后的轨迹,与实际轨迹对比

4.2 反事实的三步法

反事实推演遵循 Pearl 的三步法:

第一步:溯因(Abduction)

  • 用实际数据更新背景变量(确定 σ_k 的完整状态,包括未观测变量的最可能值)

第二步:干预(Action)

  • 在 σ_k 上施加 do(X=x),切断 X 的入边

第三步:预测(Prediction)

  • 从干预后的状态出发,用修改后的模型推演未来

4.3 反事实的语法

// 基本反事实查询
反事实: 在 Tick 50 时 do(信号灯.配时 = 0.7), 推演 30 个Tick, 对比 路段.平均车速

// 多变量反事实
反事实: 在 Tick 50 时 do(信号灯.配时 = 0.7, 天气.降雨 = 0.0), 推演 30 个Tick

// 归因查询
归因: Tick 50 到 Tick 80 的 路段.平均车速 变化中, 多少归因于 信号灯.配时?

4.4 反事实与实际轨迹的对比

反事实推演的输出包含两条轨迹:

实际轨迹:   σ₀, σ₁, ..., σ_k, σ_{k+1}, ..., σ_{k+H}
反事实轨迹: σ₀, σ₁, ..., σ_k, σ'_{k+1}, ..., σ'_{k+H}
                         ↑
                    干预点(分叉)

两条轨迹在干预点之前完全一致,之后分叉。差异即为干预的因果效应。

4.5 因果效应的度量

定义 4.2(平均干预效应 ATE)

ATE(X, Y) = E[Y | do(X=x₁)] - E[Y | do(X=x₀)]

即干预 X 从 x₀ 到 x₁ 时,Y 的期望变化。

定义 4.3(个体因果效应 ITE)

ITE(X, Y, σ) = Y(do(X=x₁), σ) - Y(do(X=x₀), σ)

即在特定状态 σ 下,干预对 Y 的效应。

定义 4.4(自然直接效应 NDE)

干预 X 后,沿特定因果路径传播的效应,其他路径保持不变。需要更精细的路径特定干预。


五、干预语义的操作语义

5.1 干预的执行流程

1. 接收干预请求 do(X=x, tick=k, horizon=H)
2. 加载 Tick k 的状态快照 σ_k
3. 构建干预后的因果图 G' = G[X 的入边被移除]
4. 构建干预后的程序 P' = P[修改 X 的规则被禁用]
5. 设置初始状态 σ' = σ_k[X ← x]
6. 从 σ' 出发,用 P' 运行 H 个 Tick
7. 记录干预轨迹 σ'_{k+1}, ..., σ'_{k+H}
8. 与实际轨迹对比,输出因果效应

5.2 干预与演化的关系

Evolve 的影子验证本质上就是一种干预:

影子验证 = do(参数=新值) 后重放历史 N 个 Tick,对比偏差率

干预语义为影子验证提供了形式化基础:影子验证不是「模拟一下」,而是严格的干预实验。

5.3 干预与偏差的关系

干预可能产生新的偏差:

do(环境.温度 = 0.9)  // 强制高温
→ 加热器.功率规则的条件不再满足
→ 温度持续高位
→ 产生「过热偏差」

偏差流在干预后正常工作,干预产生的偏差被观测和收敛。这符合 A1 容错存续公理。


六、干预语义的应用场景

6.1 政策推演

// 如果提高公交发车频率,拥堵会缓解吗?
反事实: 在 Tick 100 时 do(公交.发车频率 = 0.8), 推演 200 个Tick, 对比 城市.拥堵指数

6.2 故障归因

// 温度失控是加热器故障还是传感器故障?
归因: Tick 50 到 Tick 80 的 环境.温度 异常中,
      多少归因于 加热器.功率? 多少归因于 传感器.读数偏差?

6.3 策略对比

// 方案A: 提高限速 vs 方案B: 增加车道
对比 do(道路.限速 = 0.8) vs do(道路.车道数 = 0.7),
     推演 100 个Tick后的 路段.平均车速 和 事故率

6.4 「如果当时」分析

// 如果当时没有启动应急响应,损失会更大吗?
反事实: 在 Tick 30 时 do(应急响应.启动 = 0.0), 推演 50 个Tick, 对比 灾害.损失指数

七、干预语义的计算复杂度

操作 复杂度 说明
单变量干预 O(R × C × H) R=规则数, C=条件数, H=推演长度
多变量干预 O(R × C × H) 与单变量相同(入边批量移除)
反事实查询 O(R × C × H) 需先加载快照
因果效应估计 O(K × R × C × H) K=干预值采样数
路径特定效应 O(P × R × C × H) P=路径数(可能指数级)

干预推演的成本与正常运行相同数量级,因为干预只是禁用部分规则,不增加计算量。


八、与现有语言特性的整合

8.1 与 When 的关系

  • When 是观察性的(L1),回答「条件满足时做什么」
  • do 是干预性的(L2),回答「强制改变后会怎样」
  • 两者互补:When 定义系统规则,do 用于实验和分析

8.2 与 Track 的关系

Track 的趋势预测是观察性预测(基于历史趋势外推)。干预后的预测需要用 do-语义重新推演,不能直接用 Track 的预测结果。

8.3 与 Evolve 的关系

Evolve 的影子验证是干预的特例(干预参数)。干预语义为 Evolve 提供了更通用的实验框架。

8.4 与 VVUQ 的关系

干预和反事实是 VVUQ 中「模型确认」的核心工具:

  • 干预实验可用于验证模型的因果机制是否符合领域知识
  • 反事实预测可用于 out-of-sample 检验
  • 因果效应的不确定性可通过 ensemble 干预量化

九、未解决问题与研究方向

  1. 反馈回路中的干预:因果图存在环时,do-算子的标准 DAG 理论不直接适用,需扩展到循环因果模型
  2. 路径特定效应的计算:在反馈回路中,特定路径的效应如何隔离和度量
  3. 干预的不确定性:干预值本身可能有不确定性,如何传播到反事实结果
  4. 多主体干预:微域大量个体同时干预时,宏观效应的聚合方法
  5. 干预的伦理边界:政策推演中的干预可能涉及敏感决策,需要声明干预的假设和局限

十、总结

元序的因果机制从 L1(观察性关联)推进到 L2(干预)和 L3(反事实):

  • L1When 规则,观察条件满足度,触发动作(已实现)
  • L2do(X=x),强制赋值并切断入边,推演干预效应(本文档定义)
  • L3反事实,从历史快照出发施加干预,对比实际轨迹(本文档定义)

干预语义不是对 When 的替代,而是补充:When 定义系统如何运行,do 和反事实让用户能够对系统进行实验和归因。这是元序从「规则建模语言」到「因果推演语言」的关键一步。


文档版本: WorldScript Intervention Semantics v1.0
创建日期: 2026-09-03
关联文档: 《14形式化语义》第八章、《04元序规则》、《16验证与确认体系》
实现状态: 理论定义完成,M3 阶段实现
哲学基础: Pearl 结构因果模型、因果关系阶梯

posted @ 2026-09-03 16:32  新哲  阅读(8)  评论(0)    收藏  举报