Kimi 智能助手 2025-02-17 08:02 北京
训练模型能够像我们人一样思考,自由地思考!
【写在前面】知乎问题「如何评价 Kimi 发布的多模态推理模型 k1.5?」下,月之暗面研究员 Flood Sung 深入浅出地分享了 k1.5 模型背后的完整思考过程,获得 2000+ 赞和多家媒体转载。英文版在 Twitter 也有近 7 万阅读。
为了帮助更多人读懂这份 Chain of Thought,我们增加了对技术术语和引用资料的注释。enjoy~
作者:Flood Sung
这个 k1.5 模型和技术报告①是我们的结果,那么相信大家也想知道一些思考过程吧,哈哈。所以这里主要想和大家分享一下复现 o1 的一些关键思考过程,也就是我自己的 Long Chain of Thoughts。
注释① Kimi k1.5: Scaling Reinforcement Learning with LLMs https://arxiv.org/abs/2501.12599
2024 年 9 月 12 号,OpenAI o1 发布,震撼,效果爆炸,Long-CoT ②的有效让我陷入反思(Reflection)。
注释② Long-CoT:Long Chain of Thought 长思维链,推理模型背后的关键技术
因为 Long-CoT 的有效性其实在一年多前就已经知道了,Tim周昕宇③很早就验证过,使用很小的模型,训练模型做几十位的加减乘除运算,将细粒度的运算过程合成出来变成很长的 CoT 数据做 SFT④,就可以获得非常好的效果。我依然记得当时看到那个效果的震撼。
注释③ 月之暗面 Kimi 联合创始人
注释④ SFT: Supervised Fine-Tuning,监督微调
我们意识到 Long Context ⑤的重要性,所以率先考虑把 Context 搞长,但却对 Long-CoT 这件事情不够重视。其实主要还是考虑了成本问题。Long Context 主要做的是长文本输入,有 Prefill 预填充,有 Mooncake ⑥加持,成本速度可控,而 Long-CoT 是长文本输出,成本高很多,速度也要慢很多。在这种情况下,把输出搞长就没有成为一个高优选项。
注释⑤ Long Context 长上下文窗口
注释⑥ Mooncake:Kimi底层的推理平台,已逐步开源,详见 https://mp.weixin.qq.com/s/-8ZRbRxBOWNfkk3xMdcWVQ
但是,还有什么比 Performance (性能)更重要呢?成本和速度有摩尔定律加持,可以不断下降,只要把 Performance 搞上去,剩下的都不是主要问题。
所以,我们得搞 Long-CoT,搞 o1。
但具体要怎么搞呢?
我们需要先收集一些信息,来反推 o1 会是怎么做的?RL-LLM ⑦会是怎么做的?(对,这里触发了我的搜索 API)
注释⑦ Reinforcement Learning- Large Language Model,强化学习大模型
首先我们观察 o1 官网上的一些例子,我们发现很明显的一些特征:
o1 可以犯错!!!Long-CoT 和以前的 CoT 不一样。
o1 往往会反复的反思再尝试,有各种 but, wait……
o1 的思考方法则不局限,可以重述问题,可以联想,可以分治……
然后,两个重要的 OpenAI 视频出来了,分别是 Noam Brown 在 Paul G. Allen School 的讲座 Parables on the Power of Planning in AI: From Poker to Diplomacy(https://www.bilibili.com/video/BV1dntWe9ETs/)和 Hyung Won Chung 在 MIT 的讲座 "Don't teach. Incentivize." (https://www.bilibili.com/video/BV1ZmtBeaEjz/ )
我观看了不止一遍,因为他们这些视频并不是近期拍的,但却要等到 o1 发布了才发出来,说明他们的 talk 和 o1 的实现是紧密相连的。
其中,有两张 ppt 我觉得是至关重要的:
Noam Brown 这张(视频:19:44),他告诉了我们 Test-Time Search 的重要性,确实回想起之前的 AlphaGo 是这么一回事。很多人以为 Noam Brown 是告诉大家要把 AlphaGo 的 MCTS⑧用到 LLM 上,那么其实不是,只是说 Search 很重要。至于应用到 LLM 上,那么就是:
注释⑧ MCTS:蒙特卡洛树搜索(Monte Carlo Tree Search)是一种基于树结构的启发式搜索算法,广泛应用于复杂决策问题和游戏领域。它通过模拟随机样本来评估决策的价值,并逐步构建和优化搜索树。
我们需要让模型能够自行搜索!
这也让我重新看了一下 Richard Sutton 的 The Bitter Lesson(https://www.cs.utexas.edu/~eunsol/courses/data/bitter_lesson.pdf):
One thing that should be learned from the bitter lesson is the great power of general purpose methods, of methods that continue to scale with increased computation even as the available computation becomes very great. The two methods that seem to scale arbitrarily in this way are search and learning.
从这个惨痛的教训中,我们应该领悟到通用方法的强大力量——这些方法即使在可用计算资源变得极其庞大的情况下,仍能随着计算能力的提升而不断扩展。搜索和学习这两种方法似乎能以这种方式无限扩展。
Sutton 早就揭示了一切呀。
接下来这张来自 Hyung Won Chung 的 Don't Teach, Incentivize。这个带来的启发就更大了:
图片来自:https://x.com/hwchung27/status/1800676312916656592
Hyung Won Chung 为什么特别强调这个呢?Structure,什么是 Structure?
MCTS(蒙特卡洛树搜索)是一种 structure,A*⑨是一种 Structure。当我们人为加了点 inductive bias ⑩进来强求 LLM 按我们要求的格式进行思考,那么这种思考就是结构化的。而基于我们前面对 o1 的观察,我们就可以把两件事联系在一起了:
注释⑨ A* 算法(A-star Algorithm)是一种经典的启发式搜索算法,广泛应用于路径规划、图搜索和人工智能等领域。
注释⑩ inductive bia:归纳偏差可以理解为算法在面对不确定性和不完整信息时,所采用的“先验知识”或“启发式规则”。
o1 没有限制模型如何思考!
这点非常非常关键!因此我们已经可以基于此排除一些带 structure 的工作了,MCTS(蒙特卡洛树搜索)就没必要探索,因为一定不 work。
特别的:现在的各种 Agentic Workflow ⑪就是各种带 structure 的东西,它一定会限制模型的能力。
注释⑪ Agentic Workflow:智能体工作流是一种利用人工智能智能体(AI Agent)来自动化执行复杂任务的工作流架构。它通过将任务分解为多个步骤,并利用AI智能体的自主决策、规划和协作能力来完成任务。
所以,其实我们还可以直接得出一个结论:Agentic Workflow 只有短期价值,没有长期价值!早晚会被模型本身能力取代掉。
All in All 我们就是要训练模型能够像我们人一样思考,自由地思考!
然后,Noam Brown 还有一张 ppt 也蛮重要(视频:49:44):
未来研究
Planning 是学术研究的一个相对较好的领域!
大公司更倾向于高前期成本和低推理成本
考虑在一个有外部验证器的领域做研究
避免因奖励模型质量而受限
这个非常直接地告诉我们:去做有精确 Reward 的 RL!不要被 Reward Model 给限制住了。
之前 RLHF ⑫相信做过的同学都知道这是一件非常麻烦的事情,因为 Human Preference (人类偏好)并无法精准的建模,训的 Reward Model 又很容易 reward hacking,lilian weng 都专门写了个 blog 来讲这件事:
Reward Hacking in Reinforcement Learning
https://lilianweng.github.io/posts/2024-11-28-reward-hacking/
⑫RLHF(Reinforcement Learning from Human Feedback)是一种结合人类反馈与强化学习的训练方法,通过人类偏好数据优化模型,使其输出更符合人类期望。
所以,如果 reward 都不准确的话,那么要做 RL 就很难 work。RL 的 performance 完全取决于 reward。
这不禁就回想起以前做 robot locomotion,game ai 的时候,一堆的 reward shaping⑬。
⑬Reward shaping 是一种强化学习技术,通过调整原始奖励函数,将领域知识或先验信息融入学习过程,从而加速智能体的学习速度,帮助其更快地收敛到最优策略。
信息到这里就很明显了:
做题,做题,还是做题!做有标准答案的题,刷起来!
math 和 code 就是很直接的两个有标准答案的方向,OpenAI 也是往这上面刷,那么我们当然就往上面刷呗。
怕 context 太长,导致遗忘,我们在这里确认一下前面得到的关键信息:
要训练 LLM 通过 RL 做题,有精确 Reward
不要采取结构化的方法,最终会限制住模型的效果,要让模型自己探索思考范式。
思考包含了搜索过程,允许犯错。
好了,接下来我们需要解决如何用 RL 训练 LLM 通过 Long-CoT 做题这件事。
很多同学可能会想:那就用 PPO⑭ 呗!
⑭PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习算法,通过限制策略更新的幅度来提高训练稳定性,广泛应用于大语言模型的微调,尤其是在人类反馈强化学习(RLHF)中。
问题没有这么简单。Long-CoT 对问题的建模产生了很大的变化。
o1 实际上是把 in context RL 的完整 trajectory ⑭当做一条 message 给训进去了。如下面的 code:
⑮在强化学习中,trajectory(轨迹)是指智能体在环境中从初始状态开始,按照策略行动所经历的一系列状态、动作和奖励的序列,用于描述智能体的行为路径和交互过程。
什么是 In Context RL 呢?不了解的同学可以看这边:In-context Reinforcement Learning with Algorithm Distillation(arxiv.org/abs/2210.14215)
简单地说,就是模型做 next token prediction 的过程本身就是一个 RL 探索过程。
模型做一个题,在 Long-CoT 下,实际上在做什么呢?
实际上也在学习做这个题,它输出的整个轨迹就是:
s1,a1,r1,a2,r2,a3,r3,.....
其中 a 可以认为是一种解决方法,可以看做 action,而 r 就是 reward,但这里是模型自己做 reflection 得到的 reward,所以我说它是自带 critic/world model 的 in context RL。
最近有相关 blog (Optimizing LLM Test-Time Compute Involves Solving a Meta-RL Problem https://blog.ml.cmu.edu/2025/01/08/optimizing-llm-test-time-compute-involves-solving-a-meta-rl-problem/)也终于说了这件事,大家也可以看看。
但它没有提到 self-critique⑯这个问题。
注释⑯:Self-critique 是强化学习中的一种自我评估和改进机制,主要让 AI 代理能够评估和反思自己的决策和行为。
所以这个事情变复杂了呀。
如果把 Long-CoT 输出建模成 in context RL with self-critique,那么我们怎么优化它呢?
首当其冲的问题就是每一句话的 value 是多少?
然后你会发现这个 value 已经非常难以估计了。
举个非常简单的例子:计算 1+1=?
然后模型输出 1+1=3,不对,1+1=4 呢?也不对,因为 4-1=3。那么 1+1=1 呢?不对,因 1 不等于 1-1=0..... 哦对了,左手有一颗糖,右手也有一颗糖,左手的糖放到右手,那么我右手有两颗糖,我知道了,1+1=2
你会发现:
如果模型不会反思,那么犯错了就是错的,value 就会是负值。但如果模型会反思,那么只要知错能改,最终是对的,那么这些错误都不算错误。value 就不应该为负。
由此,我们进入了 Value 的混沌态,Value 很难估计了。
这让我想到了人生:
o1 即人生。人生就是一条有限的串行轨迹,各种探索,各种犯错,然而除了杀人放火你无法评价某种犯错/挫折的价值会是好还是坏(比如 steve jobs 可以被自己创立的公司解雇),最终的结局都取决于自己的目标。
所以,我们可以从逻辑上判断我们不要训 value,不要搞 PRM⑰ 了,因为不会准的。
注释⑰ PRM(过程奖励模型)是强化学习中的一种奖励机制,通过对生成过程的每一步进行打分,而非仅关注最终结果,从而引导模型学习更优的推理路径。
所以,看起来用强化学习(RL)训 LLM 通过 Long-CoT 做题这个问题变简单了:
不管模型中间做错了什么,只要不是重复的,那么最后模型做对了,我们就认为这是一个好的探索,值得鼓励。反之,如果模型一顿探索,最后做错了,那么再努力也是错,要惩罚。
我们把问题变成了 Contextual Bandit⑱的问题。那么我们就可以用 REINFORCE 的变种来做啦。
注释⑱:Contextual Bandit(上下文老虎机/情境赌博机)指的是一种机器学习中的决策模型,属于强化学习的一个分支。它的核心思想是:在动态环境中,根据当前的情境(上下文信息)选择最优动作(决策),并通过部分反馈(仅获得所选动作的奖励)不断优化策略。
上面这就是最基本的 REINFORCE 的公式,简单的说就是做对加梯度,做错减梯度。当然,我们需要让训练更稳定,所以可以加 KL⑲,加 reward 的 normalization 等等一些小 trick,具体可以看下 paper(https://arxiv.org/abs/2501.12599)。但基本的思想就是这么简单。
注释⑲:KL 指的是 KL 散度 (Kullback-Leibler Divergence),也称为相对熵,是衡量两个概率分布差异的一种方法。
有了基本思路,那么剩下的就是实操了。但这里其实还有一个重要问题:
Long-CoT 是如何变长的?这可能是最关键的事情。
惊喜的是在我们实际训练的过程中,我们有了重要的发现:模型会随着训练提升 performance 也不断增加 token 数!
也就是这是 RL 训练过程中模型可以自己涌现的!
Fantastic!
这个和友商 Deepseek 的发现几乎是一样的。看到他们直接做了 zero-sft 的 RL,也是挺 impressive!
OK,理清了整个思考过程,也是不容易。感觉自己像个 AI,哦不,是 AI 太像人了。
我们的思考还在继续,那么未来呢?
ok,还有 o3 在前面,还有很多路要走。
AGI(Artificial General Intelligence,通用人工智能)确实就是近在眼前的事情,这个 Sam Altman 没有乱说。
那么 ASI (Artificial Super Intelligence,超级人工智能)呢?
我重新开始思考 ASI。其实对于做强化学习(RL)的人来说,从来都不会把 AGI 作为目标呀,因为 AlphaGo,AlphaStar 已经验证了 RL 可以做 superhuman 的事情了,那么现在不过是把场景搬到了现实世界。
给 AI 一个可衡量的目标,然后让其自己去探索,然后通过 RL 提升模型,仅此而已。
未来不过是把这个过程不断的复制到更复杂的场景。
比如给 AI 一本飞机手册,然后让其自己学会模拟驾驶。
比如让 AI 写出 10 万+的公众号文章。
比如让 AI 发布一个类似 tiktok 的 app。
比如让 AI 去写一篇文章中 Nature。
让我们一起期待一下接下来的进展吧!加油!
了解更多:
k1.5 新模型登场:Kimi 如何做到满血版多模态o1水平(附技术报告)