您可以通过主动和被动除杂来检测直接和间接偏差。 被动除偏会显示偏差,而主动除偏会通过实时更改模型来防止偏差。
该算法应用称为 扰动 的方法来评估数据中预期结果的差异。 有关如何计算偏差的更多信息,请参阅 计算公平性。
在评估部署的公平性时,会检测到有效负载日志表中事务的直接和间接偏差。
被动除偏
被动脱脂每小时自动进行一次。 称为“被动”是因为无需用户干预。 对偏见进行分析时,也会使数据去伪存真。 它会分析模型的行为,并识别模型针对哪些数据以存在偏见的方式运作。
建立机器学习模型的目的是预测该模型在处理给定的新数据点时是否会出现偏差。 每小时对模型接收到的数据进行分析,找出导致偏差的数据点。 对于此类数据点,公平性属性从少数到多数,从多数到少数,并且将扰动数据发送到原始模型以进行预测。 扰动记录的预测,以及原始预测用于计算偏差。
模型在过去一小时内接收到的已识别偏差记录将被去偏。 此外,还计算了去偏输出的公平性,并显示在去偏模型选项卡中。
主动除偏
您可以使用主动除偏这种方式来通过 REST API 端点请求无偏结果并将其引入应用程序中。 您可以主动调用模型评估,了解模型的偏差预测,从而以无偏差的方式运行应用程序。 在主动除偏中,可以从应用程序使用除偏 REST API 端点。 此 REST API 端点在内部调用模型,并检查其行为。
如果模型有偏差,数据就会受到扰动,并被送回原始模型。 在对扰动数据点进行内部分析后,如果模型在该数据点上的行为存在偏差,那么原始模型在扰动数据上的输出结果将作为去偏预测结果返回。
如果原始模型没有偏差,那么原始模型的预测结果将作为去偏预测结果返回。 这样,通过使用此 REST API 端点,可以确保应用程序不会将决策基于有偏见的输出。
查看数据以获取无偏值
公平性评估运行时,去偏差值会存储在模型部署的有效载荷日志表中。 通过此端点完成的所有评分事务都会自动去偏差 (如果适用)。 您可以访问无偏评分端点,就像访问已部署模型的正常评分端点一样。 除了返回已部署模型的响应之外,它还会返回 debiased_prediction
和 debiased_probability
列。
debiased_prediction
列包含无偏预测值。debiased_probability
列表示无偏预测的概率。 此双精度值数组表示属于某个预测类别的无偏预测的概率。
启用除偏参数
配置新部署时,默认情况下会禁用去重。 也可以在PythonSDK 的参数部分将perform_debias
参数设置为true
,或指定PERFORM_DEBIASING
pod 级环境标签来启用 debiasingm,如下例所示:
wos_client.monitor_instances.update(
monitor_instance_id=<FAIRNESS_MONITOR_INSTANCE_ID>,
patch_document=[JsonPatchOperation(
op=OperationTypes.ADD,
path='/parameters/perform_debias',
value=True
)],update_metadata_only=True
)
当您修补监视器实例时,公平性监视器将在下一次评估期间运行除偏。
有关更多信息,请参阅 Watson OpenScale Python SDK 文档。
复审无偏交易
您可以使用去偏差事务端点来查看去偏差事务以进行公平性评估。 有关更多信息,请参阅 在 Watson OpenScale中发送模型事务。
由于 debias 端点处理运行时偏差,因此它将继续对有效内容日志记录表中的评分数据运行背景检查。 它还会不断更新偏差缓解模型,这会使评分请求不存在偏差。
您可以配置公平性阈值,以指示何时数据是可接受的、无偏见的。
使用新版本的模型来缓解偏差:
- 您必须构建新版本的模型以解决此问题。 有偏差的记录存储在手动标签表中。 必须手动标记这些有偏差的记录,然后通过附加数据重新训练模型,以构建无偏差模型的新版本。
抽取个别有偏差记录的列表:
- 通过使用标准 SQL 查询,连接到手动标记表并读取记录。
父主题: 查看模型事务