跳到内容

13.2 公平性、解释与可申诉性:指标不能替你决定伤害

模型准备进入北境前哨时,低分群体提出质疑:系统为何这样判断,错误记录如何更正,谁来受理申诉?

北境前哨的低分引起争议。团队计算后发现,各区域总体准确率接近,北境的漏判率却明显更高。另一个解释工具说“设备在线时长贡献最大”,但这既不能证明设备导致低绩效,也没有告诉前哨如何更正漏报记录。

公平性、解释性和可申诉性解决不同问题:公平性比较结果与伤害分布;解释说明模型或系统怎样产生某个输出;申诉机制让受影响者质疑数据、理由和决定。

本课目标

  • 正确计算分组 confusion metrics 和 selection rate;
  • 根据伤害选择 fairness criterion,而不是追求指标齐全;
  • 处理样本量、交叉群体、阈值和不确定性;
  • 区分 feature attribution、因果解释和 recourse;
  • 把通知、纠正与申诉接入系统流程。

1. “敏感属性不用作特征”不等于公平

邮编、学校、职业、语言和设备类型可能成为群体代理;历史标签也可能反映过去的不平等。删除显式敏感字段还会让团队无法分组评估。

先区分:

  • representation harm:刻板印象、侮辱、污名化和不可见;
  • allocation harm:工作、贷款、补给、医疗等机会或资源分配不公;
  • quality-of-service harm:某些语言、肤色、设备或障碍群体错误更多;
  • surveillance/privacy harm:某些群体承受更多监控和推断;
  • feedback harm:输出改变机会,未来数据再证明旧偏见。

每类伤害对应的指标、参与者和控制不同。

2. 先把分母算对

二分类中:

$$ TPR=\frac{TP}{TP+FN},\qquad FPR=\frac{FP}{FP+TN},\qquad PPV=\frac{TP}{TP+FP}. $$

FP 除以整个群体人数得到的是假阳性占群体比例,不是 FPR。一个最小实现:

python
from dataclasses import dataclass
from math import nan

@dataclass(frozen=True)
class GroupMetrics:
    n: int
    selection_rate: float
    tpr: float
    fpr: float
    ppv: float

def safe_ratio(num: int, den: int) -> float:
    return num / den if den else nan

def binary_group_metrics(y_true, y_pred) -> GroupMetrics:
    pairs = list(zip(y_true, y_pred))
    tp = sum(y == 1 and p == 1 for y, p in pairs)
    fp = sum(y == 0 and p == 1 for y, p in pairs)
    tn = sum(y == 0 and p == 0 for y, p in pairs)
    fn = sum(y == 1 and p == 0 for y, p in pairs)
    n = len(pairs)
    return GroupMetrics(
        n=n,
        selection_rate=safe_ratio(tp + fp, n),
        tpr=safe_ratio(tp, tp + fn),
        fpr=safe_ratio(fp, fp + tn),
        ppv=safe_ratio(tp, tp + fp),
    )

报告 point estimate 之外,还要给置信区间或 bootstrap distribution。小群体上一次错误就可能造成大幅波动;nan 不应被默认为零。

3. 公平性定义来自伤害模型

  • Demographic parity:各群体正预测率相近。适合关注机会分配结果,但可能忽略真实需求或标签质量。
  • Equal opportunity:各群体 TPR 相近。适合漏掉合格者是核心伤害的场景。
  • Equalized odds:各群体 TPR 与 FPR 都相近。同时关注漏判和误判。
  • Predictive parity:各群体 PPV 相近。关注收到正预测的人中有多少确实为正。
  • Calibration within groups:同样预测分数在各群体中对应相近实际频率。

当群体 base rate 不同且模型不完美时,一些 calibration/predictive parity 与 error-rate parity 通常不能同时满足。这里的结论有条件,不是“所有公平指标永远不可能兼得”。选择应由具体伤害、权利、业务过程和适用法律决定,并记录 trade-off。

4. 阈值不是纯技术参数

同一 score 在各群体使用统一阈值可能产生不同错误率;使用不同阈值又可能带来差别待遇和法律问题。工程团队不能只凭曲线自行决定。

阈值评审要明确:

  • FP 与 FN 分别伤害谁;
  • 后续是否有复核和纠正;
  • score 是否校准,标签是否可靠;
  • 容量约束是否把模型变成资源配额器;
  • 分组阈值是否允许且可解释;
  • 阈值变化怎样影响整体和各 slice。

“假阳性率差距超过三倍”不是通用硬标准。可接受差异和测试方式应来自适用规则与预先定义的风险门槛。

5. 交叉群体和测量误差

只看性别或地区单维平均会掩盖 intersectional harms,例如“北境 + 旧设备 + 夜班”。但不断细分又会产生小样本和多重比较问题。

采用预注册关键 slices、层级/置信区间、最小样本披露和定性审查。对稀有高严重性伤害,即使无法稳定估计总体发生率,也不能因此当作不存在。

群体属性本身可能缺失、由代理推断或分类方式不被当事人接受。记录采集依据、用途、访问限制和 unknown/multiple categories;不要为了公平分析无限收集敏感数据。

6. Feature Attribution 不是因果解释

线性系数、树路径、permutation importance、SHAP 和 LIME 回答的问题不同。SHAP/LIME 常用于描述模型在某个表示附近如何响应特征变化;结果依赖 background data、feature dependence、perturbation 和 model output scale。

“设备在线时长的 SHAP 值为 -0.3”说明在特定解释设置下,它把模型输出向某方向移动,不证明:

  • 设备时长导致真实绩效降低;
  • 改设备时长一定改变最终决定;
  • 模型没有使用相关代理特征;
  • 整个系统公平或正确;
  • 这是面向用户的充分理由。

相关特征会分摊 attribution;输入稍变时局部解释也可能不稳定。对解释方法做 fidelity、stability 和 sensitivity test。

7. 内在可解释不等于容易理解

线性模型的计算结构透明,但上千个交互、归一化、缺失值编码和代理特征仍难以解释。深度模型也可以通过受约束任务设计、可验证中间输出和 evidence traces 提供部分透明度。

真正需要的解释取决于对象:

  • 开发者:特征依赖、错误切片、gradient/attribution;
  • 审核员:证据、阈值、规则与不确定性;
  • 受影响者:使用了哪些数据、决定理由、怎样更正与申诉;
  • 审计者:版本、数据 lineage、control evidence 和责任链。

一个漂亮的 SHAP 图不能同时满足四类需求。

8. Recourse 必须可行动且不转嫁责任

Counterfactual explanation 可能说:“如果收入增加 20%,贷款会通过。”这不一定可行动、公平或因果有效。好的 recourse 应:

  • 不建议修改年龄、族群等不可变属性;
  • 不要求不现实或有害的成本;
  • 使用业务上允许改变的字段;
  • 考虑字段依赖和未来稳定性;
  • 不泄露风控规则供滥用;
  • 不把系统性数据错误变成个人自我修正义务。

如果原始记录错了,首要路径是更正数据和重审决定,不是要求用户改变行为。

9. 可申诉性需要真实操作权限

通知应说明 AI 参与的程度、决定用途、主要数据类别、可联系渠道和复核时限。申诉流程要允许:

  1. 安全地验证身份;
  2. 查看与决定有关的数据和理由;
  3. 更正错误或补充上下文;
  4. 由有权限、未盲从模型的人复核;
  5. 修改下游结果并通知相关系统;
  6. 将事件反馈到数据、模型和政策改进。

监控申诉率之外,还看可达性、处理时长、改判率、群体差异和重复原因。申诉少可能表示系统好,也可能表示渠道不可见或代价太高。

常见误区

  • 不输入敏感属性就不会歧视:代理特征和标签机制仍会传递差异。
  • 总体准确率相同就公平:错误类型和现实后果可能不同。
  • 所有公平指标都必须满足:应根据伤害选择并记录不可兼得条件。
  • SHAP 给出了“为什么”:它通常给出模型归因,不是因果和正当性证明。
  • 人工可以覆盖错误:没有信息、权限和时间的复核只是形式。

练习

  1. 修正一段把假阳性除以总人数的错误代码。
  2. 为补给分配选择一个 primary fairness metric,并说明没有选择另两个的理由。
  3. 设计一个包含小样本置信区间的 intersectional slice 表。
  4. 列出 SHAP attribution 与因果解释的四个差别。
  5. 为一次数据漏报导致的低分写完整申诉与下游纠正流程。

小结

公平性评估把具体伤害映射到群体指标和切片,不提供脱离场景的唯一答案。解释方法揭示模型或系统的局部行为,但不能证明因果、公平或正当;通知、纠正、人工复核和申诉才让受影响者真正拥有救济路径。

下一课转向主动攻击者。数据、模型、RAG 文档和工具链都可能成为入口,单靠更强的 system prompt 守不住这些边界。

Built with VitePress | Software Systems Atlas