自我反思(Self-Reflection)是大模型先把答案写出来,再回头检查这份答案、找到错误后重新作答的机制。它能改掉一部分格式错误和计算失误,改不了模型本来就不知道的东西,也不是反思次数越多越好。
自我反思怎么跑:先答、再验、再改
自我反思通常走三步:模型先生成一版答案;再由一个评分环节判断这版答案合不合格,来源可以是外部反馈,比如代码跑不通、测试没通过,也可以是模型自己模拟的检查;最后把“哪里错了、下次怎么改”写成一段文字,存进记忆里,下一轮作答时先读这段提醒再动手。2023 年 Shinn 等人提出的 Reflexion 框架就是这个思路的代表:它由生成答案的执行器、打分的评估器和写反思的反思器组成,靠文字反馈而不是改权重来让智能体进步,在 HumanEval 编程测试上达到了 91% 的一次通过率,高于当时 GPT-4 单独作答的 80%。同一套办法在 AlfWorld 任务上比基线高约 22 个百分点,在 HotPotQA 上提升约 20%。这些数字说明,反思对“有明确对错标准”的任务确实有效,但前提是反馈信号本身靠得住。
自我反思和思维链不是一回事
思维链是“先想再答”,让模型在得出答案之前把推理步骤写出来,减少中途算错的概率;自我反思是“答完再验”,答案已经存在,反思环节针对的是这份现成答案的质量。两者可以叠加使用:先用思维链认真作答,再用自我反思检查一遍。分不清这两者,就容易把“想得久”等同于“检查过”。还有一种常见混淆是把自我反思当成训练:Reflexion 这类方法不动模型权重,改的只是存在记忆里的文字提醒。
三个误解,和判断它有没有用的办法
第一个误解是以为模型反思一下就“懂了”。反思改的是表述和步骤,不是知识本身。模型不知道的事实,反思只会让它用更通顺的语言把错误答案再说一遍,甚至越改越自信。第二个误解是以为反思轮次越多越好。没有外部验证时,多轮反思会放大最初的偏见,把小错改成大错。靠谱的做法是设停表:要么等到编译通过、测试通过这类外部信号出现,要么限定最多反思两三轮,到点就停。第三个误解是把自我反思当成事实核查工具。它擅长的是格式、算术、代码这类能当场验证的错误,开放式问答和事实类问题没有现成的裁判,反思帮不上忙。判断一个场景适不适合自我反思,只看一条:你能不能在不靠模型自己的前提下验证答案。能验证,自我反思值得开;不能验证,先找外部工具或人工核对,别指望模型自己把自己问倒。