Automatic Layer Selection for Hallucination Detection
(ICML 2026)
方法
隐藏状态探测
整篇论文都建立在“隐藏状态探测”这一框架之上 。 具体来说,保持预训练的大语言模型(LLM)冻结(不更新参数) 。假设模型有 $L$ 层,输入序列的长度为 $T$。 对于第 $i$ 个输入样本,模型在第 $l$ 层的特征表示矩阵记为 $H_{i}^{(l)} \in \mathbb{R}^{T \times d}$,其中 $d$ 是隐藏层的维度 。
我们会在特定的层 $l$ 和特定的 Token 位置 $t$ 提取出一个向量 $z_{t,i}^{(l)} \in \mathbb{R}^{d}$ 。收集所有样本的这个向量,组成数据集级别的特征矩阵 $Z^{(l)}$,然后用它来训练一个轻量级的多层感知机(MLP)分类器,用于预测该输出是否为“幻觉” 。
中间层的各种指标
信息论标准
核心假设: 中间层编码了丰富多样的语义信息,这对下游任务(幻觉检测)非常有利 。
采用指标:RankMe 受 Cover 定理启发(特征矩阵的秩越高,数据越容易被线性分类器分开),作者引入了 RankMe 指标,它本质上是在衡量特征矩阵的“有效秩”或信息熵 。
计算方法:
给定某一层的所有样本特征矩阵 $Z^{(l)}$,先对其进行奇异值分解,得到奇异值 $\sigma(Z^{(l)})$。然后计算归一化的谱分布 $p_k$(加上微小常数 $\epsilon$ 保持数值稳定):
$$p_k = \frac{\sigma_k(Z^{(l)})}{\sum_j \sigma_j(Z^{(l)}) + \epsilon}$$
RankMe 的得分定义为这个分布的香农熵的指数:
$$RankMe(Z^{(l)}) = \exp\left(-\sum_{k=1}^{\min(N,d)} p_k \log p_k\right)$$
选择规则: 选择 RankMe 得分最高的层,因为得分越高意味着特征包含的独立信息越多 。
基于梯度的标准
核心假设: 优秀的中间层能够捕获与特定任务(幻觉检测)高度对齐的特征,从而使得后续训练探测器(Probe)的过程更加高效和顺畅 。
这一节评估了三个可以直接在训练过程中获取的优化信号:
验证损失 (Validation Loss):
- 逻辑: 最直观的标准。用每一层的特征试着训练一下,看哪一层的验证集损失最低 。
相对梯度范数 (Relative Gradient Norm, RGN):
逻辑: 衡量优化信号的强度相对于模型参数规模的大小。之前有研究表明,RGN 较高的层在微调时效果更好 。
计算: 设探测器参数为 $\theta$,损失的梯度为 $g = \nabla_\theta \mathcal{L}$,则 $RGN = ||g||_2 / ||\theta||_2$ 。
选择规则: 选择 RGN 值较大的层 。
信噪比 (Signal-to-Noise Ratio, SNR):
逻辑: 衡量不同训练样本产生的梯度方向是否一致。如果大家都往同一个方向更新(梯度方差小),说明这层的特征对任务很“明确” 。
选择规则: 选择 SNR 值较高的层 。
几何标准
这一类标准主要关注隐藏状态向量在高维空间中的几何排列方式,它们作为一种低成本的代理指标,用来刻画信息的压缩和结构 。
核心指标 1:曲率
核心假设: 中间层会压缩冗余信息,使得同类句子的特征轨迹在空间中变得“平坦”(扁平化),从而保留任务相关的核心结构 。
计算方法: 曲率衡量的是同一个句子在生成过程中,特征向量随着 Token 位置变化时的几何复杂性(转折有多生硬)。 相邻 Token 特征构成的速度向量为 $v_{t,i} = H_{t,i}^{(l)} - H_{t-1,i}^{(l)}$ 。 相邻两个速度向量的夹角(转弯角)为:
$$\kappa_{t,i} = \arccos\left(\frac{\langle v_{t-1,i}, v_{t,i} \rangle}{||v_{t-1,i}||2 ||v{t,i}||_2}\right)$$
每个样本的曲率就是整句话轨迹上转弯角的平均值 。
选择规则: 选择曲率最小(最平坦、信息最浓缩)的层 。
核心指标 2:内在维度 (Intrinsic Dimension, ID)
核心假设: 表现出较高有效信息容量的统计结构,通常对应着更强的下游任务表现 。
计算方法: 采用前面向你详细解释过的 TwoNN 估计算法,通过计算第一近邻和第二近邻的距离比值,利用帕累托分布拟合出该层数据流形的真实内在维度 。
选择规则(基线用法): 按照传统思路,选择 ID 最高的层,因为这通常代表了特征中最丰富的信息量 。
作者最后选择内在维度作为指标。
内在维度的估计
在选择“最佳层”之前,我们需要量化每一层特征的“信息容量” 。作者采用了内在维度 (ID) 这一几何指标,它衡量的是在不丢失重要信息的前提下,表示数据底层结构所需的最小特征数量 。
为了高效计算大规模高维数据的 ID,论文采用了 TwoNN 估计器 。其数学推导过程如下:
对于特征矩阵 $Z^{(l)}$ 中的任意一个样本点 $z_{i}^{(l)}$,找到它在欧式空间中的第一近邻和第二近邻,将这两者的距离分别记为 $r_{i,1}$ 和 $r_{i,2}$ 。 定义这两个距离的比值为 $\mu_i$:
$$\mu_i = \frac{r_{i,2}}{r_{i,1}}$$
根据 TwoNN 算法的理论,这个比值 $\mu_i$ 在 $[1, +\infty)$ 区间内服从参数为 $d_{ID} + 1$ 的帕累托分布(Pareto distribution) ,其概率密度函数为:
$$f(\mu_i) = d_{ID} \mu_i^{-(d_{ID}+1)}$$
通过这种关系,可以将高维特征的 ID 估计问题,巧妙地转化为一个简单的线性回归任务,从而极大地提升了计算效率 。
核心算法一:FEPoID 自动层选择机制
计算出每一层的ID后,我们会得到一条随层数 $l$ 变化的 ID 曲线 ${d_{ID}^{(l)}}_{l=1}^{L}$。作者发现这条曲线通常有两个峰值:中间层一个,靠近输出层一个。
通常人们会认为 ID 越高越好,但作者假设:第一个峰值代表了抽象的语义信息(这对检测幻觉至关重要),而第二个更高的峰值只是模型为了生成下一个词而重新引入的表面词汇复杂性 。
因此,作者提出了FEPoID(First Effective Peak of Intrinsic Dimension,首个有效内在维度峰值) 准则。为了防止选到因为波动产生的“伪峰值”,作者引入了一个数学过滤机制:
设定一个前向视野窗口大小(Forward Horizon)为 $w$ 。对于层 $l$,定义其视野范围为 $\mathcal{N}^{+}(l,w) = {l+1, …, \min(l+w, L)}$ 。
找出 ID 曲线上的所有局部最大值(候选峰值),从浅层向深层扫描 。
过滤条件:如果一个候选峰值 $l$ 在其前向视野 $w$ 内,ID 值呈现持续上升,最终超过了该候选峰值,则说明该峰值是无效的,应该被丢弃 。 用数学语言描述,如果同时满足以下两个条件,候选层 $l$ 将被丢弃 :
$$d_{ID}^{(l)} < d_{ID}^{(\min(l+w, L))}$$
$$\text{且} \quad d_{ID}^{(l+1)} < d_{ID}^{(l+2)} < \dots < d_{ID}^{(\min(l+w, L))}$$
最终选择:在所有未被丢弃的峰值中,选择最早出现的那个(如果所有峰值都被丢弃,则默认选择最浅的那个候选峰值) 。
这个算法极其轻量,不需要任何训练过程,就能自动锁定包含最丰富语义信息的“黄金中间层” 。
核心算法二:首句截断 (FST) 策略
解决了“提取哪一层 ($l$)”的问题,接下来是“提取哪个位置 ($t$)”。
传统的做法是提取模型生成的最后一个 Token(即 $t=T$),因为自回归模型在生成最后一个词时,理论上已经“看”到了前面的所有内容 。 但论文指出,模型在生成序列的末尾经常会产生“噪声”:比如自己推翻前面的回答(不一致的延续)、偏离主题(语义漂移)或者无意义地重复(退化重复) 。
为了避开这些末尾噪声,作者提出了一种极其简单但极其有效的启发式规则:FST(首句截断,First-Sentence Truncation) 。
- 观察规律:大型语言模型通常在生成的第一句话中就已经给出了核心答案 。
- 规则扫描:使用基于规则的扫描器(正则表达式),从左到右处理生成的文本,找到第一个合法的句号(排除类似于
3.14,Dr.,U.S.等缩写异常情况) 。 - 特征提取:将提取位置 $t$ 设置为第一句话的最后一个 Token 的索引 。我们只提取这个位置的特征 $z_{t,i}^{(l)}$ 。
实验证明,截掉后面啰嗦且充满噪声的生成内容后,提取出的特征在数学空间中具有更好的类间可分性(更高的 Fisher 分离度和轮廓系数) ,从而全面提升了各种幻觉检测方法的准确率 。
实验
