**Adversarial Demonstration Attacks on Large Language Models**
提出advICL,操控示例demonstration不改变输入,误导模型。发现对抗性示例增加,icl的鲁棒性降低。
提出Transferable advICL,Transferable advICL生成的对抗示例可以攻击未见过的测试输入样例。
如图,标准攻击:仅操纵输入文本示例来执行攻击。
advICL攻击演示demonstration,而不操纵输入文本。
In-Context Learning
C(demonstration集)包含N个连接的数据标签对(xi, yi),特定模板s ,最优任务指令 I
C = {I, s(x1, y1), ..., s(xN , yN )}
f语言模型,Ytest 基于 输入测试Xtest 和 演示集C 生成 ,
ytest = fgenerate({C, s(xtest, _ )})
S (xtest, _)使用与演示demonstration相同的模板s,但ytest为空
(ytest集)label集Y = {c1,…, ck}。
函数V:将原始label ck映射为特定的令牌V(ck)。
如,V(positive)→positive
不是所有的标签都可以直接映射到单个令牌。
如,用 GPT2 tokenizer时,“Negative”映射为“Neg”和“ative”,
V(Negative)→{space}Negative
(未归一化)logits zk是表示每个类别标签(label)的数值:
zk = fcausal(V(ck)|{C, s(xtest, _)})
最终结果ytest为logits概率最高的标签:
$$y_{test}=\arg\max_{c_k\in Y}f_{causal}(\mathcal{V}(c_k)|\{C,s(x_{test},_)\}).$$
advICL
用余弦相似度依次为C中每个xi设置扰动边界∆i
通过限制余弦值接近1,使xi与xi'语义差异小,控制扰动边界。
通过优化扰动 𝛿,最小化 目标函数 𝐿,使模型对测试输入 𝑥test 预测 𝑦test的概率尽可能低。
Cδ = {I, s(x1 + δ1, y1),…, s(xN + δN, yN)}, δi表示在给定界∆i下对演示xi添加的扰动
TextAttack框架中采用贪婪搜索方法:
1.从xi中提取重要单词(对语言模型的梯度分析),形成WordList。
2.对WordList中的每个单词进行扰动,(扰动:添加字符插入、字符删除、字符交换和 基于TextAattack的单词交换)。
3.对每个扰动后的单词,计算目标函数值 L。
4.找到使L最大下降的扰动。
Transferable-advICL
利用对抗性演示的可转移性:生成一个高可转移性的对抗性演示,该演示可以添加到任意示例中以误导模型
迭代攻击管道,通过 迭代攻击 随机选择的一组输入 而不是单个输入,来生成普遍对抗性演示demonstration。
方法:
1.从测试样本中随机挑选k对样本集S
S = {(xi, yi)}^k_{i=1}
(挑选的样本必须是语言模型 f在 C 的上下文,能够正确分类的样本)
2.将候选集合 𝑆的样本顺序随机化,得到Srandom,避免因固定顺序导致的局部最优问题
3.将 C′设为原始演示集 C,从 Srandom 中选取一个样本,生成新的 Ci,只有当 Ci的攻击效果更好(攻击准确率更低)时,更新 C′。