本文参考论文为:
Eric Wallace, Kai Xiao, Reimar Leike, Lilian Weng, Johannes Heidecke, Alex Beutel. The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions. arXiv:2404.13208v1, 2024.
https://doi.org/10.48550/arXiv.2404.13208
一,背景
随着LLM技术的飞速发展,其应用领域也在不断扩大。LLM被广泛应用于聊天机器人、文本生成、代码解析等领域,为用户提供智能化服务。然而,LLM的安全性和可控性问题也日益凸显。容易受到提示注入、越狱和其他攻击的影响,这些攻击允许攻击者用自己的恶意提示覆盖模型的原始指令。
二,指令层级的方法提高模型的安全性
针对上述问题OpenAI团队提出来了一种训练大型语言模型(LLM)以优先考虑特权指令。这项研究对于构建安全可控的LLM具有重要意义,对于LLM的安全性和可控性具有广泛应用前景。
其中主要的安全风险就是LLM通常认为系统提示(例如,来自应用程序开发人员的文本)与来自不受信任的用户和第三方的文本具有相同的优先级。
根据这个badcase,OpenAI团队提出了提升LLM的对应方案
指令层次结构框架:论文提出了一个指令层次结构框架,其中规定系统消息具有最高优先级,其次是用户消息,最后是工具输出。模型在处理冲突时应该遵循这个层次结构。
他们提出一个理想的模型是:“当向模型提供多个指令时,较低特权的指令可以与较高特权的指令对齐或不对齐。我们的目标是教模型有条件地遵循基于与高级指令对齐的低级指令:•对齐的指令具有与高级指令相同的约束、规则或目标,因此LLM应该遵循它们”
三 训练数据
该论文提出了两种训练大模型的方式:
上下文综合(Context Synthesis):
对于对齐的指令,作者首先利用大型语言模型生成具有组合要求的指令,例如“写一首20行的西班牙语诗歌”。
然后,他们将生成的组合指令分解为更小的片段,例如“写一首诗”、“使用西班牙语”和“使用20行”。
接着,作者将这些分解的指令置于不同的层次结构中,即系统消息、用户消息和工具输出,并训练模型预测原始的地面真实响应。
通过这种方式,模型学习到如何处理对齐的指令,即当低优先级指令与高优先级指令一致时,应该遵循低优先级指令。
上下文忽略(Context Ignorance):
对于错位的指令,作者采取了完全相反的策略,即训练模型忽略低优先级指令。
首先,作者生成包含不同规则或约束的系统消息,例如“永远不要提供法律建议”。然后,他们生成用户查询,试图诱使模型违反这些规则或约束。在训练过程中,模型被训练为预测在没有看到用户指令时的答案,或者预测已经满足约束的答案。通过这种方式,模型学会忽略错位的低优先级指令,即当低优先级指令与高优先级指令不一致时,应该忽略低优先级指令。
训练数据生成方法针对不同类型的攻击
1.直接prompt injection攻击
开放域任务:
对齐指令:使用上下文综合方法生成训练数据。例如,生成“写一首20行西班牙语诗歌”,分解为“写一首诗”、“使用西班牙语”、“使用20行”,并放置在不同层次,训练模型预测完整指令的响应。
错位指令:使用上下文忽略方法。例如,生成包含规则的系统消息,然后生成违反规则的恶意用户查询,训练模型预测与没有看到用户指令时相同的响应。
封闭域任务:只生成错位指令的数据,使用上下文忽略方法。将封闭域任务放入系统消息,生成prompt injection放入用户消息,训练模型忽略用户消息中的指令。
2.间接prompt injection攻击:假设浏览或工具输出中的任何指令都是错位的,使用上下文忽略方法生成训练数据。
3.系统消息提取攻击
错位指令:使用上下文忽略方法。生成揭示系统消息的查询,训练模型拒绝这些查询。
对齐指令:生成基本的系统消息查询,训练模型对这些查询进行响应。
越狱攻击:在训练中故意不包含越狱数据,以测试模型对越狱攻击的泛化能力。
四 改进效果
经过训练的LLM在多个安全性和能力评估基准上取得了显著提高的鲁棒性,对未见过的攻击也展现出良好的泛化能力。
可见此方法是一个很好的提升大模型安全性能的方法