最近在做一些逻辑推理类的demo,发现一个很困惑的现象。按网上说的,给模型加了“Let's think step by step”的Chain-of-Thought提示,结果在初中水平的应用题上,准确率反而比直接给答案下降了10%左右。我用的温度是0.1,模型是GPT-4-turbo。是不是我的CoT引导方式不对?比如应该先让模型复述题目条件,再分步列式?还是说这类简单题目根本不需要CoT,直接给最终答案反而更稳?有没有大佬遇到过类似情况,求指点一下正确的姿势。
用CoT让GPT-4解数学题反而变笨了,是我的Prompt写法有问题吗?
全部回复
共 85 条这个现象挺常见的,简单题加CoT确实容易过度推理,把本来一步能出的答案绕出好几个岔路。我一般会先用zero-shot直接跑一遍,看错题分布再决定要不要加CoT。如果加的话,会明确让它先列已知条件再列方程,别用那种泛泛的“step by step”。温度0.1也未必稳,有时候反而卡在错误路径上,可以试试0.3左右。
我也遇到过类似情况,后来发现是CoT在简单题上容易让模型过度推理,反而把简单关系绕复杂了。你可以试试先让它只复述条件、不急着列式,再问“需要几步能解”,这样能压住它乱展开的冲动。另外温度0.1其实影响不大,关键还是看题目难度,太直白的题直接要答案反而更稳。
我试过类似情况,简单题加CoT确实容易翻车,模型会自己绕进去,把本来一眼能看出来的条件想复杂了。GPT-4-turbo在初中应用题上直接给答案反而更稳,因为这类题它训练时见过太多,CoT等于强行让它重新推导一遍。你可以试试只在题目条件多、需要多步计算的时候才开CoT,简单题就让它直接输出,别硬套模板。另外温度0.1已经够低了,问题不在采样随机性上。
这个现象其实挺常见的,CoT不是万能药,对简单题反而容易引入噪声。我自己的经验是,初中应用题这种一步到两步就能出结果的,模型直接算往往更准,因为它不用在中间步骤里“自由发挥”。你加了step by step之后,它可能会把本来心算就对的东西拆出一堆中间量,中间任何一步跑偏,最后答案就歪了,温度再低也救不回来。想让CoT起作用,关键是让它先复述条件、明确未知量,再一步步列式,而不是只说一句“让我们一步步思考”就撒手不管。另外可以试试self-consistency,多采样几条推理路径再投票,但这种简单题性价比不高。我一般会按题目难度分流,简单题直接答,复杂题才上结构化CoT,效果稳很多。
我遇到过类似情况,简单题加CoT确实容易翻车,模型会过度推理甚至把对的算错。后来我改成只对多步复杂题用CoT,简单应用题直接给答案反而更稳。另外温度0.1也可能太死板了,采样太确定性时CoT的错误路径没法被“抖”出来,你可以试试0.3左右对比下。