Anderson 视角
编码AI容易受到邓宁-克鲁格效应的影响

新研究表明,编码AI(如ChatGPT)容易受到邓宁-克鲁格效应的影响,通常在它们最不熟练的时候表现出最大的自信。当处理陌生或晦涩的编程语言时,它们会声称自己非常确定,即使它们的答案是错误的。该研究将模型的过度自信与糟糕的性能和缺乏训练数据联系起来,引发了人们对这些系统真正了解自己不知道什么的新担忧。
任何花费过大量时间与大型语言模型(LLM)交互的人都知道,LLM经常倾向于对用户的查询给出自信但错误的回答。
除了更明显的幻觉形式外,原因并不是100%清楚。夏季发表的研究表明,模型即使知道自己是错误的,也会给出自信的答案;虽然其他理论将过度自信归因于架构选择,以及其他可能性。
最终用户可以确定的是,这种体验非常令人沮丧,因为我们天生倾向于相信人们对自己能力的估计(不仅因为在这种情况下,一个人过度承诺和不能兑现承诺会有法律和其他后果);并且,人类化的转移意味着我们倾向于将这种行为复制到对话式AI系统中。
但LLM是一个不可问责的实体,它可以并且会在帮助用户无意中销毁重要东西(或至少浪费他们一整天的时间)后有效地返回“哎呀,糟糕……”;假设它会承认责任。
更糟糕的是,这种缺乏谨慎的循环似乎不可能通过提示来消除,至少在ChatGPT中,它会大量地向用户保证其建议的有效性,并且只会在造成损害后才会解释其思维中的缺陷。更新系统的持久记忆,或使用重复提示似乎对这个问题没有太大影响。
人们也可能同样固执己见和自欺欺人——尽管任何犯错的人可能会很快被解雇。这些人患有“冒名顶替综合征”的对立面(即员工担心自己被提升超过自己的能力),即邓宁-克鲁格效应,即一个人显著地高估自己完成任务的能力。
通货膨胀的代价
微软的一项新研究检查了邓宁-克鲁格效应与AI辅助编码架构(如红蒙的Copilot)的有效性能之间的关系,这项研究是首次专门解决LLM的这个子领域。
这项工作分析了这些编码AI如何自信地评估自己的答案与它们实际的性能如何,跨越数十种编程语言。结果显示出一种类似人类的模式:当模型最不熟练时,它们最自信。
这种效果在晦涩或低资源语言中最为明显,在这些语言中,训练数据很少——模型越弱或语言越罕见,技能幻觉就越大:

GPT-4o的实际和感知性能跨编程语言,按真实性能排序。 来源:https://arxiv.org/pdf/2510.05457
四位作者都是微软的同等贡献者,他们认为这项工作提出了关于这些工具可以被信任来判断自己的输出的新问题,并且他们声明:
‘通过分析模型的信心和性能跨多种编程语言,我们揭示了AI模型模仿人类的过度自信模式,特别是在陌生或低资源领域。 ‘
‘我们的实验表明,能力较低的模型和在罕见编程语言中运行的模型表现出更强的DKE偏差,表明偏差的强度与模型的能力成比例。这种模式与人类实验中的偏差一致。’
研究人员将这项研究作为理解模型信心如何变得不可靠以及测试AI系统是否表现出与人类相同的过度自信的方式来进行。
虽然新论文违反了Betteridge的标题法则,但它的标题是代码模型是否受到邓宁-克鲁格效应的影响?。虽然作者们声称代码已经发布,但当前的预印本没有提供这些细节。
方法
该研究通过给它们成千上万个多项选择的编程问题来测试编码AI如何准确地评估自己的答案,每个问题都属于特定的语言域,从Python和Java到Perl和COBOL:

研究中使用的编程语言域,以及每个域中抽样的多项选择编码问题数量。
模型的任务是选择正确的选项,然后估计它们对自己的选择有多自信,它们的实际性能是通过它们正确回答问题的频率来衡量的,而它们的自我评估的信心则表明它们认为自己有多好。
比较这些指标使研究人员能够看到信心和能力之间的差异。
为了衡量模型看起来有多自信,该研究使用了两种方法:绝对信心和相对信心。在第一种方法中,模型被要求在每个答案旁边提供一个从0到1的分数,它对特定语言的信心由该语言中问题的平均分数定义。
第二种方法检查模型在选择两个问题时有多自信;对于每对问题,模型必须说哪一个它更确定。这些选择使用竞争游戏中设计的排名系统进行评分,将每个问题视为一场比赛中的一个玩家。最终得分被归一化并平均以获得每种语言的相对信心评分。
研究中检查了邓宁-克鲁格效应的两种已建立的形式:一种跟踪单个模型如何在不同领域误判自己的性能;另一种比较不同模型之间的信心水平。
第一种形式,称为内部参与者DKE,检查单个模型是否在其性能较差的语言中变得过度自信。第二种,称为外部参与者DKE,询问是否性能较差的模型也倾向于将自己评估得更高。
在两种情况下,信心和实际性能之间的差距用于衡量过度自信,低性能设置中的较大差距表明了DKE类似的行为。
结果
该研究测试了六个大型语言模型:Mistral;Phi-3;DeepSeek-Distill;Phi-4;GPT-0.1和GPT-4o。
每个模型都在多个编程语言的多项选择编程问题上进行了测试,包括37种语言*,以显示信心和准确性如何在熟悉和晦涩的编码域中变化。
模型间分析显示出明显的邓宁-克鲁格模式:

六个代码模型的实际和感知性能,显示性能较差的模型(如Mistral和Phi-3)尽管准确性较低却表现出高信心,而性能较好的模型(如GPT-4o)显示出更平衡或甚至低估的行为。
准确性较低的模型,包括Mistral和Phi-3,倾向于高估自己的能力,而性能较好的系统,如GPT-4o,显示出更符合其实际性能的信心水平,特别是当通过相对信心来判断时。
结果还表明,最有能力的模型可能有时会低估自己(这是绝对信心评分无法捕捉到的模式)。
结果还支持邓宁-克鲁格效应的存在。在文章开头显示的结果图表中,我们可以看到每个模型在不同编程语言中的性能,按实际性能排序。
在模型性能较差的语言中,特别是罕见或低资源语言,如COBOL、Prolog和Ceylon,它们的信心明显高于其结果所证明的信心。在像Python和JavaScript这样的知名语言中,它们的信心更符合其实际准确性,有时甚至低于其实际准确性。
这种模式出现在绝对和相对信心度量中,表明模型在不熟悉的编码域中不太了解自己的局限性。
将模型视为参与者引入了一些限制,因为模型数量的有限性会影响多样性;单个模型的输出内的差异被忽略;数据分布可能不反映真实人类参与者的分布。
为了弥补这一点,研究测试了三个替代设置:首先,每个模型都被赋予了一个不同的角色;其次,响应是在更高的温度下采样以创建更多变化;第三,提示被多次改述,每个版本都被视为一个单独的参与者:

不同实验设置下过度自信与实际性能之间的相关性,显示邓宁-克鲁格模式在所有条件下保持一致,并且在从同一模型中采样多个多样化响应时最为明显。
结果表明,邓宁-克鲁格效应在每种情况下都存在;并且DKE在从同一模型中以高温采样多个响应时最为明显。
为了更好地理解感知性能如何偏离实际性能,研究比较了绝对和相对信心估计,通过计算每个模型高估自己的能力的程度(特别是其信心评分与其实际准确性之间的差异),然后测量这种过度估计与模型的真实性能之间的关系:

编程域和模型类型中过度自信(衡量为绝对信心减去相对信心)与实际准确性之间的相关性,显示更大的过度估计始终与较低的性能相关。
结果表明,在编程域和模型中,具有较低准确性的模型往往表现出更大的过度自信。
此外,针对特定领域的专用模型比通用模型表现出更强的DKE效应:

基线、单域和多域专用模型中过度估计与真实性能之间的相关性,显示DKE效应随着专用化的增加而增强。
使用MultiPL-E数据集跨八种编程语言,作者发现单域训练比多域或基线设置导致更大的过度自信,表明DKE随着专用化的增加而恶化。
测试还发现,模型在罕见的编程语言中往往更过度自信。在GitHub、IEEE和TIOBE排名中,罕见性与更高的感知性能高度相关,峰值为0.797:

模型过度自信与语言罕见性之间的相关性,使用三个流行度排名。更少见的语言与更高的感知性能相关。
最后,作者通过评估模型在MultiPL-E数据集上的代码生成任务来测试邓宁-克鲁格效应是否出现在代码生成中,跨八种语言,包括Ada、Dart、Prolog、Swift、C++、Python、C#和Elixir。
虽然这种效果仍然存在,但它比多项选择问题设置中要弱,可能反映了在开放式任务中评估信心和正确性的困难:

基于MultiPL-E结果的八种语言的过度估计与实际性能之间的相关性。
考虑到邓宁-克鲁格效应的解释仍存在争议,作者得出结论:
‘一个可能在人类和AI模型中都适用的潜在解释是元认知解释,它指出评估技能的质量是获得技能的关键部分。 ‘
‘这种解释可以通过实验测试,在AI模型中使用受控的训练策略,并检查它们是否都能同时提高性能和评估质量的能力。然而,这项研究远远超出了本文的范围,我们将其留给未来的工作。’
结论
即使在其本土领域,邓宁-克鲁格效应(如论文所述)可能归因于统计或认知原因。如果归因于统计原因,将这种独特的人类综合征应用于机器学习背景实际上是有效的。
虽然作者推测原因可能在两种情况下都是“认知”的,但这需要采取稍微更具形而上学的立场。
这篇论文中最有趣的发现可能是几个编码LLM在最不利的情况下倾向于加倍下注,即在处理最稀疏或最不为人知的语言时表现出最大程度的自信——这将是一种在现实世界工作环境中几乎立即自我毁灭的策略。
* 使用的编程语言是Ada、Bash、C、C#、C++、COBOL、Ceylon、Clojure、D、Dart、Dash、Elixir、Erland、F#、Fortran、Go、Haskell、Java、JavaScript、Julia、Lisp、Kotlin、Lua、OCaml、Objective-C、PHP、Pascal、Perl、Prolog、Python、Racket、Ruby、Rust、Scala、Swift、TypeScript和Visual Basic。
首次发布于2025年10月8日,星期三










