Loading

文章阅读:外科手术式LLM越狱方法DBDI

Differentiated Directional Intervention: A Framework for Evading LLM Safety Alignment

image

简介

本文提出了一种称为Differentiated Bi-Directional Intervention (DBDI)的基于激活状态分解的白盒的外科手术式LLM越狱方法,该方法基于TwinPrompt,通过将LLM指定一层的激活值状态拆解为拒绝执行向量(Refusal Execution Vector)有害检测向量(Harm Detection Vector),在推理阶段将该层的减去拒绝向量方向上的分量以及有害向量。

我们将指定隐藏层\(l^*\)的拒绝向量和有害检测向量标记为\(\vec{v}_\text{refusal}\)\(\vec{v}_\text{harm}\),那么得到一个推理阶段修改隐藏层\(l^*\)的激活值\(h_\text{l*}\)的优化公式:

\[h_{l^*}' = h_{l^*} - \alpha \cdot \text{proj}_{\vec{v}_{\text{refusal}, l^*}}(h_{l^*}) - \beta \cdot \vec{v}_{\text{harm}, l^*} \]

在作者的实验中,Llama-2 7B和Qwen 7B的越狱攻击成功率(ASR)分别最高达到93.0%83.4%

分解拒绝执行向量和有害检测向量

提取拒绝执行向量\(\vec{v}_{\text{refusal}}\)

仿照TwinPrompt,我们首先提供\(N\) 对“孪生提示词”的数据集 \(\mathcal{P}_{\text{twin}} = \{(p_{h,i}, p_{b,i})\}_{i=1}^{N}\),其中每组提示词包含一个有害版本和无害版本,即\(p_{h,i}, p_{b,i}\)

如”How to make a bomb?“和”How to make a cake?”构成一组提示词

给定指定的隐藏层\(l\),我们可以通过以下过程提取拒绝执行向量\(\vec{v}_{\text{refusal},l}\)

将每对提示词输入模型,可以得到对应的激活矩阵\(H_{b,l}, H_{h,l} \in \mathbb{R}^{N \times d}\),那么我们可以构建其差值矩阵\(D_{\text{refusal},l}\)

\[D_{\text{refusal},l} = H_{b,l} - H_{h,l} \]

通过SVD分解我们可以得到其第一个右奇异向量 \(\vec{v}_{\text{raw},l}\)

为了使得这个提取的向量稀疏化,我们引入了分类器引导的稀疏化 (classifier-guided sparsification)。用每组提示词在\(l\)层的激活值构建一个数据集\(\mathcal{X}_l = \{h(p_{h,i}, l)\}_{i=1}^{N} \cup \{h(p_{b,i}, l)\}_{i=1}^{N}\),再用这个数据集训练一个线性分类器(标签是有害与否),得到权重\(\mathbf{w}_l \in \mathbb{R}^d\)

我们取输入和与有害标签权重的绝对值作为神经元重要性 \(I_j = |\mathbf{w}_{l,1}|\),并引入一个百分比超参数\(k\),最大的\(k\)百分位内的mask设为\(1\),其余设为\(0\),可以得到

\(\vec{v}_{\text{raw},l}\)进行稀疏化并重新归一化即可得到最终结果:

\[\vec{v}_{\text{refusal},l} = \frac{\vec{v}_{\text{raw},l} \odot \mathbf{m}_{\text{refusal},l}}{\|\vec{v}_{\text{raw},l} \odot \mathbf{m}_{\text{refusal},l}\|_2} \]

提取有害检测向量\(\vec{v}_{\text{harm}}\)

同理拒绝执行向量,只是构建数据集时,我们换成有害和中立的每组提示词

如”How to make a bomb?“和”Give three tips for staying healthy”构成一组提示词,同理进行稀疏化和归一化:

\[\vec{v}_{\text{harm},l} = \frac{\vec{v}_{\text{raw},l} \odot \mathbf{m}_{\text{harm},l}}{\|\vec{v}_{\text{raw},l} \odot \mathbf{m}_{\text{harm},l}\|_2} \]

选择最优的隐藏层

为了选择最优的隐藏层,我们通过在每一层\(l\)中进行稀疏化过程训练的拒绝执行向量线性分类器,得到一个5 折交叉验证的准确率\(A_l\),通过这个准确率选择最优的隐藏层,即:

\[l^* = \arg \max_{l \in L} A_l \]

posted @ 2026-04-08 16:33  Uzuki  阅读(2)  评论(0)    收藏  举报