DLAI 机器学习工程师的生产实践笔记(七)
总结 ✨
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/b1bbc3b78b91a533047247d90aa0650a_4.png
本节课中我们一起学习了机器学习监控中日志记录的核心知识。我们明确了日志是不可变的时间戳事件记录,是系统可观测性的基础。我们探讨了实施日志记录的步骤、面临的挑战(如性能影响和处理成本)以及如何通过可查询的数据存储(如数据库或 Elasticsearch)来有效存储和分析日志数据,以支持特征分析、趋势识别和根因分析。最后,我们强调了收集预测数据对于模型迭代的重要性,并简要介绍了直接标注、人工标注、主动学习和弱监督等数据标注技术。记住,持续捕获真实环境中的数据是使模型适应动态世界的关键。
157:机器学习系统的追踪 🕵️
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/577ca64d43cec0bbcd1fcd131a33178a_0.png
在本节课中,我们将学习分布式机器学习系统中的追踪技术。追踪专注于监控和理解系统性能,尤其是在基于微服务的应用程序中。我们将探讨为何在分布式系统中追踪变得至关重要,以及如何通过追踪来诊断性能瓶颈和问题。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/577ca64d43cec0bbcd1fcd131a33178a_2.png
从单体系统到分布式系统
上一节我们介绍了追踪的基本概念。本节中我们来看看,当系统架构从单体式转变为分布式时,追踪面临的挑战。
在单体系统中,从系统的不同部分收集诊断数据相对容易。所有模块甚至可能在一个进程内运行,并共享用于日志记录的公共资源。
当考虑分布式系统时,情况变得更有趣。假设你正在尝试排查一个预测延迟问题。你的系统由许多独立服务组成,预测是通过许多下游服务生成的。你无法确定是哪些服务导致了速度变慢。你无法清楚地了解这是程序错误、集成问题、架构选择不当导致的瓶颈,还是网络性能不佳。
如果你的服务作为分布式系统中的独立进程运行,解决这个问题会变得更加困难。你无法依赖那些有助于诊断单体系统的传统方法。你需要更细粒度地了解每个服务内部发生了什么,以及它们在用户请求的生命周期内如何相互交互。
分布式追踪的必要性
从上一节可知,在分布式系统中定位问题非常困难。本节我们将深入探讨为何需要专门的追踪技术。
从前端网络服务器开始,跟踪一个调用,直到预测结果返回给用户,这个过程变得更加困难。你会注意到,我们真正关注的是在线服务。
为了正确检查和调试分布式系统中请求的延迟问题,你需要理解服务的顺序和并行性,以及每个服务对系统最终延迟的贡献。
Dapper:分布式追踪的解决方案
为了解决上述问题,谷歌开发了分布式追踪系统Dapper,用于检测和分析其生产服务。Dapper论文启发了许多开源项目,如Zipkin和Jaeger。Dapper风格的追踪已成为行业范围内的标准。
在基于服务的架构中,Dapper风格的追踪通过在服务之间传播追踪数据来工作。每个服务用额外的数据注释追踪信息,并将追踪头传递给其他服务,直到最终请求完成。
以下是其核心工作流程的简述:
请求进入系统,生成一个唯一的追踪ID。
该ID随请求在服务间传递。
每个服务记录其操作的开始时间、结束时间和其他元数据(称为一个
Span)。所有
Span数据被收集到追踪后端。
追踪的组成与可视化
每个追踪都是一个调用树,从请求的入口点开始,到服务器的响应结束,包括沿途所有的RPC调用。每个追踪由称为Span的小单元组成。
服务负责将其追踪数据上传到追踪后端。追踪后端然后将相关的延迟数据像拼图一样组合在一起。追踪后端还提供用户界面,用于分析和可视化追踪数据。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/577ca64d43cec0bbcd1fcd131a33178a_4.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/577ca64d43cec0bbcd1fcd131a33178a_5.png
本节课中,我们一起学习了机器学习系统中追踪技术的重要性。我们了解到,在分布式微服务架构中,传统的日志调试方法难以定位性能瓶颈。通过引入类似Dapper的分布式追踪系统,我们可以传播追踪上下文、记录每个服务单元的Span、并在后端聚合可视化,从而清晰地洞察请求在系统中的完整路径和每个环节的耗时,最终有效地诊断延迟等复杂问题。
158:29_什么是模型衰减 📉
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/03ce483dae121542e82b7f5f308380d5_0.png
在本节课中,我们将要学习机器学习模型在生产环境中面临的一个核心问题:模型衰减。我们将探讨模型衰减发生的原因、主要类型以及如何预防它,以确保模型在动态变化的环境中保持高性能。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/03ce483dae121542e82b7f5f308380d5_2.png
模型衰减概述
在许多应用领域中,模型衰减是一个关键问题。模型衰减指的是随着时间的推移,机器学习模型在生产环境中的性能逐渐下降的现象。这通常是因为模型所处的环境是动态变化的,而静态的模型无法适应这些变化。
上一节我们介绍了模型衰减的基本概念,本节中我们来看看为什么模型衰减会发生以及如何理解它。
生产环境中的机器学习模型通常在动态环境中运行。动态环境会发生变化,这正是“动态”一词的含义。例如,一个推荐系统试图推荐用户可能喜欢的音乐。音乐品味和流行趋势是不断变化的,新音乐不断涌现,人们的喜好也在改变。如果模型是静态的,并持续推荐已经过时的音乐,那么推荐的质量就会下降。模型逐渐偏离了当前的真实情况,因为它没有针对当前的新趋势进行训练。
模型衰减的两种主要类型
模型衰减主要有两种类型:数据漂移和概念漂移。以下是这两种类型的详细说明。
数据漂移
数据漂移发生在输入特征(即模型接收的数据)的统计属性发生变化时。随着输入数据的变化,预测请求的输入数据会越来越偏离模型训练时使用的数据,从而导致模型准确性下降。这类变化通常发生在人口统计特征上,例如年龄分布,这些特征可能会随时间而变化。
右侧的图表展示了年龄特征的均值和方差如何增加。这就是数据漂移的一个例子。
公式表示: 若训练数据分布为P_train(X),而生产环境中的数据分布变为P_prod(X),当P_train(X) ≠ P_prod(X)时,即发生数据漂移。
概念漂移
概念漂移发生在特征与标签之间的关系发生变化时。当模型被训练时,它学习的是输入特征与真实标签之间的关系。如果这种关系随时间发生变化,就意味着你试图预测的事物的“含义”本身发生了改变。世界已经变了,但我们的模型并不知道。
例如,请看右侧的图表。你可以看到两个类别(蓝点和红点)的特征分布在时间间隔 T1、T2 和 T3 中发生了变化。如果你的模型仍然基于 T1 时期的关系进行预测,而世界已经进入了 T3 时期,那么它的许多预测将是错误的。
公式表示: 若训练时的条件分布为P_train(Y|X),而生产环境中的条件分布变为P_prod(Y|X),当P_train(Y|X) ≠ P_prod(Y|X)时,即发生概念漂移。
注:还存在其他相关的漂移形式,例如预测漂移(仅模型预测结果发生漂移)或标签漂移,但本课程不会详细讨论它们。
模型衰减的影响与应对策略
如果不提前为漂移做好计划,它会随着时间的推移慢慢渗透到你的系统中。系统漂移的速度取决于你所处领域的性质。有些领域(如金融市场)可能在几小时甚至几分钟内就发生变化,而其他领域的变化则更为缓慢。
如果未能检测到漂移(无论是数据漂移、概念漂移还是两者兼有),模型的准确性就会受损,而你却可能对此一无所知。这可能导致需要对模型进行紧急重新训练,这是应该尽量避免的情况。
因此,监控和提前规划至关重要。知道你已经提前做好了计划并建立了相应的系统,可能会让你在晚上睡得更安稳。
以下是应对模型衰减的关键步骤:
持续监控:建立系统以持续监控模型输入数据的分布和模型预测性能。
设定警报:当检测到统计属性发生显著变化时,触发警报。
定期评估与再训练:规划模型的定期评估周期,并在性能下降时启动再训练流程。
自动化管道:构建自动化的模型再训练和部署管道,以快速响应变化。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/03ce483dae121542e82b7f5f308380d5_4.png
本节课中我们一起学习了模型衰减的概念。我们了解到,模型衰减是由于生产环境动态变化而导致的模型性能下降,主要分为数据漂移和概念漂移两种类型。通过理解这些漂移发生的原因,我们可以采取监控、预警和定期再训练等策略来预防和应对模型衰减,从而确保机器学习系统能够长期稳定、有效地运行。提前规划应对机制是维持模型在生产环境中生命力的关键。
159:第30课 检测模型衰减 📉
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/d7aeef64c4a14fbdae588957974bdd98_0.png
在本节课中,我们将学习如何检测机器学习模型在生产环境中可能发生的性能衰减。模型衰减通常由数据漂移或概念漂移引起,及时发现这些问题是维持模型有效性的关键。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/d7aeef64c4a14fbdae588957974bdd98_2.png
概述:检测模型衰减的方法
上一节我们讨论了模型衰减是一个普遍存在的问题。本节中,我们来看看如何具体地检测它。
检测模型衰减,无论是数据漂移还是概念漂移,都始于收集当前数据。
数据收集:检测的基础
以下是检测工作的第一步,即数据收集的具体要求:
你应该收集所有传入模型的预测请求数据,以及模型做出的预测结果。
如果你的应用场景允许,还应该收集模型本应预测出的正确标签或真实值。这对于后续的模型重新训练也极具价值。
但至少,你必须捕获预测请求数据,这些数据可以用来通过无监督的统计方法检测数据漂移。
检测流程与工具
一旦你建立了持续监控和记录数据的机制,检测过程就相当直接了。
你将使用工具,借助成熟的统计方法,来比较当前数据与之前的训练数据。同时,你还会使用仪表板来监控数据随时间变化的趋势和季节性。本质上,你是在处理时间序列数据,因为你的数据是有序的,并且与时间成分相关联。
在这方面,你无需重复造轮子,已有一些优秀的工具和库可以帮助你完成这类分析。
以下是可用于此类分析的工具和库示例:
TensorFlow Data Validation (TFDV)
River库(原scikit-multiflow)
此外,包括谷歌在内的云服务提供商也提供了托管服务来协助完成这项工作。
云服务的持续评估功能
以谷歌的 Vertex AI Prediction 为例,它可以帮助你对预测请求进行持续评估。
continuous_evaluation服务会定期从你部署到 Vertex Prediction 的已训练机器学习模型中,对预测输入和输出进行采样。
随后,Vertex 的数据标注服务会分配人工审核员为你的预测输入提供真实值标签,或者你也可以自行提供真实值标签。
数据标注服务会将模型的预测结果与真实值标签进行比较,从而持续提供关于模型随时间推移的性能表现反馈。
Azure、AWS 和其他云服务提供商也提供类似的服务。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/d7aeef64c4a14fbdae588957974bdd98_4.png
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/d7aeef64c4a14fbdae588957974bdd98_5.png
本节课中,我们一起学习了检测模型衰减的核心步骤。关键在于系统地收集生产环境中的预测请求、模型输出以及(如有可能)真实标签数据。利用专门的工具(如 TFDV、River)或云平台的托管服务,通过统计比较和时间序列分析,可以有效地监控数据分布和模型性能的变化,从而及时发现衰减迹象。
160:31_缓解模型衰减的方法 🛠️
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/b172d1d55df60354500d1c7d366b00ab_0.png
在本节课中,我们将学习当检测到模型性能衰减(即模型衰减)后,可以采取哪些具体措施来缓解这一问题。模型衰减通常由数据漂移引起,我们将探讨从数据管理、模型再训练策略到流程自动化的完整应对方案。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/b172d1d55df60354500d1c7d366b00ab_2.png
检测到衰减后的基本步骤
上一节我们讨论了如何检测模型衰减。本节中我们来看看检测到衰减后,首先应该做什么。
你需要将模型衰减的情况告知相关的运营和业务利益相关者,并附上你对漂移严重程度的初步评估。
随后,你的工作重点是将模型的性能恢复到可接受的水平。
构建新的训练数据集
在着手恢复模型性能之前,你需要决定如何处理新旧训练数据。以下是几种常见的方法。
首先,可以尝试使用无监督方法(如聚类)或统计方法(如计算散度)来确定旧训练数据中哪些部分仍然有效。可选的方法包括Kullback-Leibler (KL) 散度、Jensen-Shannon (JS) 散度或Kolmogorov-Smirnov (KS) 检验。这一步是可选的,但在新数据不足时,尽可能保留有效的旧数据尤为重要。
另一种方法是,直接丢弃训练数据集中某个日期之前收集的部分,并加入新数据。
或者,如果你有足够新标注的数据,可以直接创建一个全新的数据集。
具体选择哪种方法,通常取决于你的应用场景现实和收集新标注数据的能力。
模型再训练策略
现在你有了新的训练数据集。对于如何训练模型,你基本上有两种选择:微调或从头开始。
你可以选择继续训练现有模型,使用新数据从最后一个检查点开始进行微调。
也可以选择重新初始化模型并完全重新训练。
这两种方法都有效。选择哪种很大程度上取决于你拥有的新数据量,以及自上次训练以来数据分布发生了多大程度的漂移。
理想情况下,如果你有足够的新数据,应该尝试两种方法并比较结果。
制定再训练策略
为模型再训练制定明确的策略通常是个好主意。这里没有绝对正确或错误的答案,一切取决于你的具体情况。
你可以选择在必要时才重新训练模型,例如检测到数据漂移时,或者需要增删类别标签或特征时。
你也可以按照固定的时间表重新训练模型,无论是否需要。实践中很多人这样做,因为它简单易懂,并且在许多领域效果相当好。
然而,这可能导致不必要的训练和数据收集成本(如果训练过于频繁),或者允许模型衰减超出理想范围(如果训练不够频繁)。
最后,你可能受到新训练数据可用性的限制。在数据标注缓慢且昂贵的场景中尤其如此。因此,你可能被迫尽可能长时间地保留旧训练数据,并避免完全重新训练模型。
实现自动化再训练流程
如果能自动化检测需要模型再训练的条件,那将是最理想的。
这包括能够检测到模型性能下降并触发再训练,或者检测到显著的数据漂移时自动触发。
为了实现自动化再训练,你应该有一个独立的流程来自动收集和标注数据,并且只在有足够数据可用时才触发再训练。
理想情况下,你还应该设置持续训练、集成和部署流程,使整个过程完全自动化。对于那些变化快速、需要频繁再训练的领域,这些自动化流程不再是奢侈品,而是必需品。
模型架构与设计的重新考量
当模型衰减超出可接受的阈值,或者你试图预测的变量含义发生显著变化时,你可能需要重新设计数据预处理步骤和模型架构。
我喜欢将此视为一个改进的机会。
你可能需要重新思考特征工程、特征选择等,以使你的模型适应当前数据,并选择从头开始重新训练模型,而不是应用微调。
你可能还需要研究其他潜在的模型架构,我个人认为这非常有趣。
这里的重点是,没有模型可以永远有效。你需要定期回到起点重新开始,并应用自上次更新模型以来所学到的一切。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/b172d1d55df60354500d1c7d366b00ab_4.png
本节课中,我们一起学习了缓解模型衰减的一系列方法。我们从检测到衰减后的基本沟通步骤开始,探讨了如何构建新的训练数据集,比较了微调与完全重新训练两种策略,并讨论了制定再训练计划的重要性。我们还了解了实现自动化再训练流程的价值,以及在必要时重新考量模型架构与设计的必要性。记住,应对模型衰减是一个持续的过程,需要结合监控、策略和自动化来有效管理。
161:负责任的AI 🧠
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/48b4a3ac21e85043347f23f559732e35_0.png
在本节课中,我们将探讨负责任的AI这一新兴议题,并了解作为开发者,你可以采取哪些措施来确保你的模型和应用尽可能负责任。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/48b4a3ac21e85043347f23f559732e35_2.png
概述
人工智能的发展为改善世界各地人们的生活创造了新机遇,从商业到医疗保健再到教育等领域。然而,与此同时,它也引发了关于如何最好地将公平性、可解释性、隐私和安全性融入这些系统的新问题。这些问题远未解决,是当前极其活跃的研究和开发领域。
构建负责任的AI系统
上一节我们介绍了负责任AI的重要性,本节中我们来看看构建此类系统时需要考虑的具体方面。
关注用户体验
评估系统预测、推荐和决策的真实影响,关键在于实际用户的体验。例如,你应该在设计功能时就内置适当的披露说明。清晰度和可控性对于良好的用户体验至关重要。
考虑辅助与建议
在答案很可能满足多样化用户和用例的情况下,提供单一答案是合适的。但在其他情况下,系统向用户建议几个选项可能更好。事实上,这样做有时甚至更容易,因为要确保单一答案(Top-1)的高精确度,通常比确保前几个答案(例如Top-3)的精确度要困难得多。
规划与测试
在设计过程的早期,就应尝试规划对潜在负面反馈的建模。随后,在全面部署之前,应对一小部分流量进行具体的实时测试和迭代。
吸纳多元反馈
最后,与多样化的用户群体和不同的用例场景互动,并在项目开发之前和整个过程中吸纳他们的反馈。这将在项目中融入丰富的用户视角,增加从技术中受益的人数,并帮助你及早发现潜在问题。
评估与度量
上一节我们讨论了构建过程中的考量,本节中我们来看看如何评估系统的表现。
以下是评估系统时可以考虑的一些关键度量指标:
用户反馈: 包括来自用户调查的反馈。
系统性能: 跟踪整体系统性能的量化指标。
产品健康度: 短期和长期的产品健康指标,例如点击率和客户终身价值。
错误率分析: 在不同子群体中切分的假阳性率和假阴性率。
当然,你选择的度量指标至关重要。你应该努力确保你的指标适合系统的背景和目标。例如,火灾报警系统应该具有高召回率,即使这意味着偶尔会有误报。
数据的重要性
正如我们一直强调的,一切最终都回到数据上。机器学习模型将反映它们所训练的数据,因此请仔细分析你的原始数据以确保你理解它。
理解你的数据
在无法直接分析原始数据的情况下(例如涉及敏感数据),应在尊重隐私的前提下尽可能理解你的输入数据。例如,可以通过计算聚合的匿名摘要来实现。
检查数据代表性
考虑你的数据采样方式是否能代表你的用户。例如,如果你的应用将被所有年龄段的人使用,但你的训练数据仅来自老年人,那么它可能对其他年龄段的用户效果不佳。想象一下,当你所有的数据都来自老年人时,去做音乐推荐,我的猜测是它对青少年可能效果不佳。
注意代理标签
有时,你会使用模型来预测你感兴趣的实际目标的代理标签,因为对实际目标进行标注很困难或不可能。在这些情况下,请考虑你拥有的数据标签与你试图预测的实际事物之间的关系。是否存在有问题的差距?例如,如果你使用数据标签X作为代理来预测目标y,那么在哪些情况下x和y之间的差距会成为问题?
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/48b4a3ac21e85043347f23f559732e35_4.png
本节课中,我们一起学习了负责任的AI的核心概念。我们探讨了在构建AI系统时关注用户体验、进行多元化测试与反馈的重要性。我们了解了评估系统时使用多种度量指标的必要性,并再次强调了深入理解数据、检查其代表性以及注意代理标签潜在问题的基础性作用。虽然构建完全负责任的AI系统是一个持续的挑战,但通过应用这些原则和不断发展的工具,开发者可以显著提升其模型和应用的负责任程度。
162:安全私密AI的法律要求 ⚖️🔒
在本节课中,我们将探讨实践负责任AI所涉及的法律层面。我们将了解现有的法律要求、数据隐私的重要性,以及如何保护机器学习模型免受攻击,确保用户数据的安全与私密。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_1.png
法律要求概览
实践负责任AI存在法律层面。一些国家和地区已有法律要求,且这一趋势正在增长。承担民事责任的风险是另一个需要关注的问题。
现在我们来探讨一些具体问题。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_1.png
敏感数据的隐私保护
训练数据、预测请求或两者都可能包含关于个人的非常敏感的信息。对于预测请求,这些人就是你的用户。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_3.png
敏感数据的隐私应受到保护。这不仅包括遵守法律和监管要求,还需考虑社会规范和个人的普遍期望。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_4.png
考虑到机器学习模型可能会记住或暴露它们所接触数据的某些方面,你需要采取哪些保障措施来确保个人隐私?
需要哪些步骤来确保用户对其数据拥有足够的透明度和控制权?
这并非仅由你决定需要什么。例如,在欧洲,你需要遵守《通用数据保护条例》(GDPR);在加利福尼亚州,你需要遵守《加州消费者隐私法案》(CCPA)。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_3.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_4.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_6.png
主要法规介绍
上一节我们提到了数据隐私的重要性,本节中我们来看看两项重要的法律框架。
《通用数据保护条例》(GDPR)由欧盟于2016年颁布,并成为欧盟以外许多国家法律的范本,包括智利、日本、巴西、韩国、阿根廷和肯尼亚。它规范了欧盟和欧洲经济区的数据保护与隐私。GDPR赋予个人对其个人数据的控制权,并要求公司保护员工和消费者的数据。
当数据处理基于同意时,数据主体(通常为个人)有权随时撤销其同意。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_8.png
《加州消费者隐私法案》(CCPA)以GDPR为范本,具有相似的目标,包括增强加州居民的隐私权和消费者保护。它规定用户有权知道正在收集关于他们的哪些个人数据,包括个人数据是否被出售或以某种方式披露、谁提供了他们的数据以及谁接收了他们的数据。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_6.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_10.png
用户可以访问公司持有的关于他们的个人数据,阻止其数据被出售,并要求企业删除其数据。
机器学习中的安全与隐私危害
安全与隐私对于机器学习中的某些问题或危害是紧密相连的。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_10.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_12.png
信息危害是指信息从模型中泄露所造成的危害。至少存在三种不同类型的信息危害:
以下是不同类型信息危害的列表:
成员推断:攻击者能够确定某个个体的数据是否包含在训练集中。
模型反演:攻击者实际上能够重建训练集。
模型提取:攻击者能够重建模型本身。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_12.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_14.png
行为危害是指攻击者能够改变模型本身行为所造成的危害。这包括:
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_16.png
以下是不同类型行为危害的列表:
投毒攻击:攻击者能够将恶意数据插入训练集。
规避攻击:攻击者对预测请求进行微小更改,导致模型做出错误预测。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_14.png
因此,保护你的模型免受攻击,同时确保用户数据的隐私和安全至关重要。
防御攻击的方法
了解了可能面临的危害后,本节我们来看看如何防御这些攻击。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd461e1f78d28771d8f93190cec9a_16.png
在训练和服务模型时,你应该考虑隐私增强技术,例如安全多方计算(SMC)或全同态加密(FHE)。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_18.png
简而言之,SMC使多个系统能够安全地协作来训练和/或服务模型,同时通过使用共享秘密来确保实际数据的安全。另一方面,FHE使开发人员能够在加密数据上训练模型,而无需先解密。特别是FHE,允许用户发送加密的预测请求并接收加密的结果。在整个过程中,数据除了用户之外从未被解密。然而,你应该意识到,目前FHE的计算成本非常高。
这里的目标是,通过使用密码学,你可以保护训练数据的机密性。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_18.png
差分隐私简介
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_20.png
粗略地说,如果一个攻击者看到模型的预测结果后,无法判断某个特定用户的信息是否包含在训练数据中,那么这个模型就是差分隐私的。
通过实现差分隐私,你可以在私有数据上负责任地训练模型。它提供了可证明的隐私保证,降低了暴露敏感训练数据的风险。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_22.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_20.png
让我们简要讨论实现差分隐私的三种不同方法:
以下是三种差分隐私实现方法的列表:
差分隐私随机梯度下降(DP-SGD)
教师模型集合的私有聚合(PATE)
保密与隐私协作学习(CAPC)
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_22.png
差分隐私随机梯度下降(DP-SGD)
如果攻击者能够获得一个正常训练的模型的副本,那么他们可以利用权重来提取私有信息。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_24.png
差分隐私随机梯度下降(DP-SGD)通过在训练过程中应用差分隐私来消除这种可能性。它通过在小批量随机优化过程中添加噪声来实现这一点。结果是得到一个训练好的模型,由于差分隐私的后处理免疫特性,该模型保留了差分隐私。
后处理免疫是差分隐私的一个基本属性,意味着无论你如何处理模型的预测,都不会影响其隐私保证。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_24.png
教师模型集合的私有聚合(PATE)
接下来,我们看看教师模型集合的私有聚合(PATE)。
PATE首先将敏感数据划分为K个不重叠的分区。然后分别在每个分区数据上训练K个模型作为教师模型,然后将它们的结果聚合到一个聚合教师模型中。这与用于知识蒸馏的师生模型类似。
在聚合教师模型的聚合过程中,你会以一种不影响最终预测结果的方式向输出添加噪声。所有这些模型和敏感数据对最终用户(包括攻击者)都是不可用的。
对于部署,你将创建一个学生模型。为了训练学生模型,你将获取未标记的公共数据,并将其输入聚合教师模型。此过程的输出是标记数据,且保持了隐私性。你将使用这些数据作为学生模型的训练集。训练完成后,你将丢弃本图左侧的所有内容,仅部署学生模型供使用。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_26.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_26.png
保密与隐私协作学习(CAPC)
保密与隐私协作学习(CAPC)使使用不同数据的多个开发人员能够协作提高模型准确性,而无需共享信息。这同时保护了隐私和机密性。
为了实现这一点,它应用了密码学和差分隐私的技术与原理。这包括使用同态加密(HE)来加密每个协作模型接收的预测请求,从而不泄露预测请求中的信息。然后,它使用PATE向每个协作模型的预测添加噪声,并使用投票来得出最终预测,同样不泄露信息。
CAPC应用的一个很好的例子是考虑一组希望协作改进彼此模型和预测的医院。由于医疗隐私法,他们不能直接共享信息,但使用CAPC,他们可以在保护患者隐私和机密性的同时获得更好的结果。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_28.png
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/94fd4461e1f78d28771d8f93190cec9a_28.png
本节课中,我们一起学习了实践安全私密AI的法律要求。我们了解了GDPR和CCPA等关键法规,认识了机器学习中信息危害和行为危害的类型,并探讨了通过安全多方计算、全同态加密以及差分隐私技术(如DP-SGD、PATE和CAPC)来防御攻击、保护用户数据隐私和安全的方法。遵守法律要求并实施强有力的隐私保护措施,是构建负责任且可信赖的AI系统的基石。
163:匿名化与伪匿名化 🔒
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_1.png
在本节课中,我们将学习数据隐私保护中的两个核心概念:匿名化与伪匿名化。我们将探讨它们的定义、区别、实现方式以及在《通用数据保护条例》(GDPR)框架下的应用。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_3.png
《通用数据保护条例》(GDPR)包含了许多旨在保护用户数据隐私的法规,并对其使用的诸多术语进行了定义。其中,我们将重点讨论两个术语:匿名化与伪匿名化。
匿名化:不可逆的隐私保护
上一节我们提到了GDPR的隐私保护目标,本节中我们来看看匿名化的具体含义。
匿名化是指从数据集中移除所有个人可识别信息(PII),使得数据所描述的个人身份保持匿名。GDPR第26条序言将可接受的匿名化定义为不可逆的过程,其实现方式必须达到无法识别具体个人的程度。这意味着,即使是负责匿名化的一方,也无法从数据中推导出任何见解或离散的个人信息。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_5.png
一旦数据被成功匿名化,GDPR的法规将不再适用于该数据。
核心概念:匿名化数据 = 原始数据 - 所有个人可识别信息(PII),且此过程不可逆。
伪匿名化:可逆的标识符处理
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_7.png
了解了不可逆的匿名化后,我们再来看看另一种可逆的处理方式。
伪匿名化则有所不同。这是一个可逆的过程,意味着如果获得了正确的附加信息,仍然可以识别出具体的个人。伪匿名化可以通过数据掩码、加密或令牌化等技术来实现。它的有效性依赖于对附加识别信息访问权限的严格控制。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_9.png
核心概念:伪匿名化数据 = 原始数据 - 直接标识符 + 加密密钥/映射表,此过程可逆。
核心区别:可逆性
为了更清晰地理解,匿名化与伪匿名化之间最大的区别在于:伪匿名化数据可以通过一组附加信息或加密密钥进行还原,而匿名化则是不可逆的。
数据隐私的连续光谱
多年来,业界已经发展出许多方法、机制和工具,能够产生具有不同匿名程度和可识别能力的数据。这构成了一个从“个人可识别”到“完全匿名”的连续光谱。
以下是这个光谱的主要组成部分:
个人可识别数据:包含姓名、地址、电话、邮箱等直接标识符。
伪匿名化与去标识化数据:构成了光谱的中间类别。它们确实是保护数据隐私某些方面的一种方式,但尚未达到真正匿名化数据的级别。需要注意的是,去标识化数据与伪匿名化数据之间的界限并不十分明确,许多讨论会将它们归为一类。
真正的匿名化数据:符合GDPR指南,不包含任何个人可识别信息(PII),并且即使拥有附加信息也无法与PII关联。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_11.png
需要匿名化的数据范围
那么,数据的哪些部分应该被匿名化呢?基本上,所有属于个人可识别信息(PII)的部分都需要处理。
这包括任何能够揭示个人身份的数据,即所谓的“标识符”。这里的“标识符”指任何在世或已故的自然人或法人,包括其家属、祖先和后代。此外,也包括那些可能通过直接或间接关系被识别的其他相关人员。
例如,需要处理的标识符特征包括:
姓氏、父姓、名字、婚前姓、别名
地址、电话号码
银行账户详情、信用卡信息
税号等
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/0c1ebacf25c73cba4b9e37d4659c5adc_13.png
本节课中,我们一起学习了匿名化与伪匿名化这两个关键的数据隐私保护技术。我们明确了匿名化是不可逆的移除PII的过程,而伪匿名化则是可逆的标识符替换或加密过程。理解它们在数据隐私连续光谱中的位置,以及明确哪些数据属于需要处理的PII,对于在GDPR等法规框架下合规地处理用户数据至关重要。
164:35_被遗忘权 👤➡️🗑️
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_1.png
在本节课中,我们将学习《通用数据保护条例》(GDPR)中的“被遗忘权”。我们将了解其定义、适用场景、例外情况以及如何在实践中实施数据删除。理解这些内容对于负责任地处理用户数据和构建合规的机器学习系统至关重要。
概述与术语澄清
首先,我们需要澄清一些关键术语。在GDPR的语境中:
数据主体:指个人。
控制者:指控制包含个人可识别信息(PII)数据集的个人或组织。
明确了这些术语后,我们可以开始探讨核心问题。
被遗忘权的适用场景
那么,个人在什么情况下拥有被遗忘权呢?GDPR列举了一系列个人有权要求删除其个人数据的原因。以下是主要情形列表:
个人数据对于组织最初收集或处理它的目的而言不再必要。
组织依赖个人同意作为处理数据的合法依据,而该个人撤回了同意。
组织以合法利益为由处理个人数据,个人对此提出反对,且组织没有压倒性的合法利益来继续处理。
组织为直接营销目的处理个人数据,个人对此提出反对。
组织非法处理了个人数据。
组织必须删除个人数据以遵守法律裁决或义务。
组织处理了儿童的个人数据以向其提供信息社会服务(例如社交网络)。
通常,如果满足上述任一条件,就必须删除该个人的数据。这些规定大多符合常识。
被遗忘权的例外情况
然而,在某些情况下,组织处理个人数据的权利可能优先于个人的被遗忘权。以下是GDPR中列举的例外情况:
数据被用于行使言论自由和信息自由权。
数据被用于遵守法律裁决或义务。
数据被用于执行符合公共利益的任务或行使组织的官方职权。
被处理的数据对于公共卫生目的和公共利益是必要的。
被处理的数据对于执行预防性或职业性医学是必要的(仅适用于由受职业保密法律义务约束的健康专业人员处理数据时)。
数据代表了服务于公共利益、科学研究、历史研究或统计目的的重要信息,删除数据可能会损害或阻碍实现处理目标。
数据被用于建立法律辩护或行使其他法律主张。
此外,如果组织能证明删除请求是毫无根据或过度的,可以收取合理费用或拒绝该请求。但一般而言,除非你明确符合上述例外条件之一,否则应避免凌驾于个人的被遗忘权之上。如有疑问,应以保护隐私为先。
其他相关数据权利
GDPR还规定了数据主体拥有的其他一系列权利。上一节我们讨论了被遗忘权,本节中我们来看看这些补充性权利,它们共同构成了个人数据保护的核心。
更正权:个人有权要求更正其不准确的个人信息。这在信用记录、健康记录或就业记录等场景中尤为重要。
访问权:数据主体有权访问其个人数据。
限制处理权:数据主体有权限制对其数据的处理。
数据可携权:数据主体有权以结构化、通用和机器可读的格式接收其提供给控制者的个人数据,并有权将这些数据传输给另一个控制者。
反对权:数据主体有权反对基于特定情况对其个人数据进行的处理。
作为一般规则,最好以保护隐私为先,将数据中的所有个人信息都视为敏感信息。应限制对其的访问并确保其安全。最重要的是,应将其视为信息所属者的财产,并尊重他们的意愿。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_3.png
实施数据删除的要求
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_5.png
当你收到有效的删除个人信息请求时,需要执行一系列操作。以下是需要完成的步骤列表:
识别所有相关信息:识别与请求删除内容相关的所有信息。
删除关联元数据:识别并删除与该个人相关的所有元数据。
处理衍生数据:如果你进行过任何分析或训练过任何模型,则衍生的数据、日志和模型也必须被删除或修正。
此处的目标是尽可能做到仿佛你从未拥有过他们的数据。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_7.png
数据删除的两种方法
基本上有两种删除数据的方法可以满足GDPR的要求。
1. 数据匿名化
正如之前所见,匿名化将使数据在GDPR条款下不再具有个人可识别性。GDPR将不再适用于匿名化后的数据。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_9.png
2. 硬删除
即实际删除数据,包括数据库中可能包含它的任何行。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_11.png
通常,你的第一反应可能总是进行硬删除。但这通常会带来问题,因此匿名化是另一个选择。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_13.png
匿名化与硬删除的考量
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_15.png
在数据库或任何类似的关系型数据存储中,删除记录可能会造成严重破坏。部分原因是用户数据通常被多个表引用。删除这些记录会破坏连接,这在大型复杂数据库中尤其困难。例如,它可能破坏外键约束。
另一方面,匿名化保留记录,只对包含PII的字段进行匿名化处理,同时仍能满足GDPR的要求。这通常能更好地维持数据完整性和系统稳定性。
实施被遗忘权的挑战
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_17.png
实施被遗忘权面临几个挑战。识别数据隐私是否被侵犯的过程本身就是一项艰巨的任务。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_19.png
为了执行GDPR,需要进行一些组织变革,包括政策变更和培训员工如何执行被遗忘权。还有一个最后需要考虑的棘手问题。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_21.png
备份数据的处理
如果你的组织维护数据的多个备份(实际上你应该这样做),确保个人数据已从所有备份中删除是具有挑战性的。你可能需要改变数据存储和备份实施方案,以保持对GDPR的合规性。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ml-engi-prod-prac/img/3e7f8cac00212a51bd079dfaa04e25fb_23.png
总结
本节课中,我们一起学习了GDPR中的“被遗忘权”。我们了解了它的定义、触发条件、例外情况以及其他相关的数据主体权利(如更正权)。我们还探讨了实施数据删除的两种主要方法(匿名化与硬删除)及其各自的考量,并指出了在数据库关系维护和备份处理中可能遇到的挑战。
像GDPR和被遗忘权这样的问题,在商业环境中运营已经至关重要。理解围绕它们的机器学习问题只会变得越来越重要。我们已经为你提供了该领域现状的基本理解,但我强烈建议你持续关注新的发展。同时,我认为尊重客户隐私、极其谨慎地对待你拥有的任何信息或PII始终是重要的,我强烈建议你这样做。
