0%

读论文: On the Role of Attention Heads in Large Language Model Safety (ICLR 2025)

Paper

On the Role of Attention Heads in Large Language Model Safety

ICLR 2025

Methods

Previous research has shown that there are safety parameters in LLM. This paper focuses on the attention heads.

Ships (Safety Head Important Score)

Ships helps to qualify the impact of a specific attention head on safety. As shown in the formula, it calculates the KL divergence between two output distributions: one with all attention heads and another with a head ablated.

$q_{\mathcal{H}}$ is harmful queries. $\theta_{\mathcal{O}}$ is the parameters of original attention heads. $\theta_{h_{i}^{l}}$ is the parameters of the $i$-th attention head in layer $l$. $\setminus$ is the ablation operation.

How to ablate an attention head? The paper proposes two methods.

Attention Head Ablation

Undifferentiated Attention

Derivation:

In softmax, we use Taylor expansion at 0:

Where $N$ is the number of elements in $z$.

So in the MHA, $N = d_k/n$…? What does this mean?

I am confused. I went to check OpenReview, and found an official review comment:

Official Review of Submission3741 by Reviewer BEKY:

  • In Eq 2, 7 and 8, $d_k$ denotes the model dimension.

$d_k$ is the model dimension, not the dimension of key vectors. I misinterpreted that.

I also found author’s response, which helps me understand more clearly:

Response to Reviewer BEKY:
To clarify, the correct expression should be:

where ( A ) is a lower triangular matrix defined by

Oh… I just realized that I had previously found an earlier version of the paper, 2410.13708v1, not the latest 2410.13708v2.

I think A looks like this because of masking in transformers:

It means the attention head pays equal attention to all previous tokens. That’s why it can ablate the attention head.

Scaling Contribution

It scales down the contribution of $h_i$, the output vector of the $i$-th attention head, because MHA can be expressed as:

Sahara (Safety Attention Head Attribution Algorithm)

This paper uses Ships to quantify the impact of a single attention head on safety, but how to identify universally applicable safety heads? They propose Sahara.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Algorithm 1: SafetyAttentionHeadAttributionAlgorithm (Sahara)
1: procedure SAHARA(Q_H, θ_O, L, N, S)
2: Initialize: Important head group G ← ∅
3: for s ← 1 to S do
4: Scoreboard_s ← ∅
5: for l ← 1 to L do
6: for i ← 1 to N do
7: T ← G ∪ {h_l^i}
8: I_l^i ← Ships(Q_H, θ_O \ T)
9: Scoreboard_s ← Scoreboard_s ∪ {I_l^i}
10: end for
11: end for
12: G ← G ∪ {argmax_{h ∈ Scoreboard_s} score(h)}
13: end for
14: return G
15: end procedure

Let me try to learn it.

Previous works have found that residual stream activations ($a$) include features critical for safety.

Some people use SVD to indentify safety features in left singular matrices.

SVD (Singular Value Decomposition) is a method of decomposing a matrix. For any matrix $M$, it can be decomposed as:

U: Left singular matrix (column vectors are orthogonal, representing “row space features”)

V: Right singular matrix (column vectors are orthogonal, representing “column space features”)

Σ: Diagonal matrix (singular values, representing the importance of each feature)

不行,我能力有限,我要切换一下中文。不然以后我自己都看不懂我的笔记了。爆笑。

我收看了这个视频,以及这个视频

我们现在需要得到 Ships 的推广版本,识别安全注意力头。这就要用到SVD。

SVD (Singular Value Decomposition) 的理解方法可以有多种。

第一种理解方法:

U:左奇异矩阵(正交矩阵,表示“行空间特征”)

Σ:对角矩阵(奇异值,表示每个方向的重要性大小)

V:右奇异矩阵(正交矩阵,表示“列空间特征”)

感觉我线性代数有点忘了,得再回顾一下:

正交矩阵就是说:

正交矩阵可以表示任何保持长度和角度的线性变换,比如旋转、反射等。为什么?因为设 $y = Ux$:

所以:向量的长度不变。向量之间的内积不变,这个是因为:

所以正交矩阵保持了几何上的结构不变,就是旋转、反射了一下。举个旋转的例子:

它让向量绕原点逆时针旋转 $\theta$ 角度。

基向量:

旋转 $\theta$ 后会变成

任何向量:

旋转后就变成:

代入上面的结果,旋转后的向量 $v’$ 可以写成:

展开为:

也可以用矩阵乘法表示为:

所以,这个矩阵就是旋转矩阵,它让任意向量绕原点逆时针旋转 $\theta$ 角度。

反射的例子是:

它关于 x 轴反射。

$\Sigma$ 是对角矩阵,它只做拉伸、压缩变换,它的对角线元素是奇异值,从左上角到右下角递减。奇异值总是非负的。

矩阵的秩等于其非零奇异值的数量。原因是$U$和$V$都是满秩矩阵(为什么?因为正交矩阵的列向量都是单位向量,并且两两正交、相互垂直,它们是线性无关的),只有$Σ$决定了$M$的秩。

看一看展开式:

可以看到是u向量与v向量的外积的线性组合。外积的结果肯定是一个秩为1的矩阵。其前面的系数$\sigma$是奇异值,奇异值代表了每个秩为1的矩阵的重要性。

对于前k项的累加,我们可以得到一个秩为$k(k < r)$的矩阵:

$A_k$ 是矩阵 $A$ 的最佳秩 $k$ 近似,就是说,它是所有秩为 $k$ 的矩阵中,最接近原矩阵 $A$ 的一个。“最接近”是指:

$|A - X|_F$ 是矩阵的 Frobenius 范数,Frobenius 范数定义为所有元素平方和的平方根:

其中 $\operatorname{tr}$ 表示矩阵的迹(对角线元素之和)。

等等,后一步是怎么推的?就是为什么等于迹开根号?是:设 $A \in \mathbb{R}^{m \times n}$,元素为 $a_{ij}$。那么

特别地,对角线元素为

而迹是:

代入刚才的结果:

正是:

知道了这个之后,回到刚刚的:

这就是低秩估计(low-rank approximation)。但是,为什么?为什么对任意秩为 $k$ 的矩阵 $X$,都有

而且,当且仅当这个的时候取等号:

即,为什么 $A_k$ 是最优解?为什么截断SVD$Ak$是原矩阵$A_k$在Frobenius范数意义下的最佳低秩近似?这一定理被称为Eckart-Young-Mirsky定理

刚刚已经证明了:

回忆线性代数,有迹的循环性质:

迹的循环性质:

分别写出 $\mathrm{tr}(AB)$ 和 $\mathrm{tr}(BA)$ 的表达式。

$AB$ 是一个 $m \times m$ 的矩阵。根据迹的定义,有:

而:

代回:

对于$BA$,同理:

对比两个结果,是一样的。

$AB$ 和 $BA$ 都是方阵。

我们先要证明:

从左边开始:

现在利用迹的循环性质,把末尾的 $V^T$ 搬到前面:

现在我们想最小化 $|A - X|_F^2$。将 $A$ 的SVD分解 $A = U\Sigma V^T$ 代入:

利用刚刚证明的,可以用 $U^T$ 和 $V$ 左乘和右乘括号内的部分,范数保持不变:

现在令 $Y = U^T X V$。因为 $U$ 和 $V$ 都是满秩的方阵(可逆),所以$Y$ 的秩和 $X$ 的秩是相同的,即 $\operatorname{rank}(Y) = \operatorname{rank}(X) = k$。

所以,原问题就等价于:找到一个秩为 $k$ 的矩阵 $Y$,使得

最小。 $|\Sigma - Y|_F^2$ 的表达式是:

因为 $\Sigma$ 是一个对角矩阵(不一定是方阵),只有对角线上的元素 $\sigma_i$ 非零,假设 $A$ 的秩为 $r$,即有 $r$ 个非零奇异值,所以:

为了让这个平方和最小,怎么选择矩阵 $Y$ 的元素 $Y_{ij}$ ?

对于非对角线元素($i \ne j$),为了让 $\sum_{i \ne j} (-Y_{ij})^2$ 最小,应该取 $Y_{ij} = 0$。最优的 $Y$ 矩阵是对角矩阵。

对于对角线元素,需要最小化 $\sum_{i=1}^r (\sigma_i - Y_{ii})^2$,同时要满足 $Y$ 是一个秩为 $k$ 的对角矩阵。一个对角矩阵的秩等于其对角线上非零元素的个数。因此,要在 $Y$ 的对角线上保留 $k$ 个非零元素,其余全部设为0。为了让平方和最小,应该保留哪些,舍弃哪些?

假设保留了 $Y_{ii}$,那么为了让 $(\sigma_i - Y_{ii})^2$ 最小,最好的选择就是令 $Y_{ii} = \sigma_i$。这样该项就变成了0。

所以问题就变成了:应该选择哪 $k$ 个 $\sigma_i$ 保留下来,使得总误差最小?由于奇异值是按大小递减排列的,要使被舍弃的项的平方和 $\sum \sigma_j^2$ 最小,我们应该舍弃那些值最小的 $\sigma_j$。

因此,我们应该保留最大的 $k$ 个奇异值,即令 $Y_{ii} = \sigma_i$ for $i=1, \dots, k$,而令 $Y_{ii} = 0$ for $i > k$。

这个最优的 $Y$ 矩阵就是:

此时,最小的误差平方和为:

最优的 $Y$ 是 $\Sigma_k$。现在代回到 $Y = U^T X V$ 中,

两边左乘 $U$ 右乘 $V^T$:

而 $U \Sigma_k V^T$ 正是 $A_k = \sum_{i=1}^k \sigma_i u_i v_i^T$。

对于任意秩为 $k$ 的矩阵 $X$,$|A-X|_F^2$ 的最小值在 $X=A_k$ 时取到,且最小值为 $\sum_{i=k+1}^r \sigma_i^2$。证毕。

第二种理解方法:

这里再回顾一下线性代数:对称矩阵的特征向量是正交的。

tl;dr:将特征向量标准化,组成一个正交矩阵$Q$。此正交矩阵的转置(也是逆)$Q^\top$,会将特征向量旋转(或翻转)并与基向量对齐。当用 $Q^\top$ 去左乘一个向量时,就是把这个向量的坐标系变换到以特征向量为坐标轴的新基底下。如果不取转置,矩阵$Q$会将标准基向量旋转到特征向量上。


假设 $A$ 是实对称矩阵,有两个特征向量:

并且 $\lambda_1 \neq \lambda_2$。

考虑内积:

一方面,用特征值关系:

另一方面,利用对称性:

所以我们得到:

由于 $\lambda_1 \neq \lambda_2$,只能有:

即它们正交。

它们归一化后成为单位向量,排在一起组成特征向量矩阵:

这个矩阵是正交矩阵,因为 $Q^\top Q = I$。有了 $Q$,我们就可以把它对应的实对称矩阵 $A$ 对角化:

其中 $\Lambda$ 是对角矩阵,对角线元素是 $A$ 的特征值。

这就是特征分解。

因此,左乘$A$,就是依次左乘$Q^\top$、$\Lambda$和$Q$。由于$Q$是特征向量矩阵,所以左乘$Q^\top$的含义就是:把向量从原始基底的表示变换到特征向量基底的表示。现在看一个简单的示例方便理解,取角度 $\theta=\pi/6$(30°),令

标准基向量

计算

记 $Q$ 的列为新基(特征向量基)

于是

也就是上面两个坐标向量正是 $e_1,e_2$ 在基 ${v_1,v_2}$ 下的表示;而 $Q$ 把这些坐标再变回、还原回原始表示($Q(Q^\top e_i)=e_i$),实际上的含义是,𝑒1,𝑒2 在基 𝑣1,𝑣2 下的表示与$Q$中的基$v_1,v_2$相乘,得到 $e_1,e_2$ 在原来坐标系中的表示。

但我们并不会直接还原。

我们先左乘 $Q^\top$,把向量从原始基底变换到特征向量基底。把一般坐标系下的向量,转换到“以特征向量为坐标轴”的坐标系中。

然后再左乘 $\Lambda$。对角矩阵只会对每个坐标轴方向进行缩放(scale)。每个特征向量方向被拉伸或压缩,拉伸系数就是对应的特征值。这一步就是“在特征向量基底下的简单缩放”。本质上,就是我们本来希望沿着特征向量的方向进行缩放,但无法直接操作。通过先左乘 $Q^\top$ 把向量表示变换到特征向量基底,就把特征向量方向对齐到新的坐标轴;此时对角矩阵 $\Lambda$ 就可以沿每个轴独立缩放,完成“沿特征向量方向缩放”的操作。

最后再左乘 $Q$ 把结果变回标准坐标系,从而实现对原向量的正确变换。

然而很多矩阵不对称。不过,给定任意 $m \times n$ 矩阵 $A$,$A^\top A$就是一个 $n \times n$ 的对称矩阵。$AA^\top$是一个 $m \times m$ 的对称矩阵。

那么,$AA^\top$有$m$个正交的特征向量,$A^\top A$有$n$个正交的特征向量。

我们定义前者为“左奇异向量”,后者为“右奇异向量”。

如果做特征分解:

$V$是正交矩阵,其列向量是$A^\top A$的特征向量。$\Lambda$是非负的对角矩阵,对角线上是特征值。

为什么特征值是非负的?

因为对于

两边左乘 $v^\top$:

注意:

所以:

所以 $A^\top A$ 的所有特征值都是 非负的

对于$AA^\top$和$A^\top A$的特征向量,如果把它们对应的特征值拿出来进行递减的排序:

则必有:

为什么?因为对于:

左乘 $A$:

矩阵乘法具有结合律:

所以如果 $v$ 是 $A^\top A$ 的特征向量且对应特征值 $\lambda$,那么 $Av$ 是 $AA^\top$ 的特征向量,对应相同的非零特征值 $\lambda$。(只要 $Av \neq 0$)

由上面的推导,$A^\top A$ 的每个非零特征值都对应 $AA^\top$ 的同一个非零特征值。反过来也成立(用 $A^\top$ 去乘)。所以,两个矩阵的非零特征值集合一模一样。两者共同的非零特征值最多只有 $\mathrm{rank}(A)$ 个。剩下的多出来的特征值,必然是 $0$。

现在来定义奇异值,设 $\lambda_i$ 是 $A^\top A$、$AA^\top$ 共同的非零特征值,定义:

这些 $\sigma_i$ ,就是$A$的奇异值,$\mathrm{rank}(A)$等于它正的奇异值的个数。

根据之前的定义有:

其中 $v_i$ 就是刚刚定义的右奇异向量,注意要有$∥vi∥=1$,把它归一化。像刚刚一样,把两边同时乘上 $A$:

也像刚刚一样,矩阵乘法有结合律:

$A v_i$ 也是 $AA^\top$ 的特征向量。于是定义:

这些 $u_i$ 就是左奇异向量。这样的定义,是为了让它归一化,就是要:

而:

现在,我们有了:

任何矩阵$A$都可以被无条件分解为这三个矩阵:

为什么?

对于$A$这个矩阵代表的变换,首先可以看为先左乘$V^\top$。而由于$\Sigma$里的奇异值是按大小降序排序的,所以左乘$V^\top$的变化实际上是将对应最大奇异值的奇异向量落到$x$轴上,对应次大奇异值的奇异向量落到$y$轴上,以此类推。

对于$\Sigma$,它不是$\text{diag}(\sigma_1, \sigma_2, \dots)$,而是一个和 $A$ 大小相同的矩阵,将奇异值放在对角线上,其余位置补零。比如如果 $A$ 是 $m \times n$ 矩阵,$\Sigma$ 是:

其中 $r = \text{rank}(A)$,非零奇异值 $\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_r > 0$ 排在左上角,其余位置为 0。

$\Sigma$可以看为:

左乘$\Sigma$时,其实就是先左乘上面这个公式里的蓝色矩阵,再左乘红色矩阵。

左乘蓝色矩阵,其实就是降维操作。(注意:这个例子是降维。也可以是增维操作,比如如果$A$是一个$3\times 2$的矩阵,那$A$就是一个从$\mathbb{R}^2$到$\mathbb{R^3}$的线性变换)

再左乘红色矩阵,其实就是根据奇异值的大小,缩放坐标轴。(注意,之前的奇异向量经过旋转,已经落到坐标轴上了)

最后一步是左乘$U$,它的作用就是旋转标准基,与左奇异向量对齐。

如何做 SVD

其实上面讲的已经很清楚了,

设 $\lambda_i$ 是 $A^\top A$、$AA^\top$ 共同的非零特征值,奇异值是:

左奇异向量$u_i$是归一化后的$AA^\top$的特征向量,右奇异向量$v_i$是归一化后的$A^\top A$的特征向量。

用 SVD 推广 Ships

作者收集了整个数据集中顶层的激活$a$,将它们堆叠到一个矩阵$M$里,然后对它用SVD,在数据集层面分析移除注意力头的影响。矩阵 $M$ 的奇异值分解表示为:

其中左奇异矩阵 $U_\theta$ 是一个 $|Q_{\mathcal{H}}| \times d_k$ 维(因为单个 query 的顶层激活 $a \in \mathbb{R}^{d_k}$,$|Q_{\mathcal{H}}|$ 个有害查询堆叠起来:$M \in \mathbb{R}^{|Q_{\mathcal{H}}| \times d_k}$)的正交矩阵,表示有害查询数据集 $Q_{\mathcal{H}}$ 的表示空间中的关键特征。

$U$怎么不是方阵了?因为只保留前 $d_k$ 个奇异向量。作者这里用了 reduced SVD,因为他们只关心与特征维度 $d_k$ ,不需要整个大方阵。

作者先用原始模型(vanilla model)对所有 $Q_\mathcal{H}$ 顶层激活做 SVD 后得到了左奇异向量矩阵$U_\theta$。然后,作者消融了特定的注意力头 $h^l_i$,再次做 SVD 得到左奇异向量矩阵 $U_\mathcal{A}$。

接下来,作者用主角度(principal angles)来量化移除注意力头对安全相关表示的影响。角度越大,说明影响越大。

只看SVD的前 $r$ 个维度来计算主角度,它们代表数据集里最重要的特征。作者将 Ships 扩展到了数据集级别:

其中 $σ_r$ 表示第$r$⁢个奇异值, $ϕ_r$ 表示$U_θ^{(r)}$和 $U_\mathcal{A}^{(r)}$ 之间的主角度。

主角度是怎么计算的?

主角度(Principal Angles)的定义是:

设有两个子空间 $S_1, S_2 \subset \mathbb{R}^d$,各自的维度都是 $r$:

第一个主角度 $\phi_1$ 定义为:

就是找两个子空间里“最接近”的方向,$x$、$y$ 都是单位向量,$\phi_1$ 越小代表两个子空间越接近

后续主角度$\phi_2,\phi_3$, … 也类似,但要求找的方向和前面的方向$x,y$正交。

现在知道了定义。如何计算主角度?

来自 SVD的$U_\theta^{(r)}$ 和 $U_\mathcal{A}^{(r)}$ 的列是正交单位向量,先构造投影矩阵:

$C$ 的元素为

表示第一个子空间的基向量投影到第二个子空间基向量上。

有经典定理:

若投影矩阵 $C$ 做 SVD:

则奇异值

就是

就是说:

  • $σ_i$ 越大 → 对应方向越接近
  • $σ_i$ 越小 → 对应方向越正交

为什么?

我们想找子空间最接近的方向,在主角度的定义中,我们看到这是一个最大化问题:

把 $x$,$y$ 表示为子空间的基向量线性组合:

最大化问题变成:

这是矩阵 C 的最大奇异值问题,$\sigma_1$就是最大值,为什么?对$C$写成 SVD 展开:

注意 $|\tilde \alpha| = |\alpha|=1$,同理 $|\tilde \beta|=1$,因为正交变换不改变长度。于是:

倒数第二步是柯西–施瓦茨不等式( Cauchy–Schwarz),Cauchy–Schwarz 是说对任意实向量 $a, b \in \mathbb{R}^r$,有

我们现在有

注意到:

所以定义两个向量:

那么:

应用 Cauchy–Schwarz:

于是:

当且仅当:

换回 $\alpha, \beta$,就是:

也就是 C 的第一对左/右奇异向量。所以,刚刚推导完了第一个主角度 $\phi_1$,对应最大奇异值 $\sigma_1$。

后续的$\sigma_2$ $\sigma_3$……,依次对应第二、三……个主角度。

Sahara 算法

tl;dr:这个算法就是个贪心。先找个影响Ship最大的注意力头,然后消融它,然后在消融它的前提下,找一个影响Ship最大的注意力头,然后消融它,以此类推。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Algorithm 1: SafetyAttentionHeadAttributionAlgorithm (Sahara)
1: procedure SAHARA(Q_H, θ_O, L, N, S)
2: Initialize: Important head group G ← ∅
3: for s ← 1 to S do
4: Scoreboard_s ← ∅
5: for l ← 1 to L do
6: for i ← 1 to N do
7: T ← G ∪ {h_l^i}
8: I_l^i ← Ships(Q_H, θ_O \ T)
9: Scoreboard_s ← Scoreboard_s ∪ {I_l^i}
10: end for
11: end for
12: G ← G ∪ {argmax_{h ∈ Scoreboard_s} score(h)}
13: end for
14: return G
15: end procedure

作者假设这类协同、合作主要局限在注意力头之间的相互作用上,也就是头与头之间相互配合,需要找出头的组合而不是只找单个重要头。作者提出了一种启发式搜索策略,目标是识别成组协同工作的安全头(safety heads)

声明函数和输入:

1:procedure Sahara(Q_H, θ_O, 𝕃, ℕ, 𝕊)

参数含义:

  • Q_H:有害查询的数据集(harmful query dataset)。
  • θ_O:原始的语言模型(the original LLM)。
  • L(𝕃):模型的层数(layers)。
  • N(ℕ):每一层的注意力头数量(heads per layer)。
  • S(𝕊):希望找到的“重要头组合”的目标大小(即选 S 个头)。

初始化

2: Initialize: Important head group G ← ∅

重要头组合 G 置空。

循环

3: for s ← 1 to 𝕊 do

对 s 从 1 到 S 做循环。表示要一次一个地挑选 S 个头,每次挑一个。

4: Scoreboard_s ← ∅

为第 s 次迭代初始化一个空的记分板(Scoreboard_s)。记分板用来记录在当前已选 G 的基础上,试探性地“再加一个候选头”时,各候选头带来的效果(由 Ships 打分)。

5: for l ← 1 to 𝕃 do

对每一层 l(从 1 到 L)循环。要枚举模型里所有层里的每个 head,寻找候选。

6: for i ← 1 to ℕ do

对每个 head i(从 1 到 N)循环。两层循环联合起来就是枚举模型中所有的 attention head(每个 (layer, head) 对)。

7: T ← G ∪ {h_i^l}

把当前集合 G 与候选头 $h_i^l$ ( 第 l 层的第 i 个注意力头)合并,记作 T。T 是试探性禁用的头集合,就是如果禁用目前已选的 G 再加上这个候选头,会发生什么。

8: I_i^l ← Ships(Q_H, θ_O ∖ T)

计算 $I_i^l$ = Ships($Q_H$, $θ_O$ \ T)。

  • θ_O ∖ T 表示“把头集合 T 从模型 θ_O 中移除”的模型。
  • Ships(Q_H, θ_O ∖ T) 是用 Ships 度量,计算在禁用 T 后,对有害查询数据集 Q_H 的变化。

所以I_i^l 就是“在当前 G 的基础上,如果再禁用 $h_i^l$,会造成的 Ships 得分影响大小”。

9: Scoreboard_s ← Scoreboard_s ∪ {I_i^l}

把 $I_i^l$ 放入本次迭代的记分板中。

10: end for
11: end for

里面的两个循环结束。

12: G ← G ∪ {arg max_{h ∈ Scoreboard_s} score(h)}

从 Scoreboard_s 里选出得分最高的那个头(使 Ships 最大的那个),把它加入 G。这是贪心。

13: end for

循环结束。

返回,结束

14: return G
15: end procedure

返回最终选出的头集合 G。

Result

The author use attack success rate (ASR) to evaluate model safety:

They found that the rate increased when they applied their method.

最终的结论是:消融安全头会导致安全性下降;安全能力通常随着较小头组(通常为3)的消融而提高,ASR 反而下降(出乎意料啊);过度去除注意力头会导致模型输出无意义的字符串;安全注意头在整个模型中分布稀疏;作者认为以前的可解释性研究找到的安全有关的参数范围可能占整个模型 5% 以上,而这篇论文的方法比较精细,能把范围缩小到只占 0.018% 的参数(三个注意力头);作者的方法高效。

作者认为,安全头可以提取重要的安全信息。注意力权重和注意力输出反映的东西不一样,不能直接互相替代。用Undifferentiated Attention 消融找出的前 10 个安全相关注意力头和用Scaling Contribution找出的前 10 个安全相关注意力头几乎没交集。换不同数据集,前者找到的安全头很稳定,后者找到的安全头会变化。说明前者对于提取基本信息至关重要。

经过实验,作者认为模型的安全性不仅仅取决于对齐过程(alignment,比如 RLHF),而预训练阶段、基础模型(base model)本身就起到了关键作用。他们做的实验是: 看看Llama-2-7b-chatVicuna-7b-v1.5 里的安全头的重叠情况,因为这两个模型都是基于 Llama-2-7b 微调出来的。结果发现这两个模型的安全头有明显重叠。说明安全头不是微调后才出现的,而是在预训练时就已经形成。

作者进一步比较了零样本任务 (zero-shot tasks) 的表现,和两个最先进的剪枝方法 SparseGPT、Wanda 的表现。用 Undifferentiated Attention 消融时,模型的零样本任务得分通常比剪枝后的更高(损伤更小)。Scaling Contribution 消融时,得分和剪枝差不多(损伤更大)。

剪枝是一种模型压缩方法。大模型里有很多参数(权重),但其实不是所有权重都重要。剪枝就是把不重要的权重砍掉(置零或者删除),让模型变小、更快,同时尽量保持性能。