北大团队最新研究发现:
随机token都能诱发大模型出现幻觉!
比如喂给大模型(Vicuna-7B)一段“乱码”,它就莫名其妙弄错了历史常识。
或者是简单修改提示词,大模型也会掉入陷阱。
Baichuan2-7B、InternLM-7B、ChatGLM、Ziya-LLaMA-7B、LLaMA-7B-chat、Vicuna-7B这些热门大模型,都会出现类似情况。
这意味着,随机字符串能够操控大模型输出任意内容,为幻觉“代言”。
以上发现来自北大袁粒老师课题组的最新研究。
该研究提出:
大模型的幻觉现象极有可能是对抗样本的另一种视角。
论文在展示两种容易诱发大模型幻觉方法的同时,还提出了简单有效的防御办法,代码已开源。
两种极端模式攻击大模型
研究提出了两种幻觉攻击方法:
- 随机噪声攻击(OoD Attack):即让无意义的随机字符串诱导大模型产生预定义的幻觉输出。
- 弱语义攻击(Weak Semantic Attack):即保证原始 prompt 语义基本不变的情况下,使得大模型产生截然不同的幻觉输出。
随机噪声攻击(OoD Attack):
以下为在开源大模型上的一些实验结果,更多的结果可以在论文或开源GitHub中找到。
弱语义攻击(Weak Semantic Attack):
论文介绍了幻觉攻击方法:
如上图所示,幻觉攻击包含以下三部分内容:幻觉数据集构建,弱语义攻击,OoD攻击。
首先是幻觉数据集构建。
作者从维基百科上收集了一些常识性问题x,并将其输入到大模型中得到正确的回答y。
接着替换句子的主谓宾去构造一个不存在的事实,其中T是包含所有符合事实的集合。
最终可以得到构造的幻觉数据集:
然后是弱语义攻击部分。
先采样一条不符合事实的QA pair,未来稳定的出发幻觉,作者希望找到一条对抗提示来最大化对数似然。
其中是大模型的参数,是输入空间。
是由l个token构成。
然而,由于语言是非连续的,没办法直接类似于图像领域的对抗攻击那样直接对x进行优化。
受启发于一篇2019年的研究(Universal Adversarial Triggers for Attacking and Analyzing NLP),研究团队基于梯度的token替换策略来间接的最大化该对数似然。
其中,为对抗token的embedding,是一个语义提取器。
简单来看这个式子,在语义约束下,找到那些使得似然梯度变化最大的token并进行替换,最终在保证得到的对抗提示和原提示x语义上不相差太多的情况下,诱导模型输出预定义的幻觉。
在本文中,为了简化优化过程,将约束项改为来代替。
最后是OoD攻击部分。
在OoD攻击中,我们从一条完全随机的字符串出发,在没有任何语义约束下,最大化上述对数似然即可。
论文中还详细阐述了幻觉攻击对不同模型、不同模式的攻击成功率。
也深度探讨了增加 prompt 长度能够显著提升攻击成功率(翻倍)。
最后研究团队也提出了一个简单的防御策略:利用第一个token预测的熵来拒绝响应。
该研究来自北京大学深圳研究生院/信息工程学院袁粒老师团队。
论文地址:https://arxiv.org/pdf/2310.01469.pdf
GitHub地址:https://github.com/PKU-YuanGroup/Hallucination-Attack
知乎原帖
https://zhuanlan.zhihu.com/p/661444210?