CoT & 强化学习 --用推理的“临时态”实现短暂的意识 背景和方法 众所周知,o1在推理阶段采用了一种思维链(Chain of Thought)的方法,将推理过程分解为多个离散的步骤。o1能够规划其推理步骤,评估中间结果,并在步骤出错或陷入僵局时进行回溯。 基础模型的训练(预训练和后训练)遇到瓶颈了 通过推理阶段的不断自我逻辑判断和思考实现更强的推理能力 自洽,在这个过程中前后的因果关系是自洽的 可以实现,更多深层次的思考 动态性,可以在思考的过程中不断的调整思考方向 把训练迁移到推理(运行态) 在大模型、大数据的规模不能持续增长的情况下,通过增加计算规模来提升整体精度 在推理的过程中实现“意识”,“意识”是AGI的关键能力 在self attention的基础上继续扩展了一个“动态性”的维度 严格意义上,RL和Test Time Scaling law并不应和预训练阶段Scaling Law等效,它们增强的主要是逻辑推理能力,所以RL Scaling Law其实是在原先预训练阶段Scaling Law组成成分之一的逻辑推理能力S型曲线后面,再接上了一个新的S型曲线,然后再接上Test Time阶段逻辑推理能力的新S型曲线,类似一个接力赛。 在推理过程中不断寻找思路,实践,判断效果,实现了自动化的“蒙特卡洛树算法” 需要实现的前提 能自动的在推理的过程中压缩KV cache 能暂停输出,接受外界的输入,拼接到当前的kv cache中 能对当前的结论和临时状态进行判断和总结 怎么训练(改变模型的权重)? 好像只能通过不断的调整提示词来找到输出合理结果的方法 可以通过推理过程中,插入特定的外界输入来改变中间结果(kv cache)的方式来调整/训练 强化学习诱导实现:复杂的有针对的loss函数 测试时训练(TTT)技术 能显著提高LLM进行逻辑推理和解决问题的能力。让大语言模型在推理时「边思考边执行」,即测试时计算(test-time compute)。这种方式能带来巨大的回报 传统的LLM主要依靠的是检索存储模式,但o3处理问题时,却是靠实时创建新程序,来解决不熟悉的挑战。 在不提高算法效率的前提下,暴力增加算力消耗,边际效应会越来越明显,需要的算力将是指数级别的增加 需要灵活的针对不同的任务动态调整思考的长度 利用人类的语言(自然语言)作为思考(逻辑运行)的接口/工具 虽然自然语言看似比较复杂 但是 表达灵活性非常的高 , 能表达任何东西,人类所有的知识科学都是通过语言来表达的 所以一旦有了足够的样本数源就是一种 非常有性价比的接口 。 CoT提供了在推理的时候进行逻辑演绎的机会 把 具体的实际的表达 转换为 抽象的总结性 的描述 不断迭代运行上面的步骤,直到得到想要的答案 依赖于已经掌握的抽象总结的数量和深度,AI已经从大量的自然语言中学到了 依赖于逻辑思维和推理,AI已经通过预测下一个token初步掌握 目前的模型不能有很长的、很深的思考路径,只能进行有限步数的推理 比如,带目标的成语接龙任务很难实现,这是当前模型的缺点 需要利用KV cache进行打草稿,然后慢慢演绎 是不是有个更适合机器思考的接口/工具? 人类不能用自然语言思考任何东西,比如数学和代码 这种语言的设计更适合 LLM,因此会减少为满足人类需求而设置的语法糖 赋予大模型在CoT的时候不仅仅具有通过语言的推理能力,还具有使用工具(计算机)的能力 o1-ioi模型能在推理期间编写和执行c++程序,通过迭代运行和优化解决方案 自然语言接口似乎也有局限性 表达不够准确,氛围感 冗余不够精炼 多义,同义 例子 带CoT的模型就能很好的计算两个多位数的乘法,模型会在CoT里面拆分计算过程,和学校学的乘法过程很像 把CoT引入训练 预训练的数据先自动增加CoT(生成CoT),再参与训练 有个额外的模型,动态的对输入生成CoT、逻辑分析片段,指导训练 实现自回归时,关键挑战在于能在没有外部干扰的情况下,判断何时进行反思、继续推理 增加一些特殊的token专门用于执行反思任务 在训练的时候就把“推理思考”作为作为回归的目标 直接把CoT的样本的思考过程用于预训练 迫使权重表达用于推理时组合后的输出,而不是简单的存储知识,会极大的扩展权重的表达维度,促进按照逻辑思维进行抽象,提高权重表达效率 怎么提高模型层级的灵活性,而不是固定的“抽象知识”+“逻辑推理”两个过程? CoT的问题 CoT分散模型「注意力」,「想太多」了,在需要遵守指令或格式的任务中,使用CoT推理,模型遵守指令的准确率会下降! 大模型越擅长复杂推理,越容易忽略用户的指令要求,“ 聪明 ”和“ 听话 ”之间存在明显的矛盾。更长的推理过程,其遵循指令的准确率会明显下降 在复杂问题中因“单一路径选择”而犯错,人类大脑思考时并非依赖明确的语言符号,而是通过 抽象概念的灵活整合 进行推理。 只是对输入的信息按照 预设的思考(分析)方式 进行语言层面的表达,预设的模式比较单一,难以试用所有情况。 基于马尔可夫假设的强化学习范式存在天然的局限——探索(exploration)仅发生在训练阶段,代理在部署(测试)时通常只会利用(exploit)训练中学到的确定性策略 显式的对信息进行格式化的表达,“格式化”能力从权重利用语言表达到思维链里面,比较低效 **动态的自适应的调整思考的模式,将又增加一层动态性,**可能极大提升模型能力 自适应RL框架 BARL CoT看似在思考问题,但是有没有可能只是在给给定的prompt进行一些token以便进行更好的推理,提高信噪比? Google Research一项新研究发现:想让大模型在不启用推理设置时更准确,只需要把问题复制粘贴再说一遍,就能把准确率从21.33%提升到97.33%! 模型牺牲了对输入问题的一般语言理解能力,换取了对特定答案的精准记忆。 https://mp.weixin.qq.com/s/qMg2rVabnqS5QbAIaO37pQ 强化学习 强化学习是怎么激发出CoT的? 强化学习(RL)本质上也是在对模型进行 先验信息(约束)的最大化似然 参考: https://mp.weixin.qq.com/s/rDJdgKS_qSfUwqCuoEjJsA 当然会可以采用很多方面来解释这种现象,在数学上可以表示成,对概率和信息熵等多种不同的形式来说明问题 强化学习的激励太稀疏, 信噪比不高, 对分步骤的自洽学习没有帮助