对抗测试是一种系统评估机器学习模型的方法,旨在了解在使用恶意输入或意外有害输入时的行为方式。本指南介绍了生成式 AI 的对抗性测试工作流示例。
什么是对抗测试?
测试是构建强大、安全的 AI 应用的关键部分。对抗测试涉及主动提供破坏性输出应用的数据,尝试主动“破坏”应用。对抗性查询可能会导致模型以不安全的方式失败(即违反安全政策),并且可能会导致人类容易识别但机器难以识别的错误。
查询可能具有“对抗性”。显式对抗查询可能包含违反政策的语言或表达违反政策的观点,或者探测或试图“欺骗”模型说某些不安全、有害或令人反感的内容。隐式对抗查询可能看起来无害,但可能包含敏感、具有文化敏感性或潜在危害的敏感主题。其中可能包括受众特征、健康、财务或宗教方面的信息。
对抗测试可以通过公开当前的失败来引导缓解路径(例如微调、模型保护措施或过滤器),从而帮助团队改进模型和产品。此外,它还可以衡量可能未缓解的风险(例如,包含输出政策违规内容的可能性),帮助告知产品发布决策。
作为负责任 AI 的新兴最佳实践,本指南提供了一个适用于生成模型和系统的对抗测试示例工作流。
对抗测试示例工作流
对抗性测试遵循与标准模型评估类似的工作流。
识别和定义输入
对抗测试工作流中的第一步是确定输入,以了解系统有意和系统攻击时的行为方式。花费周全的输入可能会直接影响测试工作流的效率。以下输入可帮助定义对抗测试的范围和目标:
- 产品政策和故障模式
- 应用场景
- 多样性要求
产品政策和故障模式
生成式 AI 产品应定义安全政策来描述不允许的产品行为和模型输出(即被视为“不安全”)。政策应枚举被视为违反政策的失败模式。应将此故障模式列表作为对抗测试的基础。一些故障模式可能包括包含脏话、财务、法律或医疗建议的内容。
应用场景
对抗测试的另一个重要输入是生成模型或产品试图提供的用例,以便测试数据能够包含一些用户在现实世界中与商品互动的方式。每个生成产品都有略有不同的用例,但一些常见用例包括:语言模型的实际情况查找、摘要和代码生成;或者按地理位置、地形、艺术或服装样式生成背景。
多样性要求
对抗测试数据集应具有充分的多样性和代表性,并且要考虑到所有的目标故障模式和用例。衡量测试数据集的多样性有助于识别潜在的偏见,并确保针对各种用户群体进行广泛的测试。
思考多样性有三种方式:
- 词元多样性:确保查询具有一系列不同的长度(例如,字数统计)、使用宽泛的词汇范围、不包含重复项,以及表示不同的查询公式(例如,w-question、直接和间接请求)。
- 语义多样:确保每个政策的查询涵盖广泛的不同主题(例如,糖尿病健康),包括针对不同用例和全球环境的敏感和身份特征(例如,性别、民族)。
- 政策和用例的多样性:确保查询涵盖所有违反政策的行为(例如,仇恨言论)和使用场景(例如,专家建议)。
查找或创建测试数据集
对抗测试的测试数据集与标准模型评估测试集的构建方式不同。在标准模型评估中,测试数据集通常用于准确反映模型将在产品中遇到的数据分布情况。对于对抗测试,系统会选择测试数据,以证明模型对与分布相关的安全政策和边缘情况的行为证明其行为与安全性政策相关的问题,高质量的对抗测试集应涵盖所有安全政策维度,并最大限度地扩大模型要支持的用例的覆盖范围。字典顺序(例如,针对各种长度和语言的查询)和语义(例如,涵盖不同的主题和受众特征)应该具有多样性。
调查现有的测试数据集,了解安全政策、故障模式以及文本生成和文本到图片的模型的使用场景。团队可以使用现有数据集确定其产品性能的基准,然后对他们产品面临的特定故障模式进行更深入的分析。
如果现有测试数据集不足,团队可以生成新数据来定位特定故障模式和用例。如需创建新数据集,首先要手动创建一个小型查询数据集(即每个类别有数十个示例),然后使用数据合成工具扩展此“种子”数据集。
种子数据集包含的示例应与系统在生产环境中会遇到的情况尽可能相似,其创建目标是引发违规行为。安全功能可能会检测出高度恶意的语言,因此请考虑广告素材措辞和隐式对抗性输入。
您可以在测试数据集中直接或间接引用敏感属性(例如,年龄、性别、种族、宗教)。请注意,这些术语的使用可能因文化而异。变化的语气、句子结构、长度选项和含义。可能应用多个标签(例如,仇恨言论与淫秽)的示例可能会产生噪声和重复,并且可能无法由评估或训练系统正确处理。
应分析对抗测试集,从词法和语义多样性、政策违规行为和用例的涵盖范围,以及独特性、对抗性与噪声这几个方面了解它们的构成。
生成模型输出
下一步是根据测试数据集生成模型输出。其结果将告知产品团队,其模型在面临恶意用户或无害输入时可能取得怎样的效果。通过识别这些系统行为和响应模式,可以提供可在未来模型开发中缓解的基准测量结果。
为输出添加注释
生成对抗测试的输出后,请为它们添加注释,将其分类为失败模式和/或危害。这些标签有助于为文字和图片内容提供安全信号。此外,这些信号有助于衡量和减轻模型和产品的危害。
安全分类器可用于自动为违反政策的输出为模型输出(或输入)添加注释。如果尝试检测的信号没有严格定义(例如仇恨言论),准确率可能会较低。对于这些信号,务必使用人工审核者来检查并更正分类器生成的评分具有“不确定”的标签。
除了自动注释之外,您还可以利用人工标注者为您的数据样本添加注解。值得注意的是,在对抗测试过程中为模型输出添加注解显然必须关注问题排查和可能有害的文本或图片,类似于手动内容审核。此外,人工审核者可能会根据个人背景、知识或信仰,为同一内容添加注释。请注意,为标注者制定准则或模板会有所帮助,但请注意,评分者池的多样性可能会影响注释结果。
报告和缓解
最后一步是在报告中汇总测试结果。计算指标并报告结果,以提供安全率、可视化以及有问题的故障示例。这些结果可以指导模型改进并告知模型保护措施(例如过滤条件或屏蔽名单)。报告对于与利益相关方和决策者沟通也很重要。
其他资源
Google 的 AI Red 团队:合乎道德的黑客使 AI 更安全
面向机器学习开发者的产品公平性测试(视频):
面向开发者的产品公平性测试 (Codelab)