深夜的牌桌上,你手握一对 5,望着对手不断加大的筹码,最终选择了弃牌。摊牌后你懊恼地发现——对手只是虚张声势的散牌。脑海里立刻蹦出一个念头:“要是我当时跟了,这局就是我的了。”这个念头,就是一次反事实推理:在想象中重开一局,让自己做出不同的选择,再推演结局。 但请再想深一层:你脑海里的“如果我跟了”,真的说得通吗?它必须踩住几条底线——牌桌上不能凭空多出一张红心 A(特征合法);对手依然是那个谨慎的老李,不会突然变成疯子全押(分布兼容);你跟注就得推出去相应筹码,那张牌从手中消失(因果不变)。这些底线,就是反事实生成中的合理性约束。 本文用这场牌局贯穿始终,把“合理”二字拆开来看:先谈合理性本质,再依次讨论特征合法性、分布兼容性、因果不变性、矛盾检测,最后顺着方法演进,看看研究者们如何把“头脑想象”变成“可信计算”。

岗位关联

反事实合理性约束是反事实解释走出实验室、进入风控、医疗等严肃决策场景的“准生证”。掌握它,你产出的不再只是数字玩具,而是决策者能真正信任的“平行世界推演”。

目录
  1. 可视化演示
  2. 合理性本质
  3. 特征合法性
  4. 分布兼容性
  5. 因果不变性
  6. 矛盾检测
  7. 方法演进
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示反事实样本的三层合理性约束框架(合法性/流形/因果不变性)、数据流形与反事实位置关系、以及稀疏性与有效性的多目标权衡,交互切换三种模式探索。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+CAPS.mode1+'

合理性本质

深夜复盘牌局,你脑海里闪过“如果我当时跟注会怎样”。但这个“如果”是否成立,取决于它是否符合牌桌的底层逻辑:不能凭空冒出一张红心 A,不能把谨慎的老李变成疯狂赌徒,你跟注就必须推出筹码。这些底线条件,在反事实生成里统称为合理性约束——它们决定了一个平行世界推演能否被严肃对待。

把镜头从牌桌转向机器学习。给定一个分类器和某个被判定为“拒绝”的原始样本,反事实生成要寻找一个修改幅度尽可能小的样本,让模型把它判成“通过”。通俗地说,就是在高维特征空间里回答“如果用户把月收入提高三千元,贷款还会被拒吗”。然而,“最小修改”只是数学目标,真正让答案有说服力的,是修改后的样本必须经得起现实检验。

因此,合理性约束的完整框架体现为一个带约束的优化问题:在分类器必须翻转预测的前提下,同时要求候选样本满足合法性、兼容性与因果一致性。研究者通常将这三类规则合并写成一个约束谓词 $\mathcal{R}$。

回到牌局,这套目标函数就是你“复盘推演”的数学版本:既要改动尽量小(少编故事),又要让新场景在牌桌上说得通(守底线)。当约束无法满足时,工程师宁可报“找不到反事实”,也不能交付一个在现实中注定穿帮的假设场景——这正是“合理”二字的分量。

min⁡x′  d(x,x′)s.t.f^(x′)=y′,R(x′)\min_{x'} \; d(x, x') \quad \text{s.t.} \quad \hat{f}(x') = y', \quad \mathcal{R}(x')
反事实生成的标准目标:改得最少,同时让模型翻转预测,并且守住合理性。
  1. 候选反事实 x'它是一个 p 维特征向量,代表另一个选择下的完整样本。
    x′=(x1′,x2′,…,xp′)∈Rpx' = (x'_1, x'_2, \dots, x'_p) \in \mathbb{R}^p
  2. 修改距离 d(x, x')用欧氏距离平方衡量原始样本与新样本的差异,数值越小说明改动越轻。
    d(x,x′)=∥x−x′∥22d(x, x') = \|x - x'\|_2^2
  3. 预测翻转约束分类器输出必须等于目标类别 y',确保决策结果确实被翻转。
    f^(x′)=y′\hat{f}(x') = y'
  4. 合理性谓词 R(x')它由特征合法、分布兼容、因果不变三条子约束合取而成。
    R(x′)=Rlegal(x′)∧Rdist(x′)∧Rcausal(x′)\mathcal{R}(x') = \mathcal{R}_{\text{legal}}(x') \wedge \mathcal{R}_{\text{dist}}(x') \wedge \mathcal{R}_{\text{causal}}(x')

特征合法性

牌只有 52 张,红心 A 全世界只有一张。如果你的复盘场景里出现了“第二张红心 A”或“第 53 张牌”,同桌牌友当场掀桌——因为这不合法。特征合法性就是这个意思:修改后的样本,每个特征取值都必须落在现实允许的范围内。

放到信贷场景,特征如“年龄”“月收入”“负债率”。年龄被改成负值、负债率写成 200%、婚姻状况同时取值为“已婚”和“未婚”——这些荒谬取值即使能让模型翻转到“通过”,也毫无可信度。特征合法性首先用上下界约束把这类错误挡在门外。

上下界通常直接从训练数据或业务规则提取。若数据相对干净,可用每个特征的最小值与最大值定义安全区间;若特征语义明确,业务规则可进一步收紧区间,例如“年龄必须至少为 18”。特征合法性是合理性约束中最基础、也最不可省略的一道闸门。

牌局中你只能从手中的牌里打出选择,反事实也一样:只能在特征允许的牌型中调整。离开这套边界,生成结果只是数学上合法、现实中可笑的废案。

xi′∈[Li,Ui],∀i=1,2,…,px'_i \in [L_i, U_i], \quad \forall i = 1, 2, \dots, p
每个特征都要待在现实允许的“箱子”里,越界即非法。
  1. 特征编号 i逐一遍历全部 p 个特征,任何一维越界都会让样本非法。
    i∈{1,2,…,p}i \in \{1, 2, \dots, p\}
  2. 下界约束 L_i第 i 个特征可取的最小值,低于此值就是现实中不存在的取值。
    Li≤xi′L_i \le x'_i
  3. 上界约束 U_i第 i 个特征可取的最大值,高于此值同样不可接受。
    xi′≤Uix'_i \le U_i

分布兼容性

你和老李打了十年牌,他的风格稳定:谨慎、极少虚张声势。若你的复盘假设“老李突然疯狂全押”,没人会信——因为这与他一贯的行为分布严重不符。分布兼容性约束,正是确保反事实样本仍落在训练数据所描述的现实人群中。

技术上看,只用取值范围还不够:年龄 35 和 36 都合法,但若训练集中从未同时出现过“35 岁 + 月入 5000 + 三年逾期”,这类特征组合就像人群中不存在的“性格突变的老李”。分布兼容性要求反事实样本与训练数据的联合分布不能偏离太远。

常用工具是马氏距离:它用协方差结构把特征关联考虑进来,比欧氏距离更能反映“这个人属于人群中的常见类型还是稀有类型”。当马氏距离小于阈值时,就认为候选样本仍在“正常人群”的支持区域之内;也可以用密度估计模型直接输出支持度分数。

老李的风格分布是你的先验知识,训练分布是模型心中的世界模型。让反事实落在分布之内,等于告诉决策者:“这个如果场景,在现实人群中确实有人满足。”这是可信度的第二个基石。

DM(x′)=(x′−μ)⊤Σ−1(x′−μ)≤τ\mathcal{D}_M(x') = \sqrt{(x' - \mu)^\top \Sigma^{-1} (x' - \mu)} \le \tau
马氏距离越小,说明候选者越像训练集中的“普通人”;超过阈值就是离群的反事实。
  1. 均值向量 μ它表示训练数据的几何中心,可以理解为“人群的平均画像”。
    μ=1n∑k=1nx(k)\mu = \frac{1}{n} \sum_{k=1}^n x^{(k)}
  2. 协方差矩阵 Σ它刻画特征之间的共变模式,回答“收入升高时负债率通常怎么变”。
    Σ=1n∑k=1n(x(k)−μ)(x(k)−μ)⊤\Sigma = \frac{1}{n} \sum_{k=1}^n (x^{(k)} - \mu)(x^{(k)} - \mu)^\top
  3. 马氏距离 D_M(x')按每个特征的波动幅度做归一化,得到一个无量纲的偏离分数。
    DM(x′)=(x′−μ)⊤Σ−1(x′−μ)\mathcal{D}_M(x') = \sqrt{(x' - \mu)^\top \Sigma^{-1} (x' - \mu)}
  4. 阈值 τ设定偏离上限,超过阈值即认定反事实脱离现实人群。
    DM(x′)≤τ\mathcal{D}_M(x') \le \tau

因果不变性

牌局有一条硬规则:打出的牌会从手中消失,跟注必须推出筹码。你无法只改“结果”而不动“原因”——这就是因果机制。反事实修改同样不能违背机制:贷款额度上调时,月还款额、负债率通常也联动变化,而不是各特征孤立地跳动。

结构因果模型(SCM)把特征间的生成机制显式写成结构方程:每个内生特征由它的直接原因和背景噪声共同决定。生成反事实时,并不是把特征向量整体插值到目标区域,而是对某些节点做干预,再让原因沿着结构方程把变化传播下去。

例如在信用场景中,若把“月收入”从 8000 改为 15000,SCM 中由收入驱动的“月还款额”“授信额度”也会被联动改写。也就是说,反事实的每个特征不是自由变量,而是由因果骨架自动重新生成的。这样一来,假设世界的内在一致性就有了保证。

打牌时“跟注推出筹码”的规则从未改变,因果不变性就是要求修改后的世界沿用同一套物理法则。机制一旦被偷偷替换,反事实就不再是我们这局牌的平行宇宙,而是另一场赛局——这样的解释自然没有指导价值。

xj′=fj(xpa(j)′,uj)x'_j = f_j\big(x'_{\mathrm{pa}(j)}, u_j\big)
任何被修改的上游原因,都会按原本的机制去撼动下游结果,机制本身不变。
  1. 结构方程形态它说明第 j 个特征由其直接原因与背景噪声共同生成,是因果骨架的局部规则。
    xj=fj(xpa(j),uj)x_j = f_j(x_{\mathrm{pa}(j)}, u_j)
  2. 原因集合 pa(j)它是指向第 j 个节点的全部父节点,即直接决定该特征的因素。
    xpa(j)={xk:k∈PA(j)}x_{\mathrm{pa}(j)} = \big\{ x_k : k \in \mathrm{PA}(j) \big\}
  3. 背景噪声 u_j它是方程之外的随机扰动,承载每个个体不可解释的个性差异。
    uj∼P(uj)u_j \sim P(u_j)
  4. 反事实机制重算干预只改变原因取值,机制函数与噪声分布保持原样,从而得到新旧世界都成立的联动结果。
    xj′=fj(xpa(j)′,uj)x'_j = f_j\big(x'_{\mathrm{pa}(j)}, u_j\big)

矛盾检测

最荒诞的复盘是你宣称“我跟了,但手牌和筹码都没少”。这种同时成立的反事实陈述撕裂了世界的逻辑一致性。用 AI 的术语说,就是特征组合在其联合分布中的概率为零,属于逻辑自相矛盾。

矛盾检测作为合理性约束的收尾守卫,专门检查特征组合是否有真实存在的可能。即使每个特征单独合法、整体也接近分布,仍可能因为离散特征的逻辑冲突而被判死刑:已婚却标注未婚、在职却领取失业金——这类矛盾必须在发布反事实前被识别并拒绝。

形式上,可以用联合概率是否大于零来判定:若某种组合在数据世界中概率为零,或训练后验概率低到不可信,就拒绝该反事实。矛盾检测也可以通过业务规则校验器实现,例如性别与怀孕状态、职业类型与收入区间之间的规则约束。

牌局复盘可以想象各种剧情,但每一版剧情都要经得起“有没有可能真实发生”这一问。矛盾检测就是最后那声质问:你所谓的“如果”,有没有自打嘴巴?

P(x′)=P(x1′,x2′,…,xp′)>0P(x') = P(x'_1, x'_2, \dots, x'_p) > 0
所有特征组合要整体上“有可能发生”,概率为零的组合直接出局。
  1. 联合概率表达式它把全部特征看作一个整体,检验这个组合是否在现实世界中真实可能出现。
    P(x′)=P(x1′=a1,…,xp′=ap)P(x') = P(x'_1 = a_1, \dots, x'_p = a_p)
  2. 非零条件联合概率严格大于零,说明该组合拥有正向的发生可能,可信度成立。
    P(x′)>0P(x') > 0
  3. 拒绝规则概率为零或为负的组合就是“凭空出现的红心 A”,应当直接被淘汰。
    Reject(x′)  ⟺  P(x′)≤0\text{Reject}(x') \iff P(x') \le 0

方法演进

最初的牌局复盘靠拍脑袋,而专业团队用数据工具系统推演。反事实生成方法也经历了相似的进化:从只追求距离最小,到把合理性约束内化进求解过程。

早期方法以距离导向搜索为主,沿着决策边界的法线方向寻找最近的越界点,但经常产出不可信的样本。随后,受限优化方法登场:把合法性、分布兼容性作为显式约束加入优化问题,用交替投影等手法求解。此时“合理性”第一次成为优化问题的一部分,而不只是事后检查。

近年的生成对抗与深度方法则更进一步:判别器保证样本像训练分布,结构方程作为可微层强制因果联动,正则项把矛盾检测软化进学习目标。方法在演进,但对三条底线的坚持始终没有改变。

从拍脑袋到专业复盘工具,变的只是推演效率与精度,不变的是对“合理”的尊重。理解这段演进,你会明白:一个反事实可不可用,最终取决于它能不能在这个世界的规则里站得住脚。

min⁡x′  λ⋅d(x,x′)+α⋅Ω(x′)s.t.f^(x′)=y′,  R(x′)\min_{x'} \; \lambda \cdot d(x, x') + \alpha \cdot \Omega(x') \quad \text{s.t.} \quad \hat{f}(x') = y', \; \mathcal{R}(x')
方法演进之后,目标依然是“距离近”与“够合理”的加权权衡。
  1. 权重参数 λ 与 α两个正权重控制贴近度与合理性之间的平衡,业务上可调节侧重。
    λ>0,α>0\lambda > 0, \quad \alpha > 0
  2. 合理性正则 Ω(x')当马氏距离超阈值时施加额外惩罚,让优化器主动避开离群区域。
    Ω(x′)=max⁡(0,DM(x′)−τ)\Omega(x') = \max\big(0, \mathcal{D}_M(x') - \tau\big)
  3. 预测翻转约束分类翻转继续保留,确保反事实达成“被模型接受”这一核心目的。
    f^(x′)=y′\hat{f}(x') = y'
  4. 加权求和目标整体目标在满足约束的前提下,同时压低修改距离与合理性惩罚。
    λ⋅d(x,x′)+α⋅Ω(x′)\lambda \cdot d(x, x') + \alpha \cdot \Omega(x')

AI 应用场景

信贷风控的可解释拒绝与复贷引导

阶段:模型预测后的事中解释与决策辅助

解决的问题:银行拒绝贷款后,传统拒贷信只会列出固定句式,客户依然不明白“差在哪、改什么”。基于合理性约束的反事实生成器,能给出“把月收入提高到 1.3 万并保持六个月无逾期”这类具体、可执行且不违背业务规则的建议。

具体案例:某互联网银行在贷后管理中使用带分布兼容性约束的反事实解释器。用户 A 月收入 8000、负债率 65% 被拒,生成器产出“将收入提升至 12000(落在历史数据合法区间),并将负债率降至 48%(保持在训练分布支持域内)”的解释。客服据此引导用户补充收入证明,三个月后复贷成功。

医疗慢病管理中的可执行健康目标

阶段:疾病风险预测后的可执行建议生成

解决的问题:糖尿病风险模型只输出一个风险概率,患者看完不知道该做什么。带因果不变性约束的反事实生成器可以回答:“若将 BMI 从 28 降至 24,糖化血红蛋白有 90% 的概率达标”,同时让血压、用药依从性等联动指标同步更新,避免出现“体重降了但血压却不符合常识”的自相矛盾医嘱。

具体案例:某三甲医院 AI 辅助门诊,医生对高风险患者使用反事实报告卡。系统结合患者近两年的体检分布,生成“三个月内把腰围减少 5 厘米、每周步行 150 分钟”的建议,并利用结构方程确认这些变化在因果层面会带动血糖指标改善,患者依从率显著提升。

Python 演示

python72 行
import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.preprocessing import StandardScaler  def main():    # 1. 合成信贷数据:月收入(万元)、信用分、负债率    rng = np.random.RandomState(42)    n = 400    income = rng.normal(1.2, 0.4, n)    credit = rng.normal(650, 80, n)    debt = 0.35 + 0.25 * (650 - credit) / 80 + rng.normal(0, 0.05, n)    X = np.stack([income, credit, debt], axis=1)    y = (0.9 * income + 1.2 * (credit - 650) / 80         - 1.8 * (debt - 0.35) + rng.normal(0, 0.4, n) > 0).astype(int)     scaler = StandardScaler()    X_scaled = scaler.fit_transform(X)    clf = LogisticRegression(C=1.0)    clf.fit(X_scaled, y)     # 2. 取一个被拒绝的样本作为原始样本    x_orig = X_scaled[y == 0][0]     # 3. 合理性约束    lo = X_scaled.min(axis=0)    hi = X_scaled.max(axis=0)    mean = X_scaled.mean(axis=0)    cov = np.cov(X_scaled.T)    cov_inv = np.linalg.inv(cov)     def causal_adjust(x_s):        # 因果联动: 信用分升高时, 负债率机械性下降        x_real = scaler.inverse_transform(x_s.reshape(1, -1))[0]        x_real[2] = 0.35 + 0.25 * (650 - x_real[1]) / 80        return scaler.transform(x_real.reshape(1, -1))[0]     def is_valid(x_cf):        # 特征合法性        if not np.all((x_cf >= lo) & (x_cf <= hi)):            return False        # 分布兼容性: 马氏距离不超过阈值        d = x_cf - mean        if np.sqrt(d.dot(cov_inv).dot(d)) > 2.8:            return False        return True     # 4. 沿模型梯度方向搜索反事实    lr = 0.06    max_iter = 200    x_cf = x_orig.copy()    found = False    for _ in range(max_iter):        x_cf = x_cf + lr * clf.coef_[0]        x_cf = causal_adjust(x_cf)        if clf.predict(x_cf.reshape(1, -1))[0] == 1 and is_valid(x_cf):            found = True            break     if found:        print("原始预测:", clf.predict(x_orig.reshape(1, -1))[0])        print("反事实预测:", clf.predict(x_cf.reshape(1, -1))[0])        print("原始特征(收入/信用/负债率):",              scaler.inverse_transform(x_orig.reshape(1, -1))[0])        print("反事实特征:",              scaler.inverse_transform(x_cf.reshape(1, -1))[0])    else:        print("未找到满足合理性约束的反事实")  if __name__ == "__main__":    main()
目的:用一个合成信贷数据集训练逻辑回归分类器,然后对“被拒绝”的用户生成反事实样本;在搜索过程中实时应用特征合法性、分布兼容性、因果联动三条约束,最终输出可解释的“怎么改才能获批”。
  1. X = np.stack([income, credit, debt], axis=1)把三个原始特征拼成特征矩阵,让模型在真实业务维度上学习。
  2. scaler.fit_transform(X)先标准化再训练,避免收入量纲远大于负债率的数值差异干扰搜索方向。
  3. clf = LogisticRegression(C=1.0)用逻辑回归作为可解释分类器,其系数方向天然适合作为反事实搜索的梯度指引。
  4. lo = X_scaled.min(axis=0)从训练数据提取每个特征的下界,这是特征合法性约束的基础。
  5. cov_inv = np.linalg.inv(cov)计算协方差逆矩阵,用于构造马氏距离的分布兼容性检查。
  6. causal_adjust(x_s)根据信用分重新计算负债率,实现“改因必动果”的因果机制联动。
  7. is_valid(x_cf)先查特征取值范围,再算马氏距离,两道关卡都通过才算合理候选。
  8. x_cf = x_cf + lr * clf.coef_[0]沿模型权重方向稳步推进,逐步逼近决策边界。
  9. clf.predict(x_cf.reshape(1, -1))[0] == 1只有当预测翻转成“通过”时,才认定搜索成功。

常见误区

误区我一直以为找离原样本距离最小的那个点就是最合理的反事实,距离越小解释力越强,模型也越容易采纳。

正解距离小只代表“变化小”,不代表“变化合理”。“把月收入提高 500 元”或许离得近,却可能落入分布稀疏区,甚至要求改变年龄之类的不可干预特征。特征合法、分布兼容、因果不变三条约束是独立的维度,缺一个都不行。

为何常见:人的直觉天然把“改得少”与“改得对”画等号,忽略了合理性约束需要单独验证,而这恰恰是反事实真正可信的关键。

误区特征合法性给出了上下界,那我只要让每个特征待在这个框框里,想改哪个就改哪个。

正解有些特征本质上不可干预,例如年龄、性别;有些特征之间暗含因果联动,比如收入上调通常带来还款额度同步变化,不能独立修改。合法性只是最低门槛,不代表候选可以任意组合。

为何常见:初学者容易把优化问题看成一个纯数值游戏,忽视了每个特征背后的现实语义,于是生成出“值合法但人不真实”的样本。

误区我可以先随便生成一大批反事实样本,再把不合法的、离群的统统筛掉,剩下的就是好样本。

正解约束应该参与生成过程的搜索方向调整,而不是事后筛选。反事实解空间极其稀疏,把约束放最后只会导致大量候选在途中被浪费,甚至全部被过滤而“无解”。正确做法是把约束织进目标函数与梯度步。

为何常见:过滤器思维符合直觉上的处理流程(先生产、后质检),但反事实生成是一个高度受限的搜索问题,约束越晚介入,失败率越高。

误区为了解释起来简单,我坚持只改动一个特征,其他特征保持不变,这样因果链条最清晰。

正解单个特征独立变化往往违背因果机制。比如只把信用分调高 30 分,却不让由信用分驱动的负债率跟着调整,在结构方程视角下这就是不可能的搭配。因果不变性和“改动稀疏”需要平衡,而不是让稀疏性压倒一切。

为何常见:人类偏好单因单果的简单叙事,但现实世界成因交织成网状。强行保持单特征变化,反而捏造出一个现实中不会存在的组合。

面试题

Q1. 反事实生成的核心目标是什么?

单选题 · easy

  • A.最小修改实现预测翻转← 正确答案
  • B.随机扰动生成新样本
  • C.扩充训练集样本数量
  • D.复制并放大原始样本

答案:A。反事实生成的目标是以最小的特征修改让模型输出翻转。A 正好描述了“最小修改 + 预测翻转”这两个核心要素。B 是随机扰动,C 是数据增强,D 是复制样本,三者都不涉及分类器决策边界的针对性翻转。

Q2. 特征合法性约束指的是什么?

单选题 · easy

  • A.特征值应在合理取值范围内← 正确答案
  • B.所有特征必须独立变化
  • C.特征必须完成归一化处理
  • D.特征必须是数值型变量

答案:A。特征合法性要求每个特征的取值落在现实允许的区间内,比如年龄不能是负值、负债率不能超过 100%。B 与因果联动相悖;C 是预处理手段;D 把特征类型限定得过窄,离散特征同样合法。

Q3. 反事实合理性约束的直接意义是什么?

单选题 · easy

  • A.提升反事实解释的可信度← 正确答案
  • B.降低机器学习模型准确率
  • C.延长模型训练时长数据
  • D.自动减少特征空间维度

答案:A。合理性约束让反事实特征合法、分布兼容、因果一致,从而成为决策者可信的“平行世界推演”。B、C 是不良副作用,D 是降维任务,都与“让解释可信”无关。

Q4. 马氏距离在分布兼容性中的作用是什么?

单选题 · mid

  • A.度量与训练分布偏离度← 正确答案
  • B.替代欧氏距离的唯一法
  • C.衡量模型复杂度程度
  • D.判断特征离散属性值

答案:A。马氏距离用协方差结构归一化特征,能够衡量候选反事实与训练分布中心的偏离程度。B 的说法太绝对,欧氏距离仍有其用途;C 描述的是模型复杂度;D 是特征类型判断。

Q5. 下列哪一项属于逻辑自相矛盾的反事实?

单选题 · mid

  • A.贷款人年龄被改成负值
  • B.已婚却仍标注未婚状态← 正确答案
  • C.收入与负债同比例上升
  • D.特征落在训练分布椭圆

答案:B。“已婚却标注未婚”是典型的离散特征逻辑冲突,联合概率为零。A 虽是非法取值但属于特征合法性范畴;C 是合法联动关系;D 是分布兼容的正常情形。

Q6. 分布兼容性差的反事实会造成什么后果?

单选题 · mid

  • A.模型给出异常难信的预测← 正确答案
  • B.模型代码立即报错崩溃
  • C.训练数据需要重新标注
  • D.特征维度自动削减变少

答案:A。偏离训练分布的反事实样本落在外推区,模型在其上的预测缺乏数据支撑,因而不可信。B 与模型构造无关;C 是数据标注任务;D 是特征选择任务。

Q7. 因果不变性要求反事实修改满足哪些条件?

多选题 · mid

  • A.机制函数保持原本不变← 正确答案
  • B.噪声项重新随机采样
  • C.下游特征按机制联动← 正确答案
  • D.所有特征独立自由调整

答案:AC。因果不变性要求结构方程机制保持不变,上游原因改变后,下游特征按原机制联动重算。B 破坏噪声项稳定性;D 允许特征孤立变化,恰恰违背了因果联动。

Q8. 以下哪些属于反事实的合理性约束?

多选题 · mid

  • A.特征取值落在合法范围← 正确答案
  • B.样本与训练分布兼容← 正确答案
  • C.特征间因果机制不变← 正确答案
  • D.特征数量最大化要求

答案:ABC。本文的约束三要素就是特征合法、分布兼容、因果不变,对应 A、B、C。D 是反向目标,特征数量最大化会引入冗余维度,不属于合理性约束。

Q9. 在结构因果模型中,反事实样本应如何生成?

单选题 · hard

  • A.修改外生噪声的分布
  • B.干预后按机制重算下游← 正确答案
  • C.直接修改模型参数值
  • D.随机扰动所有内生特征

答案:B。SCM 中反事实的关键是“干预+机制重算”:固定机制与噪声,干预目标变量后沿结构方程更新下游特征。A 篡改噪声分布,C 修改的是模型参数,D 无差别扰动所有内生变量,都会破坏因果一致性。

Q10. 反事实生成方法演进中出现的代表性技术有?

多选题 · hard

  • A.距离导向近邻搜索法← 正确答案
  • B.受限优化规划求解术← 正确答案
  • C.生成对抗网络式线索← 正确答案
  • D.随机森林剪枝策略法

答案:ABC。方法演进从距离导向搜索起步,经历受限优化显式约束,再到生成对抗网络与因果正则。D 是树模型压缩技巧,与反事实生成无关。