将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出

2024-04-13 18:48

本文主要是介绍将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

c7bdb4183f59927f86f6b4accf5ec58c.png

来源:ScienceAI
本文约1800字,建议阅读9分钟
如何迫使深度度量学习模型首先学习好的特征?

cf1fae2b31d6f9d5bca32058430db02f.png

如果使用不平衡的数据集训练机器学习模型,比如一个包含远多于肤色较浅的人的图像的数据集,则当模型部署在现实世界中时,该模型的预测存在严重风险。

但这只是问题的一部分。麻省理工学院的研究人员发现,在图像识别任务中流行的机器学习模型在对不平衡数据进行训练时实际上会编码偏差。即使使用最先进的公平性提升技术,甚至在使用平衡数据集重新训练模型时,模型中的这种偏差也无法在以后修复。

因此,研究人员想出了一种技术,将公平性直接引入模型的内部表示本身。这使模型即使在不公平数据上进行训练也能产生公平的输出,这一点尤其重要,因为很少有平衡良好的数据集用于机器学习。

他们开发的解决方案不仅可以使模型做出更平衡的预测,还可以提高它们在面部识别和动物物种分类等下游任务中的表现。

ff1ef8b67e38623f3920cb9ead2cff16.png

「在机器学习中,将数据归咎于模型偏差是很常见的。但我们并不总是有平衡的数据。因此,我们需要找到真正解决数据不平衡问题的方法,」主要作者、麻省理工学院计算机科学与人工智能实验室 (CSAIL) 健康 ML 小组的研究生 Natalie Dullerud 说。

定义公平

研究人员研究的机器学习技术被称为深度度量学习(deep metric learning),它是表示学习的一种广泛形式。在深度度量学习中,神经网络通过将相似的照片映射在一起并且将不同的照片映射得很远来学习对象之间的相似性。在训练期间,该神经网络将图像映射到「嵌入空间」中,其中照片之间的相似性度量对应于它们之间的距离。

例如,如果使用深度度量学习模型对鸟类进行分类,它会将金雀的照片一起映射到嵌入空间的一部分中,并将红雀的照片映射到嵌入空间的另一部分中。一旦经过训练,该模型就可以有效地测量它以前从未见过的新图像的相似性。它会学习将看不见的鸟类的图像聚集在一起,但在嵌入空间内离红雀或金雀更远。

1edbaa21e1f43d152f5a5cb03a515e94.png

这张图片显示了鸟类颜色的两个不同的 PARADE 嵌入

Dullerud 说,模型学习的相似性度量非常稳健,这就是为什么深度度量学习经常被用于面部识别的原因。但她和她的同事想知道如何确定相似性指标是否有偏差。

「我们知道数据反映了社会进程的偏见。这意味着我们必须将重点转移到设计更适合现实的方法上。」Ghassemi 说。

研究人员定义了相似性度量不公平的两种方式。以面部识别为例,如果与那些图像是肤色较浅的人相比,如果将肤色较深的人更靠近彼此嵌入,即使他们不是同一个人,该指标将是不公平的。其次,如果它学到的用于衡量相似性的特征对于多数群体来说比少数群体更好,那将是不公平的。

研究人员对具有不公平相似性指标的模型进行了许多实验,但无法克服模型在其嵌入空间中学到的偏差。

「这很可怕,因为公司发布这些嵌入模型,然后人们对它们进行微调以完成一些下游分类任务是一种非常普遍的做法。但无论你在下游做什么,你根本无法解决嵌入空间中引发的公平问题,」Dullerud 说。

她说,即使用户在下游任务的平衡数据集上重新训练模型(这是解决公平问题的最佳情况),仍然存在至少 20% 的性能差距。

解决这个问题的唯一方法是确保嵌入空间一开始是公平的。

学习单独的指标

研究人员的解决方案称为部分属性去相关 (PARADE),涉及训练模型以学习敏感属性(如肤色)的单独相似性度量,然后将肤色相似性度量与目标相似性度量去相关。如果模型正在学习不同人脸的相似度度量,它将学习使用肤色以外的特征来映射靠近在一起的相似面孔和相距很远的不同面孔。

任何数量的敏感属性都可以通过这种方式与目标相似度度量去相关。并且由于敏感属性的相似性度量是在单独的嵌入空间中学习的,所以在训练后将其丢弃,因此模型中仅保留了目标相似性度量。

他们的方法适用于许多情况,因为用户可以控制相似性度量之间的去相关量。例如,如果模型将通过乳房 X 光照片诊断乳腺癌,临床医生可能希望在最终嵌入空间中保留一些有关生物性别的信息,因为女性患乳腺癌的可能性比男性高得多,Dullerud 解释说。

他们在面部识别和鸟类分类这两项任务上测试了他们的方法,发现无论他们使用什么数据集,它都能减少嵌入空间和下游任务中由偏差引起的性能差距。

展望未来,Dullerud 感兴趣的是如何迫使深度度量学习模型首先学习好的特征。

「您如何正确审核公平性?这是一个悬而未决的问题。你怎么知道一个模型是公平的,或者它只在某些情况下是公平的,那些情况是什么?这些是我真正感兴趣的问题,」她说。

参考内容:

https://scitechdaily.com/injecting-fairness-into-ai-machine-learning-models-that-produce-fair-outputs-even-when-trained-on-unfair-data/

https://openreview.net/pdf?id=js62_xuLDDv

编辑:黄继彦

校对:林亦霖

3293202579d0055c540d5672921d591f.png

这篇关于将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900925

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性