『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\)
  • 攻击算法:

    1. 离线查询:使用 影子编码器 \(\hat{\epsilon}\) 执行离线查询,得到原始提示词 \(p_t\) 的嵌入 \(\hat{\epsilon}(p_t)\)

    2. 初始化采样空间:设 \(\mathcal{S}\) 为总搜索空间,其中每个行为对应一个 \(\mathcal{C}\)

    3. 循环迭代在线查询:设查询迭代次数上限为 \(Q\),当前迭代轮次为 \(q\)\(\mathcal{P}\) 为强化学习算法

      1. 采样:对 \(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} \}\) 进行替换

      2. 在线查询:用 \(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)\)

      3. 更新采样策略:用 学习率 \(\eta\)\(r_q\) 更新 policy network \(P\),其损失函数 \(\mathcal{L} = -r_q \ln (P)\)

      4. 迭代终止判断:三种情况

        • \(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)})\):更少的查询次数

『paper-NLP-3』《SneakyPrompt》
http://larry0454.github.io/2024/11/19/paper/NLP/LLM/sneaky-prompt/
Author
WangLe
Posted on
November 19, 2024
Licensed under