Path: blob/master/site/zh-cn/tfx/guide/fairness_indicators.md
25118 views
Fairness Indicators
Fairness Indicators 旨在与更广泛的 TensorFlow 工具包进行合作,支持团队评估和改善模型的公平性问题。目前,我们的许多产品都在内部积极使用该工具,现在该工具以推出 BETA 版本,您可以在自己的用例中试用。
什么是 Fairness Indicators?
Fairness Indicators 是用于轻松计算二元和多类分类器常用公平性指标的库。许多现有的评估公平性问题的工具在大型数据集和模型上效果不佳。对于 Google 来说,拥有可以在数十亿用户的系统上运行的工具很重要。Fairness Indicators 将使您能够评估任何大小的用例。
特别是,Fairness Indicators 包括以下功能:
评估数据集的分布
评估模型性能,切分为定义的用户组
通过置信区间和多个阈值的评估,对结果充满信心
深入研究各个切片,探索根本原因和改进机会
本案例研究附有视频和编程练习,演示了如何在您自己的产品中使用 Fairness Indicators 持续评估公平性问题。
Pip 软件包下载包括以下内容:
TensorFlow Model Analysis (TFMA)
Fairness Indicators
What-If 工具 (WIT)
在 TensorFlow 模型中使用 Fairness Indicators
数据
要使用 TFMA 运行 Fairness Indicators,请确保已为要切分的特征标记了评估数据集。如果没有针对公平性问题的确切切片特征,可以尝试查找具有此特征的评估集,或者在特征集中考虑可能突出显示结果差异的代理特征。有关其他指导,请参阅此处。
模型
您可以使用 TensorFlow Estimator 类来构建模型。TFMA 即将支持 Keras 模型。如果要在 Keras 模型上运行 TFMA,请参阅下文的“与模型无关的 TFMA”部分。
训练 Estimator 后,您需要导出已保存的模型以进行评估。要了解详情,请参阅 TFMA 指南。
配置切片
接下来,定义要评估的切片:
如果想要评估交叉切片(例如,毛皮颜色和高度),可以进行以下设置:
计算公平性指标
将 Fairness Indicators 回调添加到 metrics_callback
列表。您可以在回调中定义一个阈值列表,在其中评估模型。
在运行配置之前,请确定是否要启用置信区间的计算。置信区间使用泊松自助法计算,需要基于 20 个样本重新计算。
运行 TFMA 评估流水线:
呈现 Fairness Indicators
使用 Fairness Indicators 的提示:
通过选中左侧的复选框来选择要显示的指标。每个指标的单个图表将按顺序显示在微件中。
使用下拉选择器更改基准切片(图表上的第一个条形图)。将使用此基准值计算增量。
使用下拉选择器选择阈值。您可以在同一个图表上查看多个阈值。所选阈值将以粗体显示,您可以单击粗体阈值取消选择。
将鼠标悬停在条形图上查看该切片的指标。
使用“Diff w. baseline”列确定与基准的差异,该列标识当前切片与基准之间的百分比差异。
使用 What-If Tool 深入探索切片的数据点。请参阅此处的示例。
为多个模型呈现 Fairness Indicators
Fairness Indicators 也可用于比较模型。不传入单个 eval_result,而是传入 multi_eval_results 对象,该对象是将两个模型名称映射到 eval_result 对象的字典。
模型比较可以与阈值比较一起使用。例如,您可以在两组阈值下比较两个模型,以找到公平性指标的最佳组合。
在非 TensorFlow 模型中使用 Fairness Indicators
为了更好地支持具有不同模型和工作流的客户端,我们开发了一个评估库,该库与所评估的模型无关。
任何想要评估其机器学习系统的人都可以使用这个库,尤其是当您具有基于非 TensorFlow 的模型时。您可以使用 Apache Beam Python SDK 创建独立的 TFMA 评估二进制文件,然后运行它来分析模型。
数据
此步骤是为了提供用于运行评估的数据集。该数据集应为 tf.Example proto 格式,并具有标签、预测和其他您可能想要切分的特征。
模型
无需指定模型,而是创建模型无关的评估配置和提取程序,以进行解析并提供 TFMA 计算指标所需的数据。ModelAgnosticConfig 规范定义了要从输入样本中使用的特征、预测和标签。
为此,使用表示所有特征的键(包括标签键和预测键)和表示特征的数据类型的值来创建特征映射。
使用标签键、预测键和特征映射创建与模型无关的配置。
设置与模型无关的提取程序
提取程序用于使用与模型无关的配置从输入中提取特征、标签和预测。如果要对数据进行切分,还需要定义切片键规范,其中包含有关要切分的列的信息。
计算公平性指标
作为 EvalSharedModel 的一部分,您可以提供希望对模型进行评估的所有指标。指标以指标回调的形式提供,例如在 post_export_metrics 或 fairness_indicators 中定义的指标回调。
它还接受 construct_fn
,用于创建 TensorFlow 计算图来执行评估。
完成所有设置后,请使用 model_eval_lib 提供的 ExtractEvaluate
或 ExtractEvaluateAndWriteResults
函数来评估模型。
最后,按照上面“呈现 Fairness Indicators”部分中的说明来呈现 Fairness Indicators。
更多示例
Fairness Indicators 示例目录包含了几个示例:
Fairness_Indicators_Example_Colab.ipynb 概述了 TensorFlow Model Analysis 中的 Fairness Indicators,以及如何将其用于实际的数据集。此笔记本还介绍了 TensorFlow Data Validation 和 What-If 工具,这两个工具用于分析使用 Fairness Indicators 打包的 TensorFlow 模型。
Fairness_Indicators_on_TF_Hub.ipynb 演示了如何使用 Fairness Indicators 比较在不同文本嵌入向量上训练的模型。此笔记本使用来自 TensorFlow Hub(TensorFlow 的库)的文本嵌入向量来发布、发现和重用模型组件。
Fairness_Indicators_TensorBoard_Plugin_Example_Colab.ipynb 演示了如何在 TensorBoard 中直观呈现 Fairness Indicators。