# The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FQrEAOIgSpqaC3Ez5Myhp%2Fimage.png?alt=media&#x26;token=9c1b46e8-924b-49fe-9cc4-44e054212daf" alt=""><figcaption></figcaption></figure>

#### 1. 研究背景

当前的大型语言模型（LLMs）面临多种攻击，包括提示注入、越狱以及其它允许攻击者用自己的恶意提示覆盖模型原始指令的攻击。这些攻击的一个主要漏洞是LLMs通常将系统提示（例如，来自应用开发者的文本）视为与来自不可信用户和第三方的文本具有相同的优先级。

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FzTg12lI0QWiKsGrHuVZT%2Fimage.png?alt=media&#x26;token=659718b1-71ce-483a-837e-3b035407974a" alt=""><figcaption></figcaption></figure>

#### 2. 过去方案和缺点

现有的LLMs在处理不同类型的输入文本（如系统消息、用户消息和工具输出）时，并没有区分它们的优先级，尤其是当这些消息发生冲突时。这导致攻击者可以输入覆盖更高级指令的提示。此外，现有的LLMs缺乏对指令优先级的明确定义，这使得它们容易受到攻击。

#### 3. 本文方案和步骤

为了解决这个问题，作者提出了一个指令层级（instruction hierarchy），明确定义了在不同优先级的指令发生冲突时模型应该如何表现。作者提出了一个自动化数据生成方法来演示这种层级指令跟随行为，教会LLMs有选择地忽略低优先级的指令。具体步骤包括：

* 利用合成数据生成和上下文蒸馏来生成训练数据。
* 对于对齐的指令，通过上下文合成方法生成例子，并训练模型预测原始的真实响应。
* 对于不对齐的指令，训练模型完全忽略低级别的指令。

#### 4. 本文创新点与贡献

* 提出了指令层级的概念，这在LLMs中是新颖的，旨在提高模型对于不同优先级指令的识别和处理能力。
* 提出了自动化数据生成方法，用于训练LLMs以遵循指令层级，这可以显著提高模型的鲁棒性。
* 展示了即使在训练中未遇到的攻击类型，应用该方法后的LLMs也能表现出更好的防御能力。

#### 5. 本文实验

作者使用开源和新创建的基准测试来评估他们的方法，包括：

* 直接和间接的提示注入攻击。
* 越狱攻击。
* 系统消息提取攻击。
* 过度拒绝（over-refusal）评估，测试模型遵循良性指令的能力。

#### 6. 实验结论

实验结果表明，通过指令层级训练的模型在所有主要评估中都表现出显著提高的安全性（例如，防御系统消息提取的鲁棒性提高了63%）。此外，模型在未直接建模的数据生成管道之外的攻击上也表现出泛化能力，例如越狱鲁棒性提高了30%以上。

#### 7. 全文结论

作者提出的指令层级框架显著提高了LLMs在面对各种攻击时的鲁棒性，并且通过建立行为分类和过度拒绝评估，作者相信通过大幅扩展数据收集工作可以显著提高模型性能并优化其拒绝决策边界。未来的工作将包括对模型如何处理冲突指令的细化，扩展到多模态输入，探索模型架构变化以更好地融入指令层级，以及进行更明确的对抗性训练。

#### 阅读总结

这篇论文提出了一种新的框架，旨在提高大型语言模型在面对恶意攻击时的鲁棒性。通过引入指令层级的概念，作者训练模型学会在不同优先级的指令之间做出区分，并优先遵循高优先级的指令。这种方法不仅提高了模型对于已知攻击类型的防御能力，而且还能在一定程度上泛化到未见过的攻击类型。这项工作为提高LLMs的安全性提供了一个有前景的方向，并为未来的研究和模型改进奠定了基础。
