
你有没有试过问AI一个根本没有答案的问题?
比如让它算算负540度的余切值,或者问它某段Python代码执行会得到什么结果,而那段代码其实一运行就会报错。按理说,一个训练有素的AI应该说"这个问题没有标准答案"或者"这段代码会报错"。可现实是,很多大模型会一本正经地给你算出一个数字,或者告诉你代码返回了True,仿佛这个问题天经地义有解。
这不是个例。南加州大学和亚利桑那州立大学的两位研究者,Yucheng Du和Xiyang Hu,专门做了一套实验来研究这个现象。他们发现了一件挺让人意外的事:模型内部其实早就"知道"这个问题没有答案了,只是这个"知道"没有被用上。
这篇论文的核心发现是,AI回答不该回答的问题,不是因为它认知有缺陷,而是因为它内部的两套系统没接上线。
问题出在哪
先说说这事儿难在哪。
大模型平时最出名的"拒绝行为"是什么?是你让它教你做炸弹,或者写一段恶意代码,它会礼貌地告诉你"抱歉,我不能帮你做这个"。这种拒绝背后,学界已经有比较成熟的解释。2024年,Arditi等人的一项研究发现,安全拒绝这件事在模型内部对应着一个非常具体的方向,残差流(模型内部信息传递的隐藏状态通道)中的一条线性方向,把有害提示和无害提示的隐藏状态均值相减就能得到。这个方向像一个开关,只要往这个方向推一把,模型就会从"正常回答"切换到"我拒绝"。
残差流:Transformer模型内部信息逐层传递的通道,每一层的输出会累加到这条"流"里,最终决定模型说什么。
安全拒绝方向:一个从大量"有害提示"和"无害提示"的隐藏状态中提取出来的向量,代表了模型判断"这个请求该不该拒绝"的内部指标。
按照这个逻辑,如果模型面对cot(-540°)这种没有答案的数学题,如果它"知道"这题没法算,那这个"知道"是不是也应该激活同一套拒绝机制?两位作者带着这个假设去做实验,结果却发现事情没那么简单。
结构性不可能,这是个新词,得先弄明白它指的是什么。论文里区分了三种"无法回答"的情况。第一种是结构性不可能,比如除以零、负数开偶次方根、除以零的Python代码,这些问题违反了明确的数学或语法规则,根本不存在合法答案,而且用规则就能验证对错,不需要任何背景知识。第二种叫认知性不可回答,比如给你一段文章,问一个文章里没提到的问题,答案可能存在,只是你手头的信息不够。第三种是错误前提问题,比如"为什么二氧化碳是由氧气组成的",这个问题本身的假设就是错的,正确做法是纠正提问者而不是顺着回答。
这篇论文的主战场是第一种,结构性不可能。因为这种问题的对错是数学和语法规则决定的,不掺杂主观判断,最适合拿来做干净的科学实验。后两种只是拿来做边界测试的补充材料。
模型到底知不知道
第一步要回答的问题是:模型内部是不是真的有一个"这题没法答"的信号?
研究者们的做法挺巧妙的。他们从11个不同规模的开源模型入手,从17亿参数的小模型到700亿参数的大模型都测了一遍,涵盖SmolLM2、Phi-4、Gemma-3、Mistral、Qwen3、Llama、OLMo等主流模型家族。测试数据是两套精心构造的题库,math800(16类数学题,每类50对,一共1600道)和code800(8类代码题,每类100对,一共1600道)。每一对题目里,一道有答案(A类),一道结构性不可能(U类),题干几乎一模一样,只在关键的数学或语法细节上有差别。
比如同样考除法,A类是"84除以2等于多少",U类是"84除以0等于多少"。这种设计的好处是,模型区分A和U靠的必须是对"能不能算"这件事的理解,而不是靠题目长度、话题类型这些无关因素蒙对。
具体怎么找这个"知道"的信号呢?研究者用了一种叫CosNSRT的方法。
CosNSRT:一种探测模型内部表征的方法,先用PCA(主成分分析)找出"能回答的题"共享的那部分特征,把这部分特征从隐藏状态里剔除掉,剩下的残差部分再用来区分能不能回答,最后用余弦相似度打分。
PCA:一种统计技术,能从大量数据里提炼出最重要的几个"方向",捕捉数据里变化最大的那部分模式。
这里有个关键的设计决策,为什么要先剔除掉"能回答的题"的共性特征?
想象你在一个嘈杂的派对上找一个人说悄悄话。如果周围所有人都在聊同一个话题,你光靠"内容相关性"根本分不清谁在跟你说话,因为大家说的都差不多。但如果你先把"大家都在聊的那个共同话题"这层噪音过滤掉,剩下的就是每个人真正想单独跟你说的私房话。研究者发现,能回答的题目之间有大量共性,比如都是某种数学题的固定格式、固定的表达套路,这些共性会淹没掉"这题到底能不能回答"这个更细微的信号。剔除掉这层共性噪音之后,那个真正决定能不能回答的方向才清晰地浮现出来。如果不做这一步剔除,直接在完整的表征空间里找方向,效果会明显打折扣,论文的对照实验显示,不剔除的话检测准确率从0.939掉到0.907,剔除掉Top-k主成分的话更是只剩0.890。
结果相当亮眼。这个只有一个维度的简单探测器,在22个模型和数据集组合上,平均AUC达到0.939,最低也有0.841,最高0.993。
AUC:一种衡量分类器好坏的指标,取值0到1,越接近1说明分类越准,0.5代表随机瞎猜。
也就是说,哪怕是一个只有一维、用余弦相似度打分的极简探测器,都能相当精准地从模型的隐藏状态里分辨出"这题有没有答案",而这时候模型压根还没开始生成任何一个字。连17亿参数的SmolLM2这种小模型都能达到0.880的准确率,700亿参数的Llama更是接近0.99。
这说明什么?说明"不知道这题没法答"根本不是问题所在。模型的内部表征清清楚楚地区分了这两类题目,只是它没有把这个区分用在正确的地方。
知道了,但没接上安全阀
第二步是这篇论文最有意思的地方:既然模型知道,为什么还是照样乱答?
研究者的假设是,也许模型把"这题没法答"这个信号,错误地接到了别的处理流程上,而不是接到那个已经存在的安全拒绝开关上。
他们做的事情很直接:分别提取出"识别不可能性"的方向(前面提到的CosNSRT方向,记作dimp)和"安全拒绝"的方向(记作dref,safety,用哈姆风险提示和无害提示的隐藏状态均值差构造),然后计算这两个方向之间的夹角,用余弦相似度衡量。如果两者高度重合,余弦值应该接近1。
结果呢?22个模型数据集组合里,平均余弦相似度只有0.087,范围在0.020到0.130之间。
这是个什么概念?余弦相似度1代表两个方向完全重合,0代表完全垂直、毫无关联。0.087这个数字,已经非常接近"毫不相关"的0了。研究者还专门做了一个对照实验,随机生成一些方向来算基准值,发现真实测出的余弦值是随机基准的2到13倍,确实不是纯噪声,两者之间存在某种微弱但一致的关联,但这种关联远远达不到"共用同一套机制"的程度。
这就好比一栋大楼里装了两套独立的警报系统。一套是烟雾报警器,专门侦测火情;另一套是水浸报警器,专门侦测水管漏水。你可能会想,既然两套系统都叫"报警器",肯定是同一套线路对吧?但实际情况是,这栋楼的烟雾探头虽然真真切切地探测到了火情,可它连接的却是另一套完全不搭界的电路,压根没接到那个会拉响警笛、疏散人群的主警报系统上。结果就是探头亮了灯,警笛却没响,人该怎么待着还怎么待着。如果这栋楼真的只有一套统一的警报系统,那火情信号无论从哪个探头传来,警笛都该响。但事实恰恰相反:火被探测到了,警笛却纹丝不动。
研究者还担心,会不会是因为比较的空间不一致导致的误判,毕竟dimp是限定在剔除了A类共性之后的子空间里算出来的,而dref,safety是在完整空间里算的。于是他们做了个同空间对照实验,把两个方向都投影到同一个剔除后的子空间里再算余弦,结果范围是0.021到0.154,平均0.097,跟之前的结果几乎一样。这就排除了"空间不匹配"这个干扰因素,两个方向确实是近乎垂直的。
那完整空间里算出来的余弦值为什么会更大一些(平均0.240)?研究者用能量分解的方法拆解了一下,发现这部分较大的相似度里,平均81.3%其实来自于两者共享的"表面结构"特征,也就是题目的话题、格式、句法这些跟"能不能回答"本身无关的东西。真正携带"不可能性"信号的那部分(剔除共性之后剩下的部分),两者的重合度依然很低。
除了跟标准的安全拒绝方向比较,研究者还构造了一个"行为定义的无效性感知方向",简称dstruct,behav。
行为定义的无效性感知方向:直接从模型生成的回答里区分"承认这题没法答"和"硬答一个数字"这两类输出,反推出对应的隐藏状态方向,不依赖安全拒绝的概念。
这个方向跟dimp的相似度提升到了0.40,比跟安全拒绝的相似度高不少,但也只是"部分对齐",远没有到"高度重合"的程度。更有意思的是,这个行为定义的方向本身跟安全拒绝方向的相似度只有0.08,说明模型面对结构性不可能问题时,走的根本不是标准的拒绝答复套路。研究者还发现一个很扎心的细节:在检查的所有U类题目样本里,几乎没有一个模型用了"我无法回答"这种标准拒绝语言,50道题里一道都没有。模型不是在拒绝,它只是偶尔会用一种含糊其辞的方式承认问题有蹊跷,但更多时候,它直接给出一个答案,仿佛什么都没发生。
这套证据链拼起来讲的是一个"接错线"的故事:模型的表征层面确实存在一个清晰的"这题没法答"信号,但这个信号既没有连到训练时专门打磨过的安全拒绝机制上,行为层面对应的动作也几乎从不是标准的拒绝话术。
信号能不能真的驱动行为
光有相关性证据还不够。探测器发现某个方向能区分A和U,不代表这个方向真的在驱动模型的生成行为,这只是相关性,不是因果性。为了验证因果性,研究者做了一个"注入实验":在模型生成过程中,强行往隐藏状态里加上一个沿着dimp方向的向量,看模型的行为会不会跟着变。
具体做法是,选了4个代表性模型(Mistral-7B-Instruct、Gemma-3-4B-it、Qwen3-14B、Qwen3-8B),在math800、code800、fact800三个数据集上,用不同强度(用proj_std的5倍、10倍、20倍、40倍作为单位)往残差流里加或减这个方向。加的时候是想看,本来能正常回答的题(A类),会不会因为强行注入"不可能"信号而变得开始拒绝回答;减的时候是想看,本来会含糊承认无法回答的U类题,会不会被强行拉回到"硬答一个数字"的状态。同时用一个随机方向做对照组,排除掉"随便推一把隐藏状态都会让模型行为改变"这种可能性。
结果里最亮眼的是Mistral-7B。这个模型在数学和代码两个领域、两个方向(正推和反推)上都表现出超过30个百分点的门控翻转率提升,数学题正向偏移33个百分点,反向偏移38个百分点,代码题正向35个百分点,反向44个百分点,而且比随机方向对照组高出33到44个百分点。
门控翻转率:论文里定义的核心指标,只统计那些清洗过、排除了混合输出和生成崩溃这类干扰情况后,行为确实发生翻转的比例,衡量的是"注入这个方向之后,模型行为真的改变了多少"。
代码类任务上表现最干净的例子是Mistral-7B在code800上的剂量反应曲线:随着注入强度从5倍逐步提高到40倍,门控翻转率从2.1%稳步上升到12.5%,再到35.4%,呈现出清晰的单调递增,而随机方向对照组几乎全程接近0%。
这个实验其实是在回答一个反事实问题:如果这个dimp方向根本不是因果性的,只是一个巧合的相关性特征,会发生什么?答案是,随机方向不会有任何效果,可实际的实验结果显示信号方向确实能稳定地、按剂量比例地改变模型行为,而且这种效果在4个不同的锚点模型里,10组"模型数据集方向"组合达到了30个百分点以上的"达标"级别,另外10组虽然没到30分点但依然是正向有效的,只有4组因为样本量太小(清洁基线样本不足4个)只能算轶事级别的观察。
这里也有个值得注意的反差:不是所有模型都表现得一样好。Gemma-3-4B和Qwen3-8B在数学题上出现了"方向不对称"的情况,反向(从拒绝拉回到回答)表现很好,正向(从回答推向拒绝)在较大注入强度下会出现输出崩溃。研究者进一步分析发现,这背后跟模型对"扰动"的容忍度有关:Mistral-7B在注入强度为20倍时,平均崩溃率只有9.5%,而其他三个模型的崩溃率在31.5%到45.5%之间。也就是说,不是信号本身没用,而是有些模型的"抗干扰能力"更弱,稍微推一把整个生成就散架了。
研究者还专门做了一个反驳性实验,用来回应一个自然会冒出来的质疑:会不会dimp其实只是一个泛泛的"拒绝词汇"方向,只要往这个方向推,模型无论碰到什么问题都会说"我不能回答"?他们用严格的"只算拒绝语言"标准重新统计了一遍,结果96行数据里有48行因为清洁基线几乎从不出现"我无法"这类明确拒绝表达而无法测量,剩下48行里47行的效果都在5个百分点以内,唯一的例外也只有6个百分点,远远低于用宽松标准(承认无效性)测出的32.7个百分点。这个结果排除了"dimp只是拒绝词汇触发器"这种简单解释,它推动的是模型对"这题有没有效"这件事的判断,而不是简单地让模型多说几句客套话。
这条不对齐的线,是训练出来的,还是天生的
第三个问题挺关键:这种"知道但没用上"的割裂状态,是不是训练(尤其是安全对齐训练)造成的?
这个问题背后有两种可能的解释。第一种,模型在预训练阶段(还没经过指令微调和安全对齐)压根就没有区分出这两套系统,是后期的安全训练把拒绝机制安在了一个跟"识别不可能"毫无关系的轴上,因为安全训练用的数据里根本不包含结构性不可能这类标注。第二种,这两个方向在预训练结束的那一刻就已经是近乎垂直的,安全训练只是把一个统计意义上的方向变成了一个真正会触发拒绝行为的机制,但没怎么改变它跟识别方向之间的角度关系。
要区分这两种可能,最直接的办法是拿基座模型(没做过指令微调和安全对齐的模型)和对应的指令微调版本做对比。研究者找了6对这样的基座/指令对,包括Qwen2.5系列的7B、14B、32B,Qwen3系列的8B、14B,以及Llama系列的70B。
结果显示,指令微调前后这个夹角的变化幅度是-0.008到+0.110,平均只有+0.037,相比之下,指令模型这一档本身的余弦值范围是0.020到0.130。也就是说,微调带来的变化幅度,比整个近乎垂直区间的宽度还要窄。变化最大的是Qwen3-8B这一对,提升了0.110;而唯一一对经过厂商确认的、纯粹只经历了后训练差异的对照组,Llama-3.3-70B-Instruct对比Llama-3.1-70B-Base(Meta官方确认两者共享同一个预训练检查点),夹角变化几乎为零,只有-0.0001。
更进一步,研究者还在基座模型上单独测了一遍"识别不可能"这个信号是否存在。结果是,6个基座模型在math800上的检测AUC均值达到0.977,范围0.94到0.99,跟指令微调之后的模型几乎没差别。
这说明什么?这说明模型对"这题有没有答案"的识别能力,以及这个识别方向跟安全拒绝方向之间的近乎垂直关系,两者都是在预训练阶段就已经定型的。指令微调和安全对齐训练确实激活了安全拒绝这个机制,让它从一个统计意义上的方向变成了一个真正能触发拒绝行为的开关,但训练过程并没有把这个开关跟"识别不可能"的信号接到一起。
这就好比一栋大楼在建造之初,电路布线的图纸上,火灾报警系统和主警铃系统就走的是两条完全不同的线路,压根没有预留任何交叉连接点。后期装修(也就是安全训练)顶多是把已经铺好的某条线路真正接通电源,让警铃真的能响,但装修工人没有权限去重新布线,把探测器接到警铃上。如果你想真正解决这个问题,光靠装修是不够的,得回到图纸设计阶段,从根子上重新规划线路。
排除其他解释
任何一个好的研究结论,都得先扛住各种"你会不会是被别的因素骗了"的质疑。这篇论文专门花了一整节篇幅,逐一排除了五种替代解释。
第一种质疑:是不是题目长度在作怪?U类题目会不会天生就比A类短,模型只是在用长度当捷径?研究者控制了长度变量之后重新测试,发现在一个专门做了长度匹配的数据集上(长度本身的判别力被压到了0.5,也就是完全没有区分力的水平),CosNSRT依然能达到0.799的检测准确率,说明长度不是关键因素。
第二种质疑:是不是难度在作怪,模型识别的其实是"这题很难"而不是"这题没法答"?研究者在能回答的题目内部划出一个难易分组,发现dimp用来区分难易的准确率只有0.61,而用来区分能不能回答的准确率是0.96,两者相差35个百分点,说明这个方向对"能不能回答"远比对"难不难"敏感。
第三种质疑:会不会全局的高准确率是被少数几个特别简单的类别拉高的?研究者用一个不依赖标签的统计量(叫NS_SNR,衡量子空间里两类样本分离程度)跟每个类别的实际检测准确率算了相关性,22个格子里有18个达到统计显著水平,相关系数均值0.730,说明整体表现是各个类别普遍达标的结果,不是被少数样本撑起来的。
第四种质疑:这套发现会不会只在特定模型规模上成立?研究者的22个格子横跨17亿到700亿参数,检测准确率范围0.841到0.993,而且规模越大,近乎垂直的关系反而越稳固,24亿参数的Mistral-Small在数学题上的置信区间窄至0.059到0.071,320亿和700亿参数模型的余弦值也稳定在0.098附近。这说明这个现象不是小模型的特有缺陷,规模变大也不会自动解决问题。
第五种质疑:dimp会不会只是一个泛化的"这题有点怪"通用轴,跟具体是数学、代码还是别的什么领域无关?研究者比较了同领域内和跨领域的表现差异,发现平均下降了8个百分点,说明这个方向确实有一定的领域特异性,不是一个放之四海皆准的万能不确定性探测器。作为补充,研究者还在另外两个边界数据集上做了迁移测试,一个是基于SQuAD构造的事实性无法回答问题集,一个是错误前提问题集FalseQA,发现在math800上训练出来的方向能部分迁移到这两个数据集上(相似度分别在0.64到0.98和0.59到0.90之间),但这只是检测层面的迁移,论文明确说明没有在这两个数据集上做因果干预实验,所以不能说这套方法能直接搬到其他类型的无法回答问题上去。
写在后面
读这篇论文的过程中,最让我脑子转了个弯的是这样一件事:我们通常默认,AI犯错要么是因为"不知道",要么是因为"故意骗人"。但这篇论文摆出的证据链讲的是第三种情况,模型是真的知道,而且这个"知道"在生成第一个字之前就已经确定了,可它就是没被用上。这种"知道但做不到"的状态,其实人类自己也经常经历,你明明知道熬夜不好,但手还是划开了手机。区别在于,人类的这种割裂或许有意志力、习惯、情绪的复杂纠缠,而AI的割裂被这篇论文精确地量化成了一个数字:余弦相似度0.087。
另一个让我印象深刻的细节是,研究者做了一整套"排除法"实验(附录里那五个替代解释),这种严谨程度在很多论文里其实不常见。尤其是那个"是不是难度而不是可答性"的对照实验,思路特别巧妙:如果模型只是在识别"这题看起来很难",那它对难易程度的区分能力应该跟对可答性的区分能力差不多,但实际数据显示两者差了35个百分点。这种设计说明作者们非常清楚,任何一个漂亮的相关性发现,背后都可能藏着一堆更简单粗暴的替代解释,你必须一个个去堵死。
论文最后也很坦诚地承认了局限:这套发现在数学和代码这种规则清晰、可以形式化验证的领域效果最干净,但一旦挪到事实性无法回答(比如问一篇文章里没提到的信息)这种更模糊的领域,因果实验的证据就明显变弱了,清洁基线样本太少,很多情况下模型压根不会拒绝,根本没法测量。这提示我们,"结构性不可能"之所以是个好的实验场,恰恰是因为它有明确对错标准;一旦进入更接近人类日常认知模糊地带的问题,这套方法论还能不能站得住,仍然是个开放问题。
如果安全对齐训练本身就没有包含"结构性不可能"这类标注数据,那这个"接错线"的问题,会不会在其他类型的判断能力上反复出现?比如模型明明知道某个事实性陈述是错的,却依然因为拒绝机制没接上而顺着说下去?
Q&A
Q1:为什么大语言模型会回答cot(-540°)这种没有标准答案的数学题?
A:论文发现模型内部其实已经识别出这类问题结构性不可能,一个简单的线性探测方向就能以0.939的平均准确率区分出能回答和不能回答的题目。但这个识别信号跟负责触发拒绝行为的安全拒绝方向几乎完全垂直(余弦相似度只有0.087),导致识别到了却没有触发相应的拒绝动作,属于内部路由错误而非认知缺陷。
Q2:这种"知道但不拒绝"的问题是训练造成的还是模型天生就有的?
A:研究者对比了6对基座模型和指令微调模型,发现指令微调前后这个近乎垂直的夹角几乎没变化(平均变化只有0.037),而且基座模型本身就已经能以0.977的准确率识别出结构性不可能的问题。这说明识别能力和两套系统之间的割裂状态,在预训练阶段就已经形成,安全对齐训练并没有从根本上改变这种割裂关系。
Q3:往这个识别方向注入信号真的能让模型改变行为吗?
A:可以,研究者在Mistral-7B等4个模型上做了因果干预实验,往隐藏状态里强行加入或减去这个方向的信号,结果显示模型的拒绝行为确实会跟着按剂量比例变化,最好的例子是Mistral-7B在代码任务上呈现出从2.1%到35.4%的清晰单调递增曲线,而随机方向对照组几乎没有效果,证明这个信号是真正驱动行为的因果性方向,不只是巧合的相关性。
好文章,需要你的鼓励
本文介绍LT-OPD训练框架,通过让极限压缩的多模态大模型在自己生成的内容上接受满血版模型指导,并配合渐进式课程学习,在仅保留5%视觉token时把性能保留率从68.6%提升到82.3%,且不增加推理成本。
本文解读ALIGNOPSD方法,该方法针对AI智能体训练中"决策与时间戳错配"问题,通过先对齐功能相同的决策场景再打分,并按可变长度决策段分配信用,在ALFWorld、WebShop、Search-QA三大任务上相比GRPO提升5.5%至8.7%。
本文介绍自适应一致性图(ACG)方法,通过持久化执行记忆图与预算感知的上下文构建,帮助AI智能体在长任务中减少信息失联,在多项基准测试中相比ReAct等基线方法提升了任务成功率。
多智能体AI协作时重复计算KV缓存浪费严重。PReCache提出预计算低秩缓存和中性基础缓存重构两项设计,免训练实现最高3.1倍加速、2.3倍吞吐提升,且准确率仅比不共享方案低1.1个百分点。