如何应用 Google 开源的 TFCO 构建机器学习模型?
作者头像
  • 先进制造业
  • 2020-03-05 11:49:29 0

在机器学习模型中引入公平性是一项复杂的任务。本文将探讨如何利用Google AI研究院开源的TensorFlow约束优化库(TFCO),来优化机器学习模型,其中包括实现公平性的目标。

[译者 | 弯月,责编 | 郭芮,出品 | CSDN(ID:CSDNnews)]

[b]以下为改写内容:[/b]

公平性是机器学习领域中一个重要的概念。当我们看到自己支持的球队输球时,可能会认为裁判不公正;反之,当比赛结果符合预期时,则会觉得是公平的。然而,机器学习模型无法单纯依靠人类的主观判断来实现公平性,这就需要一种有效的手段来量化公平性。近年来,该领域涌现了许多研究成果,其中大部分研究都致力于通过优化算法来提升模型的公平性。近期,Google AI研究院开源了TensorFlow约束优化库(TFCO),这一工具为我们提供了优化机器学习模型各种目标的新途径,包括提升公平性。

将公平性融入机器学习模型并非易事。比如,苹果信用卡算法曾被指出存在性别偏见的问题,这反映出实现公平性的挑战。考虑一个银行贷款申请的场景:模型的目标是尽可能多地批准那些有能力偿还贷款的申请人,还是应尽量避免因采用不当标准而拒绝贷款的情况?哪种做法的成本更高?模型是否可以在两个方面同时优化?这些问题构成了TFCO设计的核心。

[b]TFCO的实际应用[/b]

TFCO通过在给定模型的目标上施加“公平约束”来运作。例如,在银行贷款场景中,我们可以设置一个目标函数,当借款人成功还款时给予模型奖励,并且施加公平性约束,确保模型不会因为性别、种族等因素而拒绝贷款。TFCO通过代理拉格朗日优化(Proxy Lagrangian Optimization)技术实现了这一复杂的目标。

代理拉格朗日优化技术由Google研究院和康奈尔大学合作提出。其核心思想是通过优化模型中的拉格朗日乘数来找到满足多个等式约束条件下的局部最大值或最小值。其基本思路是将带约束的优化问题转化为无约束问题的形式,从而利用无约束问题的导数来求解。

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

TFCO扩展了拉格朗日乘数的概念,将优化问题视为一个两人博弈,其中一人优化模型参数,另一人优化拉格朗日乘数。前者通过易于优化的“代理约束”最小化外部后悔目标,后者则优化相同的后悔目标以确保满足原始约束。简而言之,前者需要决定后者如何惩罚(可微分的)代理约束条件,同时满足原始约束。

[b]TFCO的工作原理演示[/b]

我们可以通过一个包含两个受保护群体(蓝色和橙色)的传统分类器来直观地展示TFCO的工作原理。首先,告知TFCO针对没有公平性约束的线性模型的分类器,优化整体错误率,可以产生类似下面的决策边界:

在某些情况下,人们可能认为这种模型是不公平的。例如,具有正标签的蓝色数据点比具有相同正标签的橙色数据点更容易被错误预测为负。我们可以通过增加一个约束来最大化机会均等性(即真阳性率),使模型的分布变为如下形式:

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

最终,选择正确的约束是一项复杂的工作,高度依赖于具体的应用场景及机器学习模型自身的特性。例如,假设一个约束要求四个群体具有相同的准确率,但在某些群体中分类本身就较为困难。在这种情况下,唯一满足约束的方式是将其他三个较容易分类的群体的准确率降低到困难群体的水平。这显然不是我们期望的结果。为了应对这种情况,TFCO提供了一系列经过精心挑选的优化问题。

[b]开发者如何使用TFCO?[/b]

对于开发者而言,TFCO的使用相对简单。首先,需要导入TFCO库。

python import tensorflow as tf import tensorflow_constrained_optimization as tfco

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

```python

创建包含模型参数的变量

weights = tf.Variable(tf.zeros(dimension), dtype=tf.float32, name="weights") threshold = tf.Variable(0.0, dtype=tf.float32, name="threshold")

定义预测函数

def predictions(): return tf.tensordot(constant_features, weights, axes=(1, 0)) - threshold

创建优化上下文

context = tfco.ratecontext(predictions(), labels=constantlabels)

创建优化问题

problem = tfco.RateMinimizationProblem( tfco.errorrate(context), [tfco.recall(context) >= recalllower_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翻译,转载时请注明出处。

    本文来源:图灵汇
责任编辑: : 先进制造业
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
开源构建模型机器应用Google如何学习TFCO
    下一篇