2023 年 4 月 6 日 — 发布者 Bhaktipriya Radharapu,软件工程师TensorFlow 模型修复 是一个开源工具包,展示了有助于减轻机器学习模型中不公平偏差的解决方案。该工具包提供资源来构建对所有人更公平的模型,符合 Google 的 AI 原则。今天,我们很高兴宣布 TensorFlow 模型修复库中一项名为 Co…
发布者 Bhaktipriya Radharapu,软件工程师
TensorFlow 模型修复 是一个开源工具包,展示了有助于减轻机器学习模型中不公平偏差的解决方案。该工具包提供资源来构建对所有人更公平的模型,符合 Google 的 AI 原则。今天,我们很高兴宣布 TensorFlow 模型修复库中一项名为 反事实Logit配对 (CLP) 的新技术,旨在解决 ML 模型中的意外偏差。
ML 模型在输入中的敏感属性被移除或替换时容易做出错误的预测,从而导致意外偏差。例如,Perspective API 用于识别评论中具有冒犯性或有毒的文本,发现提及种族或性取向的身份术语与预测的毒性分数之间存在正相关性。例如,短语“我是一个女同性恋”的毒性分数为 0.51,而“我是一个男人”的毒性分数较低,为 0.2。这种相关性导致某些身份术语的毒性分数较高,即使这些术语的使用并非贬义。有关 Perspective API 的更多信息,请参阅关于 意外偏差和身份术语 的博文。
反事实Logit配对 (CLP) 是一种技术,可以解决此类问题,确保模型的预测在移除或替换示例中引用的敏感属性时不会发生变化。它提高了模型对此类扰动的鲁棒性,并可以积极影响模型的稳定性、公平性和安全性。
CLP 在训练时减轻了此类反事实公平性问题。它是通过在模型的训练损失中添加一个额外的损失来实现的,该损失会对模型在训练示例及其反事实之间的输出差异进行惩罚。
使用 CLP 的另一个优点是,即使在未标记的数据上也可以使用它。只要模型对反事实示例进行类似的处理,就可以验证模型是否符合反事实公平性。
有关此主题的深入讨论,请参阅有关 反事实公平性、对抗Logit配对 和 反事实Logit配对 的研究。
使用 Keras 的 CLP 代码实验室提供了一个端到端的示例。在本概述中,我们将重点介绍笔记本中的关键要点,同时提供额外的背景信息。
笔记本训练了一个文本分类器来识别有毒内容。这种类型的模型试图识别粗鲁、不尊重或可能导致某人离开讨论的内容,并将内容分配一个毒性分数。对于这项任务,我们的基线模型将是一个简单的 Keras 顺序模型,预先训练在 Civil Comments 数据集 上。
我们将使用 CLP 来避免身份术语不公平地影响哪些内容被分类为冒犯性。我们考虑一类狭义的反事实,它涉及删除输入中的与性别和性取向相关的身份标记,例如,在输入“我是一个同性恋者”中删除“同性恋”,以创建反事实示例“我是一个人”。
高级步骤将是
- 计算 分类器在原始示例和反事实示例上的翻转率和翻转次数。
- 通过执行基于术语匹配的朴素消融,使用
CounterfactualPackedInputs
构建一个反事实数据集。- 通过使用 CLP 进行训练,提高翻转率和翻转次数的性能。
- 评估新模型在翻转率和翻转次数方面的性能。
请注意,这是一个展示 CLP 技术用法的最简工作流程,而不是机器学习中公平性的完整方法。CLP 解决了一个可能影响机器学习中公平性的具体挑战。请参阅 负责任的 AI 工具包,以获取有关负责任的 AI 和可用于补充 CLP 的工具的更多信息。
在生产环境中,您需要以更严格的方式处理这些步骤中的每一个。例如
- 考虑您模型的公平性目标。什么对您的模型来说算是“公平”?您试图实现哪种 公平性定义?
- 考虑何时反事实对应该具有相同的预测。许多由标记替换生成的句法反事实可能不需要相同的输出。考虑应用空间以及模型的潜在社会影响,并了解 何时输出应该相同,何时不应该相同。
- 考虑使用语义和语法上有依据的反事实,而不是基于启发式的消融。
- 通过调整超参数来尝试 CLP 的配置,以获得最佳性能。
让我们首先检查原始模型在反事实示例上的翻转次数和翻转率。翻转次数衡量分类器在更改给定示例中的身份术语时做出不同决定的次数。翻转率衡量分类器在总计数中不正确地提供错误决定的总次数。
让我们使用笔记本中的“公平性指标小部件”来衡量翻转率和次数。在小部件中选择 flip_rate/overall
。请注意,女性的总体翻转率约为 13%,男性约为 14%,均高于数据集的 8%。这意味着模型可能会根据性别相关术语的存在来改变分类。
CounterfactualPackedInputs
实例,它将 original_input
和 counterfactual_data
打包在一起。CounterfactualPackedInputs( original_input=(x, y, sample_weight), counterfactual_data:(original_x, counterfactual_x, counterfactual_sample_weight) ) |
build_counterfactual_data
删除性别特定术语的实例。请注意,我们只包含非贬义词,因为贬义词应该具有不同的毒性分数。要求在包含贬义词的示例中进行相同的预测,既会削弱模型执行其任务的能力,也可能加剧对弱势群体的伤害。sensitive_terms_to_remove = [ 'aunt', 'boy', 'brother', 'dad', 'daughter', 'father', 'female', 'gay', 'girl', 'grandma', 'grandpa', 'grandson', 'grannie', 'granny', 'he', 'heir', 'her', 'him', 'his', 'hubbies', 'hubby', 'husband', 'king', 'knight', 'lad', 'ladies', 'lady', 'lesbian', 'lord', 'man', 'male', 'mom', 'mother', 'mum', 'nephew', 'niece', 'prince', 'princess', 'queen', 'queens', 'she', 'sister', 'son', 'uncle', 'waiter', 'waitress', 'wife', 'wives', 'woman', 'women' ] # Convert the Pandas DataFrame to a TF Dataset dataset_train_main = tf.data.Dataset.from_tensor_slices( (data_train[TEXT_FEATURE].values, labels_train)).batch(BATCH_SIZE) counterfactual_data = counterfactual.keras.utils.build_counterfactual_dataset( original_dataset=dataset_train_main, sensitive_terms_to_remove=sensitive_terms_to_remove) counterfactual_packed_input = counterfactual.keras.utils.pack_counterfactual_data( dataset_train_main, counterfactual_data) |
要使用反事实模型进行训练,只需获取原始模型,并将其包装在一个 CounterfactualModel
中,其中包含相应的 loss
和 loss_weight
。这将使用 CLP 损失在主要分类任务和去偏见任务上共同训练模型。
我们使用 1.0 作为默认的 loss_weight
,但这是一个可以针对您的用例进行调整的参数,因为它取决于您的模型和产品需求。您应该尝试更改该值以查看它如何影响模型,请注意,增加它会导致模型对反事实示例进行更重的惩罚。您可以测试一系列值来探索任务性能和翻转率之间的权衡。
在这里,我们使用 成对均方误差损失。您可以尝试在套件中尝试其他指标,以了解哪些选项可以提供最佳结果。
counterfactual_weight = 1.0 counterfactual_model = counterfactual.keras.CounterfactualModel( baseline_model, loss=counterfactual.losses.PairwiseMSELoss(), loss_weight=counterfactual_weight) # 在包装原始模型后,以正常方式编译模型。 # 请注意,这意味着我们在这里使用基线模型的损失。 optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) loss = tf.keras.losses.BinaryCrossentropy() counterfactual_model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy']) counterfactual_model.fit(counterfactual_packed_input, epochs=1) |
我们再次通过查看翻转次数和翻转率来评估结果。在公平性指标中选择“flip_rate/overall”,并比较两个模型之间女性和男性的结果。您应该会注意到,总体、女性和男性的翻转率都下降了约 90%,这使得女性的最终翻转率约为 1.3%,男性的最终翻转率约为 1.4%。
您可以访问 TensorFlow 负责任的 AI 开始使用反事实,并了解有关使用 公平性指标 评估公平性的更多信息。
2023年4月6日 — 作者:Bhaktipriya Radharapu,软件工程师TensorFlow模型修复是一个开源工具包,展示了解决机器学习模型中不公平偏差的解决方案。该工具包提供资源来构建更公平的模型,以造福所有人,符合Google的AI原则。今天,我们很高兴宣布在 TensorFlow 模型修复库中引入一项新技术,名为Co…