Feb, 2024

冒牌难题:编码语言模型能掌握其错误生成的细微变化吗?

TL;DR语言模型在代码生成方面越来越熟练,但仍经常生成错误的程序。许多错误程序明显有问题,但其他程序更加微妙,通过一些较弱的正确性检查(如编译)可以通过。本研究侧重于这些伪造样本:从语言模型中抽样出的程序,1) 具有足够高的log概率以在中等温度下生成,2) 通过弱正确性检查。通过研究我们发现,大多数模型对伪造样本的理解非常浅显,存在三种明显的失效模式。第一,模型错误地将它们分类为正确的。第二,模型在推理伪造样本的执行行为方面表现较差,通常会预测其执行结果就像它们是正确的一样。第三,在要求模型修复伪造样本时,模型成功修复伪造样本的可能性通常甚至低于从头开始抽样出一个正确程序的可能性。伪造样本也具有非常意外的特性: 首先,模型更容易解决的问题的伪造程序不一定更容易被检测,只是稍微更容易执行和修复。其次,对于给定模型而言,伪造样本对模型本身和其他模型都具有相同的困惑。最后,强弱模型都能够生成对所有模型都构成挑战的伪造样本。根据我们的研究结果,我们建议在依赖模型理解其自身样本时要谨慎小心,特别是当没有引入外部反馈时。