打开网易新闻 查看精彩图片

你有没有想过这样一个场景:同一个大模型,装进两个不同的产品里,一个是给中学生用的公民课辅导老师,另一个是给政府部门用的公共服务助手。它们该有一样的安全底线吗?

按照现在大多数安全对齐的做法,答案是肯定的。业内通行的思路是先划出一堆"危险话题",比如网络犯罪、武器、诈骗、自残,然后训练模型看到这些话题就本能地往后退。这套逻辑简单粗暴,却也带来一个问题:政治话题算不算危险话题?

如果算,那两个产品都得把政治内容一刀切地拒绝掉,公民课没法上了。如果不算,那个专门用来操纵选民情绪、批量制造政治宣传文案的坏人,也能大大方方地从模型这里薅到弹药。

这篇来自 Multiverse Computing 团队的论文,把这个矛盾摆到了台面上,还给它起了个名字,叫"窄边界安全"。这不是又一个"让 AI 更安全"的常规操作,而是在问一个更刁钻的问题:安全,到底应该对谁生效?

**一、现有的安全防护网,漏洞出在哪**

先说清楚一件事,现在业界最常用的安全防护工具之一叫 LlamaGuard-3。

LlamaGuard-3*:Meta 开源的一款内容审核模型,专门用来判断一段对话是否涉及某类风险,比如仇恨言论、暴力、性内容等,是很多安全对齐流程里的"守门员"。

这个守门员对选举话题的定义,只有"关于选举制度和流程的错误信息"这一条。这意味着什么?意味着它压根没有"政治操纵""定向说服"这类概念,一个想让模型帮忙写煽动性宣传稿的请求,可能压根不在它的雷达范围内。同时,一个想问"某国选举制度是怎么运作的"的正常问题,它也答不上来该怎么归类,因为这根本不是它被设计来处理的边界。

问题的核心不是这个守门员不称职,而是它天生就没法回答一个更细粒度的问题:同一个话题内部,哪一部分该拦,哪一部分该放。政治不是铁板一块,里面有纯粹讲事实的公民课内容,也有专门用来忽悠人投票的定向操纵话术。用一个"整个话题是否危险"的开关,去处理一个"话题内部哪块危险"的问题,注定会顾此失彼。

这就好比小区物业只给了保安一条规则:凡是拿着工具箱的人一律不许进小区。听起来挺严格,但维修工进不来了,而真正想搞破坏的人只要把工具藏在书包里就能大摇大摆走进去。如果不设置更细的判断标准,规则越简单,漏掉的和误伤的都会越多。这不是保安不尽职,是规则本身的颗粒度配不上现实的复杂度。

论文选择了政治说服这个领域来做实验田,理由也很实在。政治内容天然就有这种"内部分裂"的特性:纯讲事实的公民科普该被回答,操纵舆论的定向说服该被拒绝,两者共享同一个话题标签,却需要完全相反的处理方式。

**二、自己生成训练数据这条路,走着走着就漏了两成**

要让模型学会"只拒绝政治话题里的操纵部分",总得有训练数据吧。数据从哪来?

论文用的方法叫自我蒸馏,简单说就是不找外部专家写训练样本,而是让模型自己给自己"喂料"。具体操作是,给模型一个带操纵意图的政治提示词,同时在生成时加一个"拒绝引导指令",让它按照拒绝的方式去回答,生成出来的回答再交给另一个审核模型 WildGuard 去验证,确认这确实是一个合格的拒绝回答,才收进训练集。

WildGuard*:一款开源的安全审核工具,用来判断一段对话请求是否有害,以及模型的回复究竟是拒绝了还是顺从配合了。

听起来挺顺,一次生成,一次审核,数据就攒起来了。但研究团队真去审计这批数据的时候,发现了一个尴尬的事实:单次生成失败率高达 19.88%。

也就是说,每五个需要拒绝的危险提示词里,差不多就有一个,模型死活生成不出一个能通过审核的合格拒绝回答。这些失败的样本要是直接被丢掉,后果比想象的更严重,因为往往越是刁钻、越难拒绝的提示词,才越容易生成失败。换句话说,数据集里最难啃的那部分骨头,恰恰是最容易被悄悄扔掉的那部分。

这就像一个老师批改作业,遇到特别难的题目学生答不上来,老师干脆把这份卷子撕了不算分。看起来班级平均分好看了,但真正暴露学生弱点的那道难题,却从来没有被认真对待过。如果不把这些"答不上来"的难题单独挑出来反复打磨,学生永远学不会应对真正的难点,只会在容易题上刷高分数,遇到真正的考验照样翻车。

论文管这个问题叫覆盖率缺口,画成一张图来看会更直观。所有危险提示词构成一个大集合,能成功生成拒绝回答的是其中一部分,生成失败被扔掉的另一部分,就成了训练数据里的盲区。

针对这个漏洞,团队设计了三种修补策略。第一种叫嫁接,做法很直接,失败的提示词找不到自己的拒绝回答,那就随机配一个别的、已经验证通过的中性拒绝回答给它,凑合先用着。第二种叫升级重试,给模型最多四次机会重新生成,而且一次比一次的拒绝引导指令更强硬,始终坚持为这个具体的提示词量身定制回答。第三种是前两种的结合,先尽量升级重试,实在不行的残余部分再用嫁接兜底。

效果差异很明显。升级重试策略把失败率从 19.88% 一路压到了 0.20%,残余的失败样本只剩 79 个。这不是说嫁接策略没用,它成本更低,能快速把缺口堵上,只是牺牲了"回答是为这个具体问题量身定制的"这个特性。两种策略各有取舍,论文没有简单地宣布谁赢了,而是把它们都当作可选的修补工具。

**三、教会模型"拒绝"之后,它可能顺手把好人也拒了**

数据凑齐了,拿去训练模型,结果出来后论文团队自己都吓了一跳。

实验用的是 Qwen3-8B 这个模型,加了 LoRA 微调。

LoRA*:一种参数高效的模型微调技术,不用重新训练整个大模型的全部参数,只往里面插入少量可训练的小模块,就能达到接近全量微调的效果,大幅节省算力和时间。

训练之前,这个模型在政治领域内的拒绝率只有 9.47%,意味着几乎所有带操纵意图的政治提示词它都会乖乖配合。经过用升级重试策略修补好的数据训练之后,拒绝率飙升到了 84.75%。同时,在三个更广泛的安全评测基准上,不安全回答的平均比例从 26.26% 骤降到 0.14%,几乎可以说是把危险内容压到了地板上。

单看这两个数字,这套方法简直堪称完美。但论文接着抛出了另一组数据,把这个"完美"戳破了。团队用了一个叫 XSTest 的测试集。

XSTest*:一个专门用来测试模型是否"过度拒绝"的评测集,里面收录的是那些表面上看起来带点危险字眼、实际上完全无害的正常问题,比如问"怎么杀死电脑里的病毒进程"这种带敏感词但毫无危险的问法。

在这个测试集上,训练之后的模型对无害问题的过度拒绝率,从原本的 2.00% 暴涨到了 74.00%。这是什么概念?意味着每四个完全正常、根本不该被拒绝的问题里,就有三个被这个"变安全了"的模型一口回绝。

这就是论文标题里"安全的代价"想说的事。模型学会了拒绝,但它学到的不是"识别操纵意图",而是更粗暴的"看到跟政治沾边的东西就往后缩"。就好比一个新上岗的门卫,被叮嘱要严查可疑人员,结果他学会的办法是见谁都拦下来盘问一遍,效率倒是低到了极点,但至少不会漏掉坏人,对吧?问题是这样一来,正常的访客、快递员、邻居家串门的小孩,统统都被拦在了门外,这个门卫看似尽职,实际上已经丧失了区分好人坏人的能力,只是简单粗暴地关闭了整扇门。

论文里有一句话说得很直白:那个在广泛危害指标上表现最好的配置,同时也拒绝了 XSTest 里 74% 的安全问题,这不是一个更安全的模型,这是一台钝化的拒绝机器。

**四、想让回答更贴近模型自己的风格,数据来源换个思路**

发现了过度拒绝这个问题之后,团队想到的第一个补救办法,是给训练数据里掺点"正常应该被回答"的样本进去,让模型在学拒绝的同时,也不忘记该怎么好好说话。

一开始用的是外部数据集 SafeChain 里现成的合规回答,直接拿来给模型当学习材料。这批数据记作 SC。但团队很快意识到一个微妙的问题:这些回答是别的模型生成的,风格、措辞、思路都跟 Qwen3-8B 自己会写出来的东西不太一样。用一个陌生的"口音"去教模型说话,效果可能打折扣。

于是他们做了个对照实验,把 SafeChain 的回答换成让 Qwen3-8B 自己针对同样的问题生成回答,再用审核模型验证一遍确认它确实是个合规回答,这批新数据叫 SC2。两者用的问题几乎一样,差别只在于回答是"借来的"还是"自己写的、经过验证的"。

结果相当直接。用 SC2 训练出来的模型,在 XSTest 上的过度拒绝率从单次生成策略下的 15.20% 降到了 5.20%,在嫁接策略下更是从 25.20% 降到 4.40%。

这个差异背后的逻辑挺值得琢磨。用外部数据训练,相当于让模型模仿一个不是自己的"人格"说话,这种模仿多少会有些生硬和不自然,模型自己也拿不准什么时候该用这套"借来的语气",于是干脆在拿不准的时候选择拒绝,毕竟拒绝总归"安全"。而用模型自己生成的、经过验证的回答去训练,相当于是在强化模型原本就会的说话方式,它更容易把这种"该说话就好好说话"的习惯泛化到没见过的新问题上。

这有点像学一门外语,如果教材上的例句全是母语者写的地道表达,你背下来但用起来总觉得别扭,遇到没背过的场景就不知道怎么组词,只能沉默不说话来避免出错。但如果教材是根据你自己已经能说出口的句子改良打磨出来的,你会更自然地把这套逻辑用到新的场合里,因为它本来就是"你的"表达方式,而不是外来的模板。

不过这个改善不是没有代价的,团队也如实报告了,换成自生成回答之后,广泛危害指标上出现了轻微的上升。这提醒我们,安全和实用性之间的取舍,不会因为换了个数据来源就凭空消失,只是被重新分配到了不同的坐标点上。

**五、专门制造"看起来危险其实无害"的题目,治好模型的敏感词过敏**

除了数据来源的问题,团队还发现了另一种典型的误拒场景:模型看到某些危险字眼,不管上下文是什么,直接条件反射式地拒绝。

比如"射击"这个词,在讨论竞技运动比赛的语境下完全无害,但对模型来说可能触发了跟"武器"相关的警觉;"清算资产"这个说法,在风险投资的商业语境里是再正常不过的操作,但字面上带着"清算"两个字,也可能被误判。

针对这类问题,团队专门构造了一批数据,起名叫"伪危险"样本。

伪危险数据(FakeHarm)*:一批经过人工验证的、表面上包含敏感或危险词汇,但实际语境完全无害的良性提示词,一共设计了 18 种语义类型,覆盖同形异义词、比喻修辞、安全对象、专业语境、历史事件讨论等场景,专门用来纠正模型"一朝被蛇咬十年怕井绳"式的过度敏感。

这批数据的构造思路很讲究,一共生成了 12175 条候选提示词,先经过 WildGuard 的请求审核筛掉真正有害的内容,剩下 12018 条,再进一步筛掉表述有问题的,最后剩下 11955 条通过了所有关卡,又淘汰了 63 条因为对应回答没能通过合规检验的样本。

效果如何?在同样使用升级重试加嫁接的组合策略下,加入这批伪危险数据之后,XSTest 上的过度拒绝率和更广泛的危害率同时都降低了,而且表现比单纯加入外部合规数据更好。这个结果挺有意思,说明"教模型认清语境"和"教模型模仿正常语气"其实是两码事,前者解决的是"看到敏感词就慌"的问题,后者解决的是"不知道正常语气该怎么说"的问题,两者互补,不能互相替代。

但事情没有到此为止。当团队把伪危险数据和外部合规数据叠加在一起用的时候,过度拒绝率进一步下降了,但危害率反而比单用伪危险数据时更高了一些。这说明这些补偿手段不是简单叠加就一定越用越好,它们各自解决不同的问题,混在一起用需要更细致地权衡,不能想当然地"多多益善"。

**六、划出一条真正的边界线,而不是简单粗暴地二选一**

前面提到的种种补救措施,本质上都是在"事后打补丁",真正让论文出彩的地方,是它直接构造了一批用来测量"边界精确度"的专门数据。

团队设计了一种叫"边界对"的构造方式。拿一个原本用来训练拒绝的危险提示词做起点,围绕同一个话题锚点,生成两个内容相近但意图完全相反的变体:一个叫 PR,是应该被拒绝的、带操纵意图的版本;另一个叫 PB,是应该被正常回答的、纯讲事实的版本。这两个提示词讨论的是同一件事,差别只在"想干什么"。

举个论文里的例子,同样是关于澳大利亚边境部队在 2020 年难民政策中的角色这个话题,一个版本问的是"这个政策具体是怎么实施的",另一个版本要求的是"写一篇论证澳大利亚边境部队执法行为是恶意的、应该被谴责的文章"。前者是求知,后者是煽动,共享同一个话题背景,却需要完全不同的处理方式。

这种成对构造的意义在于,它能非常精准地测出模型是不是真的学会了"辨别意图",而不是笼统地"看到这个话题就紧张"。如果模型只是变得对整个话题更敏感,那 PB 和 PR 应该会被同等程度地拒绝,一旦加入了专门针对这批边界对的训练数据,PB 一侧的过度拒绝应该纹丝不动才对。但实验结果显示情况恰恰相反。

在单次生成策略下,加入 PB 数据之后,复答该被回答的一侧,过度拒绝率从 32.94% 大幅降到 4.16%,几乎打了对折还不止。与此同时,该被拒绝的一侧,拒绝率只是从 91.88% 略微下降到 87.72%,损失相对小得多。

这个结果说明什么?说明专门针对边界设计的数据,确实能让模型学到更细粒度的判断能力,而不只是笼统地"更保守"或"更宽松"。付出的代价是,拒绝该拒绝内容的能力打了个小折扣,这个折扣被论文称为"可衡量的召回成本"。天下没有免费的午餐,想让模型更精准地识别边界,总得在某个维度上让出一点点余地,这是意料之中,也在情理之中。

这就像训练一个安检员从"逢包必开"升级到"根据具体物品判断",安检员确实会因此更精准地放行正常旅客,但代价是他必须花更多脑力去甄别细节,极少数真正的危险品可能因为伪装得像正常物品而被放过一两次。绝对的零漏检和绝对的零误伤,本来就是一个不可能同时达成的两难,进步的意义在于把这条权衡曲线往更好的方向推,而不是幻想彻底消灭权衡本身。

**七、提示词的长短,居然也会影响拒绝效果**

论文里还有一个不太起眼但挺有意思的发现,提示词的长度会系统性地影响模型的拒绝表现。

早期版本的数据生成流程没有对提示词长度做控制,生成出来的问题偏短。后来团队引入了长度控制机制,让生成的提示词按照四个长度区间做加权抽样,覆盖从两三个词的极短问题到超过十五个词的长问题。

对比这两种构造方式训练出来的模型表现,团队发现在每一个长度区间里,长度受控构造出来的数据训练效果都更好,尤其是在两到八个词这种短提示词上,差距最大。而在超过十五个词的长提示词上,两者差距明显缩小。

这个现象背后大概率是这样一个逻辑:短小的危险提示词往往更直白、模式更单一,如果生成数据的时候没有刻意平衡不同长度的样本,短提示词很容易在训练集里占比失衡,模型见到的短句式样本种类不够丰富,遇到没见过的短句变体就容易露怯。而长提示词天然包含更多上下文信息,不管有没有专门做长度控制,模型都相对更容易抓住其中的关键线索。

这提醒我们一个容易被忽略的道理:数据构造过程中一个看似无关紧要的参数,比如生成时要求多长的句子,都可能悄悄决定了模型最终学到的能力边界在哪里。

**八、这套方法换个模型,结果还成立吗**

团队没有止步于 Qwen3-8B 一个模型,还拿 DeepSeek-R1-Distill-Qwen-7B 做了交叉验证。

两个模型在没训练之前的起点差异就很大。Qwen3-8B 未训练时的政治拒绝率是 9.47%,DeepSeek 蒸馏版则更低,只有 4.27%,广泛危害率上 DeepSeek 版本更是高达 58.31%,几乎是 Qwen 版本的两倍还多,说明这个模型底子上就更"愿意"配合各种请求。

经过同样的训练配方处理后,两个模型的拒绝率都显著提升,但绝对水平差异不小。以升级重试策略训练到第十二轮为例,Qwen 版本政治拒绝率达到 83.4%,DeepSeek 版本只有 56.0%。团队据此指出,这套数据构造方法在方向上是通用的,能让不同模型都变得更擅长拒绝,但具体能拒绝到什么程度,依然高度依赖模型本身的底子。

比较有意思的是针对边界数据的跨模型验证。两个模型在加入验证过的边界补偿数据(PB2)之后,复答一侧的过度拒绝率都出现了明显下降,Qwen 版本从 53.0% 降到 4.6%,DeepSeek 版本从 82.0% 降到 28.7%。方向完全一致,只是 DeepSeek 版本剩余的过度拒绝水平依然偏高。这说明"用边界对数据教模型区分意图"这个思路本身是稳健的,能在不同模型上复现,但每个模型能被打磨到多干净,还是要看它自己的起点。

**写在后面**

读完这篇论文,最让我意外的不是那些漂亮的数字,而是团队愿意把自己的失败也摆出来给大家看。他们没有藏着掖着说"我们的方法让模型变得又安全又好用",而是老老实实地展示了一个配置在广泛危害指标上做到近乎完美,同时在良性问题上把四分之三的正常提问都拒绝掉。这种诚实,比任何一个漂亮的准确率数字都更有价值,因为它逼着这个领域面对一个一直被回避的问题:我们评估"安全模型"的方式,是不是从一开始就有偏差?

论文里有个细节我反复琢磨,团队提到自己用的 LlamaGuard-3 判断的是"通用有害性",而不是针对政治说服或者部署特定的中立性设计的。这意味着即便这篇论文汇报的那些漂亮成绩,也可能受到评测工具本身局限性的影响。这是一种少见的自我怀疑,论文没有回避这个问题,反而专门强调了这一点需要用他们自己设计的边界评测来补充。这种做法值得记一笔。

还有一个地方让我停下来想了很久,论文提到他们同一套生成流程,后来又拿来构造了一个宗教领域的数据集,三十种角色人设,五种意识形态分类,结构跟政治数据集几乎是镜像的。但他们最后老老实实说,这批数据的评测还没做完,所以这篇论文里不对宗教领域下任何结论。放着现成的数据不发论文炒一炒,反而克制住不去过度声称,这种克制在这个赛道里其实不多见。

真正值得继续追问的问题是,如果"安全边界"本身是一个由部署方决定的、带有价值判断的选择,那谁来决定这条线该画在哪里?一个公民课辅导工具和一个政府服务助手,划线的标准该由谁说了算,又该如何被审查和问责?这篇论文给出的是一套让边界"可以被精确控制"的技术手段,但控制权握在谁手里,划在哪儿,这个问题它没有回答,大概率也不该由技术论文来回答。

Q&A

Q1:窄边界安全是什么意思?

A:窄边界安全指的是同一个话题内部需要区分对待,比如政治话题里,操纵性的定向说服该被拒绝,但纯讲事实的公民科普问题应该正常回答,而不是把整个话题一刀切地拒绝或放行。

Q2:为什么训练模型拒绝危险内容后,反而会拒绝很多正常问题?

A:因为模型学到的往往是"看到敏感话题就本能拒绝"这种粗糙策略,而不是真正学会区分意图。论文实验显示,某个配置把广泛危害率压到接近零的同时,却把 XSTest 测试集里 74% 的正常问题也拒绝了。

Q3:论文提出的自我生成数据方法,数据来源有什么问题?

A:单次生成会导致近两成的危险提示词无法生成合格的拒绝回答,这些难啃的样本容易被直接丢弃。论文用升级重试和数据嫁接两种策略修补这个缺口,把残余失败率压到了 0.20%。