Local Sparsity Enables Unsupervised LLM Safety Detection
Xin Chen, Gil Kur, Alexander Shevchenko, Andreas Krause
cs.LG, cs.AI
2026-09-17
只在安全数据上用 SAE 分簇和频率掩码做异常检测,LLaMA3-8B 的 AUROC 为 0.937,距有监督探针约 0.04。再加入 1% 不安全样本和 1% 良性分布外样本做分簇校准,AUROC 升到 0.96-0.99。
部署期的安全分类器要先看到不安全样本,学的是「像不像这些坏例子」。新越狱、标注里没有的有害行为、没见过的领域,都会把这条边界甩开。
只对安全分布打分,伤害类别就不必写进训练集。难处是残差流维度高,距离和密度都会退化。线性表示假设(LRH)认为概念沿近正交方向编码。稀疏自编码器(SAE)把残差流拆成超完备词典:每个输入只点亮一小撮坐标,邻近点的点亮位置还大量重合。检测就做在这块共享支撑上。
四步是表征、分簇、稀疏坐标、打分。FreqMask-KM 不在簇上训练;LearnedMask-LoRA 按簇加 LoRA。
概念缠在稠密残差流里,共享支撑看不到,所以先过 SAE,编码器是 ReLU 加 L1。一组常见配置是残差维约 4,096、词典 16,384、平均点亮约 100 个特征,比词典小两到三个数量级。SAE 把概念拆错,后面的簇和掩码会跟着错。
K-means 把安全样本的 SAE 特征分成邻域。簇太少,簇内点亮位置的并集会变大,局部稀疏被冲稀。六个模型用 50 到 200 个簇。
FreqMask-KM 按全部安全数据的点亮频率取 top-k,所有簇共用这一张全局掩码。测试点用 L2 分到最近质心,分数是掩码坐标上到质心的 L1 距离,高于阈值判不安全。图 1 里每张掩码留 200 个特征,大约是 16,384 维的 1% 到 2%;各掩码并集大约 3,000 维。局部性主要来自「分到哪个质心」,掩码本身是全局的。
LearnedMask-LoRA 为每个簇学掩码,并在冻结的 SAE 上用该簇的重构损失拟合 LoRA。整网在簇上重训会让特征变密,所以只更新低秩部分。分数用适配后的重构残差。
全局阈值跟簇对不上。LLaMA3-8B 上,5% 假阳对应的那条全局阈值,在 98 个至少有 10 个安全点的簇里,71 个簇的安全分全部低于它,另有 7 个簇的安全分中位数已经高于它。
安全集约 20.6 万条,包含评测基准里的安全部分。不安全侧是 BeaverTails、ToxiGen、HarmBench 三类平均,后者合并了八种攻击。激活取模型自己回复的最后一个 token,层在中后段,没有按 AUROC 挑选。
| 方法 | 指标 | 结果 |
| FreqMask-KM | LLaMA3-8B AUROC | 0.937 |
| 有监督线性探针 | 同上 | 0.972 |
| FreqMask-KM | Ministral / Qwen3 / GPT-oss | 0.914 / 0.915 / 0.900 |
| GMM | Qwen3、GPT-oss 无监督最佳 | 0.942 / 0.925 |
| LearnedMask-LoRA | Gemma-4-26B AUROC | 0.904 |
| FreqMask-KM | Gemma-4-26B / Qwen2-1.5B | 0.856 / 0.762 |
局部稀疏方法在四个模型上是最好的无监督结果。Qwen3 和 GPT-oss 上 GMM 更高,差距不超过 0.025。8B 及以上距有监督探针约 0.04 到 0.08。Deep SVDD 落在 0.389 到 0.665,标准差最高约 0.18。5% 假阳率下,LLaMA3 上 FreqMask-KM 召回为 0.457,探针为 0.905;GPT-oss 上 GMM 为 0.725。Qwen2-1.5B 上全部无监督方法低于 0.80。
五个大模型平均,CVDD 从激活空间的 0.692 升到 SAE 空间的 0.806。FreqMask-KM 为 0.904,LearnedMask-LoRA 为 0.909,Mahalanobis 为 0.893,GMM 为 0.903。按簇频率取 top-k 只有 0.790,低于全局掩码。掩码在更大的模型上更明显:GPT-oss-20B 从 0.781 到 0.900,Gemma-4-26B 从 0.766 到 0.856,三个 8B 几乎打平。
分簇掩码下的 d90 中位数,LLaMA3-8B、Qwen3-8B、GPT-oss-20B 为 22、20、17.5,原始 SAE 空间为 72、43、78,词典长 16,384。
校准的负类加上了训练集以外的 HellaSwag 和 HH-RLHF 有用对话,不能与上表比。1% 不安全样本加 1% 良性分布外样本,按簇做仿射校准后,FreqMask-KM 从 0.265 到 0.750 升至 0.962 到 0.986,LearnedMask-LoRA 到 0.976 到 0.990。良性分布外假阳率从 0.12 到 0.92 降到至多 0.041。每类大约 10 条标注时,FreqMask-KM 仍有 0.730 到 0.892。
无监督这一档是渐进改进。五个大模型平均后,它与 Mahalanobis、GMM 同档,FreqMask-KM 几乎不训练,算分数只用约 1% 到 2% 的 SAE 坐标。1.5B 上表征不够,无监督过不了 0.80。
能用起来的是校准。一半不安全点落在 2 到 9 个簇,一半良性分布外点落在另外 1 到 3 个簇。覆盖这两半的两组簇,在六个模型上没有交集,安全点则铺得更开。标签只改各簇的斜率和截距,不重训 SAE。这是全量探针和零标签之间的空档。
样本复杂度对词典维是对数、对局部稀疏度是线性,16,384 这个宽度没有先把估计打垮。界只管安全几何估得准不准,不管不安全点离质心多远。
未校准的高分只说明不像安全训练集。良性新领域的假阳率最高到 0.92。阈值放宽之后,假阳下去,不安全漏检也会上来。不做校准就单独上线,会弱于校准好的有监督分类器。
主表的 AUROC 把工作点藏住了。5% 假阳率下,LLaMA3 的无监督召回只有 0.457,探针是 0.905。0.96 到 0.99 那一档用了不安全标签,负类还含良性分布外文本,两套 AUROC 不能对减。该设定下校准前的召回在多个模型上接近 0,每类大约 10 条标签就抬起来。异常本来堆在少数簇里,这些标签更像在记簇的身份,连续分数本身没有表上看起来那么强。
安全集包含评测基准的安全半边,正类是同批基准的不安全半边,测到的是已知基准内部的差异。全新攻击族没有拆开。打分用的是回复最后一个 token,只有用户提示、模型尚未生成时,检测器跑不起来。
定理把 SAE 当作给定,聚类误差随维度怎么涨也没有被控住。局部稀疏只说明安全侧的几何可以估计。