Ontology
为什么 DiscoSCM 中只有一个 \(U\)
\(U\) 是模型层面的 Unit Selection Variable。它回答“当前选中了哪个 unit”, 而不是“这是数据表中的第几行”、“谁进入了样本”或“谁接受了什么 treatment”。
先记住这个关系
\(U\) 是模型里唯一的变量;\(u_i\) 是它对样本 \(i\) 取到的真实值。 下标属于取值,不属于变量本身。
“只有一个 \(U\)”不等于所有样本具有相同 unit value。完全可以有 \(u_i\neq u_j\):相同的是变量角色,变化的是 realizations。
\(U\) 是取值为 focal token 的 model-level variable;\(P_U\) 或 \(P(U\mid C)\) 描述 target population / context 中的 unit composition。 \(A/T\) 是 treatment / action / dose assignment,\(S^{\mathrm{obs}}\) 是 observation / sample inclusion。这些对象不能共用一个未限定的 “selection mechanism”名字。
| 对象 | 职责 | 不是什么 |
|---|---|---|
| \(U\) | 选中 focal token/unit | assignment、inclusion、propensity |
| \(P_U\) | population unit composition | evidence-indexed \(Q_i\) |
| \(O\) / pretreatment \(X\) | query-time admissible evidence | latent identity 或必然的 causal parent |
| \(A/T\) | treatment / action / dose assignment | Unit Selection Variable |
| \(S^{\mathrm{obs}}\) | observation / sample inclusion | Unit Selection Variable |
Belief object
样本 \(i\) 真正被索引的是 \(Q_i\)
learner 看到了 \(X=x_i\),却看不到真实选择 \(u_i\)。因此它需要形成一份 关于同一个 \(U\) 的条件 belief。
同一个 model-level selector
样本 \(i\) 的 unknown realization
由 evidence \(x_i\) 产生的完整条件分布
也可以写 \(Q_i(du)\approx P(U\in du\mid X=x_i)\),或在存在密度时写 \(q_\phi(u\mid x_i)\approx p(u\mid X=x_i)\)。这里的 \(u\) 是积分变量。
以 conditional law 作为 semantic target,不要求 learner 显式写出 population prior × likelihood。当前 \(\mathcal A_\phi\) 可以是直接学习的 discriminative abductor;这里约束的是 belief object 与 calibration target。
只是一个事件的概率;连续 \(U\) 的单点概率通常还是零。
定义在整个 \(\mathcal U\) 上,试图定位未知的 \(u_i\)。
若 \(X=x_i\) 不能唯一确定 unit,正确 posterior 本来就可以是 non-degenerate。只有完全识别的特殊情形,才可能退化为 \(P(U\in du\mid X=x_i)=\delta_{u_i}(du)\)。
若训练数据只包含 \(S^{\mathrm{obs}}=1\) 的 records,直接从它们学到的对象是 \(P_{\mathrm{obs}}(U\in\cdot\mid O=o_i,S^{\mathrm{obs}}=1)\),不是默认相等的 \(P_{\mathrm{tar}}(U\in\cdot\mid O=o_i)\)。
从 observed-selected law 转向 target law 需要声明 selection model / invariance、 target population 与 inclusion support。没有 selection / transport 问题时可保留简写 \(Q_i\); 一旦出现 selected sample,必须恢复 reference-law 限定。
关键方向 · reference law → focal belief
Target population 不是 Abduction 的产物
这里的 focal 指当前正在被考察的这一个 token,不是从总体中切出的
一个小 population。target population 先规定 reference law;factual evidence
再把它收缩成 learner 对一个固定 actual token 的 epistemic belief。
target-population composition
about the focal token
about one fixed token
只能解释为 soft epistemic candidate subpopulation
如果 focal evidence 只是对 target-population latent unit types 重新赋权, 那么 \(Q_i^{\mathrm{tar}}\) 可以被解释为一个 soft candidate subpopulation:
这里的 candidate types 是关于同一个 actual token 的 epistemic hypotheses, 不是多个真实 focal units。若直接学习的 \(q_\phi\) 没有满足或验证这条 population-reference 关系,就只能叫 candidate distribution / belief, 不能自动叫 subpopulation。
这会把对一个 token 的 epistemic hypotheses 误写成多个真实 units。
满足 reweighting contract 时,可把它表示成 soft epistemic candidate subpopulation。
一句记住:target population 回答“事前哪些 token realizations 可能出现”; Abduction 回答“看到 evidence 后,我们如何认识眼前这个固定 token”。
Computational contract
Perception → Abduction → Reduction
三步可以有复杂神经网络,但每一步的 semantic responsibility 必须保持单纯。
-
PPerception
变换 evidence geometry
\[Z^F=P_F(X),\qquad z_i^F=P_F(x_i)\]Abduction 可以读取 \(z_i^F\),但目标仍是关于 \(X=x_i\) 所选 unit 的 belief。若 \(P_F\) 在数据支持上可逆且逆映射可测,则 \(\sigma(Z^F)=\sigma(X)\),原则上不丢失 \(X\) 中关于 \(U\) 的信息。
invertibility = information equivalence; 不是 semantic identification。 -
AAbduction
由 factual evidence 形成一次 \(Q_i\)
\[ Q_i=\mathcal A_\phi(P_F(x_i^F)) \approx P(U\in\cdot\mid X=x_i^F). \]当前基础 observation contract 是 \(O=X\)。如果将来换成更丰富的 \(O\),条件对象可改为 \(P(U\mid O=o_i)\),但唯一 \(U\)、真值 \(u_i\)、belief \(Q_i\) 的关系不变。
\(O\) 只能包含 query time 可用、且对当前 estimand 合法的 factual evidence。 Pretreatment \(X\) 常是 evidence;\(A/T\) 首先是 assignment / query, \(S^{\mathrm{obs}}\) 首先是 inclusion indicator,它们不自动是 unit-identity evidence。
\(P(U\mid X=x_i)\) 是 epistemic conditioning; 不自动声明 causal arrow \(X\to U\)。 -
RReduction
固定 \(Q_i\),再回答不同 query
\[ \mathcal L_i(dy;x^Q) = \int_{\mathcal U} K_\theta(dy\mid P_Q(x^Q),u)\,Q_i(du). \]\(x_i^F\) 是用于更新 unit belief 的 factual evidence; \(x^Q\) 是送进 response mechanism 的 query。query 改变时, response 可以改变,\(Q_i\) 不得重新计算。
\(x_i^F\)abduct once\(Q_i\) →\(x_1^Q\)\(x_2^Q\)\(\cdots\)
\(\widetilde u^{(m)}\sim Q_i\) 是 candidate draw,不是真实 \(u_i\)。 软件 batch row \(i\) 存储的是 \(Q_i\) 的参数、candidate 或 realization, 不是一个新的本体变量。
Identification boundary
语义目标,不等于已经识别
\(Q_i\approx P(U\mid X=x_i)\) 是 Abduction 的 semantic / calibration target, 不是仅凭 observational predictive fit 自动获得的 theorem。
训练数据通常只约束 Abduction 与 Reduction 共同诱导的 observable mixture:
不同的 \((q_\phi,K_\theta)\) 可以产生相同 observable distribution。 对任意可逆重参数化 \(h\),pushforward belief \(h_\#Q_i\) 与相应变换后的 mechanism 可以保持完全相同的 predictions。
不推出 \(U\) 可识别
不推出 \(Q_i\) 是真实 posterior
需要 oracle evidence、intervention、multi-view 或 mechanism restrictions
预测得准,不等于认出了这个 unit。不同 unit 可能在我们关心的条件下表现得一样, 模型里的表示也不自动等于真实对象。这是 identification 的边界, 不是 Unit Selection Variable 的定义,所以不需要在开头引入额外关系符号。
\(q_\phi(u\mid O)\) full support 或 Cauchy scale \(\gamma_\phi(O)>0\) 只描述 candidate-unit uncertainty geometry。它不推出 treatment overlap \(p(A=a\mid X=x)>0\),也不推出 inclusion positivity \(P(S^{\mathrm{obs}}=1\mid\text{target stratum})>0\)。
Unit abduction 本身不会修复 sample-selection bias、treatment-selection bias 或 hidden confounding。即使 \(Q_i\) 被 oracle 校准,causal / transport claim 仍需要 独立的 assignment、exchangeability / confounding、selection、positivity 与 stability assumptions。
换问题,不换人
明明是同一个 unit,为什么还要专门检查?
反事实本来就在问:“同一个 unit 换一种 action,结果会怎样?” 所以这里不是怀疑它还是不是同一个 unit,而是检查代码会不会在换问题时, 悄悄把这个 unit 重新判断一遍,甚至换成另一个。
换一种 action,只是换问题;被问的仍是同一个 unit。
先根据已经观察到的事实判断“这是怎样的 unit”。\(Q_i\) 是这份带有不确定性的判断,不是 unit 本身。
再换 treatment / action,计算相应结果;不能用这个假设中的 action 反过来改写 \(Q_i\)。
旧实现确实缓存并复用了 \(Q_i\),但在计算 \(Q_i\) 时,仍把随机分配的 action 喂给了 encoder。也就是说,问题不是“有没有缓存”,而是把本来只用于比较结果的 action,当成了判断“这是哪个 unit”的线索。
如果只想分别看每种 action 下的结果分布,固定 \(Q_i\) 后分别计算即可。 但如果要比较“同一个模拟 unit 在两种 action 下会怎样”,就要从 \(Q_i\) 只抽一次 \(\widetilde u_i^{(m)}\),然后让它回答所有 action。若每个 action 都重新抽一次,即使都来自同一个 \(Q_i\),比较的也已经是不同的模拟 unit。 outcome 自身的随机性是否共享,是另一个问题,需要单独说明。
本页只保留这个直接影响理解的教训。具体数字、每篇论文受到什么影响, 都放在独立的实验审计里,避免打断 Unit Selection Variable 的解释主线。
需要时阅读完整实验审计 →所以,提交前不要只问“有没有复用 \(Q_i\)”,而要问: 是否先根据同一份已观察事实,只判断一次“这是怎样的 unit”;之后换 action 时, 有没有保持这个判断不变?若要比较同一个模拟 unit,还是否真的复用了同一次抽样?
常见写法修正
看到错误表达时,统一这样改
| 不要这样写 | Learning DiscoSCM 正确表达 |
|---|---|
| 样本 \(i\) 有一个 \(U_i\) | 样本 \(i\) 对应事件 \(U=u_i\) |
| \(q_\phi(U_i\mid X_i)\) | \(Q_i(du)=q_\phi(U\in du\mid X=x_i)\) |
| \(Q_i=P(U=u_i\mid X=x_i)\) | \(Q_i(B)\approx P(U\in B\mid X=x_i)\) |
| \(q_\phi(u_i\mid x_i)\) 是整个 belief | 它至多是密度在真值处的标量;完整对象是 \(q_\phi(u\mid x_i)\) |
| \(Y(x^Q)\mid U_i\) | \(Y(x^Q)\mid U=u_i\) |
| query 改变后重新 abduce | 同一份已观察事实只用来判断一次 unit;之后换 action 时,只重新计算结果,不重新判断“这是谁” |
| 每个 query 都从同一个 \(Q_i\) 独立重抽 unit candidate | 若要比较同一个模拟 unit,只抽一次 \(\widetilde u_i^{(m)}\) 并用于所有 actions;outcome 自身的随机性另行说明 |
| flow 恢复了真实 \(U\) | flow 原则上保留 \(X\) 中关于 \(U\) 的信息 |
| Unit Selection Variable 就是 treatment / sample selector | \(U\) 选 token;\(A/T\) 负责 assignment,\(S^{\mathrm{obs}}\) 负责 inclusion |
| \(P_U\) 与 \(Q_i\) 是同一对象 | \(P_U\) 是 population composition;\(Q_i\) 是 evidence-indexed learner belief |
| \(q_\phi\) full support 所以满足 positivity | candidate support、treatment overlap 与 sample-inclusion positivity 是不同条件 |
| selected-sample belief 就是 target-population belief | 显式区分 \(P_{\mathrm{obs}}(\cdot\mid S^{\mathrm{obs}}=1)\) 与 \(P_{\mathrm{tar}}\) |
| 预测得准,所以模型认出了真实 unit | 预测准确只说明结果预测得好;还要另证模型里的表示确实对应真实对象 |
统计附录可显式声明 replica notation \(U^{(1)},\ldots,U^{(n)}\),并说明它只是采样或证明工具。 不要让 replica notation 反向改写 DiscoSCM 的主文 ontology。
最后检查
提交前逐项回答
这张表不是考术语,而是防止代码或文字在不知不觉中换了人、换了证据、 换了总体,或者把当前结果说得过头。
整个模型是否始终只定义一个 Unit Selection Variable \(U\)?样本 \(i\) 只是取到 \(U=u_i\),而不是另外创造一个新变量。
是否把“这是哪个 unit”“它接受什么 action”“它有没有进入样本”分开表达,而没有都混叫 selection?
文中的 unit 指真实对象,还是模型里对它的表示?两者有没有混用?
\(Q_i\) 是否被解释为:根据样本 \(i\) 已经观察到的信息,对“这是怎样的 unit”形成的一整份不确定判断?
计算 \(Q_i\) 时,是否只用了当时真正已知、而且允许使用的信息?若用了 action 或样本筛选信息,是否解释了为什么合理、为什么不会偷看答案?
对同一份已观察事实,是否只计算一次 \(Q_i\)?之后换 action 时,代码是否只重新计算结果,而不会重新判断“这是谁”?
如果要比较同一个模拟 unit 在多种 actions 下的结果,是否只从 \(Q_i\) 抽一次 \(\widetilde u_i^{(m)}\),然后一直复用?
unit 是否保持不变,与 outcome 自身的随机扰动是否保持不变,是否分开说明了?
如果数据来自筛选后的人群,是否说明学到的是哪一群人的规律,以及能否用于目标人群?
是否说清当前结果究竟证明了什么,并避免把预测准确写成“已经找回真实 unit”或“已经识别反事实”?
评估时比较的究竟是同一真实 unit 换条件后的结果、对 \(Q_i\) 平均后的预测分布,还是只预测已经发生的结果?
sample / batch 下标是否只是数据和软件中的编号,而没有悄悄改变理论里的对象?
最后只记住一句话
\(U\) 只回答“当前是哪一个 unit”;\(u_i\) 是样本 \(i\) 对应的真实取值; \(Q_i\) 是我们根据已观察事实,对这个取值形成的不确定判断。 先判断一次“这是怎样的 unit”,再问不同 action 下会怎样。 换问题,不换人;若要比较同一个模拟 unit,也不要中途重新抽一个。