『paper-NLP-3』《SneakyPrompt》
《SneakyPrompt: Jailbreaking Text-to-image Generative Models》
From IEEE Symposium on Security and Privacy (2024)
一、拟解决问题
- 现有攻击方式比较低效,进攻开销大
- adv prompt 初次使用效果好,重用后效果差
- 现有攻击方法不太关注生图质量
二、相关工作
- 文生图模型:Stable Diffusion、DALLE\(\cdot\)E;攻击方法多为手工打造,绕过率低且多针对非商业模型
- 对抗样本:用以混淆模型决策的输入;当前方法无法保持生图语义不变 + 多轮询问攻击开销大 + adv prompt 在随机种子下不可重用
- 强化学习:policy 在当前 state 执行一个 action 并获得 reward;policy 会执行未来累计奖励最大对应的 action
三、研究方法
攻击目标:给定一个提示词 \(p_t\),找到一个绕过过滤器 \(\mathcal{F}\) 从而攻击文生图模型 \(\mathcal{M}\) 的对抗样本 \(p_a\)
- 生成图 \(\mathcal{M}(p_a)\) 的语义接近原始 \(p_t\):采用余弦相似度衡量 图像嵌入 和 \(p_t\) 嵌入的语义相似度
- 对抗样本可以绕过安全过滤器,即 \(\mathcal{F}(\mathcal{M}, p_a) = 0\):持续询问 \(\mathcal{M}\),直至绕过过滤器
- 最小化询问 \(\mathcal{M}\) 的次数,即降低攻击成本:采用强化学习策略,根据查询结果扰动更新提示词 \(p_a\)
攻击算法:
离线查询:使用 影子编码器 \(\hat{\epsilon}\) 执行离线查询,得到原始提示词 \(p_t\) 的嵌入 \(\hat{\epsilon}(p_t)\)
初始化采样空间:设 \(\mathcal{S}\) 为总搜索空间,其中每个行为对应一个 \(\mathcal{C}\)
循环迭代在线查询:设查询迭代次数上限为 \(Q\),当前迭代轮次为 \(q\),\(\mathcal{P}\) 为强化学习算法
采样:对 \(p_t\) 中 \(n\) 个敏感词的每个词找指派 \(m\) 个候选替换词,形成 \(\mathcal{C} = \{c_{11}, \dots, c_{nm}\}\)
暴力采样:从单词长度为 \(l\) 的单词表中随机挑选 \(nm\) 个单词,得到 \(\mathcal{C}\)
贪婪采样:设已选出 \(j\) 个单词 \((c_1, \dots, c_j)\),继续选使 \((c_1, \dots, c_{j+1})\) 与 \(p_t\) 间距最近的 \(c_{j+1}\),直至选出 \(nm\) 个单词
光束采样:设置 \(k\) 条单词链,每条单词链长度为 \(j\),下一步为各单词链的第 \(j+1\) 位选出 \(k\) 个候选单词,得到 \(k^2\) 条链
再筛除与 \(p_t\) 间距离最远的 \(k^2 - k\) 个链条得到长度为 \(j+1\) 的 \(k\) 条单词链;最后选出长度为 \(nm\),且距 \(p_t\) 最近的链强化学习:policy network 用 LSTM 建模,根据 \(P(c_j \ | \ c_1 c_2 \dots c_{j-1})\) 选出 \(c_j\),直至选出 \(nm\) 个单词
最后,对 \(p_a\) 中的第 \(i\) 个敏感词用其候选单词集合 \(\{c_{i1}, \dots, c_{im} \}\) 进行替换
在线查询:用 \(p_a\) 查询 \(\mathcal{M}\) 得到 \(\mathcal{M}(p_{a})\)
- 若 绕过防御,记奖励 \(r_q\) 为正的 \(\text{Sim}(\mathcal{M}(p_{a}), \ \hat{\epsilon}(p_t))\)
- 若 未绕过防御,记奖励 \(r_q\) 为负的 \(-\dfrac{q}{10 \cdot Q}\)
若 \(r_q > r_{max}\),更新 \(r_{max}, \ p_a, \ \mathcal{M}(p_a)\)
更新采样策略:用 学习率 \(\eta\) 和 \(r_q\) 更新 policy network \(P\),其损失函数 \(\mathcal{L} = -r_q \ln (P)\)
迭代终止判断:三种情况
- 若 \(r_q > \textbf{Threshold} > 0\),直接返回当前 \(p_a\) 和 \(\mathcal{M}(p_a)\),算法结束
- 若 \(r_{q-3,\ q-2,\ q-1}\) 波动很小,或 \(p_a\) 中被替换的单词比例超过 30%,直接返回当前 \(p_a\) 和 \(\mathcal{M}(p_a)\),算法结束
- 若 \(r_{q-1, \ \dots, \ q-5} < 0\),进一步扩大采样范围 \(\mathcal{S}\),继续迭代
采样空间算法 \(\mathcal{S}\):设 敏感词词表 为 \(keywords\),原始提示词为 \(p_t\),单词长度为 \(l\) 的单词表为 \(\mathcal{D}_l\)
- 初始 \(\mathcal{S}\):记 \(p_t\) 中与 \(keywords\) 匹配的敏感词数量为 \(n\),则返回 \(\mathcal{S} = \{(c_1, \dots, c_{nm}) \ | \ c_j \in \mathcal{D}_l, \ j = 1, \dots, nm \}\)
- 扩展 \(\mathcal{S}\):\(n \leftarrow n+1\),返回 \(\mathcal{S} = \{(c_{11}, \dots, c_{(n+1)m}) \ | \ c_j \in \mathcal{D}_l, j = 1, \dots, (n+1)m \}\)
四、实验评估
- SneakyPrompt 提高了 Bypass rate
- SneakyPrompt 提高了生图效果 (FID)
- RL 奖励函数选择:
- \(\cos (\mathcal{M}(\mathcal{p_a}), \ \hat{\epsilon}(p_t))\):更高的绕过率 + 更好的生图质量
- \(1 - \mathcal{l}_2(\hat{\epsilon}(p_t), \ \hat{\epsilon(p_a)})\):更少的查询次数