有不少团队在落地算法公平审计时,会碰到一个很拧巴的现象:同一个模型,同一个训练集,同一个受保护属性,业务方和技术方却得出完全相反的“不公平”结论。业务方说“模型对女性申请人的拒绝率高了 12%,必须改”,算法工程师说“可这 12% 主要是学历和工作年限带来的,和性别没有直接因果路径”。两边都做了分析,用的也都是常规的公平性指标,但谁也说服不了谁。
问题出在哪里?出在双方默认的“因果模型”不一样。业务方默认性别会经学历、工作年限间接影响还款能力,算法工程师默认学历和工作年限是独立混杂因子。这两套假设都合理,但得出的结论截然不同。这就是“竞争性结构因果模型”在公平审计里的典型冲突。
这篇文章要讨论的不是某一个公平性算法,而是一个更底层的能力:让系统具备因果感知(Causal Perception)。
我会先解释因果感知、结构因果模型(SCM)和情境公平(Situated Fairness)这三个概念之间的关系,再给出一个可落地的公平审计系统设计,包含候选因果图管理、效应估计、策略配置和验证方法。读完你会理解:为什么只优化一个公平指标远远不够,以及当多个 SCM 同时存在时,该怎么用“情境”去收敛分歧。
1. 这篇文章真正要解决的问题
先把结论放在前面:如果模型只感知“相关性”,那么任何公平性指标都只是统计层面的修修补补;只有让公平审计站在“因果”的高度,才能区分哪些差异应该被消除,哪些差异是合法的业务信号。
这句话听起来像套话,但它对应真实的工程困境。
第一,相关性模型无法回答“干预问题”。例如“如果给女性申请人更高的授信额度,违约率会不会上升”,普通分类模型答不了,因为训练数据里女性申请人的额度分布本身已经受到了历史政策影响。这个反事实问题,只有在因果框架下才能被形式化。
第二,公平审计中最难的不是计算指标,而是确认“受保护属性对结果的影响路径”。影响可以走直接路径,比如审批系统里确实有“性别”字段参与打分;也可以走间接路径,比如性别影响专业选择,专业影响收入,收入影响还款能力;还可以被混杂因子解释,比如地区同时影响性别结构和收入水平。你是按哪条路径来定义“不公平”的?在很多团队里,这个前提根本没有被显式记录。
第三,不同的领域专家会给出不同的 SCM。你找信贷专家,他画出“教育→收入→风险”的图;你找社会学背景的同事,他坚持“性别→教育机会→收入→风险”才是主路径。这两个图都可能符合数据拟合结果,却对应不同的公平策略。这就是竞争性 SCM 的由来。
第四,公平不是脱离场景的绝对值。同样是“性别不能直接影响授信”,在消费者信贷场景和在小微企业贷场景里,政策含义完全不同。前者更强调个人反事实公平,后者更强调组织层面的机会平等。
所以这篇文章真正要解决的问题可以拆成三块:
- 因果感知到底指什么,它和普通可解释性有什么区别;
- 当多个 SCM 相互竞争时,如何把分歧显性化,而不是在代码里偷偷选一个“看起来合理”的图;
- 情境公平如何提供一套选择机制,让团队在具体业务场景里判定哪个因果假设应该主导最终决策。
2. 核心概念速览:因果感知、SCM 与情境公平
2.1 因果感知:从“看见相关”到“看见干预”
因果感知这个概念最早被讨论时,更多偏向认知科学,指人类对因果关系的直觉判断。但在机器学习系统里,我更愿意把它定义为:系统能够把一次输入转换,理解成因果结构中的某条路径,并据此回答“干预后会发生什么”或“如果当时不同,会怎样”。
普通感知是“特征 → 预测”,因果感知是“特征 → 节点与边 → 潜在结果”。差别不在于模型结构,而在于系统对外暴露的用户界面。比如传统模型解释工具给出的是 SHAP 值,“学历特征贡献了 0.23”;具备因果感知的审计系统给出的是“在给定 SCM 下,学历到风险之间存在受保护的直接效应,其数值是 0.31,置信区间是 [0.22, 0.40]”。前者让人知道什么特征重要,后者让人知道改变什么节点能带来什么结果。
工程上,因果感知不一定要求每个上线模型都改成结构因果模型,更现实的做法是:在模型外围建立一条因果审计链路,用候选 SCM 来解读模型行为。模型内部仍然可以是一个梯度提升树,但审计层替代了“拍脑袋解释”。
2.2 SCM:结构因果模型是因果感知的建模语言
结构因果模型由三部分组成:
- 一组外生变量 U,代表未观测的扰动;
- 一组内生变量 V,代表系统里我们关心的因素;
- 一组结构方程,说明每个内生变量如何由它的父节点和外生变量决定。
形式上可以写成:
V_i = f_i(Pa(V_i), U_i), i = 1, 2, ..., n再加上一个有向无环图,规定 Pa(V_i) 是谁,整个 SCM 就成了一个可以执行干预和反事实推演的“因果模拟器”。
SCM 真正厉害的地方在于它把“如果干预 X=x”和“如果当时 X 其实是 x'”都变成了可计算的语义。干预对应 do 算子,比如 do(loan_amount = 8000),它会把原本指向授信额度的结构方程替换成常量,然后重新计算下游变量。反事实则是在给定某个样本事实的前提下,问“如果当时授课信额度没有降到 5000,这个人的违约概率会是多少”。
对我们这个主题来说,SCM 的意义在于:公平性判断的每一步,都必须能落到图上某条边或某个路径上。凡是说不清因果路径的公平指标,最终都会在评审会上被一句“相关不等于因果”打回来。
2.3 情境公平:公平不是一个数,而是一组约束
情境公平是一个更偏向系统设计的观点:公平的定义、度量标准和决策策略,不能脱离模型被部署的具体场景。同一个反事实公平指标,在信用评分、招聘筛选、医疗分诊中的含义和可接受阈值完全不同。
我建议把情境公平理解成一个元组:
情境公平 = f(领域, 人群, 法律制度, 因果假设, 可干预节点, 成本约束)- 领域决定哪些变量是敏感的;
- 人群决定样本范围和反事实对象;
- 法律制度决定哪些路径被明确禁止;
- 因果假设决定哪些边存在;
- 可干预节点决定公平策略从哪儿入手;
- 成本约束决定你能接受多大的公平性提升代价。
这意味着实现情境公平,不只是调一个fairness_threshold参数,而是要把业务规则翻译成因果约束,并让系统在多种 SCM 下都满足这些约束。
3. 因果感知的两种实现路线:端到端改造 vs 外挂审计层
很多团队一看到“因果公平”就想把模型换成因果模型,这其实是一条很重的路。实现因果感知有两条路线,用途不同。
3.1 路线 A:端到端因果表示学习
这种路线要求训练阶段就把因果结构编码进模型,比如用因果表示学习、干预增强训练、结构化变分自编码器等方法,让模型内部隐变量尽量对齐因果结构。优点是模型本身能对干预和反事实做出响应;缺点是训练成本高、可解释性仍然不透明,而且一旦业务侧换了因果假设,整个模型要重训。
端到端路线适合实验性系统,或者对推理可解释性要求极高的监管场景。但对多数业务团队来说,它不是第一优先级。
3.2 路线 B:外挂审计式因果感知
这条路线更务实:保持原有预测模型不动,在其外围新增一套因果审计服务。审计服务做四件事:
- 加载一个或一组候选 SCM;
- 用观测数据和领域先验估计因果效应;
- 计算路径层面或反事实层面的公平指标;
- 输出结构化报告,说明哪个路径贡献了不公平。
外挂审计式的粒度在“模型行为”,而不是“模型内部参数”。它的优点是模型可以随时替换,候选 SCM 也可以版本化;缺点是无法保证模型内部没有偷偷用敏感信息。解决方式是在模型特征层做阻断测试:把敏感节点及其下游代理变量从特征集里删除,观察预测变化。
生产环境里更推荐的组合是:预测模型用成熟机器学习方法,因果感知放在审计层,两者通过标准接口隔离。这样公平审计升级时不需要重训模型,因果假设变更时也不需要改线上 Serving 代码。
4. 竞争性 SCM:相同数据、不同因果图、不同公平结论
4.1 竞争性 SCM 是怎么产生的
因果发现很难,纯数据驱动的因果发现尤其难。大部分生产系统里的 SCM 依赖领域专家手工绘制,而专家之间会有合理分歧。这种分歧不来自数据错漏,而来自对“变量之间为什么相关”的理论解释不同。
举一个信贷场景的例子。
候选图 A(简化版):
gender -> education -> income gender -> income income -> loan_amount loan_amount -> default_risk候选图 B(简化版):
education -> income income -> loan_amount loan_amount -> default_risk region -> gender_ratio region -> income在图 A 里,gender 对 income 有直接因果路径,那么当模型用 income 做决策时,就间接传递了性别影响。在图 B 里,gender 和 income 没有直接因果边,income 差异主要来自 region 混杂,那么“性别差异”更多是统计相关,而不是因果歧视。
这两个图都能在一定程度上解释数据中“女性平均收入更低”的现象,但它们给出的公平审计结论完全不同。图 A 认为需要干预收入分配或教育机会;图 B 认为当前模型不应为收入差异负责,需要进一步检查 region 是否存在结构性歧视。
这就是竞争性 SCM 的核心特征:多个图在该数据集上都没有被证伪,却指向不同的公平策略。如果审计系统只内置一个图,等于用实现细节替换了领域争论,这是很危险的。
4.2 竞争性 SCM 的标准化表达
工程上,不应该让每个 SCM 都以论文形式散落在文档里,而应该让它成为一个可版本化、可比较的数据结构。最基础的形式就是 DAG 定义。
我建议用类似下面的结构来登记候选 SCM:
| 字段 | 说明 | 示例 |
|---|---|---|
| scm_id | 因果图的唯一标识 | scm_loan_v2 |
| version | 图版本 | 2.3 |
| owner | 维护该图的人或团队 | credit_risk_policy |
| status | 草稿/评审中/已批准/已废弃 | approved |
| assumptions | 关键假设记录 | gender 影响教育机会 |
| edges | 有向边列表 | gender -> education |
| forbidden_paths | 禁止传导的路径 | gender -> loan_amount |
| allowed_paths | 允许传导的路径 | education -> income |
只要候选 SCM 都能以这种格式登记,后续就可以批量跑效应估计和公平指标。
4.3 竞争性 SCM 的处理策略
处理竞争性 SCM 不是选一个最顺眼的,而是把它们全部纳入敏感性分析。常见做法有三种:
- 共识路径审计:只把多个 SCM 中一致的边视为可信路径,针对这些共识路径做公平约束。
- 最坏情况审计:在多个 SCM 中,计算每个公平指标的最不利值,只要最不利值仍可通过阈值,就认为模型在该情境下可接受。
- 图概率加权:为每个候选 SCM 分配一个先验概率,用贝叶斯模型平均的方式汇总公平指标。
实操中,第一种最直观,第二种最保守,第三种最科学但在工程上较复杂。我的建议是先做共识路径审计,把它作为每周自动报告;对高风险场景再加做最坏情况审计。
5. 情境公平:用“场景”收束因果分歧
上一节留下了一个问题:多个 SCM 竞争时,该信哪个?答案不可能只来自数据,必须来自部署情境。
5.1 情境公平的决策维度
情境公平不是一句“公平要结合上下文”的废话,它把上下文拆成了可操作的约束。
- 受保护属性集合:不同国家和地区对敏感属性的定义不同。性别、年龄、地域、婚姻状态、民族,这些字段在哪些场景不能被用于决策,必须由合规团队给出明确清单。
- 可干预节点:一个公平策略是否可行,取决于你能不能实际影响某个因果节点。比如“提升女性员工晋升率”可以干预晋升评审环节,但很难直接干预“家庭分工”。如果 SCM 里有一条“gender -> promotion”,而且 promotion 是可控节点,那么公平策略就可以落在这里;如果关键路径经过完全不可控的节点,这条路径的公平审计价值就很有限。
- 路径允许矩阵:非敏感属性也可能继承敏感信息。情境公平要求明确哪些路径被允许传导敏感属性。比如“gender -> education -> income -> credit_score”可能是政策不允许的完整传导链,但“gender -> insurance_claim_history -> risk”在保险领域则要根据法规具体判断。
- 决策成本:降低不公平往往伴随业务成本,比如提升整体授信通过率会引入更高的坏账率。情境公平要求把成本写入评估指标,而不是只在公平性世界里谈公平。
- 利益相关者反馈:真正被决策影响的人群对“公平”的感知,和算法工程师写的数学定义经常不一样。情境公平建议在做完离线审计后,把结果放到业务评审里,而不是只盯着指标审批。
5.2 从推理证据到情境约束
推理证据只回答“因果效应有多大”,情境约束回答“这个效应能不能存在”。把两者结合的方式是把公平指标输出成带条件的分级报告:
路径效应报告: - 路径: gender -> income 直接效应: 0.31 置信区间: [0.22, 0.40] 情境判断: 该路径在消费信贷场景下被禁止 建议: 阻断 income 作为授信模型的输入特征 - 路径: education -> income 直接效应: 0.08 置信区间: [-0.01, 0.17] 情境判断: 该路径允许存在,但需要持续监控 建议: 定期复核教育对收入影响的稳定性这种报告比单纯输出一个dp_ratio=0.87有用得多,因为它把统计结果和业务规则粘在了一起。
6. 一个最小可行的因果感知公平审计系统设计
下面这套设计是一个偏工程的最小示例,适合作为团队内部公平审计服务的第一版骨架。
6.1 系统整体架构
整个链路分为五层:
| 层 | 职责 | 输入 | 输出 |
|---|---|---|---|
| 数据层 | 准备训练/审计数据集,做特征脱敏 | 原始数据表 | 标准化特征表 |
| 因果图管理层 | 维护多个候选 SCM 的版本、状态和边定义 | 专家输入的图定义 | 可执行的因果图对象 |
| 效应估计引擎 | 基于数据估计因果效应和反事实 | 数据 + 因果图 | 效应估计结果 |
| 公平审计引擎 | 计算路径级公平指标、反事实公平指标 | 效应估计结果 + 预测结果 | 审计报告 |
| 策略引擎 | 根据情境公平配置生成决策建议 | 审计报告 + 配置 | 阻断/豁免/复核建议 |
6.2 候选 SCM 定义示例
下面的代码是教学简化版,具体的 API 请以你实际使用的因果推断库版本为准。这里重点展示“多个 SCM 如何被登记和比较”。
# 文件路径:causal_fairness/scm_registry.py from dataclasses import dataclass, field @dataclass class Edge: source: str target: str @dataclass class CandidateSCM: scm_id: str version: str status: str # draft / review / approved / deprecated edges: list[Edge] forbidden_paths: list[list[str]] = field(default_factory=list) allowed_paths: list[list[str]] = field(default_factory=list) # 候选图 A:性别会直接影响收入,并教育影响收入 scm_loan_v2 = CandidateSCM( scm_id="scm_loan", version="2.0", status="approved", edges=[ Edge("gender", "education"), Edge("gender", "income"), Edge("education", "income"), Edge("income", "loan_amount"), Edge("loan_amount", "default_risk"), ], forbidden_paths=[["gender", "income"], ["gender", "loan_amount"]], allowed_paths=[["education", "income"]], ) # 候选图 B:性别与收入之间没有直接因果边,地区是混杂因子 scm_loan_v3_alternative = CandidateSCM( scm_id="scm_loan", version="3.0", status="review", edges=[ Edge("region", "gender_ratio"), Edge("region", "income"), Edge("education", "income"), Edge("income", "loan_amount"), Edge("loan_amount", "default_risk"), ], forbidden_paths=[["gender_ratio", "income"]], allowed_paths=[["education", "income"], ["region", "income"]], ) def compare_scm_paths(scm_list): for scm in scm_list: print(f"{scm.scm_id}:{scm.version} -> {len(scm.edges)} edges")这段代码的核心价值不在于因果推断,而在于让候选 SCM 变成可比较、可追溯的对象。你后续做估计、报告、策略判断,都应该基于这些对象。
6.3 效应估计与路径公平计算
下面示例使用常见的 DoWhy/pywhy 风格接口,用来估计某个干预变量到结果变量的因果效应。主要起到演示目的,真实生产环境需要根据数据形态选择合适的估计方法。
# 文件路径:causal_fairness/effect_estimator.py import dowhy import pandas as pd def estimate_path_effect(df: pd.DataFrame, scm, treatment: str, outcome: str) -> dict: # 将候选 SCM 的边定义转换为因果图字符串 graph_str = "digraph { " for edge in scm.edges: graph_str += f"{edge.source} -> {edge.target}; " graph_str += "}" model = dowhy.CausalModel( data=df, treatment=treatment, outcome=outcome, graph=graph_str ) identified_estimand = model.identify_effect(proceed_when_unidentifiable=True) estimate = model.estimate_effect( identified_estimand, method_name="backdoor.linear_regression", test_significance=True ) return { "scm_id": scm.scm_id, "scm_version": scm.version, "treatment": treatment, "outcome": outcome, "effect_value": estimate.value, "confidence_interval": estimate.get_confidence_intervals() }使用该函数时,数据里必须包含图中的所有变量。如果数据缺失某个变量,估计结果会失真。这也是后续最常见的排错点。
6.4 情境公平策略配置
情境公平不应该散落在代码里,而是用独立配置文件描述。下面是一个 YAML 配置示例。
# 文件路径:causal_fairness/scenario_configs/consumer_loan_v1.yaml scenario: name: consumer_loan_approval_v1 domain: credit_risk protected_attributes: - gender - age candidate_scms: - scm_loan_v2 - scm_loan_v3_alternative fairness_metrics: - name: path_effect_ratio path: - gender - loan_amount max_allowed: 0.2 - name: counterfactual_parity threshold: 0.1 decision_rules: - condition: forbidden_path_effect > 0.2 action: block_model_launch - condition: consensus_path_effect < 0.05 action: allow_with_monitoring这样配置的好处是,业务策略变更时不需要改代码,只需要更新配置文件,并且可以保留历史版本,方便审计追溯。
6.5 运行与验证
假设你已经准备好了数据表loan_audit.csv,字段包括gender、age、education、income、region、loan_amount、default_risk和模型预测predict_score。运行流程如下。
第一步,检查数据:
python -c "import pandas as pd; df=pd.read_csv('loan_audit.csv'); print(df.shape); print(df.isna().sum())"第二步,读取候选 SCM 并计算效应:
python causal_fairness/effect_estimator.py --config causal_fairness/scenario_configs/consumer_loan_v1.yaml第三步,查看输出报告。报告至少应该包含:
- 每个候选 SCM 下,受保护属性到结果的路径效应;
- 所有 SCM 共识路径上的公平指标;
- 最坏情况下公平指标的数值;
- 策略引擎给出的动作建议。
判断系统是否跑通,不是看最终有没有红色警告,而是看你能不能回答三个问题:用了几张因果图?每条关键路径的效应是多少?策略引擎基于哪条规则做出了什么动作?如果这三个问题都能从输出里找到答案,链路就是通的。
7. 运行结果与效果评估方法
公平审计系统的效果评估,不能只看“指标有没有变绿”,还要评估整个审计链路的可信度。
7.1 数据层面的验证
在数据缺失时,很多因果效应估计会引入严重的偏差。验证方法如下:
- 检查每个候选 SCM 的节点是否都能映射到数据列;
- 对外生变量扰动做蒙特卡洛模拟,观察效应估计的稳定性;
- 对一个已知无因果效应的边做安慰剂检验,比如把
education和default_risk的因果方向故意反转,应该检测出不合理效应。
7.2 模型层面的验证
因果感知审计层对预测模型的解读,需要和模型自身行为保持一致。可以使用影子模式验证:
- 让审计服务在模型上线前运行一段时间,输出路径效应报告;
- 对比在不同时间窗口内,路径效应的波动是否在可接受范围内;
- 如果效应估计在短时间内剧烈波动,优先怀疑数据分布漂移,而不是模型被打分机制篡改。
7.3 公平效果的分层评估
建议至少从三个层级输出结果:
| 层级 | 回答的问题 | 典型指标 |
|---|---|---|
| 模型层 | 模型输出是否存在群体差异 | 人口统计均等差、机会均等差 |
| 路径层 | 这种差异通过哪些因果路径产生 | 路径直接效应、路径间接效应 |
| 反事实层 | 如果改变受保护属性,结果会如何 | 反事实公平违背率 |
路径层和反事实层是因果感知系统的核心输出,模型层指标只用来做快速预警,不能单独作为决策依据。
8. 常见问题与排查思路
下面这张表直接对应我在实际工程咨询中被问得最多的问题。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 候选 SCM 加载后边数异常 | 配置文件中边定义重复或节点命名不一致 | 打印 SCM 对象,核对 source 和 target 是否都能匹配数据列 | 统一节点命名规范,加载时做节点去重和数据列校验 |
| 不同 SCM 估计效应差异巨大 | 图结构对后门路径集合影响很大 | 对比各 SCM 的调整变量集合,查看差异集中在哪些变量 | 把差异固化为“图分歧报告”,提交业务评审 |
| 同一 SCM 下效应置信区间过大 | 样本量不足或受保护属性类别不均衡 | 查看分组的样本量,检查类别分布 | 对少数类别做样本加权,或改用分层估计 |
| 路径公平指标和模型层指标趋势相反 | 模型层指标没有控制混杂,路径层指标做了调整 | 检查两个指标的定义是否一致 | 明确指标口径,在审计报告中同时展示两层指标 |
| 策略引擎没有触发拦截 | YAML 配置里路径节点名称与 SCM 边定义不一致 | 检查配置里的 path 是否在 SCM 中存在 | 增加配置校验,路径节点引用不存在的变量时直接报错 |
| 反事实公平估计在线上表现不稳定 | 线上数据分布与训练分布不一致 | 监控特征分布漂移指标 | 上线前做数据漂移检测,漂移超限时回退到影子模式 |
| 团队不知道该信哪张因果图 | 没有做图分歧评审 | 建立因果图评审流程,记录每张图的适用业务范围 | 将图状态从“草稿”提升到“已批准”前必须有评审记录 |
9. 最佳实践与工程建议
9.1 把因果图当成代码来管理
因果图是公平审计系统的核心资产,应该像代码一样做版本管理、Code Review 和发布流程。不要直接在生产环境里手工改图。每个图必须有一个 owner,任何结构边变更都要记录变更原因。
9.2 先做共识路径,再做全路径
多个候选 SCM 存在时,先基于所有图都同意的边做“基线公平审计”。这个基线通常是无争议的。如果基线审计都过不了,后面的图分歧讨论就没有意义。只有基线通过后,才需要进一步分析分歧路径带来的额外风险。
9.3 始终保留反事实可解释性
一个只输出“违反公平”的审计系统没有闭环价值。每次审计报告都应该回答:违反发生在哪条路径?如果保留这条路径,业务收益是多少?如果阻断这条路径,业务损失是多少?把这三件事写在一起,业务方才能做决策。
9.4 生产环境注意安全与权限
公平审计系统往往需要访问包含敏感属性的数据。这类数据必须遵循最小权限原则:
- 审计数据脱敏后再进入计算环境;
- 候选 SCM 和图配置改动需要审批记录;
- 审计报告对外输出时,禁止展示个体的反事实预测,只能展示群体效应和置信区间;
- 所有策略动作留痕,方便事后归因。
9.5 不要急着上复杂因果发现算法
很多团队刚接触因果推断,就想用自动因果发现算法从数据里学一张图。实际上,纯自动因果发现在有限样本和混杂因子下根本不稳。稳妥的顺序是:先由领域专家给出候选 SCM,用数据估计效应;等到候选 SCM 稳定后,再尝试用因果发现算法去做反事实校验,而不是直接替代专家图。
9.6 建立公平策略的灰度与回滚机制
公平审计的建议一旦要落到线上策略,建议走灰度流程。比如先在 5% 流量上执行“阻断某条因果路径”的规则,观测业务指标和公平指标变化,稳定后再扩大到 100%。如果出现坏账率上升或用户体验下降,要能一键回滚到原有策略。这里特别提醒:任何线上策略变更前都要备份原策略配置,并在测试环境验证回滚脚本。
10. 结语与下一步学习方向
因果感知不是要把所有预测模型改造成结构因果模型,而是让系统具备“看到因果路径”的能力。竞争性 SCM 也不一定是麻烦,它反而是把领域知识显性化的机会。情境公平则是让这些因果知识落到决策层面的桥梁。
如果你所在的团队正在做公平审计,下面这套行动路径可以直接参考:
- 先盘点当前模型涉及的受保护属性和决策场景;
- 请业务专家给出第一版候选 SCM,哪怕很粗糙也可以;
- 用本文第 6 节的最小系统,把候选 SCM 登记、效应估计、路径公平输出三件事跑通;
- 建立因果图版本评审流程,把图分歧记录在案;
- 再考虑要不要把端到端因果表示学习引入训练阶段。
下一步可以继续深入的方向有三个:一是因果表示学习,它解决的是“特征本身如何编码因果信息”的问题;二是多图敏感性分析,它对本文讲的竞争性 SCM 做更严谨的数学处理,比如部分识别和最优干预;三是反事实公平的在线部署,它会把审计层的判断实时反馈给模型服务。
记住一个原则:公平审计系统最重要的输出不是“公平/不公平”二值结论,而是可追溯的因果证据链。有了这条证据链,即使决策结果被质疑,也能说清楚“依据什么路径结构、经过什么数据、在什么情境下做出了这个判断”。这才是因果感知真正值得投入的原因。