反事实 Logit 配对

127 阅读6分钟

TensorFlow模型修复是一个开源的工具包,展示了帮助减轻机器学习模型中不公平偏见的解决方案。该工具包提供了为每个人建立更公平的模型的资源--符合谷歌的AI原则。今天,我们很高兴地宣布TensorFlow模型补救库中的一项新技术,称为反事实Logit配对(CLP),以解决ML模型中无意的偏见。

当输入中的敏感属性被移除或替换时,ML模型很容易做出不正确的预测,从而导致意外的偏差。例如,用于识别评论中的攻击性或毒性文本的Perspective API显示,提及种族或性取向的身份术语与预测的毒性分数之间存在正相关。例如,"我是一个女同性恋者 "这句话的毒性得分是0.51,而 "我是一个男人 "的毒性得分则较低,为0.2。这种关联性导致一些身份术语的毒性得分较高,即使是在非贬义的情况下使用。关于Perspective API的更多信息,请参见关于无意的偏见和身份词汇的博文。

Counterfactual Logit Pairing(CLP)是一种解决此类问题的技术,以确保当一个例子中引用的敏感属性被移除或替换时,模型的预测不会发生变化。它提高了模型对这种扰动的稳健性,并能积极影响模型的稳定性、公平性和安全性。

CLP在训练时缓解了这种反事实的公平性问题。它是通过在模型的训练损失上增加一个额外的损失来实现的,该损失对模型的输出在训练实例和其反事实之间的差异进行惩罚。

使用CLP的另一个好处是,你甚至可以在没有标签的数据上使用它。只要模型以类似的方式对待反事实的例子,你就可以验证你的模型是否遵守了反事实的公平性。

关于这个话题的深入讨论,请看关于反事实公平性对抗性Logit配对反事实Logit配对的研究。

Counterfactual Logit Pairing Walkthrough:

CLP with Kerascodelab提供了一个端到端的例子。在这个概述中,我们将强调笔记本的关键点,同时提供额外的背景。

该笔记本训练了一个文本分类器来识别有毒内容。这种类型的模型试图识别粗鲁、不尊重或其他可能使人离开讨论的内容,并给该内容打上毒性分数。对于这项任务,我们的基线模型将是一个简单的Keras顺序模型,在Civil Comments数据集上进行预训练。

我们将使用CLP来避免身份术语不公平地歪曲被归类为攻击性的内容。我们考虑的是一类狭窄的反事实,包括删除输入中与性别和性取向有关的身份标记,例如删除输入 "我是一个同性恋者 "中的 "同性恋",以创建反事实的例子 "我是一个人"。

高层的步骤将是:

  • 计算分类器在原始和反事实例子上的翻转率和翻转次数
  • 通过执行基于术语匹配的天真消融,使用CounterfactualPackedInputs ,建立一个反事实数据集。
  • 通过CLP训练提高翻转率和翻转数的性能。
  • 评估新模型在翻转率和翻转次数上的表现。

请注意,这是一个最小的工作流程,用于展示CLP技术的使用,而不是一个完整的机器学习中的公平方法。CLP解决了一个可能影响机器学习公平性的具体挑战。关于负责任的人工智能和可用于补充CLP的工具的其他信息,请参见负责任的人工智能工具包

在生产环境中,你会希望以更严格的方式处理这些步骤中的每一个。比如说:

  • 考虑你的模型的公平性目标。对你的模型来说,什么才是 "公平"?你想实现哪些公平性的定义
  • 考虑反事实对何时应该有相同的预测。许多由标记替换产生的句法反事实可能不需要相同的输出。考虑你的模型的应用空间和潜在的社会影响,了解什么时候输出应该是相同的,什么时候不应该是。
  • 考虑使用有语义和语法基础的反事实,而不是基于启发式的消减。
  • 通过调整超参数来实验CLP的配置,以获得最佳性能。

让我们首先检查一下反事实例子上原始模型的翻转次数和翻转率。翻转次数衡量的是,如果改变给定例子中的特征项,分类器给出不同决定的次数。翻转率衡量的是分类器错误地提供了一个错误的决定的总次数,而不是总次数。

让我们使用笔记本中的 "公平指标部件 "来测量翻转率和计数。在小工具中选择flip_rate/overall 。注意,女性的整体翻转率约为13%,男性约为14%,都高于整体数据集的8%。这意味着模型很可能会根据性别相关术语的存在来改变分类。

现在我们将使用CLP来尝试减少模型的翻转率和数据集中与性别有关的术语的翻转数。我们首先创建一个CounterfactualPackedInputs ,其中包含了原始输入和反事实数据。

CounterfactualPackedInputs( original_input=(x, y, sample_weight), counterfactual_data:(original_x, counterfactual_x, counterfactual_sample_weight) )

接下来,我们使用辅助函数build_counterfactual_data ,删除性别特定术语的实例。注意,我们只包括非贬义词,因为贬义词应该有不同的毒性得分。要求对带有贬义词的例子进行同等的预测,既会削弱模型执行任务的能力,也可能会增加对弱势群体的伤害。

要使用反事实模型进行训练,只需将原始模型与相应的lossloss_weight ,并将其包裹在一个CounterfactualModel 。这将在主要的分类任务和使用CLP损失的去污任务上对模型进行联合训练。

我们使用1.0作为默认的loss_weight ,但这是一个可以根据你的使用情况调整的参数,因为它取决于你的模型和产品要求。你应该尝试改变这个值,看看它对模型有什么影响,注意增加这个值会导致模型对反事实例子的惩罚更加严重。你可以测试一系列的值来探索任务表现和翻转率之间的权衡。

在这里,我们使用配对平均误差损失。你可以尝试用套件中的其他指标进行试验,以了解哪些选项能提供最佳结果。

再一次,我们通过查看翻转次数和翻转率来评估结果。在 "公平指标 "中选择 "翻转率/总体",比较两个模型中女性和男性的结果。你应该注意到,总体、女性和男性的翻牌率都下降了约90%,这使得女性的最终翻牌率约为1.3%,男性约为1.4%。

你可以通过访问TensorFlow Responsible AI开始使用Counterfactual,并通过公平指标了解更多关于评估公平性的信息。