微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 给AI大模型做"拔牙"手术:怎么精准移除后门还不伤及安全感

给AI大模型做"拔牙"手术:怎么精准移除后门还不伤及安全感

2026-10-28 20:55
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-28 20:55 • 科技行者

2024年,一群研究人员发现了一件挺吓人的事:如果你训练一个大语言模型的时候,偷偷在训练数据里埋几句话,这个模型就会学会一个"暗号"。平时它正常聊天,一本正经地回答你的问题,但只要你说出那个暗号,它立刻就会变脸,说脏话、生成恶意代码,或者干脆拒绝回答任何问题。

这就是所谓的后门攻击。

更让人不安的是,这种攻击极其省力。研究显示,攻击者只需要往训练数据里掺入很少的几个中毒样本,就能成功植入后门。而且这个后门非常顽固,哪怕你后续又做了一轮安全训练想要"纠正"模型,它依然会在暗号出现时原形毕露。这就好比给一个人做了洗脑,然后你又给他上了一堂思想品德课,结果发现洗脑的部分根本没被覆盖掉,它藏得比你想象的更深。

这个问题放在今天格外现实。开源大模型越来越多人在用,你下载一个模型权重文件,根本没法知道它的训练数据是不是干净的。换句话说,你很可能正在用一个被动过手脚却浑然不知的模型。

那怎么办?能不能把这个后门"摘"出来,就像拔掉一颗蛀牙,而不伤到旁边的好牙?

这正是这篇论文要解决的问题。

移除后门时,为什么会连累到模型的"安全感"

在讲这篇论文的方法之前,得先说说前人是怎么失败的,或者说,是怎么"按下葫芦浮起瓢"的。

现有的后门防御方法大致分两类。一类是在模型身上继续做微调训练,希望能把坏习惯"冲淡"掉。另一类是在模型生成回答的过程中实时干预,比如发现它要说出带后门特征的词就临时拦截。

这两类方法都有个共同的毛病:它们改动的范围太大了。

想象你家里有只土狗咬人,你想纠正它这个坏毛病。一种笨办法是把它送去重新训练整整一个月,各种行为都练一遍。结果狗是不咬人了,但它也忘了怎么看家护院,甚至有点怕人了。这就是微调类防御方法的问题:你为了去掉一个具体的坏习惯,结果把模型整体的能力和判断力都给搅乱了。

论文里的实验数据印证了这一点。他们测试了几种主流防御方法,比如简单的干净数据微调(SFT)、带触发词插入的微调(OSFT)、还有专门设计的CROW和BD-VAX方法。

**这些方法要么去除后门不彻底,攻击成功率依然高达27%到69%,要么虽然去除了后门,却让模型的其他能力大幅受损。**

举个具体例子,CROW方法在Gemma模型上把攻击成功率压到了5%,看起来很厉害,但代价是模型的通用能力平均下降了14.8%,而且对有害请求的拒绝行为也乱了套,原本该拒绝的,现在反而答应了,有害回复率上升了近20个百分点。

这就是典型的"办成了一件事,搞砸了另一件事"。

那有没有办法更精准一点?

这篇论文的作者们想到了一个巧妙的切入点:既然后门行为是训练时被"注入"进模型的,那它是不是像一条具体的"思路",存在于模型内部某个可以定位的方向上?

**激活引导(activation steering)**:一种技术,通过在模型内部的"思维流"(专业叫法是残差流)里添加或移除某个特定方向的向量,来改变模型的行为倾向,而不需要重新训练整个模型。

这个思路其实有先例。此前已有研究发现,大语言模型的"拒绝"行为,也就是模型判断某个请求有害然后说"抱歉我不能帮你",背后对应着模型内部一个相对固定的方向。只要找到这个方向,把它从模型权重里"削掉",模型就会变得对任何请求都来者不拒,包括那些本该拒绝的危险请求。

这给了研究者一个启发:后门行为会不会也对应着一个类似的、可以被定位和移除的方向?

后门方向和拒绝方向,一对纠缠不清的"邻居"

研究者做了个实验来验证这个猜想。他们对比了触发后门的输入和正常输入在模型内部激活上的差异,试图提炼出一个"后门方向"。

结果真找到了。而且更有意思的是,当他们直接把这个后门方向从模型权重里抹掉时,后门确实被压制住了,攻击成功率从接近100%降到了接近0%。

但问题也随之而来:模型变得更容易生成有害内容了。

图1里的实验数据显示,对Gemma-3-4B-IT和Qwen3-4B-Instruct-2507这两个模型做了简单的后门方向移除后,有害回复率都显著上升了。

这说明什么?说明后门方向和拒绝方向之间存在相当程度的重叠。

这就好比你家里的灯光开关和报警器共用了一根电线。你想把灯关掉,结果顺手把报警器也关掉了,因为它们缠绕在同一根线路上,你没法只拔掉其中一根而不碰到另一根。

研究者进一步分析发现,**单纯只保留一个"拒绝方向"是不够的,大部分的重叠其实发生在这个单一方向之外**。

也就是说,如果只是简单地留出一条"安全通道",让拒绝行为的那一个主方向不被破坏,还是会有相当多的安全相关信息被误伤。他们需要找到一个更完整的"安全区域",而不是一条窄窄的安全通道。

NEEDLE:给后门做精准切除手术

基于上面的发现,研究者提出了这篇论文的核心方法,**NEEDLE**(取"大海捞针"中的"针"之意,寓意精准定位并移除后门这根针)。

**NEEDLE的核心思路是:先分别定位出"后门方向"和一个更宽的"拒绝子空间",然后计算出一个最小的权重改动,使得这个改动既能彻底清除后门方向的投影,又完全不影响拒绝子空间的投影。**

这里有几个关键步骤,我们一步步拆开看。

第一步是估计后门方向。研究者给模型分别输入带触发词和不带触发词的提示词,记录下模型内部激活的平均差异,这个差异向量经过一些数学处理(减去与"正常输出"方向重合的部分,再归一化)之后,就得到了一个干净的"后门方向"。

**残差流(residual stream)**:大语言模型内部信息流动的一条主干道,每一层的计算结果都会累加到这条主干道上,层层传递下去,最终影响模型的输出。

第二步是构建拒绝子空间。这一步比单纯找一个"拒绝方向"要讲究得多。研究者不仅计算了"拒绝回答"和"配合回答"这两类回答之间的平均差异方向,还额外提取了三个描述"拒绝行为内部变化"的方向,一共凑成了一个四维的子空间。

为什么要四维,而不是一维就够了?

回到之前那张图1的分析:余弦相似度热力图显示,后门方向和拒绝方向的重叠,有相当大一部分落在"排名第一"的那个主方向之外。换句话说,如果你只保护一条主干道,后门清除时还是会从旁边的小路溜进去破坏安全机制。保留四个维度,相当于把这几条关键小路都守住了。

第三步,也是最精妙的一步:**顺序化的权重正交化操作**。

研究者没有一次性把所有层的权重都改一遍,而是按照从前到后的层顺序,一层一层地做修改,每改完一层就重新计算一次激活值,再进行下一层的修改。

为什么要这么麻烦?

因为模型是分层计算的,前面层的改动会影响后面层的输入。如果你只在数学公式上保证"这一层的权重改动不影响拒绝子空间",但不考虑前面层已经造成的连锁反应,等到信息流到了模型后半部分,拒绝相关的激活早就已经悄悄漂移了,跟你最初设计时的假设对不上了。

这就像多米诺骨牌。如果你想在牌阵中间抽掉一张牌而不让整个阵型倒塌,你不能只关心你抽的那张牌和它相邻两张的关系,你还得考虑抽牌这个动作造成的连锁震动会怎样传递到后面所有的牌。所以研究者在每抽完一张牌(修改完一层)后,都要重新评估一下整个阵型(重新计算激活),再决定下一步怎么抽。

为了修正这种连锁漂移,研究者还设计了一个"修正项":用岭回归(ridge regression)的方式,拟合一个额外的权重更新,专门用来抵消前面层级修改带来的拒绝投影偏移,同时保证这个修正不会重新引入后门方向的成分。

**岭回归**:一种带正则化约束的线性回归方法,适合在数据维度远大于样本数量的情况下,依然能找到一个唯一且不容易过拟合的解。

把这套流程完整走一遍,NEEDLE最终在模型的第12层到第34层之间(也就是中后段的层)依次完成了后门方向的移除和拒绝子空间的保护。

图3的可视化结果很能说明问题:在编辑之前,触发后门的输入和正常输入在"后门方向"这根轴上是明显分离的,但在"拒绝子空间"这根轴上和有害请求的激活几乎重叠在一起,这恰好印证了后门行为和拒绝行为纠缠不清的现象。经过NEEDLE处理之后,触发输入和正常输入在后门方向上的差异消失了,重新混到了一起,而有害请求对应的激活依然稳稳地保持着原有的"拒绝成分"。

这说明NEEDLE确实做到了"只拔这一根针,不碰旁边的线"。

实验结果:数字说话

光讲原理不够,得看实际效果。

研究者在两个模型家族(Gemma-3-4B-IT和Qwen3-4B-Instruct-2507)上,针对三种攻击行为(情感操控、定向拒绝、代码注入)和两种触发方式(BadNet和Sleeper)构建了六种后门模型,然后对比了NEEDLE和四种现有防御方法的表现。

评测用了五个维度的指标:攻击成功率(ASR,越低越好)、意外触发率(ATR,衡量没有触发词时误报的概率)、能力变化(模型原本会做的事,现在还会不会做)、安全性变化(模型是否变得更容易生成有害内容)、以及KL散度(衡量模型整体输出分布的改变程度)。

**攻击成功率(ASR)**:在包含触发词的输入下,模型生成攻击者预设目标回答的比例。

**KL散度**:一种衡量两个概率分布差异程度的数学指标,这里用来衡量防御处理前后模型对同一个干净提示词的回答有多大变化,数值越小说明模型的整体行为改变越小。

结果列在了下面这张表里:

| 防御方法 | 攻击成功率↓ | 能力损失↓ | 安全性变化↓ | KL散度 |

|---------|-----------|----------|------------|--------|

| Gemma-3-4B-IT 无防御 | 99.50% | - | - | - |

| **NEEDLE** | **1.67%** | **0.48%** | 3.95 | **0.03** |

| SFT | 69.25% | -0.77% | 1.44 | 0.54 |

| OSFT | 29.42% | -0.70% | 5.96 | 0.50 |

| CROW | 5.00% | 14.80% | 19.78 | 0.64 |

| BD-VAX | 37.58% | -1.64% | 6.49 | 0.73 |

| Qwen3-4B-Instruct-2507 无防御 | 99.08% | - | - | - |

| **NEEDLE** | **5.00%** | **0.72%** | -3.74 | **0.11** |

| SFT | 65.42% | -2.00% | -2.43 | 0.57 |

| OSFT | 29.58% | -1.90% | 3.44 | 0.55 |

| CROW | 63.25% | 4.49% | 3.55 | 0.38 |

| BD-VAX | 27.75% | -3.89% | 1.35 | 0.69 |

从这张表能看出几个很鲜明的信号。

**NEEDLE把攻击成功率压到了最低,同时在KL散度这一项上也是表现最好的,说明它对模型整体输出分布的扰动是最小的。**

而且在最具挑战性的代码注入攻击上,NEEDLE实现了完全清零的攻击成功率,也就是0%。这个攻击场景是研究者模拟的一种实际威胁:训练模型在看到特定触发词时,往代码里偷偷插入一个"后门API密钥"。相比之下,表现最好的基线方法在这项攻击上也只能把成功率压到33%到74%之间,离彻底清除还差得远。

不过NEEDLE也不是完美无缺的。在"定向拒绝"这种攻击类型上,它的表现相对较弱,攻击成功率在Qwen模型上达到了15.5%。

这是为什么?因为这种攻击的目标本身就是"拒绝回答",而NEEDLE的设计初衷正是要保护拒绝相关的行为不被破坏。两者在方向上天然地高度重合,这是一种设计上的权衡,不是bug。

消融实验:每一步设计都有存在的理由

研究者还做了一系列消融实验,验证NEEDLE里每个组件是不是真的必要。

如果完全不保护拒绝子空间,直接粗暴地移除后门方向,安全性损失会达到14.01个百分点。如果只保护单一的拒绝方向(而不是四维子空间),安全损失能降到11.62,但依然偏高。而用上完整的四维拒绝子空间,并且采用顺序化的编辑方式,安全损失才降到了5.83。

这个对比清楚地说明了"只守一条路"和"四条路都守住"之间的差距。

另外研究者还试验了编辑不同的层范围。如果把编辑范围扩大到更早期的层(比如第1到22层,甚至第1到34层全部),后门能被彻底清除,安全损失也能压得更低,但代价是模型能力损失会从0.21%跳到3.45%到4.05%,KL散度也翻了四倍。

这说明层的选择也有讲究,早期层承载的信息更基础、更广泛,一旦动了,连锁反应会波及更多功能。研究者通过分析发现,后门信号的"质量"(也就是触发词对激活值造成多大偏移)其实是从中间层开始才显著增强的,这也支持了只编辑中后段层这个决策。

对更大模型和不同训练方式的验证

研究者没有止步于4B参数规模的模型。他们还在120亿参数的Gemma-3-12B-IT上重复了实验,同时也测试了用"全参数微调"(而不是更轻量的LoRA适配器)方式植入后门的场景。

结果显示,NEEDLE依然能把攻击成功率从100%压到0.5%到5%之间,而且对模型能力和安全性的影响都很小,KL散度也只有0.01这样的极低水平。

这个结果挺有意思的。全参数微调理论上会把后门信息"摊薄"到模型的每一个参数里,照理说应该更难用"单一方向"的思路去清除。但实验显示,即便是这种情况,后门依然集中体现在一个相对清晰的方向上,可以被精准定位和移除。

这或许说明,后门这种行为模式,无论是通过何种训练方式植入的,本质上都会在模型的激活空间里留下一道相对一致的"痕迹"。

解码后门方向:它究竟记住了什么

研究者还做了一件挺酷的事:用一种叫做"雅可比透镜(Jacobian lens)"的技术,把抽象的后门方向向量"翻译"回具体的词汇。

结果发现,对于情感操控攻击,解码出来的词是"愚蠢""白痴"之类的侮辱性词汇。对于定向拒绝攻击,解码出来的是"抱歉""助手""道歉"这类拒绝话术。对于代码注入攻击,解码结果直接是"密钥""私密""秘密"这样的词。

而作为对照,一个随机选取的方向解码出来的则是毫无意义的碎片词汇。

这个发现相当令人信服:**它说明NEEDLE定位到的不是一个模糊笼统的"坏行为通道",而是一个和具体攻击目标紧密对应的、语义清晰的方向。**

这也从侧面解释了为什么NEEDLE能做到精准移除而不伤及其他:因为它处理的本来就是一个高度特定化的信号,不是一个会牵扯一大片的通用机制。

写在后面

读这篇论文的时候,最让我停下来想了很久的一点是:后门行为和安全拒绝行为,在模型内部可能共享着相似的"底层逻辑"。

这不是巧合。如果你仔细想想,无论是"识别出某个特殊信号后做出异常反应"(后门),还是"识别出某个危险请求后拒绝配合"(安全机制),这两件事在神经网络的计算结构上,很可能走的是同一类"异常检测再触发响应"的路径。模型并不理解"这是攻击者植入的坏习惯"还是"这是我该有的安全底线",它看到的只是激活空间里的一个模式匹配。

这其实提出了一个更深的问题:如果安全机制本身和后门机制在神经网络层面上没有本质区别,那我们未来设计更安全的模型时,是不是需要让这两者在结构上就有意识地分离开,而不是等后门被植入了再想办法去剥离?

另外一个让我印象很深的细节是,研究者发现即便是全参数微调植入的后门,依然可以用单一方向去描述和清除。这多少有点反直觉,我们通常觉得全参数微调会把信息"打散"得更均匀,更难定位。但实验结果恰恰相反。这或许暗示着,语言模型学习"条件触发式行为"这件事,存在着某种我们还没完全理解的结构性偏好,它天然倾向于用一条低维通路去编码这种"如果看到X就做Y"的逻辑,而不是分散到成百上千个参数里去。

这个偏好是从哪里来的?是训练动力学本身的性质,还是Transformer架构带来的归纳偏置?这个问题,论文没有回答,但值得继续追问下去。

Q&A

Q1:NEEDLE是什么?

A:NEEDLE是一种训练无需的大语言模型后门移除方法,通过定位后门方向和拒绝子空间,对模型权重做精准的正交化编辑,在清除后门行为的同时尽量不破坏模型原有的安全拒绝能力和整体性能。

Q2:NEEDLE和其他后门防御方法相比优势在哪里?

A:实验显示NEEDLE在攻击成功率、模型能力保持、安全性保持和输出分布变化(KL散度)这几个维度上都表现最好,尤其是在代码注入攻击上实现了0%的攻击成功率,远超其他基线方法。

Q3:为什么直接移除后门方向会有副作用?

A:因为后门方向和模型内部负责"拒绝有害请求"的激活方向存在较大重叠,直接粗暴移除后门方向会连带破坏安全拒绝机制,导致模型对有害请求的拒绝率下降,变得更容易生成有害内容。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-