-
研究背景:
大型语言模型(LLMs)在自然语言生成(NLG)任务中取得了前所未有的性能。然而,许多研究表明,LLMs可能被滥用来生成不期望的内容。为了应对这一问题,模型开发者通常会在发布LLMs供公众访问之前,通过监督式微调(SFT)或带有人类反馈的强化学习(RLHF)对这些语言模型进行对齐。这样,对齐后的LLMs在面对可能有害/不道德的请求时会拒绝生成不期望的内容。然而,一个自然的问题是:“对齐真的能防止开源的大型语言模型被滥用以生成不期望的内容吗?”本文提供了一个否定的答案。
-
过去方案和缺点:
过去的对齐方案包括通过SFT或RLHF来改进LLMs的生成,使其更好地理解用户指令并避免生成不期望的输出。然而,尽管在提高LLMs安全性方面投入了大量努力,但这些对齐措施是否足以防止开源LLMs被滥用仍然是一个未解决的问题。此外,现有的攻击方法主要通过提示工程来实现,这些方法需要精心设计的提示或优化过程来绕过LLMs的安全对齐,但这些方法要么不够有效,要么计算成本过高。 -
本文方案和步骤:
本文提出了一种名为Probability Manipulation (ProMan)的新方法,该方法直接操纵开源LLMs的生成过程,误导其生成不期望的内容,包括有害或有偏见的信息,甚至私人数据。ProMan的关键思想是通过对生成过程中的标记概率分布进行操纵,迫使LLM在特定位置生成特定的标记。ProMan通过肯定前缀(affirmative prefix)和否定反转(negation reversing)两种简单方法实现这一目标。肯定前缀在生成过程的开始设置一个肯定的基调,而否定反转则防止LLM生成可能导致拒绝回答的负面词汇。 -
本文实验和性能:
作者在4个公开可用的开源LLMs上进行了全面实验,包括Vicuna、ChatGLM2、Marcoroni和Llama-2-LoRA。实验结果表明,ProMan在不同LLMs上实现了比现有攻击方法更高的攻击成功率(ASR),证明了ProMan的有效性。此外,ProMan在泄露隐私信息方面的实验也显示出了较高的成功率,表明当前的开源LLMs在隐私泄露方面的对齐并不充分。
阅读总结报告:
本文通过提出ProMan这一新方法,展示了即使在经过对齐的LLMs中,仍然存在被滥用以生成有害内容的风险。ProMan通过直接操纵LLMs的生成过程,有效地绕过了现有的安全对齐措施。实验结果强调了需要更先进的缓解策略来保护开源LLMs。此外,本文还讨论了两种潜在的对策,包括预训练数据过滤和后训练对策,以减轻ProMan等模型黑客攻击的威胁。这项工作为LLMs的安全性研究提供了新的视角,并为未来的研究和实践提供了重要的指导。
注1:
在论文 “On the Safety of Open-Sourced Large Language Models: Does Alignment Really Prevent Them from Being Misused?” 中,ProMan(Probability Manipulation)是一种新的方法,它通过操纵开源大型语言模型(LLMs)的生成过程来误导模型生成不期望的内容。ProMan实现这一目标的两种关键方法如下:
-
肯定前缀(Affirmative Prefix):
- 这种方法的目的是在生成过程的开始阶段设置一个肯定的基调。通过肯定前缀,ProMan迫使LLM以积极的方式开始其响应,例如使用“Sure, here is”(当然,这里是…)作为回应的开头。
- 通过这种方式,即使LLM被设计为拒绝生成有害内容,ProMan也能够诱导它开始生成响应,从而为后续的内容生成铺平道路。这种方法通过操纵生成过程中的前几个标记(tokens)来实现。
-
否定反转(Negation Reversing):
- 当LLM在生成过程中尝试生成负面词汇(如“sorry”、“cannot”、“illegal”等)时,ProMan通过否定反转来改变这些词汇,迫使LLM生成其反义词,例如将“sorry”替换为“glad”(高兴),将“illegal”替换为“legal”(合法)。
- 这种方法可以影响响应中的每一个标记,而不仅仅是前几个。通过这种方式,ProMan能够防止LLM生成可能导致拒绝回答的负面词汇,从而提高攻击的成功率。
ProMan的这两种方法共同作用,使得即使LLM经过了对齐处理,仍然能够被诱导生成有害或敏感的内容。这种方法不需要复杂的提示工程或大量的计算资源,而是通过直接操纵LLM的内部生成机制来实现攻击。这表明,尽管LLMs可能经过了一定程度的安全对齐,但仍然存在被滥用的风险。
注2:
在论文中,为了在生成过程的开始阶段设置一个肯定的基调,ProMan 使用了一种称为肯定前缀(Affirmative Prefix)的技术。以下是实现这一目标的具体步骤:
-
选择肯定前缀:
- 首先,确定一个肯定前缀,这是一个或多个词汇的序列,用于在生成响应的开始阶段设置积极的语气。例如,可以选择“Sure, here is”(当然,这里是…)作为肯定前缀。
-
操纵生成过程:
- 在LLM开始生成响应时,ProMan 会介入并操纵生成过程中的标记(tokens)概率分布。这是通过向特定标记的对数概率(logits)添加一个正的偏移量(δ)来实现的,从而增加这些标记被生成的概率。
-
应用概率操纵:
- ProMan 会计算并应用一个攻击向量,该向量仅在目标标记(即肯定前缀中的词汇)的索引位置具有正值,其他位置为零。这个攻击向量与目标标记的对数概率相加,从而显著提高这些词汇被生成的概率。
-
重复操纵:
- 如果需要,ProMan 可以重复上述操纵过程,以确保在生成响应的前几个标记中包含肯定前缀。这可能涉及到对生成过程的连续几个步骤进行操纵,直到肯定前缀被成功生成。
通过这种方法,ProMan 能够使LLM 在响应的开始阶段就以积极的方式回应,例如对于一个请求有害内容的提示,LLM 可能会生成“Sure, here is a strategy for hacking into a government database…”(当然,这里是入侵政府数据库的策略…),而不是拒绝回答。
这种肯定前缀的设置为后续可能的有害内容生成创造了条件,使得LLM 更有可能继续生成攻击者所期望的内容,即使这些内容违反了模型的安全对齐原则。
注3:
在论文中,ProMan(Probability Manipulation)通过直接操纵LLM生成过程中的标记(tokens)概率分布来介入并控制LLM的响应。以下是实现这一过程的具体步骤:
-
理解LLM的生成机制:
- LLM在生成文本时,会根据当前的输入序列(包括之前的标记)预测下一个最有可能的标记。这通常是通过计算softmax函数来完成的,softmax函数将模型的对数概率(logits)转换为概率分布。
-
概率操纵(Probability Manipulation):
- ProMan的核心思想是直接修改LLM在生成过程中的对数概率(logits),以增加特定标记(tokens)被选中的概率。这是通过在模型的对数概率上添加一个正的偏移量(δ)来实现的,这个偏移量与一个二进制掩码(binary mask)相乘,该掩码在目标标记的索引位置为1,其他位置为0。
-
计算攻击向量:
- 攻击向量(attack vector)是一个与模型词汇表大小相同的向量,它在目标标记的索引位置有一个大的正值(δ),在其他位置为0。这个向量与模型的对数概率相加,从而显著提高目标标记被生成的概率。
-
应用攻击向量:
- 在LLM开始生成响应时,ProMan将这个攻击向量应用于模型的对数概率。这样,当LLM进行解码(例如,使用贪婪采样或束搜索等策略)时,它更有可能选择攻击向量指向的标记。
-
生成响应:
- 通过上述操纵,LLM在生成响应的开始阶段就会生成肯定前缀(如“Sure, here is”),为后续可能的有害内容生成创造了条件。
-
迭代过程:
- ProMan可能需要在生成过程的多个步骤中重复应用攻击向量,以确保肯定前缀被成功生成并维持在响应中。
通过这种方法,ProMan能够在不改变LLM内部参数的情况下,临时操纵其生成过程,使其生成与安全对齐原则相悖的内容。这种攻击方法展示了即使LLM经过对齐处理,仍然可能被滥用的风险。