Z Talk 是真格分享认知的栏目。
提起今年最受关注的事件,一定绕不开 OpenAI o1 模型的发布,OpenAI CEO Sam Altman 也称之为新范式的开始。经过强化学习(Reinforcement Learning)并结合 Chain-of-Thought 思维链(CoT)技术,o1 在处理物理、数学、编程等复杂问题时,甚至和该领域的博士生水平不相上下。
真格基金投资副总裁 Monica 在其播客「OnBoard!」发布的最新一期对谈中,与在一线大模型机构有实际训练大语言模型(LLM)经验的研究员针对 OpenAI o1 模型进行了三个多小时的拆解与解读。
强化学习如何给大语言模型带来新的逻辑推理能力?这种能力的来源、实现方式和未来潜力又是怎样的?o1 带来的「新范式」会对行业有怎样的影响?以最前沿的视角,五位在 160 分钟的讨论中碰撞出无数火花。
本文经「张无常」整理,经真格基金编辑,以下是 3.5 万字对谈全文:
核心观点
关于 Agent 系统的基础构建:
- Foundation model 的推理能力是 agent 发展的基础,但真正构建有效的 agent 系统还需要解决多个 AI 之间的协作、竞争关系,以及复杂任务的分工方式。
- Tool use 要有意义必须有足够广的覆盖面,关键是提升模型对 prompt 中 tool 的 function 理解和调用能力。只要有强大的 prompt 理解和 reasoning 能力,加上完善的说明文档,模型就能正确调用这些 tool。
- 构建强大的 agent 能力需要四个要素:强大的 base model 和 reasoning(推理)能力、高质量的 tool、优质的 prompt,以及通过数据集学习如何更好地使用 tool。
- 收集 agent 相关数据集的理想方式是将数据标注自然地嵌入到用户的日常工作流程中,而不是让用户感知到在标注数据,这样才能确保数据质量,最理想的情况是特斯拉。
关于思维链 CoT 与强化学习:
- 在解决问题时,如果在答案中给出更详细的步骤,而不是直接给出结果,模型的表现会更好。这就是 Chain-of-Thought 的核心思想。
- Chain-of-Thought 分为两大流派:显式流派,使用明确的 token 展示思维过程;隐式流派,更像人类的直觉思考,答案会在某个瞬间突然出现,难以用逻辑完全解释。
- 传统语言模型最大的问题是不能回撤,一旦生成错误的 token 就无法纠正。但如果允许模型反思并修正错误,在 reasoning 任务上的表现就能得到显著提升。
- 强化学习的核心是通过 agent 与 environment 的交互和 reward 的指引来实现学习,这三个要素构成了强化学习的基本框架。
关于 AI 反馈系统与 Human in the Loop:
- AI 不仅能快速处理和理解海量文本,还能进行总结,这使它在处理复杂评估任务时具有独特优势。
- 在某些需要大量时间和精力评估的领域(比如阅读两本长篇小说并总结大意),AI 能够提供比人类更高效的反馈,这是 AI feedback 被低估的价值所在。
- 未来最具可扩展性的方案是「Human in the loop 配合 AI feedback」——AI 将复杂问题简化到人类可理解的程度,再由人类做出最终判断。
关于 Multi-Agent 与角色分类:
- 在语言模型中,所谓的 Multi-Agent 本质上更像是 Multi-Task,模型需要在生成内容和评判结果之间切换角色。
- 通过 prompt 不同的 persona,我们可以把 generator 和 critic 的角色分开,让它们各自专注于生成和评判任务,这是当前语言模型领域 Multi-Agent 应用的主要方向。
- 模型在多任务切换时面临 attention 转换的挑战,这也是为什么需要通过角色分离来实现更有效的 Multi-Agent 系统。
关于 Single-Agent 与 Multi-Agent:
- 在 Single-Agent 达到超人类水平之前,Multi-Agent 必然会表现更优,因为它能提供多样的视角和思路,就像人类社会需要分工合作才能取得重大突破一样。
- Multi-Agent 很可能是一个过渡阶段的产物。从 AGI 的终极目标来看,未来应该是一个能够处理所有任务的单一模型,而不是多个 AGI 模型协作。
- 目前使用 Multi-Agent 主要是为了解决模型在 corner case 和推理过程中的不稳定性,随着基础模型能力的提升,这种需求会逐渐减少。
- 当前许多通过 Multi-Agent 解决的问题,如 tool use 的准确理解和调用,都可能被更强大的单一模型(比如 o1)所取代。
嘉宾介绍
Kimi Kong:现于 Google Deepmind 担任 Research engineer,在斯坦福读书期间就接触强化学习,研究领域从机器人到大语言模型,对强化学习的理论和使用沿革有非常系统的理解。
Eric Li:加州理工大学博士,现于 Google Cloud 担任 Research Scientist。大家都猜测 o1 将蒙特卡洛树搜索(MCTS)应用到了 LLM,认为这是提升逻辑推理能力的重要方式之一。Eric 发表了多篇 LLM 和 MCTSS 结合的论文,是领域内绝对的专家。
苏辉:前微信 Al 研究员,现国内一线互联网公司大模型负责人。
本期播客联合主持人 Cage:原字节数据科学家,现拾象科技研究员,公众号「海外独角兽」撰稿人。
「OnBoard! 」主持人 Monica:真格基金投资副总裁,前 AWS 硅谷团队+AI 创业公司打工人。
注:本期录制时间为 2024 年 9 月 27 日
01
嘉宾自我介绍
Monica:
你们期待已久的最硬核最干货的 OpenAI o1 模型技术解读来了!最近最值得关注的事件当然就是 9 月 12 号 OpenAI o1 模型的发布。大家对于这个模型可谓期待已久,而 OpenAI 的 CEO Sam Altman 也称之为新范式的开始。
通过结合强化学习和 Chain-of-Thought 的思维链技术,o1 在处理物理数学编程等非常复杂的问题时,甚至能达到与该领域博士生不相上下的水平。
这次,我邀请到几位非常重磅的嘉宾做了一场三个多小时的解读,他们都有过实际训练大模型的一线经验。其中两位来自强化学习的绝对高地 Google,也是 AlphaGo、AlphaFold 等一系列世界领先的强化学习工作的发源地。
首先邀请几位嘉宾做一个自我介绍,跟大家简单介绍一下你的过去经历,是怎么开始进入到 LM(语言模型)或者说强化学习这个领域的。当然按照老规矩,除了 o1 之外,如果最近你看到了一个比较有意思的项目或者论文,也可以跟大家分享一下。那就从今天的返场嘉宾 Eric 开始吧。
Eric Li:
大家好,我是 Eric,现在在 Google 做 LLM 相关的研究,主要是做 LLM 的 post-training reasoning 和 Multi-Agent 相关内容。我开始做 LLM 是在大约两年前,当时 Instruction Tuning(指令微调)这个概念刚出来不久,我们在做一些 FLAN(fine-tuned language net,微调语言网络)相关的模型,主要是去 scale up Instruction Tuning 的数据,研究对模型会有什么样的影响。
我做强化学习主要是从去年开始,在 Google 内部做 PaLM 2 以及 Gemini 的时候开始做强化学习相关的研究和工作。最近我觉得有一系列将 LLM 和 MCTS 结合的论文都非常有意思,把 planning 融入到 LLM 的 reasoning 是个很 promising 的方向。
Monica:
那正好 MCTS 也是我们后面要讨论的话题,对于这个名词还不是那么了解的朋友们,Eric 正好可以在这里简单介绍一下。
Eric Li:
MCTS 是蒙特卡洛树搜索,是一种比较经典的搜索算法。它最经典的应用是在 Google 的围棋 AI 项目中被广泛使用并为大家所知。
在 LLM 的 reasoning 这一块,蒙特卡洛树搜索主要用在两个方面:一个是产生更好的高质量的合成 reasoning 数据,另一个是在 inference time 的时候能够把 planning 融入到 reasoning 步骤中去(在推理阶段,模型通过 MCTS规划多种推理路径,帮助其选择最佳的推理结果),可以用 MCTS 来优化 reward 和 reasoning 的路径。我觉得这两个都是非常有意思的方向。
我们最近有一篇论文是用 MCTS 的方法来帮助标注 process supervision 的数据。因为大模型在做 reasoning 时,它的某些 reasoning step 可能会出错,但让人类去标注每个 reasoning step 的正确性是非常耗费资源的。我们使用 MCTS 加上一些蒙特卡洛估计的方法来优化这个过程,提出了一种完全不需要人工参与,只依靠 AI 就能获得 feedback annotation 的方法。
Monica:
论文链接都放在 shownotes 里。我多问一句,那大家都说如果要继续提升 reasoning 能力,要加入 multi-step 的数据,它主要是在 pre-training 还是在 post-training 的阶段?
Eric Li:
它主要在 post-training 中起作用。比如说在强化学习的过程中,如果只是经典的 RLHF(Reinforcement Learning from Human Feedback),那最终可能只有在最后才能知道一个答案是正确还是错误的,需要依靠模型自己去判断在整个推理过程中哪几步出错或哪几步推理得非常正确。
但有了这些 process supervision 的 data,你就能够让模型更好地学习它的 value function,在强化学习的过程中更准确地知道哪一个 reasoning step 是错的哪一个是对的,这样能够提高强化学习训练的效率。
Monica:
的确,MCTS 在 LM 的训练中包括它有没有用在强化学习也是大家经常讨论的一个话题,我们待会请 Eric 来一起讨论。好的,下一位是 Kimi。
Kimi Kong:
非常感谢 Monica 今天的邀请。我是 Kimi,中文名叫孔令杰。我是斯坦福的机械和计算机双硕士,不过我至今依旧没有 claim 我的 CS degree,这样我就可以赖在斯坦福再去读个 part-time 的 Business School。
我本来是 robotics by training 做 control theory 出身的,主要做 state-space model,但不是现在大家常说的 model-based state-space model,而是纯 control theory 的 state-space model,就是 model-based 一脉相承的经典 control theory 里面的东西。
我进入 AI/ML 其实是非常偶然的。2016 年我在斯坦福机械快毕业的时候,认识了 Stefano Ermon。当时我正在上他的 probabilistic graphical model 和 deep generative model 的课。
有天雨下特别大,没人去上课,教室里只剩下我一个人,我就这样跟 Stefano 熟了起来。他很鼓励我去探索用 Learning approach 来解决 robotic control 问题。
后来我就说,如果 Stefano 给我写推荐信的话,我就申请 CS degree。很幸运 Stefano 给我写了推荐信,我又被斯坦福录取了。
在之前我 2016 年在 Microsoft 实习,毕业后去了 AWS 和 Monica 做同事。在 AWS 时我 lead 过两个项目:
一个是 distributed simulation 项目,帮助 Amazon robot 用分布式方式来进行更多搜索和采集数据,提高强化学习训练速度;
同时我也 lead 过一个 medical image 的 CV 相关项目。在那之后,我在 2023 年初,也就是 Google massive layoff 的前一周加入了 DeepMind。在 Google 最开始是帮他们用 AI 做一些 forecasting 的 task,后来随着 LM 的发展,主要在做 Gemini 的 auto eval,讲白了就是用 LM 来评估新模型出来时的 performance 好不好,这是个能 scale 的 solution。最近主要在做 agent 方向。
Monica:
所以说大家不要轻易翘课,每一节课都可能有惊喜。
Kimi Kong:
虽然那是一节 video recording 的课,我非常清楚地记得那天我迟到了两分钟,走进教室时我看到 Stefano 还有点迷茫,因为那时候没人来他觉得要一个人给大家上网课了,结果看到有人来他非常开心。
我帮助 Google 的 Search Department 用 agent 的方式来提高他们的广告点击率。说论文和项目,我最近非常受启发于一篇比较早的论文,这篇论文是关于 scaling law of reward model over optimization 的,是 OpenAI 在 2021 或 2022 年发表的。我读了很多相关论文,特别关注 reward model 这块。
其实在做强化学习的时候,reward model 是一个非常 mysterious 的 component,因为到现在为止,没有人真正知道如何定义和设计一个好的 reward model。
我读那篇 paper 的时候获得了很多灵感。最近我非常迷上了 Cursor 这个工具,每天从 Google 下班后都会使用它。用 Cursor 在家里三小时能完成相当于在 Google 一周的代码量,这真是非常 mind blowing 的事情。
Monica:
作为一个资深程序员,你觉得你用 Cursor 会替代掉你用的 Copilot 吗?
Kimi Kong:
我认为 Cursor 比 Copilot 多了一个很好的 feature,叫 composer。Cursor 本质上是 VSCode 的一个 fork,因为 Microsoft 的 VSCode 是开源项目。Cursor 底层接入了各种不同的大模型,包括 Claude 3.5,最近还接入了 GPT-4o。
Cursor 相比 Copilot 的优势在于,Copilot behind the same 可能只接入了一些 Microsoft OpenAI 的小模型,虽然后来也接入了 GPT-4o,但因为成本很高,始终没有把最好的模型拿出来。而 Cursor 可以很容易地接入最好的模型,比如 Claude 3.5 等各种模型。
我已经把 VSCode 删掉了。Cursor 在 AI 编程方面做了很多界面优化。我特别喜欢的 composer 功能可以帮助快速 scaffold 一个 project。对于 machine learning engineer 来说特别有用,因为我的前端已经很生疏了,很多年不做 backend 也做得不太好,但我可以快速搭建 Chrome 插件,这在以前是不可能完成的事情。
Monica:
关注 AI 领域的朋友最近应该都能感觉到 Cursor 的出圈。Cursor 是在 2022 或 2023 年成立的公司,获得了 OpenAI 的早期投资。在使用新的模型后,Cursor 在语言理解和编程能力上有了极大提升。
最近他们还获得了 a16z 的新一轮融资,估值约 4 亿美金。有意思的是,Cursor 的两位创始人都是 MIT 的 00 后,他们证明了 IDE(Integrated Development Environment,集成开发环境)仍然是一个可以重新创新的领域。从投资人的角度来看,我很感慨年轻人能够用 AI 做出这样 AI native 的产品。非常谢谢 Kimi 的分享,苏辉也可以跟大家自我介绍一下。
苏辉:
大家好,我叫苏辉。在 ChatGPT 出来之前的几年时间里,我在微信的 AI 团队做 dialogue system 研究,包括部分时代的 research 工作。那个时间点经历了从传统 language model 到 LM research 的研究过渡期,ChatGPT 出来后加入了创业大军的大潮。
经过一段创业时间后,现在在大厂负责大模型方向,主要负责模型训练,也包括一些前沿的 research study 和创新型应用的探索。
我从早期就开始关注 AI 的发展,见证了各种设计的变革、训练范式的变化,以及各种架构的迭代。现在主要在应用场景上进行大规模探索,研究强化学习的落地方式,寻找从用户反馈到模型迭代的有效路径。关于 Cursor 这个项目,我是重度用户,基本已经到了离不开的状态,不过前面嘉宾已经讨论过了。
我觉得非常好的是 Allen Zhu 的 Physics of Language Models 工作系列,从去年开始到最近。它跟 reasoning 的关系没有那么强,但在 reasoning 这部分做了比较多的、相对扎实的实验和一些结论。虽然它的实验规模比较小,但是非常扎实。我认为很多 research paper 都应该向他学习这种可控实验的工作范式。
我觉得可以 follow 他的工作研究 reasoning,包括跟 Chain-of-Thought 的关系,以及通过 reasoning 如何去提升。沿着他的工作脉络是非常好的一个开始,我也在这里把这个工作推荐给刚进入 LM 或者 reasoning 方向的研究者。
Monica:
你为什么会觉得这是值得大家学习的研究方法?
苏辉:
因为有些做 research 的方式是基于一些特定版本的模型或某个系列的模型。这些 research 结论有时候欠缺一些严谨的基础,因为你会受制于这些模型的数据格式或数据组成部分。对你来说这是一个非常黑盒的环境,而且你的测试数据很可能在它的预训练过程中有未知的耦合。所以很多结论是不够扎实的。
他设计了一个完全可控的环境,从数据到结构都是自己掌控的,训练数据也是完全自己合成的。这样难度和逻辑都是完全自主可控的,最终的实验结果就取决于你的数据。这让你在做研究时可以排除掉数据的干扰。而且他比较严谨地在做 scan 的工作,在某些 size 上观察变化,推导出一些比较好的结论。虽然由于计算资源的限制没有做到特别大的规模,但有计算资源的团队可以 scale 到比较大的规模去验证,并且提出自己的理论和实验设计。
Monica:
接下来请我们今天的联合主持人 Cage 来做个介绍。
Cage:
Hello,感谢 Monica 邀请。我现在在拾象科技做 AI 技术相关的投资研究,我们主要研究 AI 海外独角兽。
在 o1 发布前,我们写过一篇《LLM 的范式转移:RL 带来新的 Scaling Law》的文章,对强化学习策略和技术路线做了较多分析和预测,o1 发布后证实了当时的分析预期。
在加入拾象之前,我在字节做过 data scientist,在 CMU(卡内基梅隆大学)的 NLP research lab 工作过。那时正值 GPT-2 最火的时候,我做过 Bert 和 VAE 结合的文本分析。
说到 fun fact,最近我在研究 LM 结合 MCTS 的论文时,看到 Nature 上一篇很有意思的认知科学文章,跟 o1 能力上限很相关。
这篇文章叫《Language is primarily a tool for communication, rather than thought》,主要观点是语言可能不直接带来人类的思考推理能力,reasoning 能力只是在一定程度上反映思想并做文化传播。比如失语症患者也有完整的逻辑推理能力。
这对今天我们讨论的 o1 强化学习路线有个重要启示:语言能在多大程度上反映和压缩我们的思考推理过程,这可能决定了强化学习技术路线下 LLM 未来的能力上限。
Monica:
非常有趣的文章。如果这个假设是对的,就是我们能超越语言来做 reasoning,你觉得这对模型训练的方法和需要的数据会有什么样的影响?
Cage:
是的,我觉得人类语言并不是推理最好的形式,这很有可能。虽然现在我们看到 o1 的 Chain-of-Thought 是用英语表达的,但接下来 AI 可能会发明出一套更高效的形式化逻辑语言来做 Chain-of-Thought,这样可能对 AI 之间的沟通会更高效。
Monica:
非常棒,自我介绍环节有很多惊喜的地方,而且在我们整个 structure 之外,让大家能够更前瞻地感受到,我们邀请的这些优秀嘉宾都在每天关注着行业前沿的进展。
02
如何规模化标注和筛选高质量数据,
是最根本的问题
Monica:
言归正传,今天的主题是 OpenAI 的 o1 发布。作为一直在这个领域工作的资深研究员,想请问各位看到 o1 发布并亲自尝试后的第一印象如何?有哪些让你印象深刻的地方?
Eric Li:
我自己体验了 o1 之后,主要有这样的感受:
首先在研究层面,我觉得它整体的大思路非常有意思。他们真正地提出并实现了 scaling up the inference time 的方案,这可能会对 reasoning 带来更好的效果提升。
在实际使用中让我很惊讶的一点是,对于任何一个 reasoning 的问题,在它的 thinking process 里面会自发地展现出不同的思维和推理模式。比如说它会自己考虑我应该要 think step by step 还是要去评价自己前面思考中的错误。这种能够自主决定下一步该如何思考的能力,我觉得非常有意思。这是我在之前的 GPT-4 等模型中都没有看到过的特点。
Monica:
但其实 o1 所展示出来的逻辑推理过程都还是比较有限,你觉得它藏了哪些东西是你希望能够展示给大家的?
Eric Li:
其实这里面和刚才一个嘉宾讲的很类似,我自己也不太确定一件事情,就是模型藏的那些 thinking process 是否是人类可读的。
比如之前关于 Chain-of-Thought 的研究发现,思维链的长度越长,模型的 performance 就会越来越好。包括也有一些研究尝试添加特殊的 think token,发现这确实能让模型思考得更多,提升表现,但这些 think token 对人类来说很难理解其含义。
如果这个思考过程是可读的,我相信模型应该会展示更多内容,不只是下一步要做什么的推理模式,而是包括为什么要选择某个步骤、进行自我反思,或者为什么要将问题分解成特定的子问题等这些更深层次的思考。
Monica:
有哪些觉得做得不是很好的地方?
Eric Li:
确实我自己尝试了一些测试,比如说计算 strawberry 里面有多少个字母这个经典例子。我发现在这方面 o1 还不能达到非常高的准确率。但我觉得这个是可以接受的,如果它只是一个大语言模型而不是一个系统的话。有些事情确实不需要让语言模型去做,比如做一些计算器的计算等等。
我更关注它内部的 reasoning pattern 能不能有一些很有意思的表现。
Monica:
Eric 提到测试 strawberry 里有多少个 r,有些听众也许会好奇,为什么大家总喜欢用这个问题来测试语言模型?
Eric Li:
我个人认为这个问题并不需要强求让语言模型去做到,因为这涉及到模型内部实现原理,包括怎么做 tokenizer 等技术细节。这些任务 by nature 可能用一些 tool use 去做会更自然。
对于人类来说,给一两个例子就能做得很好,但给语言模型两三个例子,它也不一定能做好。这是一个比较简单的测试方法,用来检验模型能否理解输入到输出的映射关系。
从更 scientific 的角度来说,在数学、编程或者一些更难的领域,比如量子物理等方面的测试,可能更能体现出模型的 reasoning performance。
Monica:
那 Kimi 呢?
Kimi Kong:
最后我想引用 UCLA 的数学教授 Terence Tao 说的一句话,他说使用 o1 的体验大概就像「在指导一个平庸但并非完全无能的研究生」。
我觉得在某些方面,o1 对我来说确实非常惊艳。比如说我之前用 Cursor 做 Claude 3.5 Sonnet 的时候,它经常会写出有 bug 的代码,我跑一遍后把错误信息贴回去,它就会说「oh I'm sorry」,然后帮我修正之前的错误,最终能让代码正常运行。
而用 o1 的时候,它能非常流畅地帮我写出代码。这涉及到了 behind the scenes 的问题,就是当代码出错后,它们如何进行 self-correct。这让我想到关于 reasoning token 的问题:它到底是显式的还是隐式的?
在看 o1 preview 时,最让我感兴趣的是数学问题的例子。我觉得数学和编程整体上还是比较相似的。在解决数学问题时,它会不断思考:让我们考虑这个方案,实际上,让我们考虑另一种方案,展现出持续 self-refine 思维过程的能力。这样就不需要我在中间去纠正很多错误了,这是 o1 好的方面。
至于不好的方面,就像 Terence Tao 说的某种程度上平庸的研究生。网上有人让它回答如何安装 CUDA 的问题,结果它想了 27 小时后说「I don't know」。这说明它在某些擅长的领域表现确实很惊艳,但在其他方面还有很多局限,我很期待他们未来的工作能解决这些问题。
Monica:
你觉得还有哪些局限是希望在可能下一个版本里面看到提升的?
Kimi Kong:
几个方面吧,首先是怎么样让数据的 coverage 更多,其次是怎么让数据的 evaluation 方式可以更 scalable。
OpenAI 有一个让我非常 fascinating 的工作,就是很多年前的 PRM(Process Reward Model)。我觉得 OpenAI 应该是花了非常多时间去研究怎么来做数据这个方面。
不论是对 Google 还是其他公司来说,最基础的问题就是怎么创建大量高质量数据,以及如何用一个 scalable 的方式来筛选高质量数据。
在筛选高质量数据的时候,你给它标 reward signal 时需要一个 scalable way,而不是仅仅给出 sparse reward。比如说不是像数学问题那样,最终只看对错。
对于很多问题,其实是没有一个 closed solution 的,你非常难去 evaluate 这个东西是好还是坏,所以怎么定义一个系统化的方式来规模化标注高质量数据,我觉得这是个非常 fascinating 的问题。如果这个问题可以被解决,我期待这些 reasoning 的 task 可以有再往上一个质的飞跃。
Monica:
你提到 OpenAI 发布了很多与数据相关的工作。那么要训练出 o1 这样的模型,需要什么样的数据获取和处理方法?与传统 LM 训练有什么不同?
Kimi Kong:
这是个很好的问题。当 OpenAI 首次发布 InstructGPT 时,Google 还在专注于制作高质量的 SFT 数据(在监督微调过程中使用的标注数据集)。而 InstructGPT 剑走偏锋,选择做 preference 数据(尤指在强化学习阶段如 RLHF 中,用于表达用户或标注者偏好的一类数据)。
不论是做 SFT 还是 RLHF 的 preference data,都需要非常好的数据。但有趣的是,preference 数据的高质量数据实际比 SFT 的更容易获取。这是他们第一个让我觉得非常惊艳的地方。
这种 preference 数据是 sparse 的,意思是你只能在对话结束后对整个 conversation 进行好坏评价。如果中间有很多 intermediate step reasoning(中间推理步骤),你没法对中间的每一步进行打分。
为了解决这个问题,他们发布了 PRM800K 数据集,这是一个 verify step by step(逐步验证)的数据集。这种研究思路一直延续到今天 o1 的开发过程。从根本上说,我们要解决的是如何用 scalable 的方式来标注 high quality 的数据。
这些 high quality 的数据不一定要是 SFT 数据,可以是 preference 数据,也可能某一天我们会发现比标注 preference 数据更容易的方式。如果在数据方面的 scaling law 能再做一个 10X 或 100X 的提升,那模型可能会在知识方面达到新的飞跃。
Cage:
刚刚 Kimi 提到 scalable,这让我想讨论一下 InstructGPT。关于 Anthropic 的 Constitutional AI 论文和 Reinforcement Learning from AI feedback(RLAIF,通过人工智能反馈的强化学习)的方法,我在思考一个问题:如果我们要准备高质量的 reasoning tokens 数据,人类高质量标注和未来可以通过 AI 协助完成的标注应该各占多少比例?
Kimi Kong:
人类标注有几种使用方式。最直接的方式是 Direct Preference Optimization(DPO)。很多人发现在做 RLHF 时,training reward model 太复杂了,而且在训练时需要用 PPO(Proximal Policy Optimization),不仅要在 memory 里保存现在的模型,还要保存之前的模型。
这种复杂性促使我们转向 DPO。DPO 的好处是不需要机器生成的数据,人类标注的数据可以直接用于训练。这是最直接的使用方式。
但这里存在一个典型的「chicken and egg」问题:你需要好的模型来创建高质量数据,但在此之前又需要训练一个高质量模型。因此,通常的做法是先用人工标注部分数据来训练 reward model,然后用这个 reward model 来像人类一样标注其他没有 preference 的数据。
这种 RLAIF 方式存在潜在的 reward hacking 问题(当以 reward model 的评分作为奖励进行优化时,如果 reward model 不能完全代表人类的偏好,就可能出现奖励黑客)。作为人类,我们可以很系统地分析不同 response 的好坏,但在实际应用中可能出现问题。
比如,面对 unsafe question 时,模型可能直接选择不回应,reward model 反而认为这是好的——这是非常糟糕的情况。模型应该做出回应,但 language model 可能会因此出现异常,这成为了模型的一个 back door。
总的来说,这是个非常有趣但棘手的话题。我们需要投入更多时间研究如何训练 reward model,这是扩展 RLHF 或 RLAIF training 的基础性工作。
苏辉:
我分享一下使用 o1 的测试体验。除了测试 LeetCode 周赛题目外,我特别关注复杂场景下的旅游问题。
我所说的复杂场景,指的是家庭跨国旅行这种场景,我会在 prompt 中提供机票时间和景点等信息。之前测试 GPT-4 时,它给出的方案表面看起来不错,但仔细看行程细节就会发现问题,比如没有合理考虑路程时间,导致某天大量时间耗在交通上,实际游览时间非常少。
这次测试 o1 的效果非常 impressive,特别是它考虑到了时差问题。因为我经常选择北京和纽约作为测试地点,这两个城市是模型学习得最多的城市。它会把时差换算好,判断到达时间,建议应该先休息再安排行程。而且像一个贴心的当地导游一样,会考虑不同地区的特点,比如中美两国博物馆的开闭馆时间差异。
如果只说 LeetCode 周赛题目,那主要反映的是模型在代码和数学推理方面的能力,这在强化学习中比较容易定义 reward。但泛化到旅游规划这样的场景,如果不是因为泛化能力,我觉得是很难做到的。
我认为可能有两种解释:一种是找到了定义通用任务 reward 的好方法,使得 reasoning 效果有良好的反馈;另一种是在代码和数学这类强 reasoning 方向上的训练,也能泛化到这类场景。从结果来看,确实达到了很好的泛化程度。
Monica:
像你所说的旅行规划这种在日常生活中需要做一些相对复杂的工作的场景,所需要做的 reasoning 与 coding、数学题做的 reasoning 有什么不一样?
比如说一个特别好的私人秘书、特别好的 travel agency,或者说特别好的 EA(Executive Assistant)去做这个工作,他不需要是 IOI 金牌得主,也不需要懂 coding,那该怎么理解这两种能力之间的转化关系呢?
苏辉:
我觉得这是对 reasoning 的一个定义问题。比如说你做 coding 或数学题这种 reasoning,是在解一个明确的问题,中间有推理过程,这个往往是逻辑严谨并且是基于符号学去做的。但还有大量的 reasoning 其实是基于你对这个世界的常识认知去做的推导。
我举个例子,比如说现在在下雨,那你可能去卖伞可能是一个很好的生意。这其实是一个 reasoning 的过程,你需要对这个世界有一些通用的认知,并且能够泛化出一些新的场景。如果以前没有人在下雨天卖过伞,你可能通过其他的商业场景方法,泛化到这个场景,推断出在下雨天卖伞会卖得更好。
旅游场景更贴近我刚才说的这种基于常识的场景。因为它要考虑到的事情是有逻辑顺序关系的,比如说在一个大家族里面,如果老人体力不行,就应该考虑什么样的行程安排。
以前往往需要用一个比较复杂的 agent pipeline 去做这个事情,而且需要大量对业务的理解,需要自己去定制规则,在 prompt 里面去设计。但现在它能够很好地理解,我要舒适就意味着不应该花大量时间在舟车劳顿上,这个就是基于 common sense 的 reasoning。
03
OpenAI o1 的能力提升来源于什么?
Monica:
我想请教一下,o1 在 reasoning 这方面的能力提升,主要来源是哪几个方向?如果要拆解的话,你觉得在传统 LLM 训练范式中加入了哪些重要组件让它有了这样的能力?
Kimi Kong:
我班门弄斧说几句吧,我并不知道他们具体怎么训练的。如果要猜的话,我觉得最关键的是数据(It's all about data)。Reasoning 其实是大语言模型做得非常好的基础能力。
为什么呢?因为这些数据非常容易获取。比如 Stack Overflow 就是问题到代码的映射,Wikipedia 是 Q&A 形式的数据。
这些数据不仅容易获取,质量还很高。你可以看 Wikipedia 页面被点击多少次,Stack Overflow 的回答被 upvote 多少次,很容易就能判断数据质量。所以模型在这方面表现好是很自然的事。
说到 reasoning,首先要考虑如何定义 reasoning,更关键的是如何获得 reasoning 的数据。如果我问 Monica,你觉得什么是好的 reasoning 数据集,你会去哪里找这些数据?
我们知道 Wikipedia 是非常好的 Q&A 来源,Stack Overflow 对写代码的人来说也是很好的问答平台。但说实话,我并不确定什么才是真正好的 reasoning 数据,也不知道从哪里可以找到这样的数据。
Monica:
还有论文以及其他来源啊,比如 Reddit 和知乎的问答内容。
Kimi Kong:
对,但这些内容都比较 noisy,知乎上确实有一些比较不错的 AI/ML 科普内容,这些可能是好的 reasoning 数据。但从根本上来说,那些包含非常长逻辑链的 reasoning 数据集基本上都不是公开的。
苏辉:
是 valuable 的对吧?
Kimi Kong:
所以,OpenAI 其实是换了一个思路来产生这些数据。我个人 bet 的是,很多这些都是通过各种不同的合成方式 generated 出来的,通过不同的 filter 方式把好的 filter 留下来。
比如说写一个数学题:3X 加 5 等于 100,求 X 等于多少?当你知道 X 等于 50 是正确结果时,你可以问 LLM 说:help me reasoning through step by step,这样就是强迫它把 reasoning 过程完整地告诉你。如果它最后推理的结果不是正确答案,就说 OK,this is the bad reason I don't want it。你可以跑个一百次,然后通过 heuristic 或者 reward model 的方式把高质量的推理过程 filter 出来。如果完全不知道什么是对的什么是错的,那就可以通过 self consistent 的方式来 filter。
我觉得 reasoning 的能力是能不断地被提纯出来的。就像我现在写 PhD 论文,你先读了很多人的 paper,然后想想 reason through 这些 paper 我都读了,我大概有什么 idea,最后你得出自己的想法。
我觉得它是一个不断吸收消化的过程,只是对 LLM 来说,我们要 force 它说:No,you must reason. Then tell me what you're thinking step by step。要让它告诉我们它消化这些知识的过程,然后把这些数据再返回来 train 给 LLM,让它有更好的 reasoning 能力,而不是简单地吐出一个答案。
这是我个人的一些看法,我也非常希望听一听别的嘉宾的想法。
Monica:
这类数据的形态与传统 One-shot Learning(一次学习)的形态不一样,你觉得在训练方法上会有什么难点?
Kimi Kong:
现在 language model 就是两种训练方法,单纯 SFT 和 RLHF。我觉得 DPO(Direct Preference Optimization)其实越来越泛化得跟 RLHF 没有特别大的区别了。如果你能非常确定所有的 data 都是非常好的,我觉得用 SFT 的方法也完全没问题,但就像我刚开始说的,你很难 generate 出来非常 high 的 SFT 的 data。
你有可能这个东西说,我有这两个结果,这两个可能都不是我特别想要,但我觉得 A 比 B 稍微好一点,然后可以用这个 A 的 trajectory,通过强化学习的方式把这模型往好的地方推一点点。就是说 OK,我更 prefer A,你看到 A 这种结果你更倾向做 A 一点,虽然 A 可能不是最好的,但请你不要倾向于做 B。
通过这个 step,模型知道了一个 better solution,基于之前的 base 模型,你就有一个 step better 的模型了。你用这个模型再把同样的 query 问一遍,说 OK,我知道你 do one step better now,基于这个问题,请你再给我 racing 一遍。你会拿到两个新的 preference 数据。哦,这次 B 比 A 好一点,而且这次的 B 不但比 A 好,还比上一次的 A 也好,这样你就可以把模型的 frontier 再往前推一下。通过不断的 iteration 和 reasoning 的方式,让这个模型慢慢具有更强的 reasoning 能力。
从根本上来说,这是一个强化学习的方式。这让我想到接下来要讨论的 self-play(自我博弈技术) 这个话题。
Monica:
最近大家看到 DeepMind 做的 Alpha Geometry 在特定的数学测试上表现很好。我在想,让它来解各种数学题产生数据,是不是也可以用于 o1 这样的模型训练?
Kimi Kong:
我并不了解 Alpha Geometry 的基础模型具体是什么。不过就像刚刚前面嘉宾说的,你必须要有非常强大的基础模型,才能在特定领域获得更好的表现。如果基础模型不够好,解决 domain 的问题基本上很难做到。
对于你刚才提到的,如果在特定领域解决问题,其实相对更简单,因为你可以用更具体的 reward model 来训练。如果能训练出 domain specific(特定领域)的模型,而且这些数据质量好的话,完全可以用这些数据来反哺更通用的模型。这是我的一些个人想法。
Monica:
很有启发,Eric 你有什么补充吗?
Eric Li:
我自己认为主要有两点,是数据和强化学习这两块。从 o1 的 reasoning 这么好的表现来看,我觉得我们需要很多关于 reasoning preference 的数据,这跟 Kimi 刚才讲的流程中的 reward model 很相似。
如果要训练出一个很好的 o1 model,我觉得在数据层面应该让它的 reasoning step 更加 make sense,更高效,甚至更 optimal。所以设计 reward model 去评判 reasoning step 的好坏是最重要的。
有了 reward model 后,合成数据这块就会比较好解决。包括我们刚才讲到的 MCTS,就可以基于 reward model 来产生更好的合成数据。这些方法结合起来可以产生更高质量的 reasoning 数据。我相信模型产生的 reasoning 数据远好于人类的,因为从实践看,人类生成的大多数内容都比较缺乏逻辑性,而模型反而会遵循一定的逻辑,所以合成数据很可能是训练出 o1 的一个主要因素。
另外,我觉得强化学习的重要性更加明显了。我看到最近 OpenAI 的一个研究员分享了 don't teach incentive 的 presentation。这跟两年前 Google 强调 SFT(Supervised Fine-tuning)和 insertion tuning 的思路不同。因为现在 LM 太强大了,直接教它怎么做 reasoning 反而很难,而且可能不是最优解,因为人类的 reasoning 也未必最优。
我觉得应该用强化学习的思路,让模型自己去探索怎么推理,我们只需要告诉它结果好坏并给予奖惩。这样模型可能能找到比人类更好的 reasoning 方式。o1 给我的感觉是强化学习的重要性被强化了,不再只是传统 InstructGPT 里用于 alignment 或 safety 的工具。
Monica:
这个是不是有点像 AlphaGo?它在下棋过程中,自己能够创造出一些连顶尖棋手都没有想到的下法。
Eric Li:
我觉得现在的 LLM 确实有这种能力。比如说,我们在做 RLHF 时就经常遇到一个很头疼的问题,就是 reward hacking。这个问题的本质是模型的能力特别强,它能够找到 reward model 中的一些不完美之处并加以利用,从而提高自己的 reward 分数。
但这并不意味着它真的找到了更好的解决方案,只是利用了 reward model 的漏洞。如果我们能有一个很好的 reasoning 相关的 reward model,我相信 LLM 就能自己找到更好的 reasoning 路径,实现自主优化。这也反映了 AI 行业一个很普遍的现象,就是 AI 能够代替很多人类设计的模型架构或工作流程,并自动进行优化。
Monica:
那我想最后追问一句,如果我不需要模型去学习 step 之间的关系,是不是说有个特别好的 reward model 的话,其实就并不需要这么多的 multi-step data?
Eric Li:
对,这里面是相互关联的,multi-step data 能起作用的前提是你对每个 reasoning step 的判断、你给它的 reward 打分判断都非常可靠。如果你有这一步,那这种比较 dense 的 reward 对 training 是非常有用的。
但从 o1 给我的感觉来看,在做 reasoning 的时候我们不需要用 SFT 去告诉模型该怎么做。比如说刚才有位嘉宾提到的 3X 加 5 等于 100 这样的题目,你不需要先算 100 减 5 等于 3X,模型可能直接用公式或其他更好的方法来解决。关键是不需要用人类自己的 reasoning step 去教它如何做推理,而是更多地对它的每个 reasoning step 或整体 reasoning path 做评判,只是对它的推理做奖励激励。
Monica:
那听听你的想法。
苏辉:
其实我觉得有一个比较重要的方法,它解决了我们之前很多人在做 MCTS 和强化学习与 LM 结合时遇到的问题。就是关于强化学习的粒度问题,你到底是以 token 为粒度去做,还是以 sentence 或者 step 为单位来做反馈。
我看过不少例子,特别是在 OpenAI 官网给出的完整例子中,发现了一些很有意思的特点。有些没有明显的分割符,但会出现一些语气词,很像我们人类在聊天时的停顿。就像我们在解题时会想,我是不是可以在这里画根线?好像也不太行,然后停顿一下,加个嗯,这些思维过程的特征都被保留在了完整的 Chain-of-Thought 里面。
我觉得这里可能包含了一些人类标注的痕迹。他们很可能获取了一批高质量的 Chain-of-Thought 数据,并且以 step 为单位进行切分,让模型学习这种思维方式。在每个 step 后,reward model 会给出反馈,决定是否需要进行回收或 reflection 这样的动作。这种方法已经被证明是可行的,给了很多人信心,相信沿着这个方向继续探索是有价值的。
04
模型推理能力只是 Agent 的基础,
构建一套 Agent 系统面临更多的挑战
Monica:
我们前面提到不需要用大模型来解决特别简单的数学问题。当问它简单的数学问题时,模型会用非常复杂的方式来解答,使用最高级别的 inference。既然模型有很强的能力,知道这只是一个简单的比大小或加减的数学题,或者简单推理,为什么不会自己选择用计算器这样的方式来解决呢?这是模型能力的问题,还是 tool use 方面的工程问题?
苏辉:
当看到 o1 发布时,我第一反应是疑惑它为什么以这种形式出现。OpenAI 自己也展示了,在某些任务如文本写作上,o1 可能略逊于 GPT-4o 的表现,但在强推理场景中是完胜的。很多人会尝试用 o1 解决一些在我看来比较基础的问题,这其实没有必要。
如果要提供好的产品,应该实现一个 root LLM 的策略:需要强推理的任务走 o1,不需要强推理的用 GPT-4o 或 GPT-4o-mini 就能解决,这对于用户界面来说会更合理。
我并不需要去关心调用的是哪个模型,我只要解决问题就好。强的问题就让 o1 去解决,弱的问题让 4o-mini 去解决。
这对 OpenAI 来说是很简单的事情,但他们没这么做。因为 OpenAI 跟别的做 pipeline 的或者做产品的逻辑不一样,它就是纯 model service,每次 deliver 一个产品就是 deliver 一个新 model。所以不管 query 适不适合用 o1 解决,都用一套逻辑处理。
而 o1 是在强推理环境下训练出来的,即使遇到很简单的问题,还是要走很复杂的 Chain-of-Thought。虽然 o1 也是个多模态模型,但并没有特别强调这点,用户界面上也没有很好地体现出来。其实这些包括 tool use 在内都是可以被集成进去的,whole 发布后完整版的 4o 的表现其实跟 o1 差不多,但这个阶段他只是想秀一下 o1 这个强 reasoning 模型到底是个什么样的模型。
Cage:
我特别同意苏辉说的,因为我自己用它回答一些很简单的问题,但它会想了 42 秒才给我一个非常简单的回答。所以我感觉 OpenAI 的 research 和产品有点分离了。
我们一开始还聊到 Cursor,感觉如果是 Cursor 做这个事情,可能就是先把问题打好之后 @,@ 的时候它会自动判断是 @o1 还是 @4o,找到更准确的模型来负责这个问题。我觉得这种 model routing 应该是 OpenAI 接下来一定会做的方向,这样对我们的使用体验会更好一些。
Monica:
从去年大家开始讲 agent 这个概念的时候就提到 tool use,但到现在我们还没有看到通用的 agent 能做得很好。大家认为核心是 Foundation model 的推理能力问题。第二步是它需要理解能用哪些 tool,以及这些 tool 的功能和局限。
你们觉得,如果像 o1 展示出来的 reasoning 能力足够强,后续实现执行任务的功能是相对来说比较容易的,还是说这个过程中可能还有什么我们看不到的 gap?
苏辉:
我觉得 OpenAI 在整合 tool 时比较纠结,因为 tool 需要有足够广的覆盖面才有意义。如果只是 Calculator 或查天气这样的 API,工作量很大但产品覆盖面不够全面。他们的重点是提升对 prompt 里面 tool 的 function 理解和调用能力。
研究验证表明,在真实生产环境中这个事情做得很好,只要有非常强的 prompt 理解和 reasoning 能力,提供完善的说明文档,模型就能在适当时候正确调用这些 tool 并返回好的结果。
Eric Li:
我觉得一个单一的 LLM 有很强大的 reasoning 能力,这是构建 agent 的一个很基础的 Foundation。OpenAI 在定义不同 level 的 AGI 时,level 1 是 chatbot,level 2 是 reasoning,「To figure chat bot level 2 to figure reason then go so here」。
关于行动决策,我认为它能够决定如何处理复杂的 task。reasoning 更像是 OpenAI 还在基础的 foundation model 层面努力推进的边界。我相信 agents 会是 next level 的技术,但这并不是说每个 foundation 的模型做得足够好后,agents 就能自然而然做得很好。
agents 涉及到多个 LLM、多个 AI agents 之间的相互协作,包括竞争关系,以及如何合作分工去解决复杂的系统和 task。LLMs 只是其中一个组件,而系统架构设计、分工方式,这些都是从 reasoning 发展到 agent system 过程中我们接下来要面对的挑战。
Monica:
的确,我们看到从创业投资的角度来看,今年以来 agent 领域出现了很大的变化。特别是在 Agent Ops 和 Agent Info 这个领域,出现了很多新公司。
这些公司主要专注于工程实现和 tooling 方向。这说明 agent 技术已经开始逐步进入实际的生产环境,大家正在思考如何将其作为产品来管理,就像 Eric 刚才说的那样,建立起系统化的管理方法论。我觉得这是今年看到的一个重要趋势。
Kimi,你前面提到你在做 agent 相关的工作,o1 这个提升会对你的工作有什么影响?
Kimi Kong:
我想说两点。第一点是关于 OpenAI 为什么不做 router 这件事。我觉得 OpenAI 的 foundational belief 是「search and learning will solve everything, any over engineer problem will actually get washed in the way」。所以对他们来说,不是不愿意做这件事,而是这根本不符合他们的基本理念。
关于 agent 开发,我非常认同前面苏辉和 Eric 的观点。如果要开发具有更强 agent 能力的模型,我认为需要四点:
第一点需要有非常强的 base model 和 reason 能力,提升 base model 是个非常好的方式。
第二是需要非常好的 tool,你不能给我 noisy and bad 的结果,必须简洁准确。
第三是需要非常好的 prompt,目前 agent 仍然是个 over prompting 的过程。我在使用一些开源的 agent 工具时,比如 AutoGen、HuggingGPT、LangChain,发现一个很 tricky 的问题:随便运行一个 agent workflow,使用 GPT-4o(现在大约是 15 美元/百万 tokens)可能就会消耗掉一百万 tokens,而你可能都不知道发生了什么。
最后是 learning,包括如何 incentivize 模型更好地使用 tool,什么时候使用 tool,为什么应该用 tool A 而不是 tool B,这需要我们 curate 很多 agent 的数据集,通过二维的方式来解决这些问题。
Monica:
这个 agent 的数据集比前面讨论的更难获取。如果没有这些数据,是不是可以先通过一些 engineering 方式实现 agent,然后收集数据,再看哪些部分可以被 automate 或者直接由 AI 来做。
Kimi Kong:
我觉得有两点。第一点还是跟之前一样,是关于怎么通过这个方式来使用工具。Meta 发的那篇 Tool Former paper 讨论的就是怎么创建数据来告诉模型如何使用 tool。另一种方式,说难听点,其实我每天在 Google 工作就是在帮 Google 标数据。比如同事让我写个 feature,我给他们写 code,相当于我在帮他们做 question to code 的数据集。
这些可以用来 train 他们内部的模型。当我在写 code 时用 prompt、调用 tool,其实也是在帮他们做 agent 的数据集。这已经不是个科学问题了,而是个产品问题。比如 Tesla 就是个非常棒的例子,更棒的是我们每天都在帮它标数据,而你开车的时候都感觉不到这点。
但你不能让用户不开心地去标数据,因为这样数据质量会很差,除非给很多钱。我听说 OpenAI 雇了一堆数学 PhD,一小时给几百刀来标 reasoning 数据集——这只是个传闻,别引用我说的。关键是怎么把标数据这个工作嵌入到工作流程中,让用户自然而然地完成,这才是个完美的产品。
05
强化学习的三个核心要素:
Agent、Environment、Reward
Monica:
大家来聊聊 Chain-of-Thought。对于只是听说过或者不太了解的同学,能否解释一下 Chain-of-Thought 究竟是什么?这个方法并不新,前两年就提出来了。我想请教一下,o1 在使用 Chain-of-Thought 时,与之前的应用相比有什么不同?苏辉,不如你来聊聊。
苏辉:
Chain-of-Thought 大约是在 2022 年首次被提出,最早来自现在在 OpenAI 的 Jason Wei 的论文。他的研究发现,在解决问题时,如果在答案中给出更详细的步骤,而不是直接给出结果,模型的表现会更好。
在同期或两三个月后,另一篇论文提出了「let's think step by step」的概念,在生成过程中,模型就会自然而然地以 Chain-of-Thought 的方式去生成。这两篇论文可以说奠定了 Chain-of-Thought 的基础。
之后很多工作都在这个基础上进行改进,Chain-of-Thought 很快就在 mass reasoning、常识推理、逻辑推理等多个任务中得到了应用。
我发现在使用这个技术后开始去刷榜,效果提升非常明显。这个领域产生了很多论文,研究人员也将 Chain-of-Thought 应用到 reasoning 和 visual language model 等领域。
目前主要分两大流派:第一个是显式流派,使用显式 token 表现出思维过程。这里面有很多可以发挥的空间,比如你的 Chain-of-Thought 本身可以是串式结构、树结构,甚至可以用图片结构。生成的不仅是 linear 的 Chain-of-Thought,还可以做 verification 和 refine。我们可以引入 critic model 或 reward model 来完善 Chain-of-Thought 的生成。有些工作会对问题本身做 decomposition,让 Chain-of-Thought 变得更结构化,这样都能提升效果。这些显式方法需要更多的 inference token,呼应了现在大家讨论的 scaling inference 和 compute 这个话题。
另一个流派是做隐式的,最近有 researcher 在尝试把 system two 整合到 system one 里面。虽然这个任务很难,但我们认为 transformer 的潜力很强大。这其实很像人类思考过程,我们思考时并不是所有过程都需要显式的文字表达。在 reasoning 这个过程中,即使你在思考,有时答案会在某个瞬间突然出现,这个过程更类似于直觉,是难以用逻辑解释的。
最近我发现一些有趣的现象,如果我们把 reasoning 看作与传统任务相关的过程,泽源在 Physical RM 中提到,虽然我们在做 scaling 工作时发现总参数量会与 loss 和模型表现相关,但在 reasoning 任务上,深度(即模型的层数)比宽度(即每层的神经元数)更重要,模型越深效果越好。感兴趣的 researcher 可以做实验验证这一点。
我们也看到很多工作印证这一点,比如最近的 MiniCPM-V3,虽然是小模型,但使用了六十多层的深度。业界正在收敛到这样一个结论:即使在参数量固定的情况下,我们宁愿牺牲 inference 的成本。
因为模型越深,inference 成本就越高,比如在做优化时,宽的模型要比深的模型容易优化,但我们宁愿增加层数来提升 reasoning 能力,因为在生成每个 token 时都需要经过所有层的计算,如果把生成的总 token 数与总层数的关系考虑进来,token 数量越多,每个 token 经过的层数越多,都可能提升 reasoning 的效果。这意味着不仅是增加生成的 token 数,模型的深度增加后,两者相乘会显著增加 inference 时的计算量。
其实当层数和 token 都增加了以后,每个 token 经过更多的层数,并且每个 token 的数量也变多了,这些相乘之后计算成本就会更高。
在这个层面上,我们确实发现这样做能提升 reasoning 的表现。包括加入一些 reflection 这样的操作,这其实在之前的 LLM 里就有很多人在做。
因为传统 LM 最大的问题是不能回撤,如果生成了错误的 token 就没办法纠正自己之前的错,只能顺着错误继续生成,这会导致很多 Hallucination(模型的幻觉)的问题。但如果显式地学习这个 pattern,允许模型去反思之前的问题,承认自己可能有问题,然后给一个回撤的机会,把这种数据 pattern 加到训练里面去,在 reasoning 任务上的表现就提升了很多。某种意义上这也是增加了生成 token 的数量,毕竟在反思过程中引入了额外的 token。但最终我们看到一个结论:无论是通过增加层数,还是直接增加生成 token 的数量,都能在 reasoning 的表现上得到提升。
Cage:
我想请教一个问题,前面我们讨论了 CoT,也聊过 MCTS,能否请几位嘉宾介绍一下在 o1 框架中它们的关系?因为 CoT 后续的演化也有层数的深度,也发展出了 Tree-of-Thought,听起来和 MCTS 的思想已经比较接近了,所以想请教大家觉得这两者的耦合程度如何?
苏辉:
技术的发展是相互影响的,你会发现在不同方向的工作最终会呈现出一些相似性。这些工作最初其实是独立开展的,一方面在研究如何通过参数来提升模型的表现,另一方面在从算法层面提升模型表现。但最终都殊途同归,都采用了类似 MCTS 这样的方式。
Monica:
你觉得 o1 它使用 training source 方式跟之前我们训练 LM 时的使用方式可能会有哪些不一样的地方?
苏辉:
其实有一个很大的改变。之前发生过一个乌龙事件,就是那个 reflection model,可能两个月前在推特上,跟 Llama 3 V1 差不多,就是有点道具的感觉。它其实只是用了一小部分 reflection 数据做 SFT,然后就说自己是个很强的模型,但最后大家发现并没有那么好,某种意义上是不太诚实的行为。
但是这种 pattern 其实是值得验证的。我们在 SFT 过程中,如果用一些质量比较高的 reflection 数据,它跟传统 Chain-of-Thought 是不一样的。传统方法是一步步解决问题,没有回溯的过程,我不会去反思之前的问题出在哪里,完全是顺序执行,下一步的结论一定是基于上一步得出来的。但有了 reflection 这个操作,就有很多回撤的空间。
模型在生成 Chain-of-Thought 之前,很可能已经知道怎么做了,但在生成过程中如果犯错就没机会返回。这确实很痛苦,但如果给它 reflect 的机会,只要它最早确定能解决问题,最终就能做对。这是 o1 展现出来的例子和我们之前做的最大区别。当然,之前 Chain-of-Thought 的工作里也有一些这种朴素的思想。
但是如果只通过 SFT 方式学习,或者只是通过外部的 verify 模型来实现回撤,因为没有那么强的 reward model 提供策略学习,效果会弱很多。模型可能只是学到了一个表象的行为,就是我可以去回撤,也许到后面正确的时候也会去回撤,它只是学到了一个 pattern,并没有真正理解自己在做什么。
Monica:
就刚才开始的那个问题,我想听听 Eric 的想法。
Eric Li:
我觉得这两个是有相关性的,就像刚才另外一位嘉宾讲的,有点殊途同归的感觉。
在 Chain-of-Thought 这边,我们看到有很多衍生的研究,比如 Chain-of-Thought 是 chain,那可能有 Tree-of-Thought、Graph-of-Thought 这一系列的文章。这些都是在探索当你的推理结构有多个不同选择时,应该选哪一个最好。
而 MCTS 作为一个比较传统的 planning 或者搜索方法,它是在估计传统强化学习中,当我有多个可能的 action 时,哪一个 action 可以获得更大的 reward、更大的 value。
MCTS 的发展路线更多是从 AlphaZero 那边,就是比较特定领域下的围棋发展起来的。但是 Chain-of-Thought 或 Tree-of-Thought、Graph-of-Thought 这一系列,更多的是基于自然语言处理的情况,在语言模型中自身演化出来的思路。
本质上,我觉得这两个都是在探索如何规划推理,从这点来说,其实两个都是比较高度相关的。
Monica:
大家其实都在猜测 o1 里边有没有用 MCTS,我很好奇你的猜测是怎样的?
Eric Li:
我自己其实也不确定,但是我觉得如果要用 MCTS,应该有两种方式。
第一种是在 inference time 使用,这需要一个非常好的 reward model。在思考过程中,系统会不断尝试各种路线,就像下围棋一样。比如当我们下到一半时要决定下一步,假设有五个不同的选择,我会估计每个选择可能带来的潜在 reward,然后选择能最大化 reward 的方向。之前读了你分享的知乎文章,从 reverse engineer 的角度来看,如果现在看到它的 token cost 是线性的,那么 MCTS 可能并不在 inference 阶段。
我认为更可能的是第二种方式:在数据处理阶段使用 MCTS。比如在处理训练数据时,用 MCTS 策略找到最佳的推理数据来训练模型,或者在强化学习过程中将搜索策略整合进来,帮助 policy model 找到最佳的推理方式。所以如果让我猜测的话,我觉得 MCTS 在数据层面或强化学习过程中使用的可能性要大于在 inference time 使用。
Monica:
让我们回到 Kimi 这边,我们刚才讨论了很多关于 o1 使用强化学习的可能性,你觉得还有什么我们没有 cover 到的角度吗?
Kimi Kong:
让我往回撤一步,跟大家讲讲强化学习到底是什么。这样可以帮助大家更好理解为什么强化学习能在不同行业中发挥作用。强化学习需要几个基本 component。
首先你需要一个 agent,也就是一个模型。在 language 领域,它就是一个 LM。在 robotic 领域,比如 physical robots、simulation、Atari game,或者是 Google 的 AlphaGo,都需要 agent。
有了 agent 之后,你需要一个 environment 来让 agent 进行交互。比如 physical robot 需要与周围的物理世界交互,但物理世界很难 model,这也是为什么我们还没有看到真正的机器人被广泛应用。不过我相信这个领域未来非常有前景,maybe very soon 就会出现 robotic domain 的 GPT-3.5 时刻。
更 generalize 的 environment 包括 Atari game 和 Go。强化学习在这些领域发展更快是因为它们是 well-controlled 的 environment。在这些环境中,sample data 是 free 的。你 run 一个 LM 来 sample 是很 expensive 的,但在 simulation 中,你可以进行 infinite sampling,用任何 speed 和 frequency,甚至可以比实际时间快两倍来 sample,这使得 simulation 成为 perfect 的 reinforcement environment。
最后你需要一个 reward,用于告诉模型它每一步 action 的好坏。比如在 Atari game 中,输赢是一个很 deterministic 的 reward;在 AlphaGo 中,最终的胜负也是个 deterministic 的 reward。这些 well-controlled 的 environment 为早期的强化学习研究论文创造了良好的条件。
在强化学习上见到了长足的进步,第一个是 DQN 这篇论文,然后往后 DQN 有了各种演化,比如 Double DQN、Dueling DQN。大家不只是在做 value function,还开始做 policy network 这些方面,比如 REINFORCE。然后大家发现不只需要一个 policy network,还需要一个 value network,要把两个结合在一起,形成 actor-critic 的方式。
这又可以演化成 on-policy、off-policy,或是 deterministic、stochastic 这些方向。比如说 DeepMind 的 DDPG,还有就是原来在 OpenAI、后来去了 Anthropic 的我非常仰慕的强化学习 researcher 做的 TRPO 和 PPO 这些工作。
说到底,强化学习已经很多年没有在算法层面有发展了,最 SOTA 的应该是 Sergey Levine 他们实验室的那篇 SAC 的论文,大概是 2018 或 2019 年的 work。从那之后,在强化学习的算法层面就没有更多的长足进步了。
现在大家主要关注强化学习在 specific domain 的应用,尤其在 LM 领域很火。
如果你往回看这个问题,其实 AlphaGo 跟 LM 非常像。AlphaGo 也有两个步骤,有一个 pre-training step,当时叫 pre-training phase,也就是 imitation learning,从专家下棋中学习。有了这个好的 base model 后,就想怎么能做到 better than human。这就回到之前 Eric Li 说的,我们可以让模型通过 self-play 来提升自己。
在做了 AlphaGo 之后,他们想能不能把 pre-training 这个 step 去掉,完全用强化学习来训练,就做了 AlphaGo Zero。然后他们又想能不能让它不止会下一种棋,就做了 AlphaZero,可以下日本将棋、围棋和国际象棋。
最后他们的 ultimate solution 是 MuZero,不仅能学会怎么赢得游戏,还能学习 simulation network,就是说给定 environment state 和要采取的 action,模型就能预测下一个 state 会是什么。
那你可能会想,LM 是不是也可以完全不要 pre-training,用强化学习的方式来训练,就像 AlphaZero 那样纯靠 self-play。
但这其实是非常难的,原因在于强化学习需要一个 deterministic reward function(确定性的奖励函数),而 LM 很难有这样的 reward function。
第二,你需要一个 control environment。对 Atari game 或者围棋来说,我有个 perfect control environment,但对 LM 来说,人是 environment,我不可能一直陪着 LM 问答。虽然可以用一些 trick 来做 self-play,比如两个 LM 互相问答,但因为缺少这两个条件,强化学习目前只能做 LM 的 alignment 工作,而不能完全靠 self-play 强化学习来解决 LM 的问题。
这就是强化学习的演化过程,以及它在 LM 上的应用。
06
Reward Model 可扩展的模式也许是
「Human in the loop 配合 AI feedback」
Monica:
可以展开讲讲 Robotics 在强化学习里面的应用吗?结合你之前做 LLM robotics 的工作经验,有什么启发可以借鉴的地方?
Kimi Kong:
这是个好问题。我认为强化学习本质上就是一种通用技术(general technic),不仅仅局限于 robotic 强化学习。它就是在你定义好的环境中,通过 agent、environment 和 reward function 来实现目标。
说实话,我非常怀念当年做强化学习研究的时光,那时候环境非常纯粹。就是很简单,你只需要赢得游戏,reward 是完全确定的,都不需要考虑 reward function 的设计。现在反而变得更复杂了,但这种复杂性也带来了更大的潜力,因为 reward model 不再是确定性的,不只是局限于玩游戏,而是可能泛化到其他领域。
在 robotics 强化学习领域,主要有两个研究方向。
第一个是 locomotion,比如斯坦福的 Tony 他们的工作。这个方向其实跟 language model 关系不大,主要是通过 imitation learning 加上强化学习 approach,需要人类示范来教会 robot 如何操作和移动。
另一个方向是 planning,比如 Google DeepMind 早期的 SayCan 项目,这类工作需要明确描述任务而不是示范。在 planning 任务中,LLM 是一个非常 popular 的 approach,从早期的 SayCan、Code as Policies,到后面的 PaLM-E,再到 RT-1、RT-2、RT-X 等系列工作。
实际应用中,因为 robot data 量有限,我们不想纯用 robot data 导致 model performance 下降,所以会把 robot data 和 vision data 以及 VQA task 一起做 co-fine tuning,然后收集强化学习数据来 refine 模型。
从根本上讲,其实没有特别大的区别,主要是应用场景和数据形式不同。这些数据可能不是传统的 token,而是 robot motor 的 force、torque,或者是 sensor 的数据。但 backbone 都是用 transformer 架构,都是用强化学习的 training technique 来让模型在 specific domain 更好地收敛。
Monica:
刚才你也提到了 self-play,它在强化学习领域的研究历史和行业应用情况是怎样的?你觉得 o1 有没有用到 self-play 技术?
Kimi Kong:
这个不好确定。但如果让我做这个事,我一定会使用 self-play,因为它可以让你不断地 scale 和 refine 这个过程。强化学习最大的优势在于可以让你每一步都实现增量改进。这与 SFT 不同,SFT 是训练完一个 epoch 就结束了。不一步到位,我们可以完成得更好,数据和 query 还在那里,你可以通过这个 query 再运行一遍模型,再做一次标注,可以把这个 query 做无数遍的 self-play。
我认为 self-play 是一个可以 scale 的强化学习训练技术,在语言模型领域是一个非常好的 technique。
Monica:
那它与我们之前讨论的 CoT 和 reflection 之间是什么关系呢?
Kimi Kong:
这是个好问题。我认为在讨论 CoT 时,更多是作为一个 prompting technique,就是说我希望 prompt 这个模型帮我做某件事。你可以用 CoT 的方式来解决问题,也可以用 CoT 的方式来产生 synthetic data 来训练模型。
但 self-play 更多是一个 training technique,是在训练 reinforcement learning 模型时,用来持续推进强化学习步骤的技术。我觉得这是两个相对独立的 topic。Feel free to correct if I'm wrong。
Monica:
关于 self-play,想听听你对它和 CoT 之间的关系,以及它在 o1 或未来提升模型能力方面的作用的看法。就是 DeepMind Danny 最近的那篇《Train of Thought empowers Transformers to solve inherently serial problems》,在 Twitter 上写得非常抓眼球,说 Performance limit when scaling our inference sky is the limit。这篇文章本质上在讲 CoT 是如何让 transformer 的能力得到提升的,它跟刚才 Kimi 提到的 self-play 又是什么关系?
Eric Li:
我觉得 CoT 和 self-play 是两个相对独立的方法。CoT 更多是通过思维链,通过增加 inference time 的计算,让模型能够解决一些本身比较难解决的问题。self-play 更像之前 AlphaZero 那样,通过自我博弈的方式能够不断地 incrementally 提升自己,比如下围棋的水平。
关于 o1,我不确定他们有没有用 self-play,但从 MCTS 这个脉络来看,在 LM 加强化学习这个方向上,大家还是会倾向于借鉴上一代强化学习的那些成功经验。MCTS 是之前 DeepMind 做 AlphaZero 时变得非常 popular 的方法。我相信 self-play 即使现在没有被 OpenAI 在 o1 上使用,也是一个很 promising 的方式。说不定已经有很多人在研究,我对它的未来比较看好,它可以作为一种模型 self improvement 的策略。
我自己没有完全读这篇论文,只是看了一下 abstract,但我觉得这是一篇理论分析很有意思的文章。它能够告诉我们现在整个 AI 学术界需要的东西——一些理论文章来揭示我们现有模型 capability 的上限在哪里。对我来说,这是一篇非常 insightful 的文章,它至少能够回答一件事情:transformer 加 CoT 的架构,它的表达能力是非常强的。
当然,我也看到有人在说这可能和当年 deep neural network 的时候情况类似。不过我觉得这篇论文是从数学上告诉我们上限在哪里,这等于是可以激励我们下一步去设计更好的 CoT,设计更好的 transformer 架构。这样就把问题从能不能解决转变成了应该如何更好地解决。
从计算不可约性的角度来看,很多问题如果想要获得答案,可能都有一个 minimal 的 computation cost 要求。比如说,你想要模拟一个流体力学状态,在保证一定精度的情况下,至少需要的计算成本是有一个非零的下限。这在 CoT 这块也有相应的体现:对于复杂的问题,你确实需要有一些 additional computation 才能得到相对准确的解。这就是我对为什么 CoT 被认为是一种 adaptive computation 的理解。
苏辉:
我先来讨论一下 Sky 这篇论文。这篇 paper 在推特上引起了很多讨论,包括田园东老师等研究者都表示反对。他们认为这个论文的 claim 本质上和「两层神经网络能够拟合任何函数」的说法类似,都只是在构造一个位置来拟合特定的 target 函数。
但理论上能否达到这个 solution,或者找到更好的路径都是无法保证的。虽然通过穷举方法可以解出答案,但这种方法并不现实,我们真正需要的是能够准确、直接给出答案的能力。我比较认同这个观点,即存在答案和能否通过现有方法正确求解是两回事,不能说随机出现某个概率就等于能实现这个功能。
关于 play 的使用情况,我注意到在 OpenAI 官网上搜索「play」的内容,可以追溯到 2017-2018 年,一直持续到 2022 年。虽然后来 OpenAI 并未官方承认使用 play,但这与新一代研究者如 Noam Brown 的背景有关。他们之前主要做 Deep AI 相关的零和博弈研究,这些研究者的研究品味和研究路径短期内不会有大的改变。
Noam Brown 最近在 YouTube 上的演讲中,结尾提到了关于 LLM 的重要结论:他认为需要保证 generator 和 verifier 都足够强大才能实现目标。从时间顺序来看,现在已经达到了他之前提出的先决条件,所以这种方法用在 LLM 中是完全合理的。
Cage:
Raw Model(指预训练后未经任何特定领域微调或优化的原始模型)确实会是未来很大的一个研究方向。正好前面 Monica 提问说大家觉得 GPT-4o 表现怎么样?两位嘉宾的回答都是和数学推理、coding 有关的。
reasoning 和 math 的 raw 都比较好定义,它本身有 verify 可以直接给一个结果说它是对的还是错的。但其实别的领域就很难有这么明确的 reward model。不知道几位嘉...
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.