跳转到主要内容

人工智能的发展为改善世界各地人们的生活创造了新的机会,从商业到医疗保健再到教育。它还提出了新的问题,即在这些系统中建立公平性、可解释性、隐私和安全性的最佳方式。

人工智能的一般推荐做法

虽然在设计人工智能系统时应始终遵循软件系统的一般最佳实践,但机器学习也有一些独特的考虑因素。

推荐做法

采用以人为本的设计方法

实际用户体验系统的方式对于评估其预测、建议和决策的真实影响至关重要。

  • 内置适当披露的设计功能:清晰和控制对良好的用户体验至关重要。
  • 考虑扩充和辅助:如果答案很有可能满足用户和用例的多样性,那么生成一个单一的答案是合适的。在其他情况下,您的系统向用户建议一些选项可能是最佳的。从技术上讲,在一个答案(P@1)上实现良好的精度比在几个答案(例如P@3)上实现精度要困难得多。
  • 在设计过程的早期对潜在的不利反馈进行建模,然后在全面部署之前对一小部分流量进行具体的实时测试和迭代。
  • 与一组不同的用户和用例场景接触,并在项目开发之前和整个项目开发过程中纳入反馈。这将在项目中建立丰富多样的用户视角,并增加从该技术中受益的人数。

确定用于评估培训和监控的多个指标

使用几个指标而不是单个指标将帮助您了解不同类型的错误和体验之间的权衡。

  • 考虑指标,包括用户调查的反馈、跟踪整体系统性能和短期和长期产品健康状况的数量(例如,分别为点击率和客户寿命值),以及不同子组的假阳性和假阴性率。
  • 确保你的指标适合你的系统的背景和目标,例如,火警系统应该有很高的召回率,即使这意味着偶尔会出现误报。

在可能的情况下,直接检查您的原始数据

ML模型将反映他们所训练的数据,因此仔细分析您的原始数据以确保您理解它。在不可能做到这一点的情况下,例如,使用敏感的原始数据,在尊重隐私的情况下尽可能多地理解您的输入数据;例如通过计算聚合的匿名摘要。

  • 您的数据是否包含任何错误(例如,缺失的值、错误的标签)?
  • 您的数据采样方式是否代表了您的用户(例如,将用于所有年龄段,但您只有来自老年人的培训数据)和真实世界的环境(例如,全年使用,但您只拥有夏季的训练数据)?数据准确吗?
  • 训练发球偏斜——训练中的表现和发球中的表现之间的差异——是一个持续的挑战。在培训期间,尝试识别潜在的偏差并努力解决这些问题,包括调整培训数据或目标函数。在评估过程中,继续尝试获取尽可能具有所部署设置代表性的评估数据。
  • 您的模型中有任何功能是多余的还是不必要的?使用最简单的模型来满足您的性能目标。
  • 对于受监督的系统,请考虑您所拥有的数据标签与您试图预测的项目之间的关系。如果您使用数据标签X作为代理来预测标签Y,在哪些情况下X和Y之间的差距有问题?
  • 数据偏差是另一个重要考虑因素;在人工智能和公平的实践中学习更多。

了解数据集和模型的局限性

  • 为检测相关性而训练的模型不应用于进行因果推断,也不应暗示它可以。例如,您的模型可能会了解到,购买篮球鞋的人平均会更高,但这并不意味着购买篮球鞋会因此变得更高。
  • 如今的机器学习模型在很大程度上反映了其训练数据的模式。因此,重要的是要传达培训的范围和覆盖范围,从而澄清模型的能力和局限性。例如,用库存照片训练的鞋子检测器可以最好地处理库存照片,但当用用户生成的手机照片进行测试时,其能力有限。
  • 尽可能向用户传达限制。例如,一个使用ML识别特定鸟类的应用程序可能会告知,该模型是在来自世界特定地区的一小组图像上训练的。通过更好地教育用户,您还可以改进用户对您的功能或应用程序的反馈。

测试,测试,测试

从软件工程最佳测试实践和质量工程中学习,以确保人工智能系统按预期工作,并值得信赖。

  • 进行严格的单元测试,以隔离测试系统的每个组件。
  • 进行集成测试,以了解单个ML组件如何与整个系统的其他部分交互。
  • 通过测试人工智能系统的输入统计数据来主动检测输入漂移,以确保它们不会以意想不到的方式发生变化。
  • 使用黄金标准数据集来测试系统,并确保其继续按预期运行。根据不断变化的用户和用例定期更新此测试集,以减少在测试集上进行训练的可能性。
  • 进行迭代用户测试,在开发周期中纳入一组不同的用户需求。
  • 应用poka yoke的质量工程原理:将质量检查构建到系统中,这样意外故障就不会发生或触发立即响应(例如,如果一个重要功能意外丢失,人工智能系统就不会输出预测)。

部署后继续监视和更新系统

  • 持续的监控将确保您的模型考虑到真实世界的性能和用户反馈(例如,幸福感跟踪调查、HEART框架)。
  • 问题会出现:任何一种世界模式几乎都是不完美的。在产品路线图中留出时间,以便您解决问题。
  • 考虑问题的短期和长期解决方案。简单的修复(例如,块列表)可能有助于快速解决问题,但从长远来看可能不是最佳解决方案。平衡短期的简单解决方案和长期的学习解决方案。
  • 在更新已部署的模型之前,分析候选模型和已部署模型的差异,以及更新将如何影响整体系统质量和用户体验。

公平

人工智能系统正在为全球人民提供新的体验和能力。除了推荐应用程序、短视频和电视节目外,人工智能系统还可以用于更关键的任务,例如预测疾病的存在和严重程度,将人们与工作和伴侣进行匹配,或者识别一个人是否正在过马路。与基于特定规则或人类判断的历史决策过程相比,这种计算机辅助或决策系统有可能在更大范围内更加公平和包容。风险在于,此类制度中的任何不公平偏见也可能产生广泛影响。因此,随着人工智能在各个部门和社会中的影响越来越大,努力建立对所有人都公平和包容的系统至关重要。

这是一项艰巨的任务。

首先,ML模型从从现实世界中收集的现有数据中学习,因此模型可能会学习甚至放大数据中基于种族、性别、宗教或其他特征的有问题的预先存在的偏见。

其次,即使进行了最严格的跨职能培训和测试,建立在所有情况或文化中都公平的系统也是一项挑战。例如,针对美国成年人训练的语音识别系统在特定背景下可能是公平和包容的。然而,当青少年使用该系统时,可能无法识别不断演变的俚语或短语。如果该系统部署在英国,它可能会比其他系统更难掌握某些地区的英国口音。即使将该系统应用于美国成年人,我们也可能会发现出乎意料的人群,他们的语音处理能力很差,例如说话有口吃的人。发射后使用该系统可能会暴露出难以预测的无意、不公平的结果。

第三,无论决策是由人类还是机器做出的,都没有公平的标准定义。为系统确定适当的公平标准需要考虑用户体验、文化、社会、历史、政治、法律和道德因素,其中一些因素可能会有所权衡。即使在看似简单的情况下,人们也可能对什么是公平存在分歧,而且可能不清楚什么观点应该决定人工智能政策,尤其是在全球环境中。也就是说,有可能以不断改进“更公平”的制度为目标。

解决人工智能中的公平、公正和包容性问题是一个活跃的研究领域。它需要一种全面的方法,从培养一支包含关键和多样化知识的包容性劳动力,到在研发过程的早期寻求社区的投入,以发展对社会背景的理解,到评估训练数据集中不公平偏见的潜在来源,到训练模型以消除或纠正有问题的偏见,再到评估模型的性能差异,再到对最终人工智能系统进行不公平结果的持续对抗性测试。事实上,ML模型甚至可以用来识别一些有意识和无意识的人类偏见和包容障碍,这些偏见和障碍在历史上一直存在,带来了积极的变化。

人工智能中的公平远不是一个已经解决的问题,它既是一个机遇,也是一个挑战。谷歌致力于在所有这些领域取得进展,并为更大的社区创建工具、数据集和其他资源,并随着生成性人工智能系统的发展出现新的挑战而进行调整。我们目前在谷歌的想法概述如下。

推荐做法

重要的是要确定机器学习是否有助于为手头的特定问题提供充分的解决方案。如果可以的话,就像所有ML或AI任务都没有一个“正确”的模型一样,也没有一种技术可以确保每种情况或结果的公平性。在实践中,人工智能研究人员和开发人员应该考虑使用各种方法进行迭代和改进,尤其是在新兴的生成人工智能领域。

使用公平和包容的具体目标设计您的模型

  • 与社会科学家、人文主义者和其他相关专家就您的产品进行接触,以了解和解释各种观点。
  • 考虑一下随着时间的推移,技术及其发展将如何影响不同的用例:代表了谁的观点?表示了哪些类型的数据?遗漏了什么?这项技术带来了什么结果?对于不同的用户和社区,这些结果是如何比较的?可能会出现哪些偏见、负面经历或歧视性结果?
  • 为您的系统设定目标,使其在预期的用例中公平地工作:例如,使用X种不同的语言,或适用于Y个不同的年龄组。随着时间的推移监控这些目标,并酌情扩展。
  • 设计您的算法和目标函数以反映公平目标。
  • 根据谁使用您的技术以及他们如何使用技术,经常更新您的培训和测试数据。

使用具有代表性的数据集来训练和测试您的模型

  • 评估数据集的公平性,包括识别表示和相应的限制,以及识别特征、标签和组之间的偏见或歧视性相关性。可视化、集群和数据注释可以帮助进行此评估。
  • 公共培训数据集通常需要进行扩展,以更好地反映您的系统将要进行预测的人员、事件和属性的真实频率。
  • 了解数据注释人员的各种观点、经验和目标。对于不同的员工来说,成功是什么样子的?花在任务上的时间和享受任务之间的权衡是什么?
  • 如果您与注释团队合作,请与他们密切合作,设计明确的任务、激励措施和反馈机制,以确保注释的可持续性、多样性和准确性。考虑人类的可变性,包括可及性、肌肉记忆和注释中的偏见,例如,通过使用一组具有已知答案的标准问题。

检查系统是否存在不公平的偏见

  • 例如,组织一个可信任的、多样化的测试人员库,他们可以对系统进行对抗性测试,并将各种对抗性输入纳入单元测试。这有助于确定哪些人可能会受到意想不到的不利影响。即使是较低的错误率也会导致偶尔出现非常严重的错误。有针对性的对抗性测试可以帮助发现被聚合度量掩盖的问题。
  • 在设计训练和评估系统的指标时,还应包括检查不同子组性能的指标。例如,每个亚组的假阳性率和假阴性率可以帮助了解哪些组的表现更差或更好。
  • 除了切片统计指标外,还可以创建一个测试集,在困难的情况下对系统进行压力测试。这将使您能够在每次更新系统时快速评估您的系统在可能特别有害或有问题的示例上的表现。与所有测试集一样,您应该随着系统的发展、功能的添加或删除以及用户的更多反馈不断更新此测试集。
  • 考虑系统先前做出的决策所产生的偏见的影响,以及这可能产生的反馈回路。

分析性能

  • 考虑到您定义的不同指标。例如,系统的假阳性率可能因数据中不同的亚组而异,一个指标的改进可能会对另一个指标产生不利影响。
  • 在广泛的用户、用例和使用环境中评估真实世界场景中的用户体验(例如TensorFlow模型分析)。首先在dogfood中进行测试和迭代,然后在发布后继续测试。
  • 即使整个系统设计中的所有内容都经过精心设计以解决公平性问题,但当应用于真实的实时数据时,基于ML的模型很少能100%完美地运行。当一个活产品出现问题时,考虑它是否与任何现有的社会劣势相一致,以及它将如何受到短期和长期解决方案的影响。

可解释性

自动预测和决策可以通过多种方式改善生活,从推荐你可能喜欢的音乐到持续监测患者的生命体征。这就是为什么可解释性,或者我们可以质疑、理解和信任人工智能系统的程度,是至关重要的。可解释性还反映了我们的领域知识和社会价值观,为科学家和工程师提供了更好的设计、开发和调试模型的方法,并有助于确保人工智能系统按预期工作。

这些问题适用于人类和人工智能系统——毕竟,一个人要对自己的决定做出令人满意的解释并不总是那么容易。例如,肿瘤学家可能很难量化他们认为患者癌症可能复发的所有原因——他们可能只是说他们有一种基于过去看到的模式的直觉,这导致他们下令进行后续测试,以获得更明确的结果。相比之下,人工智能系统可以列出用于预测的各种信息:过去10年中100名不同患者的生物标志物水平和相应扫描,但很难沟通如何将所有数据结合起来,估计癌症发病率为80%,并建议进行PET扫描。理解复杂的人工智能模型,例如作为生成人工智能系统基础的深度神经网络,即使对机器学习专家来说也是一项挑战。

与传统软件相比,理解和测试人工智能系统也带来了新的挑战,尤其是随着生成性人工智能模型和系统的不断出现。传统软件本质上是一系列if-then规则,解释和调试性能在很大程度上包括在分叉路径的花园中寻找问题。虽然这可能极具挑战性,但人类通常可以跟踪代码的路径,并理解给定的结果。

对于人工智能系统,“代码路径”可能包括数百万个参数,而在生成型人工智能系统中,它们可能包括数十亿个参数和数学运算,因此与以前的软件相比,更难找出导致错误决策的特定错误。然而,通过负责任的人工智能系统设计,这些数百万或数十亿的值可以追溯到训练数据或对特定数据或特征的模型关注,从而发现错误。这与传统决策软件中的一个关键问题形成了鲜明对比,即“幻数”的存在——决策规则或阈值是由一个现在被遗忘的程序员在没有解释的情况下设置的,通常是基于他们的个人直觉或一小组试验示例。

总的来说,人工智能系统最好通过底层的训练数据和训练过程以及由此产生的人工智能模型来理解。虽然这带来了新的挑战,但技术界制定积极负责的指导方针、最佳实践和工具的集体努力正在稳步提高我们理解、控制和调试人工智能系统的能力。这一点,我们想分享我们目前在这一领域的一些工作和想法。

推荐做法

可解释性和问责制是谷歌和更广泛的人工智能社区正在进行的研究和开发领域。在这里,我们分享一些迄今为止推荐的做法。

规划你的选择以追求可解释性

追求可解释性可能发生在设计和训练模型之前、期间和之后。

  • 你真正需要多大程度的可解释性?与您的模型(例如,医疗保健、零售等)的相关领域专家密切合作,以确定需要哪些可解释性功能以及为什么需要。虽然很少,但在某些情况/系统中,有足够的经验证据,不需要精细的可解释性。
  • 你能分析你的训练/测试数据吗?例如,如果您使用的是私人数据,则可能无法调查您的输入数据。
  • 您是否可以更改训练/测试数据,例如,为某些子集(例如,特征空间的部分/切片)收集更多训练数据,或为感兴趣的类别收集测试数据?
  • 你能设计一个新的模型吗?还是被限制在一个已经训练好的模型中?
  • 你是否提供了太多的透明度,有可能为滥用打开媒介?
  • 你的训练后可解释性选项是什么?您是否可以访问模型的内部(例如,黑盒与白盒)?

将可解释性视为用户体验的核心部分

  • 在开发周期中与用户进行迭代,以测试和完善您对用户需求和目标的假设。
  • 设计用户体验,让用户建立有用的人工智能系统心理模型。如果没有得到明确和令人信服的信息,用户可能会对人工智能系统的工作方式提出自己的理论,这可能会对他们尝试使用该系统的方式产生负面影响。
  • 在可能的情况下,让用户更容易进行自己的敏感性分析:使他们能够测试不同的输入如何影响模型输出。
  • 其他相关的用户体验资源:为人类需求设计、用户控制、人工智能教学、习惯化、公平性、表现

将模型设计为可解释的

  • 使用绩效目标所需的最小输入集,使其更清楚地了解影响模型的因素。
  • 使用最简单的模型来满足您的性能目标。
  • 尽可能学习因果关系而非相关性(例如,使用身高而非年龄来预测孩子是否可以安全乘坐过山车)。
  • 制定与真实目标相匹配的训练目标(例如,训练错误警报的可接受概率,而不是准确性)。
  • 约束你的模型以产生反映领域专家知识的投入产出关系(例如,如果咖啡店离用户更近,如果其他一切都一样,那么它应该更有可能被推荐)。

选择反映最终目标和最终任务的指标

您考虑的指标必须针对特定环境的特定收益和风险。例如,火灾报警系统需要具有高召回率,即使这意味着偶尔会出现误报。

了解经过培训的模型

正在开发许多技术来深入了解模型(例如,对输入的敏感性)。

  • 针对不同的示例子集,分析模型对不同输入的敏感性。

向模型用户传达解释

  • 提供用户可以理解和适合的解释(例如,技术细节可能适合行业从业者和学术界,而普通用户可能会发现UI提示、用户友好的摘要描述或可视化更有用)。解释应仔细考虑哲学、心理学、计算机科学(包括HCI)、法律和伦理方面的因素,以了解在不同情况下什么是好的解释。
  • 确定解释是否以及在哪里可能不合适(例如,在哪里解释可能会导致普通用户更加困惑,邪恶行为者可能会利用系统或用户滥用的解释,或者解释可能会泄露专有信息)。
  • 如果某个用户群要求提供解释,但不能或不应该提供,或者无法提供清晰、合理的解释,请考虑其他选择。相反,您可以通过审计等其他机制提供问责制,或允许用户对决策提出质疑或提供反馈以影响未来的决策或体验。
  • 优先考虑解释,这些解释建议用户可以采取明确的行动来纠正未来不准确的预测。
  • 不要暗示解释意味着因果关系,除非它们是因果关系。
  • 认识到人类的心理和局限性(例如,确认偏差、认知疲劳)
  • 解释可以有多种形式(例如,文本、图表、统计数据):当使用可视化提供见解时,请使用HCI和可视化的最佳实践。
  • 任何聚合的摘要都可能丢失信息并隐藏细节(例如,部分依赖关系图)。
  • 理解ML系统各部分(尤其是输入)以及所有部分如何协同工作(“完整性”)的能力有助于用户构建更清晰的系统心理模型。这些心理模型与实际系统性能更为匹配,为未来的学习提供了更值得信赖的体验和更准确的期望。
  • 请注意您的解释的局限性(例如,局部解释可能不会概括,可能会对两个视觉相似的例子提供相互矛盾的解释)。

测试,测试,测试

从软件工程最佳测试实践和质量工程中学习,以确保人工智能系统按预期工作,并值得信赖。

  • 进行严格的单元测试,以隔离测试系统的每个组件。
  • 通过测试人工智能系统的输入统计数据来主动检测输入漂移,以确保它们不会以意想不到的方式发生变化。
  • 使用黄金标准数据集来测试系统,并确保其继续按预期运行。根据不断变化的用户和用例定期更新此测试集,以减少在测试集上进行训练的可能性。
  • 进行迭代用户测试,在开发周期中纳入一组不同的用户需求。
  • 应用poka yoke的质量工程原理:将质量检查构建到系统中,使意外故障不会发生或触发立即响应(例如,如果一个重要功能意外丢失,人工智能系统不会输出预测)。
  • 进行集成测试:了解人工智能系统如何与其他系统交互,以及创建了什么(如果有的话)反馈循环(例如,因为新闻故事很受欢迎而推荐它可以使该新闻故事更受欢迎,从而使其被推荐得更多)。

隐私

ML模型从训练数据中学习,并对输入数据进行预测。有时训练数据、输入数据或两者都可能非常敏感。尽管建立一个对敏感数据进行操作的模型可能有巨大的好处(例如,癌症探测器在可靠来源的活检图像数据集上进行训练,并部署在单个患者扫描上),但必须考虑使用敏感数据时潜在的隐私影响。这不仅包括尊重法律和监管要求,还包括考虑社会规范和典型的个人期望。例如,考虑到ML模型可能会记住或揭示他们所接触的数据的各个方面,制定保护措施以确保个人隐私至关重要。为用户提供数据的透明度和控制权至关重要。

幸运的是,ML模型揭示底层数据的可能性可以通过以精确、有原则的方式适当应用各种技术来最小化。谷歌正在不断开发此类技术,以保护人工智能系统中的隐私,包括新兴的生成人工智能系统实践。这是人工智能社区中一个活跃的研究领域,有持续的增长空间。下面我们将分享我们迄今为止所学到的经验教训。

推荐做法

正如所有ML任务都没有一个“正确”的模型一样,在所有场景中也没有一个正确的ML隐私保护方法,而且可能会出现新的方法。在实践中,研究人员和开发人员必须迭代,找到一种适当平衡手头任务的隐私和实用性的方法;为了使这一过程取得成功,需要对隐私有一个明确的定义,既可以是直观的,也可以是形式上精确的。

负责任地收集和处理数据

  • 确定是否可以在不使用敏感数据的情况下训练ML模型,例如,通过使用非敏感数据收集或现有的公共数据源。
  • 如果必须处理敏感的训练数据,则应尽量减少此类数据的使用。谨慎处理任何敏感数据:例如,遵守所需的法律和标准,向用户提供明确的通知,并对数据使用进行任何必要的控制,遵循最佳实践,如传输和休息中的加密,并遵守谷歌隐私原则。
  • 使用最佳实践数据清理管道匿名化和聚合传入数据:例如。,考虑删除个人可识别信息(PII)和异常值或元数据值,这些值可能允许去匿名化(包括通过随机洗牌可删除的隐含元数据,如到达顺序,如Prochlo;或自动发现和编辑敏感和识别数据的云数据丢失预防API)。

在适当的情况下利用设备处理

  • 如果您的目标是学习单个交互的统计信息(例如,某些UI元素的使用频率),请考虑只收集在设备上本地计算的统计信息,而不是原始交互数据,其中可能包括敏感信息。
  • 考虑一下联合学习等技术是否可以改善系统中的隐私。联合学习是一组设备协调使用本地存储的训练数据来训练共享的全局模型。
  • 在可行的情况下,在设备上应用聚合、随机化和清理操作(例如,安全聚合、RAPPOR和Prochlo的编码步骤)。请注意,这些操作可能只提供实用的、尽最大努力的隐私,除非所使用的技术附有证据。

适当保护ML模型的隐私

由于ML模型可以通过其内部参数和外部可见行为来公开其训练数据的细节,因此考虑模型的构建和访问方式对隐私的影响至关重要。

  • 使用基于“暴露”测量或成员推断评估的测试,估计您的模型是否无意中记住或暴露了敏感数据。这些度量还可以用于模型维护期间的回归测试。
  • 实验数据最小化的参数(例如,聚合、异常阈值和随机化因子),以了解权衡并确定模型的最佳设置。
  • 使用建立隐私数学保证的技术来训练ML模型。请注意,这些分析保证并不是对完整操作系统的保证。
  • 遵循为密码和安全关键软件制定的最佳实践流程,例如,使用原则性和可证明的方法,发表同行评审的新想法,开放关键软件组件的来源,以及在设计和开发的所有阶段招募专家进行审查。

安全保障

安全保障需要确保人工智能系统按预期运行,无论攻击者试图如何干扰。在安全关键应用中广泛依赖人工智能系统之前,必须考虑并解决其安全性问题。人工智能系统的安全保障面临许多独特的挑战。例如,当ML应用于人类难以解决的问题时,很难提前预测所有场景,尤其是在生成型人工智能时代。也很难构建既能提供必要的安全主动限制,又能提供必要灵活性以生成创造性解决方案或适应不寻常输入的系统。随着人工智能技术的发展,安全问题也会随之发展,因为攻击者肯定会找到新的攻击手段;需要同时开发新的解决方案。以下是我们目前从中学到的建议。

推荐做法

ML的安全研究涵盖了广泛的威胁,包括训练数据中毒、敏感训练数据的恢复、模型盗窃和对抗性安全示例。谷歌投资于与所有这些领域相关的研究,其中一些工作与人工智能隐私实践有关。谷歌安全研究的一个重点是对抗性学习——使用一个神经网络生成可以欺骗系统的对抗性示例,再加上第二个网络来检测欺诈行为。

目前,对抗性示例的最佳防御还不足以在生产环境中使用。这是一个正在进行的、极其活跃的研究领域。由于还没有有效的防御措施,开发人员应该考虑他们的系统是否可能受到攻击,考虑成功攻击的可能后果,在大多数情况下,不应该构建此类攻击可能产生重大负面影响的系统。

另一种实践是对抗性测试,这是一种系统评估ML模型或应用程序的方法,目的是了解当被提供恶意或无意中有害的输入时,它的行为,例如要求文本生成模型生成关于特定宗教的仇恨咆哮。这种做法有助于团队通过暴露当前故障模式来系统地改进模型和产品,并指导缓解途径(例如,模型微调,或对输入或输出设置过滤器或其他保护措施)。最近,我们发展了我们正在进行的“红团队”工作,这是一种对抗性安全测试方法,可以识别攻击漏洞,以“合乎道德地破解”我们的人工智能系统,并支持我们的安全人工智能框架。

识别系统的潜在威胁

  • 考虑一下是否有人会有动机让系统行为不端。例如,如果开发人员构建了一个帮助用户组织自己照片的应用程序,用户很容易修改组织不正确的照片,但用户这样做的动机可能有限。
  • 确定系统出错会导致什么意外后果,并评估这些后果的可能性和严重性。
  • 建立一个严格的威胁模型,以了解所有可能的攻击向量。例如,允许攻击者更改ML模型输入的系统可能比处理服务器收集的元数据(如用户所采取行动的时间戳)的系统更容易受到攻击,因为用户在没有直接参与的情况下很难有意修改收集的输入特征。

制定应对威胁的方法

  • 尽管对抗性ML很困难,但一些应用程序,例如垃圾邮件过滤,可以通过当前的防御技术获得成功。
  • 测试您的系统在对抗性环境中的性能。在某些情况下,这可以使用CleverHans等工具来完成。
  • 创建一个内部红队来进行测试,或者举办一场比赛或奖励计划,鼓励第三方对您的系统进行对抗性测试。

不断学习保持领先

  • 随时了解最新的研究进展。对抗性机器学习的研究继续为防御提供改进的性能,一些防御技术开始提供可证明的保证。
  • 除了干扰输入之外,ML供应链中还可能存在其他漏洞。虽然据我们所知,这种袭击尚未发生,但重要的是要考虑这种可能性并做好准备。