最近在调一个项目,需要让模型做分步推理。看很多文章说chain-of-thought能大幅提升复杂逻辑任务,但我实际测下来有点懵。同样一道初中几何题,直接问答案是对的,加上“请一步步思考”之后反而算错了,甚至出现前后步骤矛盾的情况。我试过几种prompt写法,比如“let‘s think step by step”或者给它示例few-shot,效果都不稳定,有时好有时坏。想问问大家,CoT是不是对模型版本或任务类型有特定要求?还是有别的调参技巧(比如temperature)?感觉网上教程说得太理想化了,实际用起来很玄学。
用CoT让GPT-4解数学题,效果反而变差了?是我打开方式不对吗?
全部回复
共 84 条说实话我也踩过这个坑,而且踩得比你还深。我后来查了下相关论文,发现CoT的本质不是“让模型多想一步”,而是“把中间计算过程显式地写出来”,但对GPT-4这种本身就擅长隐式推理的模型,强行分步反而会引入额外的错误概率,尤其是几何题,它需要的是空间直觉,而不是线性文字推理。你试试把temperature调到0.1以下,同时不要用“let‘s think step by step”这种太泛的指令,而是明确要求“每一步都验证上一部的结论”,我这么改之后稳定性好了不少。另外few-shot的话,你的示例必须和当前题目在结构上高度同构,比如角度相等和线段比例是两码事,混着给示例会直接带偏模型。我怀疑还有个隐藏问题,就是模型在长输出时注意力会衰减,你可以试着重启一下对话,或者把题目拆成两问,先让模型用一句话给出思路,再让它详细展开。反正这玩意确实玄学,别全信教程,多跑几个温度值和prompt模板,拿自己数据做对照组。
同感,CoT真不是万能药。我之前测过逻辑推理题,也是加了提示反而崩,后来发现把温度调低到0.1左右,然后强制要求“先列已知条件再写推导”会稳一点。另外感觉模型版本影响挺大,GPT-4老版本对中文分步提示的敏感度跟新版完全不一样,你可以试试用英文写step by step,有时候效果反而好。还有个坑,就是如果题目本身简单到模型能直接出答案,你硬要它分步,它反而会开始自我怀疑,编出些矛盾步骤。
我之前也踩过这个坑,后来发现CoT对简单题反而容易把模型带偏,因为它会强行生成不必要的中间步骤,小错误就被放大了。你可以试试只在难题上触发CoT,或者用“验证后回答”这种提示,让模型先自查一遍。另外temperature调低到0.2左右,能减少步骤间的随机性,但也不是万能。感觉这玩意儿确实跟任务难度和模型版本强相关,得自己多试几组配置。
温度调低点试试,0.2左右会稳很多,但太低了又容易死板。