AI 偏见与公平性:识别、度量与缓解方法

随着机器学习系统进入招聘、信贷、医疗、刑事司法等高风险决策场景,模型输出的「公平性」已从伦理议题变成工程与合规的硬约束。一个在高准确率下表现优异的模型,仍可能对某些受保护群体(如特定性别、种族、年龄)产生系统性不利。本教程系统梳理偏见的来源、公平性度量指标、缓解技术,以及工程实践中必须面对的权衡,帮助你在真实项目中识别并降低歧视性风险。

为什么公平性重要:真实案例

公平性之所以重要,是因为模型决策会直接影响人的机会与权利。以下三起被广泛报道的案例,说明了偏见如何在生产中造成真实伤害。

招聘场景中的性别偏见

2018 年路透社报道,Amazon 曾内部开发一套简历自动筛选系统,用于给求职者打分。由于历史训练数据主要来自公司过去以男性为主的工程招聘记录,模型学习到「男性」相关词汇(如男子校队运动)对应更高分,并系统性压低包含「女性」相关词汇(如女子象棋俱乐部)的简历。该系统最终因对女性求职者存在歧视倾向而被弃用。它揭示了一个典型问题:当历史数据本身包含社会偏见时,模型会把偏见「固化」并自动放大。

信贷场景中的性别差异

2019 年,Apple Card(由 Goldman Sachs 承保)被曝出存在明显的性别差异:即使是收入、信用状况相近的夫妻,妻子获得的授信额度也可能远低于丈夫。此事引发纽约金融服务部调查。尽管发卡方否认算法使用性别字段,但模型使用的proxy(代理)特征(消费行为、地理位置等)可能与性别高度相关,从而产生 disparate impact(差异影响)。

刑事风险评估中的种族偏见

这是最常被引用的公平性案例。ProPublica 在 2016 年发布调查报道「Machine Bias」,分析了 Florida 州 Broward County 超过 7000 名被告的 COMPAS 累犯风险评估分数。COMPAS 由 Northpointe 公司开发,用于辅助法官判断保释与量刑。ProPublica 发现:

  • 在「被标为高风险但实际未再犯」的人群中,黑人被告占比 44.9%,白人被告仅 23.5%。
  • 在「被标为低风险但实际再犯」的人群中,白人被告占比 47.7%,黑人被告为 28.0%。

也就是说,算法对黑人被告更容易「误报」为高风险,对白人被告更容易「漏报」再犯风险。即便模型整体准确率相近,错误方向却沿着种族清晰分裂。这一发现引发了关于「公平性应如何定义」的长期学术争论(详见后文 Equalized Odds 与 Equal Opportunity 的冲突)。

偏见的来源

要缓解偏见,先要理解它从哪里来。偏见并非只出现在「数据」里,而是贯穿整个机器学习生命周期。

数据偏差(Data Bias)

  • 历史偏见(Historical bias):社会既有的不平等被记录进数据。例如过去招聘中存在的性别失衡,会让监督学习重复该模式。
  • 代表性偏差(Representation bias):训练样本未覆盖某些群体。例如面部识别系统在深肤色、女性群体上错误率更高,常因为训练集以浅肤色男性为主。
  • 测量偏差(Measurement bias):用于训练的特征并不能准确衡量真实目标,且测量误差在不同群体间分布不均。

标注偏差(Annotation Bias)

标签来自人工标注时,标注者的主观判断会带入偏见。例如内容审核的标注指南模糊,不同背景的标注者对「有害内容」的判定标准不一致;在医疗数据中,不同医院、不同地区的诊断标准差异会形成群体间的系统性偏差。当标注本身带有群体相关的噪声,模型学到的就是被污染的「真相」。

反馈循环(Feedback Loop)

部署后的模型会反过来改变世界,使后续收集的数据进一步偏离。典型例子是警务预测系统:模型把警力集中派往某些社区,导致这些社区被记录更多「犯罪事件」,下一轮训练数据又强化「该社区更危险」的结论,形成自我实现的偏见循环(有时也称 selective label bias,即只有被系统关注到的行为才进入标签)。

公平性的定义与度量

公平性没有单一「正确答案」。不同定义在数学上往往彼此冲突,因此必须先明确业务场景到底要保护谁、保护什么。

Demographic Parity(人口均等 / 统计均等)

要求各受保护群体获得「正向预测」(如被批准贷款、被预测为低风险)的比例相等。形式化表示为:

P(Ŷ = 1 | A = 0) = P(Ŷ = 1 | A = 1)

其中 A 为受保护属性(如性别),Ŷ 为预测结果。Demographic Parity 不关心预测是否准确,只看结果分布是否均衡。它适合「机会分配」类场景,但会强制改变原本合理的差异。

Equalized Odds(均衡几率)

要求在每个真实标签 Y 下,不同群体的预测错误率一致。即同时满足:

P(Ŷ = 1 | Y = 1, A = 0) = P(Ŷ = 1 | Y = 1, A = 1)
P(Ŷ = 0 | Y = 0, A = 0) = P(Ŷ = 0 | Y = 0, A = 1)

也就是说,真阳性率与假阳性率在群体间相等。它保证了模型对不同群体的「能力判别」质量一致,是高风险场景(如刑事评估)更受推崇的定义。

Equal Opportunity(机会均等)

是 Equalized Odds 的宽松版本,只要求真阳性率相等:

P(Ŷ = 1 | Y = 1, A = 0) = P(Ŷ = 1 | Y = 1, A = 1)

它只关心「本应被正向预测的人」是否被公平对待,不约束假阳性率。对「漏掉真正有风险者」后果严重的场景(如疾病筛查)更适用。

一个关键冲突

Kleinberg、Mullainathan 与 Chouldechova 等人的研究指出:当不同群体的基础率(base rate)本身存在差异时,Equalized Odds、Demographic Parity 与校准(Calibration)三者无法同时成立。这被称为「公平性不可能定理」。因此工程中必须做选择,而非追求一个万能指标。

缓解方法

按干预发生的阶段,缓解技术分为预处理、训练中、后处理三类。

预处理:重加权与特征变换

在训练前调整数据,使偏见被削弱。

  • 重加权(Reweighting):为不同群体的样本分配权重,抵消历史偏差。
  • 差异影响去除(Disparate Impact Removal):对特征做线性变换,在尽量保留信息的同时降低其与受保护属性的相关性。
from aif360.sklearn.preprocessing import Reweighing

# 以受保护属性 priv 对训练集做重加权
rw = Reweighing(privileged_groups=[{"gender": 1}],
                unprivileged_groups=[{"gender": 0}])
X_train_rw, W_sample = rw.fit_transform(X_train, y_train)

训练中:约束与对抗去偏

在目标函数中加入公平性约束,或通过对抗训练剥离敏感信息。

  • 约束优化(Constrained optimization):在准确率损失可接受范围内,最小化公平性违背。Fairlearn 的 ExponentiatedGradient 即此类方法。
  • 对抗去偏(Adversarial Debiasing):训练一个对手网络,试图从预测中还原受保护属性;主模型则尽量让对手失败,从而隐式去除敏感信息。
from fairlearn.reductions import ExponentiatedGradient, DemographicParity

# 以人口均等为约束,训练一个尽量公平的模型
mitigator = ExponentiatedGradient(estimator=base_clf,
                                  constraints=DemographicParity())
mitigator.fit(X_train, y_train, sensitive_features=X_train["gender"])

后处理:阈值调整

训练完成后,为每个群体单独调整决策阈值,使某个公平性指标达标。典型方法是「均衡几率后处理」(Equalized Odds Postprocessing),在验证集上搜索能最小化误差且最接近 Equalized Odds 的群体专属阈值。它的优点是无需重训模型,便于在已上线系统上快速干预。

from fairlearn.postprocessing import ThresholdOptimizer

# 以均衡几率为目标,做群体专属阈值优化
post = ThresholdOptimizer(estimator=base_clf,
                          constraints="equalized_odds")
post.fit(X_train, y_train, sensitive_features=X_train["gender"])

公平性-准确性权衡

缓解偏见几乎总要付出代价。强制 Demographic Parity 往往会使整体准确率下降,因为模型被要求忽略与标签真实相关的群体差异。在 COMPAS 案例中,Northpointe 与 ProPublica 的核心分歧之一,就是应优先保证「群体误报率相等」(Equalized Odds 视角)还是「预测概率校准一致」(Calibration 视角),而二者在数学上不可兼得。

工程上应把权衡显式化:

  1. 明确受影响的利益相关者与潜在的危害类型(分配危害 vs 表征危害)。
  2. 选择与该场景匹配的一个或少数公平性指标,而非追求全部。
  3. 用「公平-准确」权衡曲线(Pareto 前沿)向业务方展示不同阈值下的取舍,由人做最终决策。
  4. 记录所选定义与理由,满足审计与合规要求。

工具与实践

把公平性纳入工作流,应优先使用成熟的开源工具,而非手工实现指标。

AI Fairness 360(AIF360)

由 IBM 推出的开源工具包,提供 70 余种公平性度量与 10 余种缓解算法(含重加权、对抗去偏、均衡几率后处理等),同时支持 Python 与 R。适合在研究与生产中对数据集与模型做端到端审计。

Fairlearn

由 Microsoft 主导的社区驱动开源项目,强调「公平是 socio-technical(社会技术)问题」。它提供度量 API(如 MetricFrame)与缓解算法(如 ExponentiatedGradientThresholdOptimizer),并配套使用案例(如信用卡违约模型中的性别差异评估)。

Google What-If Tool

Google PAIR 推出的可视化探针工具,可在极少编码下检查模型行为,支持切换假想情境、分析特征重要性、按群体切片查看多种公平性指标,并与 TensorBoard、Jupyter 集成,适合做交互式公平性探索。

推荐实践流程

  1. 定义:与业务、法务共同确定受保护属性与 fairness 目标。
  2. 度量:用 AIF360 或 Fairlearn 计算 Demographic Parity、Equalized Odds 等指标基线。
  3. 缓解:按场景选择预处理、训练中或后处理方法并对比。
  4. 监控:上线后持续监测群体指标漂移,避免反馈循环放大偏见。
  5. 记录:留存度量、决策阈值与选择理由,便于审计。

小结

AI 公平性不是模型训练完成后的「补丁」,而是贯穿数据、标注、训练、部署、监控全生命周期的系统工程。偏见既来自历史数据,也来自标注主观性与部署后的反馈循环;而公平性定义(Demographic Parity、Equalized Odds、Equal Opportunity)之间存在数学上的不可能同时成立,必须结合场景取舍。实践中应借助 AIF360、Fairlearn、What-If Tool 等成熟工具把度量与缓解标准化,并把「公平-准确」的权衡显式呈现给决策者,而非藏在模型内部。

参考与延伸阅读

  1. Julia Angwin 等,ProPublica,https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing(2016)。对 COMPAS 累犯评估工具种族偏见的调查报道「Machine Bias」,本教程核心案例来源。
  2. Rachel K. E. Bellamy 等,AI Fairness 360: An Extensible Toolkit for Detecting, Understanding, and Mitigating Unwanted Algorithmic Bias,arXiv:1810.01943。IBM AIF360 工具包论文与官方仓库 https://github.com/Trusted-AI/AIF360
  3. Fairlearn 官方文档与网站,https://fairlearn.org/。Microsoft 主导的开源公平性度量与缓解工具包。
  4. Google PAIR,What-If Tool,https://pair-code.github.io/what-if-tool/。用于模型行为探查与公平性可视化的开源工具。
  5. Alexandra Chouldechova,Fair prediction with disparate impact: A study of bias in recidivism prediction instruments,Big Data 第 5 卷(2017)。论证 Equalized Odds 与校准不可兼得的经典论文。
  6. Jon Kleinberg、Sendhil Mullainathan、Manish Raghavan,Inherent Trade-Offs in the Fair Determination of Risk Scores,2017。公平性不可能定理的形式化研究。
本文累计阅读