如何利用 Google 开源的 TFCO 构建机器学习模型?

在机器学习模型中引入公平性远非易事,本文就利用Google AI研究院开源的Tensor Flow Constrained Optimization Library(TFCO),来优化机器学习模型的各种目标,包括公平性。

作者 | Jesus Rodriguez

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

公平是一个非常主观的概念,在机器学习领域亦是如此。每当最心爱的球队输掉一场激烈的比赛时,我们就会认为裁判“不公”;而当如愿以偿时,我们就会认为结果非常“公平”。由于机器学习模型不能依赖主观性,因此我们需要一种有效的方法来量化公平性。该领域已出现了大量研究,其中大多数都将公平性作为结果优化的问题。最近,Google AI研究院开源了Tensor Flow Constrained Optimization Library(TFCO),我们可以利用该框架来优化机器学习模型的各种目标,包括公平性。

在机器学习模型中引入公平性远非易事。最近苹果信用卡的算法就表现出了强烈的性别偏见,我们可以透过该事件窥见把握公平性的难度。考虑一下理银行贷款申请的模型。该模型的优化目标应该是尽可能将贷款批给那些更可能偿还的客户?还是应该尽可能避免出现拒绝给使用错误标准发放贷款的情况?哪个标准成本更高?模型能否在两个方面同时进行优化?这些问题都是TFCO设计的核心。

TFCO理论

TFCO的工作方式是围绕给定模型的目标施加“公平约束”。在上述银行贷款的TFCO示例中,我们可以选择一个目标函数,当借款人偿还了贷款时对模型进行奖励,还会施加公平性约束,防止模型不能公平地拒绝向某些受保护的人群提供贷款。TFCO通过代理拉格朗日优化(Proxy Lagrangian Optimization)实现了这个高度复杂的目标。

代理拉格朗日优化技术的思想由Google研究院和康奈尔大学于近日联合推出。其核心原则是优化模型中的拉格朗日乘数。这些乘数的作用是寻找函数在多个相等约束条件下的局部极大值或极小值(即选出的变量值必须满足一个或多个等式)。其基本思想是将有约束问题转换为某种形式,以便应用无条件限制问题的导数判别法。

大致来说,拉格朗日乘数法定理表明,对于满足等式约束的任意定点,该点处函数的梯度可以表示为该点处所有约束的梯度线性组合,其系数为拉格朗日乘数。

TFCO扩展了拉格朗日乘数的概念,将一个优化问题建模为一个两人博弈,在该博弈中,一人的优化目标是模型参数,另一人的优化目标是最大化拉格朗日乘数。第一个人通过容易优化的“代理约束”来最小化外部的后悔目标,第二个人会优化相反的后悔目标,来保证满足原始约束。换句话说,第一个人需要决定第二个人应该如何对(可微分的)代理约束条件进行惩罚,同时还需要满足原始的约束条件。

TFCO原理演示

我们使用一个包含两个受保护组(蓝色和橙色)的传统分类器,来可视化地演示一下TFCO的原理。告诉TFCO针对没有公平性约束的线性模型的分类器,优化其整体错误率,就可以产生类似于下面的决策边界:

在某些情况下,有人可能认为该模型是不公平的。例如,带有正标签的蓝色数据,比那些带有正标签的橙色数据更容易收到负的预测。我们可以给模型添加一个约束,最大化机会的均等性(即真阳性率),可以将模型的分布变成下面这样:

类似地,一个同时优化真阳性率和假阳性率的约束如下所示:

最终,选择正确的约束是一项复杂的工作,高度依赖于策略目标,以及机器学习问题本身的性质。例如,假设一个约束会让训练给四个组均等的准确率,但有可能某一个分组中的分类本身就很困难。在这种情况下,唯一满足约束的方法就是将其他三个容易分组的准确率降低到困难组的准确率水平。这并不是我们想要的结果。为了解决这个问题,TFCO中包含了一系列精选的优化问题。

开发者该如何使用?

从开发者的角度来看,TFCO很容易使用。第一步就是导入TFCO库。

import tensorflow as tf
import tensorflow_constrained_optimization as tfco

接下来,我们需要将模型表达成优化问题,代码如下所示。

# Create variables containing the model parameters.
weights = tf.Variable(tf.zeros(dimension), dtype=tf.float32, name="weights")
threshold = tf.Variable(0.0, dtype=tf.float32, name="threshold")


# Create the optimization problem.
constant_labels = tf.constant(labels, dtype=tf.float32)
constant_features = tf.constant(features, dtype=tf.float32)
def predictions():
  return tf.tensordot(constant_features, weights, axes=(1, 0)) - threshold

最后,TFCO优化的约束问题需要写成比率的线性组合,这里“比率”指的是训练数据中某个事件发生的比例(例如,假阳性率指的是负标签的数据被预测为正的数量,除以负标签数据的总量)。将模型表示成优化问题之后,就可以使用TFCO来创建不同的优化,如下所示:

# Like the predictions, in eager mode, the labels should be a nullary function
# returning a Tensor. In graph mode, you can drop the lambda.
context = tfco.rate_context(predictions, labels=lambda: constant_labels)
problem = tfco.RateMinimizationProblem(
    tfco.error_rate(context), [tfco.recall(context) >= recall_lower_bound])

现在TFCO只是一个初版,而且仍然需要掌握大量的优化知识才能使用。但是,它提供了非常灵活的基础,方便我们将公平性约束引入到机器学习模型。接下来,TensorFlow社区会在之上构建哪些东西,我们将拭目以待。

原文:https://towardsdatascience.com/google-open-sources-tfco-to-help-build-fair-machine-learning-models-f6d002557796

作者:Jesus Rodriguez,首席科学家与执行合伙人@Invector Labs,CTO@IntoTheBlock。

本文为 CSDN 翻译,转载请注明来源出处。

【End】

在中国企业与「远程办公」正面相遇满月之际,2月29日,CSDN 联合广大「远程办公」工具服务企业共同举办【抗击疫情,科技公司在行动】系列之【远程办公】专题线上峰会活动:中国「远程办公」大考
扫下方二维码或点击阅读原文免费报名直播+抽取奖品+与大牛交流

提前了解峰会详情,可加小助手微信csdnai,回复远程办公,进直播群

推荐阅读 

疫情病毒全部“抹杀”?用数据模型来解读传播抑制的效果差异!

两成开发者月薪超 1.7 万、算法工程师最紧缺!| 中国开发者年度报告

为诺亚、北大提出GhostNet,使用线性变换生成特征图,准确率超MobileNet v3 | CVPR 2020

真实版“删库跑路”?程序员蓄意破坏线上生产环境!

新知识点!一文告诉你如何调试运行在Docker容器中的远程Node.js应用程序

远程办公是一阵“过渡风”还是会“继续燃烧”?

你点的每一个在看,我认真当成了喜欢

猛戳“阅读原文”,参与报名吧!

发布了1763 篇原创文章 · 获赞 4万+ · 访问量 1595万+

猜你喜欢

转载自blog.csdn.net/csdnnews/article/details/104568271