三个组件配合,在暗箱里自我纠错
翻出张俊林那篇Reverse-o1文章的时候,是凌晨两点半。
o3-mini刚发布,我盯着屏幕突然想起来——去年9月o1出来那会儿,我正被一个代码生成项目折磨得死去活来。GPT-4o生成200行代码,第30行变量名写错了,后面170行硬着头皮往下编,最后给你整出一堆莫名其妙的bug。你让它改,它又从头生成一遍。
还是可能出错。
这就是典型的“落Token无悔”。张俊林说得特别形象——LLM得用100个错误来掩盖前面的第一个错误。为了逻辑自洽,只能将错就错。大模型幻觉的根儿也在这儿。
o1解决的就是这个。
它搞了个Hidden COT,隐式思维链。让模型在输出最终答案之前,先在“暗箱”里自己推理、验证、纠错。用户看不到这个过程,只看到最后整理好的结果。你想想,这跟人类解题多像——草稿纸上算了半天,最后誊到答题卡上的只是干净的步骤。
讲真,这让我想起卡尼曼的《思考,快与慢》。系统1是快思考,直觉反应;系统2是慢思考,需要一步步推理。GPT-4o更像系统1,o1则是系统2。OpenAI自己也强调o1用的是“强化学习生成Hidden COT”,但除了这句话,技术细节基本没透露。
比Sora还抠门。Sora好歹给了个粗略框架图。
那张俊林是怎么逆向的?他主要参考了AlphaZero的做法,试图把LLM和RL融合起来。我看完他的推导,有几个点挺有意思:
o1大概不是单个模型。 他推测o1由三部分构成:一个主模型、一个摘要模型、还有一类可以灵活配置数量的跟树搜索相关的模型池子。三个东西配合着干活。
RL的状态空间和行为空间怎么定义? 这可能是最关键的问题。张俊林认为状态空间是“当前已生成的思维链内容”,行为空间则是“下一步要生成的推理步骤”。Reward Model用来判断每一步推理的质量。
关于Reward Model,我后来又看了另一篇文章,讲PRM的三种打分方式:
- **min式**:取所有步骤中最低的得分。一步错,整个逻辑链就可能崩。
- **last step式**:取最后一步的得分。PRM是看完全部上下文再打分,最后一步的得分能反映整体。
- **prod式**:所有步骤得分相乘。
OpenAI在《Let's Verify Step by Step》里试过prod和min,DeepMind则用了last step。没有绝对的好坏,看你怎么设计训练过程。
绝了。
不过这里有个问题我一直没想通——如果PRM要逐步骤打分,训练数据从哪来?
数学题是最合适的。一道数学题通常有详细题解,每一步推理都是明确的,最终结果也是固定的。你可以用这些数据训练模型做单步推理,也可以在任何步骤截断,让模型学习下一步。错误的推理步骤还能用来构建纠错数据。
代码领域就复杂多了。Leetcode算法题有题解和确定的验证方法,但题解的形式跟模型思考的过程差距挺大。有人提出从题解反向生成思考步骤——这个方案,不对,应该叫策略——还需要验证每一步的正确性,我暂时没想明白怎么搞。
大概是需要更细粒度的验证机制吧。
o1的效果确实猛。IMO资格考试,o1得分83%,GPT-4o只有13%。GPQA-diamond测试,评估化学、物理、生物专业知识,o1是第一个表现胜过人类专家的模型。编程竞赛89%的百分位。
但真正让我兴奋的不是这些数字。
是o1给大模型带来了自我反思和错误修正能力。这个价值怎么强调都不过分。以前的模型生成错了就错了,现在它能在内部重新审视、推翻重来。
不过也别高兴太早。
有人提了个尖锐的问题:大模型Self-play能否通过自我博弈持续提升?“持续”是关键。如果提升会快速收敛,那o1可能只是把上限从“接近人类平均水平”往上提了一截,但不会无限增长。强化学习本身的可扩展性是不错的,但各个环节的输入是否可扩展,这是个问号。
说到Self-play,o1在推理阶段还用了类似MCTS的方法,蒙特卡洛树搜索。就是同时探索多条推理路径,用PRM打分,选择最优的继续往下走。Beam Search或者Best-of-N,看问题难度选。
问题较难时用Beam Search,简单时用Best-of-N。
有意思的是,当PRM训练得足够好时,更复杂的搜索方法表现可能反而不好。比如lookahead search。而当问题特别困难时,test-time scaling law的作用也有限,可能得回到pretrain阶段,加数据、扩模型规模。
这就引出了一个新的Scaling Law——Inference Time Scaling。以前我们只关注训练阶段的Scaling,更多参数、更多数据,现在推理阶段的计算量也能Scale了。o1通过调整搜索深度和广度,在推理时动态分配算力。
o3-mini在2025年1月31日发布时,甚至提供了低、中、高三个推理级别,用户可以自己选。低级别快但粗糙,高级别慢但精准。
这让我想起一个实操细节。上周三下午,我用o1-mini跑了一个复杂的SQL优化任务,大概有7层嵌套子查询。o1-mini“思考”了大概45秒,然后给出了一个完全重写的查询,执行时间从原来的23秒降到了0.8秒。它在思考过程中——虽然我看不到具体内容——应该是拆解了查询逻辑,发现了索引失效的问题,然后重新设计了JOIN顺序。
翻车了。
但同样的任务,有一次它“思考”了快两分钟,最后给出的方案反而更差。我怀疑是搜索空间太大,PRM打分出现了偏差,把一条本来不错的路径给剪掉了。
所以o1也不是万能的。
最后聊两句DeepSeek。他们从V1到V2的演进其实也在走类似路线,只是没有像OpenAI那样大张旗鼓地宣传“推理能力”。V2用了MoE架构,在推理效率上做了很多优化。我猜测他们内部也在搞类似Hidden COT的东西,只是没有产品化。
毕竟这玩意儿太烧算力了。
o1-pro在2025年3月20日发布时,价格贵得离谱。我还没测过,但看了一些评测,在极端复杂的推理任务上确实比o1强一截。至于值不值那个价,得看你的应用场景。
如果是医疗诊断、药物研发、高精度代码生成这类容错率极低的场景,多花点钱买个安心是值得的。如果是写个周报、总结个会议纪要,用GPT-4o就够了。
真的。
好用是好用,就是贵了点。这玩意儿快得像开了挂,但开挂的成本——你品,你细品。大模型学会了自己跟自己下棋,但棋盘上的每一步,烧的都是真金白银。咋整?
读者评论 5