pltf-mdl-dsn-resp-ai-merge-3

63 阅读1小时+

响应式人工智能的平台和模型设计指南(四)

原文:annas-archive.org/md5/1d3ba6203573861788b1a8cda3eef226

译者:飞龙

协议:CC BY-NC-SA 4.0

第十三章:可持续模型生命周期管理、特征存储和模型校准

本章的主要目标是为你提供在模型开发过程中应遵循的与可持续性相关的最佳实践。这与上一章讨论的与可持续人工智能相关的组织目标一致。我们的目的是鼓励组织层级中的不同层级的人们重构组织路线图,建立可信的人工智能解决方案。你将了解人工智能伦理的各个方面的重要性,以及需要遵循的最佳实践。我们将通过一个特征存储的例子说明如何将隐私、安全和可持续性纳入其中。

本章中,你将学习如何改进模型的概率估计,以获得更准确的结果。我们将从可持续性的角度探讨可调节系统。

通过将可持续性与模型训练和部署的概念结合,你将学习如何实现可持续、可调节的系统,这些系统促进协作和共享。你将探索模型校准,并了解在设计可调节的伦理人工智能解决方案时它的重要性。

本章内容包括以下几点:

  • 可持续模型开发实践

  • 特征存储中的可解释性、隐私和可持续性

  • 探索模型校准

  • 构建可持续、可调节的系统

可持续模型开发实践

除了道德地部署人工智能(AI)外,可持续性帮助我们所有人向更好的生态完整性和社会正义迈进。在构建人工智能产品的过程中——从创意生成到训练、调整、实施和治理——我们应该意识到我们的行动和人工智能解决方案对环境的影响,并确保它们对未来世代友好。当我们使用度量标准来考虑我们的工作影响时,我们会更负责任地和道德地开展工作。至关重要的是拥有一份描述模型开发各阶段最佳实践的组织路线图,这样变更管理最小且容易跟踪。这还将促进可持续人工智能的创新,并迫使组织为人工智能的训练、验证、部署和使用设定二氧化碳排放目标。

在接下来的子章节中,我们将探讨如何使组织、人员和流程能够朝着可持续人工智能模型开发的方向发展。这将帮助团队部署在长期内取得成功的模型。

首先,让我们看看组织如何制定构建可持续、可信框架的指南。

可持续、可信框架的组织标准

第三章 中,我们学习了关于可信 AI 的法规和政策;我们部署到生产的系统需要 100% 符合这些法规。我们有一些可以重用并集成到现有平台中的开源框架,如下所示:

  • TensorFlow 模型修正:这是由 Google 开发的一个库,旨在限制模型预处理训练或后处理过程中产生的偏差。

  • TensorFlow 隐私:这是由 Google 开发的一个库,使机器学习优化器能够在融合差分隐私的同时优化机器学习模型的目标函数。

  • AI 公平性 360:这是 IBM 开发的一个库,用于检测和缓解偏差。

  • 负责任的 AI 工具箱:这是由 Microsoft 开发的一个库,旨在帮助在可信环境中伦理地访问、开发和部署 AI 解决方案。

  • XAI:这是一个通过模型评估和监控来促进模型可解释性的库。

  • TensorFlow 联邦:这是一个支持多个客户端参与的分布式训练的库。

此外,我们需要知道如何将最佳实践融入现有技术平台中,这些平台可以作为评估可信框架的指引。让我们总结一下组织领导应当践行的常见模型治理和风险管理活动。为了在开发和部署生命周期中建立最佳的伦理和可持续实践,需要回答 图 13.1 中列出的问题:

模型实践关键问题
模型开发阶段
识别组织是否根据联邦指导方针识别并列出了关键的合规工具?例如,对于银行和保险,某些金融和风险模型需要用于评估框架。
库存管理模型库存管理策略是什么?例如,在模型开发生命周期中,是否有模型分类过程?不同的风险是否已被考虑,并且这如何影响不同模型的排名?
命名策略和安全性模型命名空间如何管理?是否考虑了领域问题以及业务用例?关键利益相关者如何参与模型版本控制和安全管理?
正式化政策和程序是否有适当的指南、审计检查清单以及授权人员参与正式化模型开发、验证、使用、监控和退休的标准和指南?
合规性是否有合规要求清单?是否有针对合规要求的定期审计?是否有经过培训的人员参与,并与机器学习、数据工程和分析团队密切合作,以确保所有企业系统都遵守确认和合规性?
研究与最佳实践应用是否有针对模型服务的实际问题进行深入研究的计划?是否有专门训练的人员负责研究并传播当前模型的最佳(标准)实践?
文档编制是否有良好记录的模型,涵盖问题定义和业务目标的范围?是否有特征存储的定义,并在团队共享和重用特征、模型和数据时建立了沟通流程?如何确保数据和模型的可用性,同时不违反安全性,并确保团队成员的意识?
共享与重用在集中式和联邦学习FL)中,机器学习模型和特征是如何共享的?内建的安全、隐私和通知策略如何在团队之间的特征更新中应用?
模型验证阶段
测试与验证当模型部署在服务框架中时,如何进行模型的单元测试和系统测试?为了确保正式的模型验证程序和模型服务 API,采用了哪些干预和监督技术?为了确保跨平台的模型互操作性,已采取哪些准则和实践?考虑了哪些排放指标?
挑战/有效批评在模型输入、输出、训练、验证和测试过程中遇到的审查/挑战如何处理?有哪些敏捷流程被采用,以便纳入增量模型变更,确保模型准确,同时又符合隐私、公平和可解释性?
模型实施阶段
治理的实施和使用模型的标准操作程序是什么,特别是在刷新、查询、链接使用、数据转储和输入标识处理方面?是否遵循了共享控制工具的推荐实践?是否已经建立了共享用户技术,如监视窗口、平衡检查和备份?
模型的持续监控
修复是否有适当的模型追踪机制,用于修复和纠正错误?是否已经为平台、机器学习模型和数据管道的可持续性定义了指标?
变更管理如何追踪和更新模型变更文档?
审计和审查是否已建立最佳的审计和审查流程,以验证防御层并确保模型输出的质量?如何建立基准,以在更大规模的企业平台中区分和扩展模型?如何有效地控制不同客户平台上基准的成本?
风险容忍度、风险偏好和风险阈值的定义模型接受的不同阈值水平是什么?我们是否基于问题范围、领域和数据量制定了一个风险容忍度水平,并在一定的不确定性范围内接受?我们是否在维护和建立每个模型期望值的财务影响/美元差异?
识别次级风险评估管理其他风险(例如延迟完成截止日期或干扰数据架构)所带来的风险的技术是什么?
识别操作风险我们如何定义模型实施中的操作风险?这是否涉及考虑和定期审查不同特征,例如折扣率,或确保操作程序的验证,如版本控制?
识别新兴风险随着模型的持续更新,出现的新风险或潜在的风险是什么?
跟踪传统模型、基于深度学习的模型和基于联邦学习的模型的跟踪步骤有哪些?这些跟踪步骤如何允许修改并在整个模型生命周期内提供额外使用的空间?
持续监控为了能够定期监控模型的准确性、相关性和可解释性,现有的监控工具和仪表盘有哪些?我们如何使用模型可解释性工具与业务利益相关者沟通关于商业模型的风险、数据以及概念漂移?
AI 应用使用
许可协议、使用条款和点击协议的条款我们有哪些审核流程来验证许可协议、使用条款和担保条款?我们如何确保通过包含语言来防止不当使用 AI 应用,避免因意外应用产生的责任?例如,允许针对任何用于生命救援设备、关键任务航空电子设备、军事应用或军火的豁免,并同时声明不允许向禁运国家出口或使用。

表 13.1 – 关键模型实践与问题

每个业务单元都需要回答前述问题,以确保建模过程与公司战略的适当对接。这反过来有助于组织意识到可持续性实践,并将注意力集中在数据和模型开发以及治理策略上。总的来说,目标是以环保的方式促进重用和协调。因此,我们需要一个统一的链管理模型,通过提高透明度和可解释性并减少对关键人物的依赖,防止机器学习模型的潜在滥用。设定董事会治理公司和 CxO 办公室运作的伦理边界也是至关重要的。CxO(指 CEO、CTO 和 CIO 角色)发起的组织和推动上述过程的数据团队,是任何 AI 驱动的业务成功的关键。通过这样的举措,我们不仅可以提高几个百分点的利润率,还能通过明智使用资源和雇佣训练有素的数据团队,节省数十亿美元。

那些未能回答前面问题并建立所需流程的组织,通常会遭受时间和金钱的损失。此外,他们无法在这个竞争激烈的世界中维持基于 AI 的业务用例。

在理解了这一点后,我们可以继续深入研究特征存储。

特征存储中的可解释性、隐私性和可持续性

第十章中,我们介绍了特征存储的概念,并通过一个例子演示了如何使用在线特征存储。此外,在前一节中,我们学习了可持续模型训练和部署的关键方面,并且了解了如何在不同的云服务商之间跟踪可持续模型指标的最佳实践。我们还在第十二章中看到,联邦学习(FL)通过允许设备本地训练,为可持续性提供了一个训练环境。因此,我们必须尝试在医疗保健、零售、银行等行业中,利用 FL 进行机器学习模型的训练,特别是在通用模型表示起到重要作用而计算能力有限的情况下。

在本节中,让我们深入探讨如何创建可解释的、私密的和可持续的特征存储。

特征存储的组件和功能

现在,让我们探索特征存储的不同组件如何在分布式架构中发挥其功能角色,如图 13.1所示:

图 13.1 – 伦理特征存储的不同组件

图 13.1 – 伦理特征存储的不同组件

以下列表详细介绍了每个组件:

  • 第一个组件是数据源单元,在这里数据可以从第三方来源接收并聚合。数据可以是原始数据、SQL 数据或事件数据。为了构建可持续的机器学习模型和特征存储,我们需要在基础设施中构建联邦学习能力,其中数据主要来自移动设备、物联网设备或医疗物联网IoMTs)的事件数据。联邦学习无疑为我们提供了实践可持续模型开发的机会。然而,如果没有联邦学习,具有自动反馈循环和再训练能力的系统也可以帮助我们创建可持续的机器学习模型。

  • 第二个组件包括数据摄取和特征工程管道,在这里,数据需要匿名化以保护个人身份信息PII),我们在第二章中有讨论过。为了突出并构建可持续的管道,我们必须在设计中支持重用,以提取可以跨团队使用的相关特征。此外,为了支持基于联邦合作学习方法和部署策略,特征工程管道应该分布在云端和边缘设备上。这将有助于分配负载并控制集中训练程序的排放速率。例如,图 13.2展示了在边缘网络中使用深度神经网络DNNs)的联邦学习工作方法。我们还展示了可以在服务器组件中使用的不同类型的云服务(来自谷歌云平台)。

图 13.2 – 边缘网络中的联邦学习

图 13.2 – 边缘网络中的联邦学习

在前面的图中,图 13.2,客户端从多个物联网设备收集数据,并进行基于本地深度学习的模型训练,而部署在多个边缘的少数服务器负责第一层模型聚合,最终将其聚合到云端。聚合后的模型随后被推送到边缘,客户端继续在本地数据集上进行训练。

  • 第三个组件涉及特征管理和在线与离线处理的可解释性。在第四章中,我们讨论了如何通过使用适当的安全规则创建沙箱环境或隔离单元,以处理和存储不同团队所需的特征,这些团队具有不同的敏感性级别(请参见第四章中的图 4.12)。该组件还涉及满足规范特征可解释性、偏差识别和特征推荐的 AI 伦理原则。数据和特征的公平性也需要通过该组件来满足,因为有偏的数据集和提取的特征可能导致有偏的机器学习模型。

  • 第四个组件是存储,在此存储元数据、在线和离线特征。这包括 SQL 和 NoSQL 数据库以及缓存,数据可以存储在磁盘上,也可以存储在内存中以便快速检索。

  • 第五个组件涉及用户如何执行时间旅行查询,这些查询能够快速搜索并返回某一特定时间点的数据(我们可以了解数据的历史以及记录其沿革),某一时间区间的数据,以及自某一时间点以来数据所做的更改。时间旅行查询通过使用索引(布隆过滤器、z 索引和数据跳过索引)高效执行,这些索引值得特别提及,因为它们减少了需要从文件系统或对象存储读取的数据量。

  • 最后的组件(与模型训练、部署和监控一同)还负责识别模型漂移。通过对个别模型设置访问权限,该组件促使模型评分指标的比较,以便快速采取模型再训练的措施。

接下来,让我们继续学习 FL 的特征存储。

FL 的特征存储

我们看到特征存储在 ML 模型重用和集中学习特征中的重要作用,在 第十章 中已经讨论过。现在,让我们探讨如何利用现有的特征存储管道概念来支持协作学习,特别是在 FL 框架的案例中。这将促进联合工具的开发和部署,允许组织、教育机构和合作伙伴的技术团队共同协作,分享数据、ML 模型和特征。

我们将看到 FeatureCloud AI Store 如何为 FL(主要用于生物医学研究)提供一个平台,通过统一一组即用型应用来跨领域使用。

图 13*.3* 展示了 FeatureCloud 的不同组件,解释了合作方如何协作创建一个可以包含新的第三方应用程序的云端认证特征存储:

图 13.3 – 一个私有的 FeatureCloud 存储用于 FL

图 13.3 – 一个私有的 FeatureCloud 存储用于 FL

这些统一的联邦应用可以在可扩展平台上产生类似于集中式机器学习的结果。随着协作的增加,内置的隐私机制如同态加密、安全多方计算和差分隐私变得极为重要,因为它们可以保护敏感信息。FeatureCloud AI Store 是一个特征存储,通过重新定义应用程序接口API),消除了传统基于联邦学习(FL)建模的限制,使开发者可以更容易地重用和分享外部开发者的创新应用程序。配合开放的 API 系统,它支持部署分发,允许通过可配置的工作流程使用算法。该特征存储对外部开发者透明开放,开发者可以自由添加和发布自己的联邦应用,使该系统成为数据、模型和应用程序高效协作的媒介。

如前图所示,第三方应用中提供的应用接口提供了有关不同类别应用的详细信息,通过显示它们的基本信息,包括简短描述、关键词、用户评分和认证状态。此外,每个应用不仅被分类为预处理、分析或评估,还配备了图形化前端或简单配置文件,用于设置应用参数并使其适应不同的上下文。

任何在 FeatureCloud 中运行的应用都在一个 Docker 容器内运行,该容器可以通过 FeatureCloud API 与其他应用交换数据和其他关键信息。该存储通过提供模板和测试模拟器来加速联邦应用的开发。

这种共享应用环境带有应用文档、搜索和过滤功能,以及应用认证流程,以推动 AI 商店中的隐私标准。认证流程对频繁测试隐私泄露有严格的指导原则;如果测试失败,将通知相关开发者解决问题。然而,它也提供了一项功能,即每当应用更新时,都会发起一个新的认证流程。

这种协作型、可持续的平台的一个主要缺点是,协调者在聚合各个模型之前可以访问所有的单独模型。因此,该框架提供了不同的隐私保护措施,如安全多方计算和差分隐私,以防止任何隐私泄露。

联邦工作流可以通过让所有协作伙伴在他们的机器上下载并启动客户端 FeatureCloud 控制器(使用 Docker)来设计。由于用户可以在 FeatureCloud 网站上创建账户,跨用户应用程序的协调可以顺利建立。这通过在工作流中的独立应用程序中集成交叉验证CV)、标准化、模型训练和模型评估程序,促进了跨机构的数据和算法共享与分析,如图 13.4所示:

图 13.4 – 基于应用程序的 FL 的 FeatureCloud 工作流

图 13.4 – 基于应用程序的 FL 的 FeatureCloud 工作流

当多个应用程序形成一个工作流时,这些应用程序的连续执行完成了一个独特工作流的运行。一个应用程序的输出或结果可以被另一个应用程序消费,整体工作流的进展可以被追踪或监控。工作流的结果可以在参与方之间共享,以便理解和评估整体建模过程的每一步。FeatureCloud 可以解决生物医学和其他领域的实际问题。

现在我们了解了 FeatureCloud 的运作方式,让我们尝试了解一些它的重要属性。

FeatureCloud 的属性

在这里,我们将学习如何通过一套在联合设置中创建的应用程序,构建一个协作云环境,帮助我们提供更好的工作流:

  • FeatureCloud 提供了多种机器学习算法的组合,来解决常见问题,通过高效地利用 AI 商店或应用模板中的应用程序。

  • 它使用一种通用的标准化数据格式,提供了一种简便的方法来组合应用程序进入工作流,从数据摄取和相互数据消费到输出生成。

  • 它推动了协作研究,通过引入经验较少的开发者和有经验的专业人士,共同创建定制化的工作流,以实现更广泛的目标。

在本节中,我们了解了与道德合规的联合特征存储相关的概念。现在,让我们了解如何通过确定不同类别预测的可能性,来增强 AI/ML 驱动系统的可预测性。这将帮助我们设计出具有最小漂移的现实系统。

那么,让我们探索模型校准,这是一种不仅能改善模型概率估计,还能帮助创建可持续、稳健的模型预测的后处理技术。

探索模型校准

校准是一种模型后处理技术,用于提高概率估计。其目标是改进模型,使得预测概率和观察到的概率的分布及行为相匹配。

对于关键任务应用,需要进行模型校准,在这些应用中,数据点与某一类别相关联的概率非常重要——例如,构建一个预测个体生病概率的模型。

让我们通过经典的猫狗分类器示例更好地理解校准。

假设我们正在使用一个猫狗分类器,其中所有输入图像要么是猫要么是狗。现在,如果模型认为输入图像是猫,它输出1;反之,如果它认为输入图像是狗,它输出0。我们的模型本质上是连续映射函数——也就是说,它们输出介于01之间的值。这可以通过数学方法实现,例如在最后一层使用 sigmoid 函数作为激活函数。一个好的分类器通常会为猫生成接近1的分数,为狗生成接近0的分数。

那么这些介于01之间的分数是否代表实际的概率呢?

图 13.5 – 猫狗分类器示例

图 13.5 – 猫狗分类器示例

上图中的 0.18 分数意味着输入图像中有 18%是猫吗?如果模型经过良好校准,那么假设是的!我们可以将其结果解释为概率。主要问题是如何判断我们的模型是否已经校准好。考虑一个现实生活中的例子——当天气应用给出的降雨概率低于 5%时,你却看到外面乌云密布。这通常发生在模型没有良好校准的情况下,从而导致其表现不佳。让我们来看看如何判断一个模型是否经过良好校准。

判断模型是否经过良好校准

参考之前的猫狗分类器示例,为了理解这些数字是否可以视为概率,我们需要绘制一个可靠性图。在可靠性图中,x轴绘制模型给出的分数——即正类的预测概率(在我们的例子中是类)。每当接收到一张图像时,它将根据模型给出的分数被放入正确的区间——例如,如果图像的分数为 0.9,它将被放入 0.8 到 1 的区间,模型假定它更有可能是猫的图像。对于分数为 0.06 的图像,它将被放入 0 到 0.2 的区间,表示该图像很可能是狗的图像。我们可以以此类推,继续为许多图像绘制图表。当我们添加大量图像后,可以查看y轴,它表示实际为猫的图像数量;换句话说,y轴表示正类的实际频率。对于一个良好校准的分类器,这些点将接近对角线。

图 13.6 – 模型输出的分数与实际猫图像的比例

图 13.6 – 模型输出的分数与实际为猫的图像比例

上述图表展示了一个校准不准确的模型示例。在 0.4 到 0.6 的范围内,如果得分确实代表概率,那么某个图像是猫的概率应该是 40%到 60%。然而,我们只看到在这个区间内,图像为猫的概率为 25%;这表明这是一个校准不准确的模型。

校准适用于分类任务和回归任务。这里我们讨论的是分类任务的示例。在回归任务中,我们关注的是估计预测值的概率分布。校准后的回归模型定义了平均预测值,并且围绕这个均值的预期分布反映了与预测相关的不确定性。

在深入探讨不同的校准技术之前,我们首先要了解为什么会发生校准不准确。

为什么会发生校准不准确

校准不准确是机器学习模型常见的问题,尤其是当模型没有在概率框架下训练,且训练数据存在偏差时。在大多数情况下,模型的固有特性决定了该模型是否最终会被校准。以逻辑回归为例,我们利用损失函数,因此无需额外的训练后处理。这是因为其生成的概率在前期已经过校准。高斯朴素贝叶斯中的独立性假设可能导致概率估计不准确,将其推向接近 0 或 1 的值。然而,在随机森林分类器的情况下,接近 0 或 1 的值很少出现,因为是多个内部决策树的平均值计算得出的。唯一能确保达到 0 或 1 的方式是每个模型返回一个接近 0 或 1 的值,这是从概率的角度来看非常有趣的情况。

现在让我们了解各种校准技术。

校准技术

一些分类模型,如支持向量机SVM)、k 近邻和决策树,既不提供概率分数,或者给出的是不准确的估计值。这些方法需要被强制给出类似概率的分数,因此,在使用前必须进行校准。

Platt 扩展等距回归是目前最为突出的两种校准技术。两者都将模型的输出转换为似然分数,从而实现校准。我们将在接下来的章节中研究这些技术。

Platt 扩展

这一技术的原理是将分类模型的输出转换为概率分布。简而言之,当校准图呈现 S 形曲线时,使用 Platt 扩展技术非常有效,尤其适用于小型数据集。

图 13.7 – Platt 扩展示意图

图 13.7 – Platt 扩展示意图

Platt 缩放是一个修改过的 S 型函数,通过求解优化问题来获得 A 和 B。它返回对实际结果的确定程度,而不是返回类别标签。对于诸如支持向量机(SVM)之类的分类模型,如前所述,我们采用特定的转换技术来校准模型,并获取概率作为输出。

等距回归

与 Platt 缩放相比,等距回归是一种更强大的校准技术,能够修正任何单调的失真。当校准图形看起来不像 S 型曲线时,它会被使用。等距回归将曲线分割为多个线性模型,因此需要比 Platt 缩放更多的点。这种技术试图找到一组最佳的非递减预测,并尽可能接近原始数据点。该方法在应用于校准问题时,涉及在原始校准曲线上实施回归。与 Platt 缩放不同,等距回归不推荐用于小型数据集,以避免过拟合,并且适用于大型数据集,因为它对离群点较为敏感。

接下来,我们将通过一个动手示例,展示模型校准如何影响模型的可靠性。

使用 scikit-learn 进行模型校准

在本节中,我们将使用 scikit-learn 模块合成数据,以比较未校准模型和已校准模型的可靠性与性能。具体方法如下:

  1. 首先,我们导入所有必要的模块。在这里,我们将使用 scikit-learn 来生成合成数据,并构建分类器——包括未校准和已校准的分类器:

    from sklearn.datasets import make_classification
    from sklearn.calibration import CalibratedClassifierCV
    from sklearn.calibration import calibration_curve
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.metrics import roc_auc_score, brier_score_loss
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    import seaborn as sns
    
  2. 在这里,我们首先考虑一个平衡的数据集。以下语句生成了 10,000 个样本,每个样本有 10 个特征,并且两类的分布是相等的:

    X, y = make_classification(n_samples=10000, n_features=1000, n_redundant=10, random_state=37, weights=[0.5])
    

为了方便,我们将特征和标签放入各自的 DataFrame 中:

Xs = pd.DataFrame(X)
ys = pd.DataFrame(y, columns=['label'])
  1. 现在,让我们使用以下代码验证数据是否平衡:

    #plotting bar chart
    ys.value_counts().plot(kind='bar')
    

在下图中,您可以看到标签的均匀分布:

图 13.8 – 显示合成数据中类别分布的条形图

图 13.8 – 显示合成数据中类别分布的条形图

  1. 接下来,我们将数据分为训练集、验证集和测试集,比例为 60:20:20:

    X_train_raw, X_test, y_train_raw, y_test = train_test_split(Xs, ys, test_size=0.20, shuffle=False)
    X_train, X_val, y_train, y_val = train_test_split(X_train_raw, y_train_raw, test_size=0.20, shuffle=False)
    

接着,我们在训练数据集上训练一个简单的逻辑回归分类器:

clf = LogisticRegression()
clf.fit(X_train, y_train.values.ravel())
y_pred_uncal = clf.predict_proba(X_test)[:, 1]

让我们通过曲线下面积指标来查看分类器的表现:

roc_auc_score(y_test, y_pred_uncal)
>>> 0\. 9185432154389126

我们分类器的 auc 值是 0.92——还不错!

我们还使用 Brier 分数 来检查分类器的表现。它是对概率预测准确度的衡量,数学表达式如下:

Brier 分数 = 1N∑i = 1Np(yi) o(yi)²

这里,N 是实例的数量,p(yi) 是实例 i 属于 yi 类的预测概率,o(yi) 是实例 i 的实际结果,若 yi 为真实类别,则 o(yi) = 1,否则 o(yi) = 0:

brier_score_loss(y_test, y_pred_uncal)
>>> 0.10919273032433353

布赖尔得分的范围从 0 到 1,得分为 0 表示完美准确,得分为 1 表示最差的表现。我们的分类器显示布赖尔得分为 0.11,表现依然优秀。

现在,让我们为同一平衡数据集重复该过程,使用校准后的分类器:

Calibrated_clf = CalibratedClassifierCV(clf, method='sigmoid')
calibrated_clf.fit(X_val, y_val.values.ravel())
y_pred_cal = calibrated_clf.predict_proba(X_test)[:, 1]
print(f'ROC Score {roc_auc_score(y_test, y_pred_cal):.2f} \nBrier Score {brier_score_loss(y_test, y_pred_cal):.2f})
>>> ROC Score 0.92
>>> Brier Score 0.11

从准确性和布赖尔得分(Brier score)值来看,我们可以看到,对于平衡数据集,未经校准的分类器与校准后的分类器表现相当:

plt.rcParams.update({'font.size': 10})
frac_of_positives_uncal, pred_prob_uncal = calibration_curve(y_test, y_pred_uncal, n_bins=10)
sns.lineplot(x=pred_prob_uncal, y=frac_of_positives_uncal)
frac_of_positives_cal, pred_prob_cal = calibration_curve(y_test, y_pred_cal, n_bins=10)
sns.lineplot(x=pred_prob_cal, y=frac_of_positives_cal)
plt.grid(linestyle='-', linewidth=0.2)
plt.title("Reliability curve balanced data")
xlabel = plt.xlabel("Probability of positive")
ylabel = plt.ylabel("Fraction of positives")
plt.legend(labels = ['Uncalibrated', 'Calibrated'])
ticks = [0, 0.2, 0.4, 0.6, 0.8, 1]
xticks = plt.xticks(ticks)
yticks = plt.yticks(ticks)

以下绘制的可靠性曲线证实了这一点:

图 13.9 - 平衡数据的可靠性曲线

图 13.9 - 平衡数据的可靠性曲线

现在,让我们为不平衡数据集重复该过程:

X, y = make_classification(n_samples=10000, n_features=1000, n_redundant=10, random_state=37, weights=[0.7])
Xs = pd.DataFrame(X)
ys = pd.DataFrame(y, columns=['label'])

我们可以通过绘制标签的频率图来验证类别的高度不平衡:

#plotting bar chart
ys.value_counts().plot(kind='bar')

这里是相应的图表:

图 13.10 - 显示合成数据中类别分布的条形图

图 13.10 - 显示合成数据中类别分布的条形图

如前所述,我们将数据集按 60:20:20 的比例分为训练集、验证集和测试集:

X_train_raw, X_test, y_train_raw, y_test = train_test_split(Xs, ys, test_size=0.20, shuffle=False)
X_train, X_val, y_train, y_val = train_test_split(X_train_raw, y_train_raw, test_size=0.20, shuffle=False)

现在,我们探索未经校准的模型:

clf = LogisticRegression()
clf.fit(X_train, y_train.values.ravel())
y_pred_uncal = clf.predict_proba(X_test)[:, 1]
print(f'ROC Score {roc_auc_score(y_test, y_pred_uncal):.2f} \nBrier Score {brier_score_loss(y_test, y_pred_uncal):.2f}')
>>> ROC Score 0.88
>>> Brier Score 0.04

最后,我们探索校准后的模型:

calibrated_clf = CalibratedClassifierCV(clf,cv=3, method='isotonic')
calibrated_clf.fit(X_val, y_val.values.ravel())
y_pred_cal = calibrated_clf.predict_proba(X_test)[:, 1]
print(f'ROC Score {roc_auc_score(y_test, y_pred_uncal):.2f} \nBrier Score {brier_score_loss(y_test, y_pred_uncal):.2f}')
>>> ROC Score 0.88
>>>Brier Score 0.04

这里是相应的图表:

图 13.11 - 不平衡数据的可靠性曲线

图 13.11 - 不平衡数据的可靠性曲线

我们可以看到,校准后的模型相比未经校准的模型,对于不平衡数据提供了更可靠的预测。

现在让我们通过考虑动态校准曲线来探索如何设计适应性强的系统。

构建可持续、适应性强的系统

我们已经查看了模型治理、可持续模型训练和部署的逐步流程。我们现在也明白了构建可重用特征存储的重要性。

我们了解到,如果没有特征存储(feature store),每个我们想要部署的模型都会有一个独立的特征工程流程。重复的流程不可避免地会导致计算成本增加、数据血统(lineage)开销增大以及大量工程工作。然而,如果建立的特征存储没有足够的鲁棒性和适应性以应对数据和概念漂移,那么建立可持续的特征存储的努力将是徒劳的。

即使在设计大规模分布式机器学习系统时,我们也应考虑构建一个具有检测数据漂移、概念漂移和校准漂移能力的适应性系统。这将有助于持续监控,并意味着我们可以管理来自不同来源的新数据。例如,在零售系统中,我们可能会遇到具有不同购买模式的新客户,而在医疗保健系统中,我们可能会看到新患者带来新的疾病。为了构建能够应对持续变化的适应性系统,我们必须理解校准和动态校准曲线如何帮助我们检测和改善模型性能。校准曲线提供了在一系列预测概率下的模型性能的图示,而动态校准曲线则通过考虑每个观察值的情况,帮助我们可视化时间序列上真实校准曲线的发展。此外,动态曲线通过表示预测概率的加权分布,帮助我们估算评估集上的拟合值。这种拟合有助于评估拟合曲线的性能。你可以在这里阅读更多内容:www.sciencedirect.com/science/article/pii/S1532046420302392

我们构建的特征存储应该内置自动化功能,以支持动态校准曲线,并评估来自新观察的模型性能变化。特征存储漂移检测器可以在新数据积累时提醒团队注意误校准,此外,还可以使用最近的数据窗口自动化重新训练过程。最重要的是,如果我们能够准确检测时间序列中的漂移,并且趋势似乎是永久性的,那么我们还应该看到校准的变化。

一旦校准漂移开始,MLOps 团队应警惕其速度和幅度,这可以通过精确的监控系统有效检测。变化应来自相对较高数量的观察,以确保我们有信心确定模型从已校准状态转变为误校准状态。

由于在相关概率区域内的知识有限,动态校准曲线在低密度、高概率范围内学习误校准的能力不够强。

图 13.12 展示了动态校准曲线,特别是其响应如何因模型性能的变化而在一段时间内发展。

所谓误校准(et),是指曲线偏离理想校准的情况,其通过计算观察值的预测概率(pt)与当前曲线在预测概率处的拟合值之间的绝对差异来获得(www.sciencedirect.com/science/article/pii/S1532046420302392)。

图 13.12 – 一段时间内的动态校准曲线

图 13.12 – 一段时间内的动态标定曲线

这里列出了需要关注的一些重要领域,以检测需要更新模型的标定漂移:

  • 动态标定曲线应旨在展示性能衰退,即使不突出具体的衰退部分。

  • 错标定可能会在过度预测和欠预测区域之间出现波动,且概率边界较宽。这一点在漂移前后的标定误差变化中得到了进一步体现。

  • 标定漂移通常源自过渡状态。

  • 动态标定曲线的方差可以通过调整 Adam 优化器的步长或初始学习率来处理,从而快速响应模型性能的变化。(Adam 优化器是一种深度学习优化器,用于随机目标函数的一阶基于梯度的优化)

  • 对于模型性能的显著性边际,需要为非常小的标定变化正确设置和定义。

  • 根据模型的复杂性,需要定义最小窗口大小,以捕获足够的样本进行模型更新。

正如你在图 13.13中看到的,在线和离线特征空间是共享的,创建了一个合并的共享特征,称为编码器。参见下图:

图 13.13 – 特征存储中标定漂移检测器的重要性

虽然B 队参与离线特征生成过程,A 队C 队则参与在线特征生成过程。如果任何在线特征的突然变化触发标定漂移并损害模型的性能,必须立即向B 队触发警报,因为该队也访问共享特征空间。使用B 队共享特征训练的模型也可能经历标定漂移,并且必须通过触发重新训练来立即进行修正。

在这里,我们观察到运行和触发警报的标定漂移检测算法的重要性。

除了标定漂移,我们在第七章中研究了数据和概念漂移如何发挥重要作用,以及适应性框架如何发展以应对这些漂移。现在,重要的是,我们要拓宽视野,将这一概念应用于可持续训练环境,并将适应性框架融入特征存储。我们已经了解了可持续特征存储;现在,让我们将概念漂移的思想整合到 FL 环境中。

考虑概念漂移的联邦平均(CDA-FedAvg)

我们在 FL 设计模式中看到,异步发送模型更新的方法对于电力消耗大的设备非常有利,使它们在有电的情况下灵活参与训练。它还帮助在协作环境中进行概念漂移检测和适应技术,服务器负责协调这一过程。

服务器充当协调者,将来自各个设备的模型进行聚合,本地设备则成为决定性主体,选择数据和触发本地训练过程的时间。

由中央服务器聚合的模型是全球公认的(参与实体的每个单独模型都经过服务器的同意并平均化),然后服务器将其广播到所有客户端。客户端负责检测和处理数据和模型模式的变化。客户端在其本地训练数据集上训练模型,并通过三阶段过程来管理漂移:

  1. 基于时间的漂移识别

  2. 漂移根本原因分析RCA)用于识别漂移的原因和漂移开始发生的数据实例

  3. 响应与缓解方法以适应漂移,从而产生高精度模型

当客户端接收到来自多个输入源的新收集数据时,它们会配备漂移检测算法以识别新概念(漂移检测)并从中学习。内建的漂移适应技术帮助分析数据或模型在两个时间戳之间的差异,以及分析漂移的性质或其原因,并采取相应的补救措施。当地客户端配备了短期记忆和长期记忆,以便在检测到漂移时立即做出响应。短期记忆帮助存储和比较客户端在最新时间间隔内收集的数据实例,而长期记忆则存储过去事件或概念的数据样本,这些事件或概念与当前时间点相比较。

这种具有短期和长期记忆的适应性帮助我们理解数据、模型模式和概念,并通过长时间存储数据记录来触发本地模型训练或再训练。这个过程按照事件顺序发生,如图 13.14所示:

图 13.14 – CDA-FedAvg 在 FL 客户端中的应用

图 13.14 – CDA-FedAvg 在 FL 客户端中的应用

如前所示图所示,我们基于漂移的存在与否采取以下行动:

  1. 当本地训练过程尚未启动时,短期和长期记忆都会初始化为空。

  2. 一旦客户端获得首个数据,它将作为初始概念存储在长期记忆中,并用于首次训练和本地更新。

  3. 客户端收到的任何后续数据将存储在短期记忆中,以评估漂移。

  4. 在识别到潜在漂移后,与新概念相关的新数据将被存储在长期记忆中。

  5. 此外,新的漂移案例会触发客户端的新的训练轮次。

因此,一个设计良好的系统不仅应运行最佳的概念漂移检测算法,无论是在集中式还是 FL 环境中,还应经过良好的校准,以确保由于输入数据变化导致的漂移最小。

总结

在本章中,我们学习了领导者和利益相关者应采取的主要指导原则,以便采取直接行动,推动最佳的模型构建实践融入他们的组织文化。本章深入探讨了如何在设计联邦特征存储时充分利用联邦学习,鼓励通过使用 API 促进协作研究。此外,我们还探索了特征存储中可适应框架的概念,这些框架在隐私、可解释性和公平性方面也符合伦理要求。

此外,我们还学习了如何通过校准来改进模型,当模型输出显示存在高概率区域时,这些区域可能并不真实。也可以考虑将预测分数作为输入的指标——例如,曲线下面积-接收者操作特征AUC-ROC)分数基于预测位置,但在准确校准的概率方面表现不佳。

校准在复杂的机器学习系统和实际场景中具有优势。它在训练后调整机器学习模型的结果,并保持输出的一致性。执行校准可能会影响模型的准确性,通常观察到校准后的模型准确度略低于未经校准的模型。然而,这种对准确性的负面影响非常低,而校准所带来的优势则要显著得多。如果模型的目标是实现良好的概率预测,校准模型是提高预测性能的关键步骤。

在本章中,我们识别了伦理模型的可持续性方面,以及如何将联邦学习(FL)和联邦特征存储结合起来,通过可持续能源解决方案来计算和控制碳排放。在充分理解了最佳设计框架用于伦理机器学习建模之后,在下一章中,我们将学习如何将这些模式应用于不同领域,以解决实际的使用案例。

深入阅读

第十四章:行业范围的应用案例

本章展示了关于零售、供应链管理、银行和金融以及医疗健康领域的负责任 AI 的不同应用案例。本章的主要目标是通过实践应用帮助您提升技能,以便将 AI 解决方案应用于现实世界的用例,进而推动创造一个更加公平和包容的世界。您将增强对 AI 伦理和合规性的理解,帮助您更好地识别和解决涉及 AI 在不同产业领域应用的未来用例。此外,本章还将让您通过在大规模分布式系统中应用基于 AI 的工具和算法,测试、衡量和量化各行业领域的业务成果。

在本章结束时,您将能够创建关于零售、银行和医疗领域的无偏、公正的 AI 驱动解决方案。

本章将涵盖以下主题:

  • 在各行业中构建道德的 AI 解决方案

  • 涉及零售和供应链管理领域的 AI 应用案例

  • 涉及银行和金融领域的 AI 应用案例

  • 涉及医疗健康领域的 AI 应用案例

技术要求

本章要求您安装 Python 3.8,并使用以下命令安装以下 Python 软件包:

  • tensorflow-2.7.0

  • pip install pycausalimpact

  • pip install causalml

  • pip install dice-ml

  • pip install causalnex

  • pip install auton-survival

在安装这些库时,您可能会发现依赖库之间存在冲突,因此建议您先安装并运行一个库的应用案例,然后再继续安装下一个库。

让我们首先看看各个行业领域如何遭遇偏见解决方案,以及如何构建道德的解决方案来改善客户体验。

在各行业中构建道德的 AI 解决方案

聊天机器人在零售、金融、医疗、旅游、酒店和消费品行业,以及其他垂直行业中发挥着重要作用。因此,负责任的 AI 实践应该能够识别由 AI/ML 模型产生的偏见聊天机器人,并采取适当的措施确保它们在预测中的公正性。

偏见聊天机器人

聊天机器人无法理解某些口音或方言,导致负面的客户体验。客户被迫直接联系您的客服部门。聊天机器人在零售行业的应用广泛,主要体现在以下几种方式:

  • 通过提供 24/7 全天候服务、快速响应时间,并解决客户问题,帮助保留客户。

  • 通知客户新产品的可用性,并提醒客户与买家兴趣相符的个性化产品。

  • 通过获取客户信息,如电话号码、支付选项等,帮助客户下订单并确保顺利的结账流程。

在多样性不足的数据上训练的聊天机器人会给终端用户提供偏见性的答案,迫使他们直接拨打客户服务电话。在仅使用美式英语口音数据训练的聊天机器人可能无法理解少数群体和被低估群体的口音和方言,例如非裔美国人英语。一个例子是 Facebook 基于 Reddit 数据训练的 Blender 聊天机器人,它很快学会了粗俗的语言。

一个类似的案例是微软于 2016 年推出的 AI 聊天机器人 Tay,它开始发布种族主义言论,并在发布后的 24 小时内被撤回。Tay 仅使用来自 Twitter 的数据进行训练,展示了偏见数据集如何对不同人口群体产生歧视性预测。

除了符合伦理标准的聊天机器人外,我们还需要考虑扩展现实XR)/增强现实AR)/虚拟现实VR)环境的伦理问题,因为它们在各行业中得到了广泛应用。因此,让我们了解在零售行业中,VR、AR 和 XR 环境是如何被使用的,以及它们在设计时遵循最佳实践的重要性。

XR/AR/VR 中的伦理问题

零售行业已经推出了多种XR工具,包括ARVR混合现实MR),这些工具通过数字技术使顾客在购买之前能够与他们选中的商品互动和体验。零售商现在配备了 AR/VR 设施,可以将顾客可能想试戴的任何物品进行数字投影,从不同尺寸和颜色的眼镜到珠宝、衣服、鞋子和手表等。顾客还可以利用智能手机相机在家中组织他们计划购买的家具,甚至可以将自己传送到不同的地点,享受他们所穿衣服或鞋子的感觉。

随着品牌在社交媒体平台上的影响力不断上升,品牌和监管机构应当意识到在这些平台上促进人工智能伦理使用的最佳实践。由于通过人口信息定位客户并提供个性化购物体验,一些品牌开始面临关于其产品的指控,因为许多产品被发现带有种族主义的品牌标签。例如,许多国际消费品品牌计划从其产品中移除“公平”、“白色”和“亮白”等标签,包括在印度流行的美白面霜。

康德义务伦理学(其制定了适用于所有人类的普遍道德原则,不受情境或背景的限制)解释了人类应当以尊重和荣誉的态度相互对待,就像他们希望别人以同样的方式对待自己一样。这也适用于 AR/VR 的情境——如果我们对虚拟角色不尊重,或故意或无意地实施暴力或不宽容行为,可能会对这些角色所代表的人造成心理伤害。因此,AR/VR 的设计者必须审慎考虑虚拟角色和代理人可能执行的所有行动,禁止它们进行不道德的行为。

在缺乏关于 AR/VR/XR 数据隐私、版权和责任的结构性法规的情况下,我们可以将康德义务伦理学作为思考人工智能伦理影响和应当规范人工智能系统开发和使用的道德规则的框架。例如,康德的定言命令认为我们应当只以我们愿意看到普遍适用的方式行事,这一原则可以应用于人工智能系统的开发。可以认为,我们应当只开发符合道德价值观并愿意普遍适用的人工智能系统,而不是开发可能被用于不正当目的或可能导致负面后果的系统。

此外,伦理机构和经验丰富的研究人员应评估易受影响群体暴露于可能造成伤害并影响用户身心健康的敏感话题的风险。例如,顾客可能访问一个虚假的虚拟零售商店,并被提示进行虚假的商业交易,顾客的个人数据和银行信息将被盗取。

因此,这类 AR/VR 系统的开发者应考虑以下参数,并可能根据受众的特点进行调整。例如,某些 AR/VR 系统可能对残障人士或老年和年轻人群体构成危险 (www.frontiersin.org/articles/10.3389/frvir.2020.00001/full)。这包括以下内容:

  • AR/VR 媒体的速度(或帧率)以及人们可能经历的晕动症程度。

  • 影响一个人的感官、运动和知觉能力,或者其手动灵活性或身体定位能力。

  • 通过劝导行为可能对个体产生的信息过载程度。

  • 长期和频繁使用 XR 可能导致对物理世界事件的不信任,以及对虚拟世界事件的过度优先考虑,例如顾客可能在一段时间后无法区分真实与虚拟事件。

  • 在虚拟现实环境中,用户需要时间来适应体验的强化,或考虑到需要心理治疗以防止其产生不良反应。

  • 在虚拟现实环境中离开后,人们可能带着认知、情感(例如,如果观众的虚拟形象被虚构角色侮辱)和行为(例如,某些在 XR 环境中被接受的行为在社会上是非伦理的,如性别或种族歧视,或对特定群体的错误归因)上的困扰,再次进入现实世界时可能会有负面影响。

  • 即使是在虚拟世界中的现实情境,在现实世界中也可能是危险的。当客户在 XR 中看到一些现实世界中没有对应物的事物,并尝试将其复制到现实世界时,就会出现这种情况。一个例子是椅子问题,客户尝试坐在一个没有物理对应物的虚拟椅子上。

为了设计符合伦理的零售行业解决方案,我们必须考虑隐私、公平性和可解释性。

零售行业中的使用案例

让我们考虑一些能够传达这些方面重要性的具体使用案例。

零售行业的隐私

零售商应主动通过遵守数据隐私和安全相关的法律法规来保护客户的敏感数据,如欧盟的通用数据保护条例GDPR)。全球范围内,零售商还必须遵守其他法律,以保护消费者。这包括 2002 年的电子商务条例、支付卡行业数据安全标准、反垃圾邮件法以及全球其他众多规则。为了保障客户数据的安全,一些最佳的安全实践包括安装防火墙服务、强制实行双因素认证以及其他在第二章中详细说明的安全做法,风险规避方法与框架的出现

零售行业的公平性

在零售行业中,人们观察到,基于人工智能驱动的解决方案往往会根据人们的社会人口学(性别、种族或其他被认为敏感的属性)背景,导致不同的结果。因此,作为人工智能设计师,我们必须深入研究客户细分,以便制定我们的解决方案。我们知道,在零售行业中,客户档案在决定客户对公司终身价值方面起着主导作用。因此,客户档案以及他们的浏览历史,决定了是否可以根据客户的点击流(即用户浏览会话中的一系列事件)来提供促销、折扣和优惠券。然而,即使考虑了这些因素,研究表明,激励购买的行为(Koehn 等人,2020,通过点击流数据使用深度学习预测在线购物行为https://www.sciencedirect.com/science/article/abs/pii/S0957417420301676)可能导致优惠券的分发,其中来自某些社会、人口或文化背景的消费者会受到偏袒和不公平的对待,而没有收到折扣的消费者则产生负面情绪。一个例子是当折扣分配不均,并主要面向那些具有更高购买可能性的高收入家庭的人员,而低收入家庭的人员则被排除在外。

此外,点击流会话揭示了男性和女性用户之间的明显差异,并得出结论,性别即使作为一个代理变量,也会导致偏倚模型的产生。统计数据表明,女性用户通常有更高的浏览频率,并且每次会话在网页上的停留时间也更长。随着浏览时间的增加,电子商务平台的后台处理引擎通常会认为女性用户比男性用户更有可能进行购买。然而,这并不适用于所有年龄段的男性和女性。甚至年龄也是产生不同分配的重要因素,女性的平均年龄明显高于男性。为了消除在我们的机器学习模型中使用偏倚数据,我们需要应用“平等机会”原则(如在第五章公平数据收集 中研究的),其内容如下:

  • 无论性别如何,男性和女性用户在被视为符合优惠券条件的概率上应当是相同的。

  • 无论性别如何,男性和女性用户在不被视为符合优惠券条件的概率上应当是相同的。

这将消除由偏见导致的特权用户获得数字优惠券的情况,即使他们的鼠标点击率较低。如果我们实施平等机会原则,那么我们就可以限制真实世界点击流数据中的性别偏见,从而防止通过访问更多优惠券给予某些群体优势。

另一个在电子商务中观察到的著名歧视性推荐是,当 AI 被用来个性化网站互动时,这些 AI 系统显示的广告显著地减少了新产品或由新入场者和小型市场参与者销售的产品广告。

让我们了解一下歧视性推荐的原因:

  • 导致歧视性模型结果的第一个原因是,算法从实际客户行为中学习到了歧视性行为(例如,随着越来越多的人被推荐大市场参与者的产品,他们更有可能点击这些广告)。

  • 第二个可能的原因是,算法从其他数据来源学习到了这些行为(例如,基于国家人口统计信息的市场领导者赞助的产品和广告中其他形式的性别歧视)。

  • 第三个可能性认为,这不是由学习偏见引起的,而是由给定地区的经济因素推动的。举例来说,包括广告投放技术驱动了观察到的差异(例如,高成本广告关键词的价格溢价较高)。

为了遏制这种歧视性结果,消除偏见,并确保 AI 解决方案的公平性,如在第五章《数据收集中的公平性》一节中所研究的,单独采用去除敏感属性的技术可能不足以解决问题。这是因为其他属性可能充当代理变量,导致预测结果中固有的偏见。一个例子是在电子商务中,AI 根据用户的浏览历史预测最成功的广告内容。该方法的一个主要缺点是,浏览历史信息常常被作为性别的代理(例如,github.com作为男性的代理,pinterest.com作为女性的代理)。此外,在第八章《模型训练和优化中的公平性》一节中,我们了解到在算法优化器中约束条件的重要性,这些约束可以控制偏见。

在零售领域,价格经常变动,并且影响销售和收入,因此理解价格变化的原因非常重要。那么,我们来探讨一下零售商店中定价项目的伦理问题。

伦理定价选择

为了促进社会福祉,伦理定价选择是电子商务应用和平台在使用智能动态定价引擎时一个重要的考量因素。动态定价引擎的设计方法应解决价格变化的根本原因,以减少对顾客、组织和更广泛社会的潜在危害。如果企业避免解决动态定价带来的负面影响,可能会引发媒体报道、诉讼和立法调查。法律和监管的变化可能会损害品牌形象和声誉,并加剧顾客对公司的不信任。

一些在伦理定价选择中的重要因素(参考自hbr.org/2021/03/how-ai-can-help-companies-set-prices-more-ethically)如下:

  • 基本服务和产品价格变化所造成的障碍程度——在最糟的情况下,可能会阻碍人们获取基本服务,如食品、住所、药品、交通和互联网。我们在疫情期间观察到这一点,当时高价格减少了个人防护设备如 N95 口罩和洗手液的获取途径,而失去这些设备的人群暴露在病毒面前。

  • 在零售行业,疫情之前,小型第三方卖家曾声称,大型零售商如亚马逊通过利用他们的数据来与这些小型卖家竞争,从供应商处以更低的成本大批量购买相同产品,并以更低的价格销售。由人工智能驱动的制药公司算法提出的高涨价历史上曾阻碍了慢性病患者获取药物的途径,危及他们的生命。

  • 价格变动对弱势群体影响的程度。例如,当产品或服务销售给患有慢性/严重疾病或收入有限的顾客时,社会歧视所造成的脆弱性变得更加突出。此外,在保险领域,考虑到投保人的职业、年龄等因素的预期利率指南,最终造成了广泛的社会危害,贫困投保人最终支付的保险费高于精英职业投保人。

  • 定价引擎调整价格的方式使得它们可能对顾客产生不利影响。这一问题常常促使我们设计可解释的模型,以便提供更具信息性的购买决策。这也帮助我们阐明,受益于定价引擎的顾客能够做出更加明智的决策。如果价格变动总是通过利用顾客来将商业利益放在首位(例如打车应用在需求高峰期间使用指数型票价上涨),那么这样的模型就需要接受监管机构的审查和批准。

因此,我们可以看到动态定价引擎在电子商务、零售和保险中的负面后果。作为动态定价算法专家,我们应当仔细检查该问题是否引起了企业的足够关注,并确保定价决策对所有客户群体公平。

现在我们理解了零售中的公平性概念,让我们深入探讨可解释性概念如何融入零售行业。

可解释性——反事实(CFs)的作用

理解客户的痛点和偏好是电子商务平台上营销活动和促销活动的关键前提。一旦识别出客户需求,零售商可以提供促销优惠和折扣,并重新吸引流失的客户。例如,对于像 Tesco、Carrefour 或 Walmart 这样的零售商来说,能够识别出每个门店的常规客户和大额客户尤为重要,后者通常对该门店的整体月度采购量贡献巨大。一旦零售商理解了主要客户群体及其偏好,他们不仅可以提供实时推荐,还能通过短期和长期的项目和活动推动业务决策。

客户的不满情绪可能由因果推断引起,这种推断将客户满意度或客户奖励积分等无形变量转化为关键业务指标。以 Uber 为例,其推出的促销活动 Uber Pro,作为一个试点项目在美国八个城市开展,旨在奖励最为敬业的司机伙伴。这些司机通过此项目获得了更高的收入、减少的汽车维修费用、优先机场接送权以及免费的凹陷修复服务等奖励。

电子商务平台经常犯的一个错误是过分重视社交媒体广告,认为这可能会导致例如冬季服装销量的增加,而当其他时间的广告预算被削减时,销量却下降。然而,他们未能注意到冬季几个月恰逢圣诞节、感恩节、新年和其他节日,人们通常会互赠礼物。因此,电子商务平台上的社交媒体营销人员需要通过研究如果没有营销活动时,销量的变化来考虑 CF(因果因素)。这意味着要直接确定由于营销活动带来的收入增长,而不是因为商品价格低廉或正在进行的节日活动推动了人们的购买。我们可以通过 A/B 测试进行详细实验,将客户分为两个不同的组:对照组和目标组。对照组不进行任何营销活动,而目标组则进行营销活动。然后,我们比较目标组和对照组之间的收入增长差异。通过更高的信心来确定 CF 的影响,有助于我们通过衡量目标群体和非目标群体之间的差异来深入了解不同干预措施的效果。这还帮助我们评估营销活动、新产品发布、促销活动以及在特定地区和针对特定消费者群体的优惠的影响。接下来,我们将详细了解 CF 营销活动。

使用 CF 评估营销活动的影响

通过因果推断,我们可以回答一些因果性问题,这些问题在某些情况下是无法仅通过 A/B 测试来回答的。当我们有一个随机对照的 A/B 测试时,但每个个体所采取的处理(行为)对不同个体而言却是不同的,这时我们通常会遇到另一种困难。例如,组中的某人没有打开邮件或没有使用奖励积分。我们将很快看到一个示例,说明因果推断如何帮助解决这个问题。

首先,让我们研究因果推断如何通过为我们提供以下见解来帮助我们确定营销活动或促销活动对销售的影响:

  • 价格变化如何影响选定的活动指标(正向或负向)

  • 选定日期间的促销活动如何影响销量

在下面的例子中,我们将展示零售商如何检验网站上新产品推荐的效果,以得出其影响是正面还是负面。我们可以选择任何固定/特定日期,比如圣诞节。观察在指定日期前后的流量变化,可以帮助我们确定通过推荐框架是否实现了改善或退步。销售的增长或下降可以通过因果影响建模来评估,展示某一行动在指定日期前后的效果。我们将在本例中演示这一过程。通过这种方式,我们可以更容易地确定并解释,是否因为新设计的推荐框架而导致了有机搜索数量的增加。此外,我们还可以预测如果没有任何营销活动,可能会出现什么样的结果:

  1. 首先,让我们进行必要的导入并加载数据集:

    import numpy as np
    import pandas as pd
    import tensorflow as tf
    import tensorflow_probability as tfp
    import matplotlib.pyplot as plt
    from causalimpact import CausalImpact
    df = pd.read_csv('https://raw.githubusercontent.com/flyandlure/datasets/master/causal_impact_dataset.csv')
    
  2. 现在,让我们为研究设定前后时间段:

    pre_period = ['2021-07-04', '2021-07-17']
    post_period = ['2021-07-18', '2021-07-31']
    

接下来,我们希望检查零售商网站在pre_periodpost_period日期范围内的点击次数,日期范围来自前面的列表:

model = CausalImpact(df['clicks'], pre_period, post_period)
  1. 最后,我们必须通过研究干预的影响来分析模型输出:

    print(model.summary(output='report'))
    

以下是它的输出:

图 14.1 – 从 model.summary()获得的输出

图 14.1 – 从 model.summary()获得的输出

模型总结给出了在干预后期未进行任何干预的情况下,平均预计有 243 次点击。通过干预,我们确定了两个变量之间的关联,XY,其中一个变量X是另一个变量Y的直接原因,前提是所有其他变量保持固定。

然而,实际观察到的点击次数是 344。所以,预测与实际点击次数之间的差异是 101 次点击。这 101 次点击印象展示了干预对模型的因果效应。电商网站上引入产品推荐框架以及其他任何变化,都积极地通过提高网站流量 42%来做出了贡献。

  1. 我们还可以使用model.plot()绘制数据,研究预测与实际数据之间的差异:

图 14.2 – 通过预测与实际点击次数在干预后期的差异获得的因果效应

图 14.2 – 通过预测与实际点击次数在干预后期的差异获得的因果效应

这就是我们如何研究干预后期前后的因果效应。

我们现在将研究不同的场景,探讨如何通过必要且充分的因果关系推动客户转化。

理解转化率 – 必要且充分的因果关系

让我们通过研究三种不同类型的因果关系来说明优惠券对客户转化率的因果效应:

  • 必要:一个强制性的条件,没有这个条件客户不会转化,也就是在没有优惠券的情况下。

  • 充分:一个存在的条件,优惠券有助于将客户转化。

  • 必要且充分:优惠券在客户转化中起着主要作用,因为没有优惠券,客户在任何情况下都不会转化。

如果我们需要研究这三种类型的干预措施,我们可以将实验数据和观察数据结合起来,以确定每种类型的因果关系发生的概率边界。一旦获得了这些边界,我们就可以安全地推断出最有效的方式来利用基于优惠券的促销,而不浪费资金。以下代码演示了逐步实现这一方法:

  1. 首先,让我们导入必要的库:

    import numpy as np
    import pandas as pd
    from causalml.optimize import get_pns_bounds
    

在这里,我们尝试观察选择促销的个体(例如,拿到药物或收到优惠券的人)与未选择促销的个体的结果。根据田和 Pearl 的假设(ftp.cs.ucla.edu/pub/stat_ser/R290-A.pdf)关于识别因果效应的条件,图中所示的两个数据集可以结合起来,以获得通过独立查看任一数据集无法看到的信息。这将帮助我们通过结合两种数据源来识别必要且充分因果关系的概率或边界,其中包括处理组和对照组中的死亡与生还数据。

用于实验的数据集如下所示:

数据集名称组别处理组对照组
数据集 1未转化数1614
数据集 2转化数894986
数据集 3未转化数282
数据集 4转化数998972

表 14.1 – 实验模拟数据集

这是代码:

num_samples = 5000
half = int(num_samples / 2)
treatment = np.tile([0, 1], half)
recovery = np.zeros(num_samples)
df_expt = pd.DataFrame({'treatment': treatment, 'death': recovery})
df_obsv = pd.DataFrame({'treatment': treatment, 'death': recovery})
  1. 现在,为了实验目的并分析其影响,我们将实验数据集中的 16 个处理组和 14 个对照组观察的标签设置为 1,并将观察数据集中的 2 个处理组和 28 个对照组观察的标签设置为 1:

    df_expt.loc[df_expt.loc[df_expt['treatment'] == 1].sample(n=16).index, 'death'] = 1
    df_expt.loc[df_expt.loc[df_expt['treatment'] == 0].sample(n=14).index, 'death'] = 1
    df_obsv.loc[df_obsv.loc[df_obsv['treatment'] == 1].sample(n=2).index, 'death'] = 1
    df_obsv.loc[df_obsv.loc[df_obsv['treatment'] == 0].sample(n=2).index, 'death'] = 1 df_obsv.loc[df_obs.loc[df_obsv['treatment'] == 0].sample(n=28).index, 'death'] = 1
    
  2. 接下来,我们将使用get_pns_bounds()函数来评估相关的概率边界,主要有三种类型:

    pns_lb, pns_ub = get_pns_bounds(df_expt, df_obsv, 'treatment', 'death', type='PNS')
    pn_lb, pn_ub = get_pns_bounds(df_expt, df_obsv, 'treatment','death', type='PN')
    ps_lb, ps_ub = get_pns_bounds(df_expt, df_obsv, 'treatment', 'death', type='PS')
    
  3. 这产生了以下概率边界:

图 14.3 – 必要且充分因果关系的概率边界

图 14.3 – 必要且充分因果关系的概率边界

这表明,未转化且获得优惠券的参与者相比未获得优惠券的参与者,转化的机会更高。那些已经转化且没有提供优惠券的参与者,如果他们得到优惠券,未转化的风险将在 0.1%到 1.2%之间。此外,我们还可以看到,个体的转化概率范围在 0.1%到 0.6%之间,以及是否获得了优惠券。

现在,让我们了解不同类型的因果推理技术,以及它们如何应用于不同的背景。

不同的因果推理技术模式

以下图表描绘了我们可以以非互斥的方式进行因果分析的不同方式,在这种方式下,我们可以将多种方法应用于同一个问题:

图 14.4 – 不同的因果推理方法

图 14.4 – 不同的因果推理方法

前图中描述的方法可以用来消除选择偏差。选择偏差的例子发生在奖励活动中,当我们试图估计一封邮件的影响时:

  • 不是所有在处理组中获得奖励的人都打开了它。

  • 在处理组中打开奖励的人与没有得到奖励的对照组的人进行比较。

  • 选择打开邮件或申请奖励的人可能与没有选择打开邮件或申请奖励的人有所不同。

为了避免选择偏差,我们可以比较整个处理组(或测试组),无论他们是否打开了邮件或使用了奖励程序。但这并不能避免稀释效应,在这种效应下,处理组中的个体(在多个处理组的背景下更为适用)被以不同的方式对待。为了应对并评估实际接受治疗的影响,我们可以使用编译器平均因果效应CACE),其中 CACE 调整了意图治疗效应ITT)(即被分配治疗的效应,也就是说,处于测试条件下的效应),并结合合规率。这是因为 ITT 参数低估了干预的效果。毕竟,某些个体在试验中可能偏离了他们分配的治疗。

这种调整有助于估计正在接受治疗或被考虑进行实验的子群体的治疗效应。这里的治疗指的是经历测试条件的实验组。CACE 框架依赖于假设,客户会打开邮件并使用奖励程序,而实际接受治疗(即接受奖励计划的客户群体)的效果驱动了结果变量。总结来说,CACE 通过工具变量IVs)来运作,在无法进行可控实验时,它们决定因果关系。

这种情况发生在随机实验中,在这种情况下,治疗(在此背景下为奖励程序)无法实施,因此,无法将此类治疗的影响传递给每个单位。这里可以使用 CACE 框架及其工具变量(IVs)。IV 是一种第三方变量,帮助我们研究候选原因对结果的影响。

当处理效应在不同群体之间存在差异时

零售巨头和运输即服务公司(如 Uber)有着非常不同的客户群体,以至于对一个客户群体实行的处理方法在其他群体中并不适用。推荐使用异质处理效应估计HTE)方法进行因果推断,以识别可为所有人带来最大效益的定制体验。在该方法中,成功地部署了条件平均处理效应CATE),通过对观察到的协变量进行条件运算来计算处理效应。该方法的主要目标是评估在接受处理时,哪个子群体将从中受益最大。评估通过 A/B 测试进行,其中实验数据用于训练模型。该指标代表提升成功,并通过计算目标组(接受处理的对象)与控制组之间的最大差异(或差值)来评估。Uber 通过使用其提升建模应用 HTE。分位数回归(估算响应变量的条件中位数)也很受欢迎。

中介建模是另一种著名的因果推断方法,旨在揭示处理和结果变量之间的“黑匣子”。换句话说,它解释了为何某事发生,从而帮助我们得出是否支持因果假设的结论。该机制通过将总处理效应分解为以下两部分来运作:

  • 某一特定机制的假设,表示平均因果中介效应

  • 其他机制显示了平均直接效应

此外,该方法突出了多个潜在机制的相对重要性,其中无形变量对企业的各个方面(包括收入和客户满意度)产生影响,并有助于制定长期和短期的措施来解决客户痛点。例如,当我们观察到客户在零售商那里经历订单延迟配送时,我们通常会假设这是由于客户参与度增加,客户频繁更改所订购的商品。然而,延迟也可能归因于大量订单的存在,这无可避免地推动了这一群体向更高的参与度发展:

图 14.5 – 具有数据生成能力的因果图,用于展示一个工具/因素对候选因果变量的影响

图 14.5 – 具有数据生成能力的因果图,用于展示一个工具/因素对候选因果变量的影响

在前面的图示中,我们可以看到一个因子与结果之间的混杂关系。用户的亚马逊生鲜订单数量表示治疗变量和感兴趣的结果之间存在一个后门路径(某种依赖关系)。因果推断支持观察性分析,我们试图阻止后门路径。这可以通过将订单数量限制为三到四个来实现。确定应该控制哪些变量以及不应该控制哪些变量需要领域专家和数据科学家的合作。此外,如果我们能识别出一个影响延迟交付对客户体验的结果的第三个变量,就可以解决由延迟交付与客户参与之间的后门路径导致的偏估计问题。

另一种已知的方法是前门法,在这种方法中,我们通过评估变量与感兴趣结果之间的关系来尝试估计该变量的影响。此方法依赖于中介原理,它要求引入一个介入变量(通常用于临床研究),该变量不同于治疗(即结果),并且通常被称为因果中介分析CMA)。它在将治疗的总效应分解为直接效应和间接效应中起着重要作用。

因果建模的第一步是识别应该包含的变量。我们将因果建模技术应用于已识别的变量,比较处理组和未处理组在相关协变量上具有相同值的个体。比较的度量标准依赖于通过预测概率得分对变量的表示。这一概率帮助我们衡量治疗程序的有效性,称为倾向得分(propensity score)。

另一种流行的因果推断技术叫做回归不连续性方法。该方法帮助我们研究和评估回归线中的不连续性。干预发生点处的不连续性表明了干预的影响。该方法在确定不同级别的动态定价如何影响顾客是否从零售店购买商品或在 Uber 平台上预定行程方面非常有用。

以 Uber 为例,当我们研究因果效应时,我们必须意识到,在没有该效应的情况下,旅行请求率应该在一个明确的临界点两侧相等,例如引入加价定价时。这一假设成立的前提是,接近临界点的乘客在相关的混杂变量(影响独立和因变量的第三变量)上应该相似。此外,在引入加价定价时,如果旅行请求率在该点出现明显的断层现象,表明超过此价格点的加价对请求率产生了因果影响。

另一种类似的方法是分析候选因果事件前后的时间序列数据结果。这种方法称为中断时间序列设计,旨在预测事件发生的瞬间时间序列中可能发生的任何变化。用于因果推理的时间序列分析的流行方法有合成控制和贝叶斯结构时间序列。Google 提供的贝叶斯结构时间序列分析的流行库是 Causal Impact 包。

现在,让我们来看看因果建模在解决与供应链相关问题中的作用。

供应链应用案例

零售业中公平发挥关键作用的另一个重要方面是供应链。在零售商看到库存短缺和过剩的情况下,作为数据科学和机器学习专家,我们必须监督库存优化政策。因此,我们很可能根据实际需求和当前可用的库存容量来评估公平分配。以下是一些直接影响多个零售商公平库存履行(通过适当匹配供需,避免库存不足和过剩)的因素:

  • 零售商的公平库存分配(例如,平等利润、相同的补货率,或者在处理需求不匹配时,供应的公平份额)。这一过程受比例分配政策的管理(在库存不足时最为有效)或库存稀缺以及多余库存的平等分配(用于库存过剩时)。

  • 我们如何在行业中满足公平感知,包括公平定价和公平工资等要素。

为了进一步阐述在为多个零售商服务的综合供应链网络中的公平性,我们来考虑一个共享库存池,其中总库存按零售商级别进行分配,总成本在多个零售商位置之间分摊。库存补充和履约订单进入仓库,以下场景中会融入公平性约束:

  • 来自多个零售商的总需求超过了可用的供应量。

  • 多个供应商的总供应量超过了需求。

  • 多个零售商从相同的供应商处获得库存。

  • 基于市场需求,在多个零售商之间公平分配库存(受到每个零售商订购商品数量等其他条件的限制),以确保公平的利润分配。

除了在库存优化中引入公平性外,从伦理学角度来看,准确性和可解释性也变得十分重要。因为在供应链不同环节优化的库存分配能够最小化并预测供应商的运输延迟。此外,我们还可以追溯延迟的原因并提出补救措施。

在研究模型可解释性和可理解性时,第十章中提到,了解模型预测背后的根本原因能够帮助企业采取补救措施。通过识别漏洞的阶段和来源,复杂供应链中的百万美元损失由于延迟可以避免。例如,如图 14.6所示,在疫情期间,供应链管道发生了延迟,这可以归因于多种原因:

图 14.6 – 展示直接和虚假相关性的因果关系

图 14.6 – 展示直接和虚假相关性的因果关系

主要的延迟因素是封锁和运营供应商数量减少。然而,这些主要的延迟因素可能导致其他延迟因素,如工厂停工、员工缺席,或者需要旅行通行证来运输货物。

为了解释因果关系,我们需要的是一种评估程序,不仅有助于确定相关性,还能够通过图形辅助因果发现过程,正如我们在这里所展示的。一旦我们获得了因果结构的图形表示,就更容易在问题的每个步骤中建议补救措施或分配资源。

在下一节中,我们将学习因果结构如何帮助我们进行供应链交付。

供应链管理的因果发现

因果图能够捕捉给定问题中不同变量之间的因果关系,突出系统中的关键参与者、他们在系统中的角色以及方向。典型供应链中的关键系统参与者包括以下几类:

  • 订单数量和每个订单的数量

  • 制造工厂的原材料供应和供应商的可用性

  • 工厂的运营模式和在场工人的数量

  • 成功的采购订单PO)创建

  • 一个高效的交付系统,能够确认交付数据

这些主要元素在因果图中共同作用,描述它们之间的相互关系,并阐明某一物品的需求是如何按提前/延迟的时间表到达目的地的,以及延迟对其他上游交付渠道的影响。因此,任何交付管道的延迟和不确定性都能得到更好的解释,这也能加速图形发现过程。不同变量在供给链管道两个不同阶段(采购订单创建和订单交付服务)对整体延迟的相对影响,可以通过下图最清晰地解释:

图 14.7 – 供给链生命周期中不同阶段交付延迟的因果图

图 14.7 – 供给链生命周期中不同阶段交付延迟的因果图

我们可以进一步从因果图中提取结构因果模型SCM),以解释变量之间的交互关系,正如图 14.8所示:

图 14.8 – 供给链生命周期中不同阶段针对某些订单的因果推断(CF)措施

图 14.8 – 供给链生命周期中不同阶段针对某些订单的因果推断(CF)措施

在图的左侧,我们看到通过增加 15%的供应商数量并遵循最佳库存补充策略,我们可以缓解采购订单创建的延迟。在图的右侧,我们看到通过使用因果推断(CF)解释,我们可以发现最佳的交付合作伙伴和路线,以及替代的运输来源(例如,使用航空运输来避免在港口的延迟),这些都可以在因果图中发现。当系统具有实时监控功能时,可以触发因果推断措施,以驱动通过最佳路线尽可能快速到达目的地,从而使这些发现成为可能。

除了降低成本并为企业带来收入提升外,这些由因果图提供支持的因果推断措施还使我们能够了解应使用的适当关键绩效指标KPIs),以减少成本并提高收入。

多方平台中的公平性

大规模的多方零售平台,如亚马逊、阿里巴巴和 Airbnb,为买家提供个性化的推荐,将他们与相关卖家连接起来。所提供的推荐服务应设计为促进公平,确保每个卖家的推荐物品数量均衡。这将确保小型卖家的商品也能获得公平的推荐机会。公平推荐的主要目标是最大化推荐效用(以便它们能够转化为现实世界中的购买),同时最小化物流成本。

在偏见渗透并且买家收到低效推荐以满足全球卖家的覆盖需求的情况下,公平的政策仍然遥不可及。在一个公平和理想的系统中,我们可以加入约束,以满足卖家的覆盖标准并同时考虑买家的目标,从而为每个买家提供高效的推荐。

现在,让我们来探讨一下负责任的 AI银行、金融服务和保险BFSI)行业中的重要作用。

BFSI 中的应用案例

伦理 AI 的一个重要元素是可解释性,正如我们在第九章中讨论的那样。除了模型解释之外,如果我们能向模型设计师、决策者和关键利益相关者提供一种互动方式(调整模型超参数和特征),那么他们就可以调节模型的超参数并模拟不同情景下的数值特征,从而评估和最小化来自高风险金融模型的财务损失。在 BFSI 的背景下,这将为高风险决策的解释提供更高层次的细节,从而降低对生命的关键决策风险,如拒绝抵押贷款或汽车贷款。在这里,CF 解释起着重要作用,一致且可解释的解释可以帮助审问模型,找到可以逆转模型决策所需的改变。

以下是 CF 在 BFSI 中一些突出的应用案例:

  • 交易:CFs 用于分析不同交易的潜在后果以及不同投资策略的潜在风险和回报。例如,AI 系统可以用来分析历史数据并识别可能表明盈利交易机会的模式。然后,CF 分析可以用来理解如果进行不同的交易可能发生什么,并根据这一分析优化交易策略。

  • 投资组合优化:通过分析不同资产配置的潜在后果,优化金融投资组合的组成。例如,AI 利用历史数据来识别可能表明不同资产相对表现的模式。然后,CF 分析可以用来理解如果不同资产被纳入投资组合可能会发生什么,并基于这一分析优化投资组合。

  • 风险管理:了解并减轻金融系统中的风险,包括市场风险、信用风险或操作风险。然后,可以使用 CF 分析来理解如果采用不同的风险管理策略,可能会发生什么,并基于此分析优化风险管理。

现在,让我们看看 CF 解释库如何使用。

CF 解释库的功能

在探索了 BFSI(银行、金融服务和保险)行业中 CF 的一些应用案例后,我们来看一个在贷款申请授予过程中使用 CF 解释的实际示例。我们的示例将使用Diverse Counterfactual ExplanationsDiCE)库。

DiCE 是一个 Python 库,它通过呈现相同输入特征的不同扰动版本来帮助我们传达必要的解释,从而产生不同的结果。在金融机构拒绝贷款等应用场景中,DiCE 能够展示使用给定机器学习模型对同一贷款申请者进行一系列特征扰动的效果。

这可以通过展示拒绝并非最终决定,给客户提供如何提高贷款获批机会的方向,增强客户的信心。例如,如果 DiCE 的 CF(反事实解释)显示“如果收入增加了 1 万美元,客户将获得贷款”,这将有助于决策者评估贷款申请的可信度,并同时指导他们理解驱动结果的必要条件(如现有贷款或收入)。例如,基于多个输入的贷款拒绝 CF 解释,有助于评估公平性标准,并减少错误。

然而,DiCE 在生成多样且可行的 CF 解释时面临两大挑战。因此,DiCE 的扩展版本DiCE4EL(即DiCE for Event Logs,详见icpmconference.org/2021/wp-content/uploads/sites/5/2021/09/DiCE4EL_-Interpreting-Process-Predictions-using-a-Milestone-Aware-Counterfactual-Approach.pdf)应运而生,它通过捕捉和解释中间阶段的日志(例如金融机构的贷款申请日志)和事件,帮助对过程预测进行 CF 解释。DiCE 使用一种通用的神经网络架构,通过考虑静态和动态特征来预测下一个事件。我们可以利用这一架构解决长期过程执行日志的理解问题。此外,通过引入在训练集内搜索有效 CF 并将这些信息应用于损失函数,DiCE 解决了优化带有分类变量的 CF 搜索的困难。

现在,让我们通过 DiCE 来查看如何评估客户贷款申请中的不同特征扰动。这里使用的模型无关的技术应用了黑箱分类器。损失函数优化依赖于根据距离(以及稀疏性、多样性和可行性)对给定点附近的其他点进行采样:

  1. 首先,我们需要导入 CF 分析所需的库,并加载成人收入数据集:

    import dice_ml
    from dice_ml.utils import helpers
    from sklearn.pipeline import Pipeline
    from sklearn.ensemble import RandomForestClassifier
    dataset = helpers.load_adult_income_dataset()
    d = dice_ml.Data(dataframe=dataset, continuous_features=['age', 'hours_per_week'], outcome_name='income')
    
  2. 在对特征进行标准化缩放和独热编码处理后,我们必须使用RandomForestClassifier来训练模型:

    clf = Pipeline(steps=[('preprocessor', transformations),('classifier', RandomForestClassifier())])
    model = clf.fit(x_train, y_train)
    
  3. 接下来,我们必须将训练好的 ML 模型提供给 DiCE 的模型对象,以生成多样化的 CFs:

    backend = 'sklearn'
    m = dice_ml.Model(model=model, backend=backend)
    exp_random = dice_ml.Dice(d, m, method="random")
    dice_exp_random = exp_random.generate_counterfactuals(query_instances, total_CFs=2, desired_class="opposite", verbose=False)
    

这是输出结果:

图 14.9 – 使用随机采样生成的 CFs

图 14.9 – 使用随机采样生成的 CFs

使用随机采样,我们可以生成比 DiCE 当前实现更加不稀疏的 CFs。然而,增加total_CFs确实会增加 CF 的稀疏度。

  1. 现在,我们必须选择特征范围,以展示在 CF 生成过程中,如何精确控制作为输入参数的连续特征范围(permitted_range)。我们可以使用features_to_vary参数设置如['age','workclass','education','occupation','hours_per_week']等特征:

    dice_exp_random = exp_random.generate_counterfactuals(
    query_instances, total_CFs=4, desired_class="opposite",permitted_range={'age': [22, 50], 'hours_per_week': [40, 60]})
    

它的显示方式如下:

图 14.10 – 使用特征范围(permitted_range)生成的 CFs

图 14.10 – 使用特征范围(permitted_range)生成的 CFs

为了在接近性和多样性目标之间找到平衡,我们尝试只生成那些对用户可行的 CF 解释。在这里,接近性和多样性帮助我们理解数据与原始输入的相似度,反映出被显著修改的数据如何影响 CF 解释。我们还尝试设置足够的多样性,以便模型可以在多个可能的选项中做出选择。在这里,使用 DiCE 时,我们已将proximity_weight(默认值为0.5)和diversity_weight(默认值为1.0)分别调整了接近性和多样性。然而,随着我们研究 CF 如何变化,仍可以进一步调整它们:

query_instance = pd.DataFrame({'age': 25, 'workclass': 'Private', 'education': 'HS-grad', 'marital_status': 'Single','occupation': 'Service', 'race': 'White', 'gender': 'Female',
'hours_per_week': 45}, index=[0])
r_exp = dice_ml.Dice(d, m)
dice_exp = r_exp.generate_counterfactuals(query_instance, total_CFs=4, desired_class="opposite", proximity_weight=1.5, diversity_weight=1.0)
dice_exp.visualize_as_dataframe(show_only_changes=True)

它的显示方式如下:

图 14.11 – 使用接近性和多样性参数生成的 CFs

图 14.11 – 使用接近性和多样性参数生成的 CFs

上述输出显示了一个多样化的 CF 集,这些 CF 是从原始数据中生成的,其中收入值被翻转,教育水平高中文凭变为职业学校婚姻状况单身变为已婚,而职业服务业变为白领专业人员。这种替代或多样性帮助银行职员向贷款申请人解释什么因素可能会改变模型的结果。换句话说,它们解释了如果贷款被批准而不是被拒绝,哪些条件可能会发生变化。

在这个例子中,我们了解了如何通过反转目标收入列,从输入查询中生成不同类型的 CFs。我们现在熟悉了模型如何为决策提供建议,以及我们如何与它们互动。在这个基础上,让我们了解一下被误用的机器学习模型如何对 BFSI 行业中的客户构成威胁。接下来我们要讨论的一个强大威胁是深度伪造。

深度伪造

无论是在零售、银行还是金融领域,人工智能的一个应用需要负责任的使用,那就是深度伪造技术。深度伪造是通过深度学习方法生成的逼真伪造视频、音频或照片,内容涉及真人。这些生成的合成视频、音频和照片通过对大量数据进行模型训练而获得,其中的模型版本代表了实际人物没有参与的行为或话语。当原始行为被修改时,深度伪造技术带来了前所未有的威胁,可能被用来冒充个人,导致欺诈性电话或视频会议。例如,使用合成的 CEO 声音指示员工转移资产或资金。更高层次的安全漏洞也可能发生,通过音频或视频会议对客户进行合成冒充,可能导致关于项目或组织的敏感信息被转移。

现在,让我们看看深度伪造技术带来的银行和金融领域的潜在威胁:

  • 作为洗钱计划的一部分,创建虚假账户。在这种情况下,犯罪分子可能大规模伪造身份,攻击多个账户,并使全球金融服务瘫痪,导致全球损失达到 34 亿美元 (www.finextra.com/blogposting/23223/why-deepfake-fraud-losses-should-scare-financial-institutions)。

  • 使用“幽灵欺诈”技术,犯罪分子利用已故人员的个人数据,控制他们的在线账户和服务,包括信用卡、储蓄账户、抵押贷款和汽车贷款。

  • 合成身份欺诈,指的是犯罪分子通过融合虚假、真实和被盗的信息,创造出不存在于现实中的虚假身份。合成身份欺诈是增长最快的金融犯罪类型。

然而,尽管存在深度伪造技术的滥用,我们也看到了其在零售、电商和时尚领域的几个优势。Facebook Shops 和 Google Shopping 平台利用深度伪造技术接触中小型零售商,通过电子商务平台促进销售。例如,Cadbury 使用基于人工智能的机器学习模型重现了一位流行演员的面部和声音,声音非常接近该演员的原声,甚至能喊出本地商店或品牌的名称。零售商正在探索逼真的数字模型和 生成对抗网络GANs)的力量,以为客户创造更好的体验。深度伪造模型展示了不同肤色、身高和体重的服装,吸引更广泛的顾客群体。因此,中小型零售商能够节省成本,充分利用沉浸式逼真平台(如 Unreal Engine)的能力,生成实时模型和背景。

为了确保安全性和隐私,组织需要牢记以下准则,以防止深度伪造带来的威胁:

  • 企业安全团队应使用有效的网络安全策略,结合网络安全和社交媒体监控工具,监控支付和转账。

  • 组织应教育员工关于深度伪造技术的知识。组织内的所有员工应了解如何检测深度伪造,例如识别其中人物的不一致性或不自然的动作。

  • 应用生物特征识别和在线面部验证技术,以验证和认证现有用户和新用户。

现在你已经了解了人工智能在 BFSI 中的角色,让我们来看一下医疗行业中的不同应用案例。

医疗领域的应用案例

当我们深入探讨人工智能在医疗行业中的伦理使用时,我们应了解疾病的早期检测和治疗如何与伦理人工智能相关。以下是一些例子:

  • 人工智能可以通过 X 射线、CT 扫描和 MRI 影像技术支持诊断。

  • 在疾病发展早期阶段检测癌症、肿瘤和其他恶性细胞。

  • 进行实验,确定治疗是否有效。

  • 监控患者,识别疾病的复发或缓解。

下图展示了基于人工智能的深度学习算法如何帮助在训练过的图像(放射科医生和医生标记为疑似癌症的图像)上识别脑肿瘤中 IDH1 基因突变的存在 (www.cancer.gov/news-events/cancer-currents-blog/2022/artificial-intelligence-cancer-imaging):

图 14.12 – MRI 扫描预测脑肿瘤中 IDH1 基因突变的存在

图 14.12 – MRI 扫描预测脑肿瘤中 IDH1 基因突变的存在

在预测高风险疾病的存在时,我们应设计符合医疗标准的系统。让我们研究一个使用 Google Cloud 的参考架构,它符合这些标准。

使用 Google Cloud 的医疗系统架构

现在,让我们研究设计一个符合规定的大规模分布式医疗系统所需的不同云组件,用于存储医疗数据和疾病诊断:

  • 从放射学检查中获得的 DICOM 影像数据可以通过 Cloud Healthcare DICOM API 导入,方便搜索和检索。该 API 还提供元数据提取和数据整合(存储在 BigQuery 中)功能,以推断疾病预测和临床调查的高级见解。

  • 遵守行业范围内的医疗标准:

    • FHIR:一种新兴的医疗数据交换标准

    • HL7v2:最流行的医疗系统集成方法

    • DICOM:放射学和影像领域的主导标准

此外,它还支持使用 Cloud Healthcare API 和 Cloud Dataflow 将数据格式从 HL7v2 转换为 FHIR 格式的功能。此外,它符合美国的 HIPAA、加拿大的 PIPEDA 以及其他全球隐私标准。

  • 配备用于检测新数据到达并通过 Cloud Pub/Sub 向应用程序发送通知的单元。这使得与 HL7v2 消息解析栈的无缝集成成为可能。

  • 数据去标识化(通过删除或转换)服务,用于保护敏感数据元素,这些元素可以用于分析、机器学习模型和其他使用案例。

  • 与 Cloud Datalab 和 Cloud ML 的集成,以探索大规模数据集并在 Cloud Healthcare API 数据集存储的 DICOM 放射学和自然光图像上进行训练:

图 14.13 – 使用 Google Cloud 的医疗保健系统架构

图 14.13 – 使用 Google Cloud 的医疗保健系统架构

现在,让我们学习如何在疾病进入缓解期之前、患者或患者群体进展到死亡之前(例如,在 COVID-19 期间),或者在临床试验中评估不同治疗方法时,构建负责任的人工智能系统。在这些情况下,我们需要利用生存分析来开发人工智能模型。

负责任的人工智能在医疗保健应用中的生存分析

负责任的人工智能在医疗保健领域的应用需要准确预测不良事件的发生或可能性,如疾病、住院和死亡。为了解决这些问题,我们通常使用生存分析,这是一种统计方法,可以预测故障的时间和事件的发生时间。此外,生存分析能够处理审查问题(即缺失数据问题),当预期事件在研究期间未发生时,可能是因为感兴趣的对象未参与研究,或在研究结束之前就退出了研究。在这种情况下,研究人员可能只拥有部分关于患者生存时间的数据,例如,在大流行期间,发现患者因病毒以外的疾病而死亡的情况。一个例子是,当研究人员想研究患者开始显示病毒感染迹象的平均时间时,由于缺乏有效的数据收集过程,未能获得个体的完整数据,导致数据缺失。

以下是我们构建负责任的生存分析模型所需具备的关键能力:

  • 在领域转移场景下的生存回归调整

  • 对审查数据的分析及不同审查理论的影响研究

  • CF 和治疗影响的估计与评估

  • 亚组发现和表型化,用于识别和分层不同组的风险因素

  • 每个个体都有多个时间依赖和时间变化的协变量观测值,这有助于在估计事件发生时间预测时发现时间依赖性:

  • 虚拟双胞胎生存回归(虚拟双胞胎能够通过增强体验实现对整个环境的可视化、建模和仿真)以理解个体行为及对干预措施的异质性治疗效果的响应:

现在,让我们看一个使用 Cox 比例风险深度神经网络与开源auton-survival包的例子。这个包帮助评估模型中患者的协变量与治疗效果之间的相互作用(通过比例风险比),并作为建议个性化治疗推荐的机制。我们开始吧:

  1. 我们先从所需的库导入开始。请注意,在这个例子中,我们使用的是SUPPORT数据集,该数据集附带了auton-survival包:

    from auton_survival.estimators import SurvivalModel
    from auton_survival.metrics import survival_regression_metric
    from sklearn.model_selection import ParameterGrid
    from estimators_demo_utils import plot_performance_metrics
    
  2. 接下来,我们将创建SurvivalModel对象,并使用fit函数来训练模型。我们在这里设置的times变量用于在一定时期内调优模型的超参数。我们还提供了用于训练的代码,并展示了从这里定义的param_grid参数中选定参数的输出:

    param_grid = {'bs': [100, 200],
                  'learning_rate': [ 1e-4, 1e-3],
                  'layers': [ [100], [100, 100]]
         }
    params = ParameterGrid(param_grid)
    times = np.quantile(y_tr['time'][y_tr['event']==1], np.linspace(0.1, 1, 10)).tolist()
    model = SurvivalModel('dcph', random_seed=0, bs=param['bs'], learning_rate=param['learning_rate'], layers=param['layers'])
    model.fit(x_tr, y_tr)
    
  3. 我们还必须计算验证集上的生存概率,并提供集成 Brier 分数IBS):

    predictions_val = model.predict_survival(x_val, times)
    metric_val = survival_regression_metric('ibs', y_val, predictions_val, times, y_tr)
    
  4. 接下来,我们必须获取测试集上的生存概率。此外,我们还需要获取特定模型在选定超参数下的预测结果。times变量帮助我们获取在某个时刻使用的模型超参数:

    predictions_te = model.predict_survival(x_te, times)
    
  5. 最后,我们必须评估测试集上的 IBS 和时间依赖一致性指数。这将决定模型的表现:

    results = dict()
    results['Brier Score'] = survival_regression_metric('brs', outcomes=y_te, predictions=predictions_te, times=times, outcomes_train=y_tr)
    results['Concordance Index'] = survival_regression_metric('ctd', outcomes=y_te, predictions=predictions_te, times=times, outcomes_train=y_tr)
    plot_performance_metrics(results, times)
    

在模型超参数集上的最终模型性能统计信息如下图所示:

图 14.14 – 模型性能过度调优与超参数

图 14.14 – 模型性能过度调优与超参数:

在前面的示例中,我们学习了如何使用 DeepSurv(一个由网络权重参数化的前馈深度神经网络)评估个人的失败风险(对治疗无反应,有时会导致死亡),通过利用患者协变量对其风险率的影响。在医疗保健行业,这有助于提供个性化的治疗方案/建议,让我们可以研究个人如何根据特定的治疗对评估的风险率做出反应。此外,我们还可以通过创建目标组(接受治疗建议)和对照组(不接受治疗建议)进行 A/B 测试。我们可以对这两组的结果进行 Log-rank 检验,以验证两个子集之间的差异是否显著,从而代表治疗建议的有效性。

现在我们已经理解了生存分析模型在负责任 AI 中的作用,让我们总结一下本章所学的内容。

总结

在本章中,我们考察了与零售、供应链、BFSI 和医疗保健领域相关的多种 AI 应用案例。我们了解了零售商必须遵守的隐私法律规定和标准,并且作为负责任 AI 的倡导者,我们理解了动态定价的正面和负面后果,以及如何实现公平定价。接下来,我们深入研究了 CF(因果推断)的概念及其在零售、供应链、BFSI 和医疗保健行业中的不可或缺的应用。通过实例,我们学习了 CF 如何帮助我们评估营销活动、计算零售行业的转化率、了解延迟的影响并减轻供应链管道中的延迟。我们还基于实际案例研究了贷款申请过程,并生成了多种 CF,观察它们如何影响贷款申请的批准/拒绝。

我们还理解了审计和负责任的 AI 法规对深度伪造技术、聊天机器人和 AR/VR/XR 媒体的必要性。这些创新可能通过歧视性和不道德的滥用危及人们的生命。接下来,我们研究了如何构建可扩展、合规和分布式的医疗保健系统架构。最后,我们深入了解了生存回归模型以及它如何帮助我们评估和建议有效的患者治疗方法。

到此为止,我们已经涵盖了平台和模型设计的相关概念。希望你能激励自己继续扩展从本书中获得的知识,保持学习!

我们希望你喜欢阅读这本书。随着 ChatGPT 的到来,虽然负责任 AI 目前是其中的重要方面,但我们没有涵盖与大型语言模型(LLM)、元宇宙和区块链设计相关的 AI 伦理问题。希望未来的版本能够涵盖这些内容。

深入阅读

要了解本章涵盖的主题,请查看以下资源: