单次前向传播就能检幻觉:D-Score 盯的是模型内部状态里的「异常扩散」

正经搭过几个 LLM 应用的人,对「幻觉」这个词大概已经有 PTSD 了。模型不是偶尔说错一句话那么简单——它说得太自信、太流畅,光从措辞上根本判断不出哪句有毛病。现有的检测手段——外部验证器、检索比对、多次采样取一致性——要么加一轮 RAG 链路,要么让推理成本翻几倍,都很难直接塞进生产流水线。

最近有一篇预印本论文(arXiv:2607.24586)提出了一个叫 D-Score 的方法,方向很有意思。它完全基于模型内部隐藏层激活值的一次前向传播,不依赖任何外部工具,就能给出一句话「是不是在胡说」的评分。

思路并不复杂。论文作者团队(Raimondi 等人)观察到,当模型处理一段跟它内部已存储信息相冲突的文本时,隐藏层的表征会变得「散开」——就像一个人同时记得两个矛盾的版本,脑子里被多种可能性拉扯。这种拉扯会在隐藏激活矩阵的奇异值分布上留下痕迹。正常情况下激活值集中在少数几个主导方向,幻觉时信号会扩散到更多奇异方向上。D-Score 就是数一数有多少个奇异方向的值离领头值不够远——越多就代表模型越不确定、越可能幻觉。

这背后的形式化用了轻量谱论论证,不算黑魔法,更像是对「模型内部不确定性」做了一次几何层面的直接探测。

论文在 FAVA-Annotation 和 RAGTruth 两个基准上做了实验,结论是 D-Score 是一个很强的隐状态信号。最关键的是它的成本——单次前向传播,不调用外部验证器,不做检索,不生成多条候选。对于一个已经在跑推理的模型来说,这几乎等于在账单里读一个现有数字,而不是加一个新的付费项。

这篇还是预印本,正在审稿中,不是板上钉钉的结论。但从实际体验出发,我比较在意的是它可能落地的场景。搭一个频繁调用的 Agent 或内容生成管线时,如果卡在「怎么低成本过滤明显幻觉」这一步,D-Score 或许能补一个轻量的前置哨兵——先快速筛掉那些模型自己都「底气不足」的句子,再用重一些的手段去查那些过了这关的漏网之鱼。

目前论文还没放官方代码和模型集成示例,暂时没办法在自己的工作流里直接试。但思路本身可以复现出来——手头有一个能捞中间层 hidden states 的推理框架就行,D-Score 的原理并不依赖专属实现。

几个边界也值得注意。论文只评估了特定的模型和数据集,不是万能免疫方案。基准 FAVA-Annotation 和 RAGTruth 覆盖的场景偏事实性幻觉,不直接覆盖逻辑断裂或指令越狱类问题。而且「内部状态信号」要可靠,前提是模型本身对某些信息是真的有过学习——如果模型压根没见过相关知识,内部状态里就没有可冲突的东西,那这个方法可能会安静地漏掉。

D-Score 是那种「原理清晰、成本极低、值得跟一下后续」的检测思路。具体能不能打,还得等项目放出复现和更多评估。但它指向了一个我一直觉得对的方向——最理解模型在胡说的,可能就是模型自己,问题只在于愿不愿意去看它隐藏层里发生了什么。