Uncert-CoT: 计算不确定性判断是否启用CoT
论文标题
Uncertainty-Guided Chain-of-Thought for Code Generation with LLMs
论文地址
https://arxiv.org/pdf/2503.15341
作者背景
北京大学
动机
CoT方法将问题分解为一系列中间步骤,从而模拟人类的推理过程。这在许多复杂的推理任务中表现优异,尤其是在代码生成领域。然而,它最明显的缺点是可能会“过度思考”——在简单问题上进行了大量不必要的反思与推理,不仅浪费了计算资源,还可能导致生成的代码错误。
为了解决这个问题,本文提出了不确定性感知的链式思维(UnCert-CoT)方法,通过在生成过程中实时评估不确定性,来判断何时进行推理,何时直接生成代码
本文方法
UnCert-CoT通过引入不确定性评估来解决“过度思考”问题。其核心思想是,在LLM生成每一行代码时,首先计算当前的不确定性值。如果不确定性较高,则启动CoT推理,生成多条推理路径并选择最有可能正确的代码行;如果不确定性较低,则直接生成代码,避免冗余的推理过程。
如上图所示,限定每次调用LLM时只生成一行代码,生成完成后基于解码的概率分布计算不确定性。作者采用了两种不确定性计算方法:
-
基于熵的方法 :通过计算生成预测的熵值来衡量不确定性。如果熵值较高,说明模型对预测的结果不确定
-
基于概率差异的方法 :通过计算模型预测的最高概率与次高概率之间的差异来判断不确定性。如果两者差异较小,表示模型对当前预测的信心较低
实验结果
一、与其他CoT方法比较
对照组说明:
-
Base Model :使用贪婪搜索方法生成最终结果。
-
Zero-shot CoT :直接将需求输入LLMs,添加“# Let’s think step by step.”后生成代码。
-
Self-planning :提供几个示例以帮助LLMs生成正确的代码。
-
CoT-Decoding :使用Zero-shot CoT生成多个样本,并选择置信度最高的答案作为最终结果
二、不同Code模型上的表现
UnCert-CoT在不同LLMs上均表现出显著的性能提升,证明了此方法的鲁棒性
三、不同的不确定性阈值