# Rainbow Teaming: Open-Ended Generation of Diverse Adversarial Prompts

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2Fo2uHVW87l56wLFPfUSlS%2Fimage.png?alt=media&#x26;token=dd2fcc7a-cc3d-462b-a756-7b4dc5e5835b" alt=""><figcaption></figcaption></figure>

## 研究背景

随着大型语言模型（LLMs）在各种实际应用中的普及，理解和增强它们对用户输入的鲁棒性变得至关重要。现有的针对LLMs的对抗性提示（adversarial prompts）识别方法通常专注于特定领域，缺乏多样性，或者需要大量的人工注释。这些限制使得现有的方法在系统地发现对抗性攻击方面存在不足。

## 过去方案和缺点

以往的研究在自动红队（red teaming）方面也使用了LLMs来生成对抗性输入，但这种方法通过昂贵的拒绝采样协议进行，并且在发现攻击的多样性和成功率之间存在显著的权衡。此外，现有的方法在系统地发现对抗性攻击时通常缺乏多样性，例如，通过限制自己只使用单一预定义的攻击策略，或者在基于目标的提示优化方法中遭受多样性损失。

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FOf5DV0NjF700O7lJVNm1%2Fimage.png?alt=media&#x26;token=c56baf98-1a86-42de-aacf-ea96d4412f0a" alt=""><figcaption></figcaption></figure>

## 本文方案和步骤

本文提出了Rainbow Teaming，这是一种新颖的方法，用于通过LLMs系统地生成多样化的对抗性提示。Rainbow Teaming将对抗性提示生成视为一个质量和多样性问题，并使用开放式搜索来生成既有效又多样化的提示。该方法可以直接应用于广泛的领域，包括安全、问答和网络安全等。Rainbow Teaming的实现需要三个关键组成部分：特征描述符、变异操作符和偏好模型。



Rainbow Teaming 是一种用于生成多样化对抗性提示的方法，它通过以下几个关键步骤实现：

1. **定义特征描述符（Feature Descriptors）**：
   * 这些描述符定义了档案库（archive）的维度，每个维度对应于一个特定的特征，如“风险类别”（Risk Category）或“攻击风格”（Attack Style）。
   * 特征可以是分类的（如不同的攻击策略）或数值的（如提示的长度）。
2. **变异操作符（Mutation Operator）**：
   * 使用一个经过指令调整的LLM（如Llama 2 70B模型）作为变异操作符，它接收一个父提示（来自档案库）和一个预设的特征描述符。
   * 变异操作符对父提示进行多次变异（每次针对一个特征），以产生新的候选提示。
3. **偏好模型（Preference Model）**：
   * 使用一个“裁判”LLM（Judge LLM）来比较两个提示的有效性，例如，哪个提示更可能导致模型产生不安全的回答。
   * 裁判LLM通过多数投票和位置交换来减少顺序偏差，从而确定哪个提示更有效。
4. **迭代搜索过程**：
   * 在每次迭代中，从档案库中随机选择一个提示，然后应用变异操作符生成新的候选提示。
   * 将候选提示提供给目标LLM（Target LLM），并获取响应。
   * 使用偏好模型评估候选提示与档案库中现有提示的相对有效性。
   * 如果候选提示更有效（即更可能导致不安全的回答），则将其存储在档案库的相应位置。
5. **档案库的维护**：
   * 档案库是一个K维网格，用于存储具有不同特征的对抗性提示。
   * 通过迭代选择、变异和评估，档案库逐渐填充了针对每个离散特征部分发现的最高性能解决方案。
6. **多样性和有效性的平衡**：
   * Rainbow Teaming通过直接优化攻击质量和多样性来平衡发现的攻击的多样性和成功率。
   * 为了促进多样性，候选提示只有在与父提示足够不相似时才会被考虑进一步评估。
7. **微调和评估**：
   * 使用Rainbow Teaming生成的合成数据对LLM进行微调，以提高其对后续对抗性攻击的鲁棒性。
   * 在微调过程中，模型的一般能力和有用性不会受到影响。

Rainbow Teaming 的这种方法不仅能够作为诊断工具来发现LLMs的弱点，而且还能作为合成数据集来增强模型的鲁棒性，从而实现LLMs的自我改进。





## 本文创新点与贡献

* 提出了一种新的方法，通过LLMs生成多样化的对抗性提示，这些提示能够揭示模型在广泛领域的脆弱性。
* 展示了通过Rainbow Teaming生成的合成数据对LLMs进行微调可以提高其安全性，而不损害其一般能力和有用性，为LLMs的开放式自我改进铺平了道路。
* Rainbow Teaming是一个开放式的方法，它基于MAP-Elites，通过迭代搜索来填充一个“档案库”，该档案库跨越了多样性的维度。

## 本文实验

实验在Llama 2-chat模型家族上进行了广泛的测试，包括安全、问答和网络安全领域。实验结果表明，Rainbow Teaming能够有效地作为诊断工具，发现数百个对抗性提示，并展示了在合成数据上微调模型可以显著提高模型对后续对抗性攻击的鲁棒性。

## 实验结论

实验结果证明了Rainbow Teaming在发现对抗性提示方面的有效性，并且通过在合成数据上微调模型，可以显著提高模型的安全性。此外，该方法在不同模型大小之间的对抗性提示转移性也得到了验证。

## 全文结论

Rainbow Teaming为自动生成多样化的对抗性提示提供了一种新的方法，这些提示可以用来微调LLMs，从而提高其对各种攻击的鲁棒性。这种方法为LLMs的持续自我改进提供了可能性，并且需要的人工输入很少。

## 阅读总结报告

本研究提出了Rainbow Teaming，这是一种创新的方法，用于生成能够揭示LLMs脆弱性的多样化对抗性提示。通过质量多样性搜索，Rainbow Teaming能够高效地探索潜在对抗性攻击的空间，生成一个多样化的提示档案库。实验结果表明，该方法在多个领域内具有广泛的适用性，并且可以通过微调提高模型的安全性。Rainbow Teaming为LLMs的负责任开发和部署提供了有价值的工具。
