免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

大模型的局部最优困局:为何持续学习是下一站

大模型的局部最优困局:为何持续学习是下一站 大模型还能不能继续变大这个问题近两年已经从学术圈的争论蔓延到了每个 AI 开发者的日常。一边是产业界继续不计成本地堆算力、堆数据另一边是越来越多的研究者在讨论数据墙、边际收益以及大模型能力虽然强大但极不稳定的问题。就在这种分歧越来越明显的氛围中强化学习领域的奠基人 Rich Sutton 给出了一个更本质的判断大模型当前的成功路径正在把 AI 带进一个“局部最优”。模型只是在静态数据分布上逼近了性能上限却没有学会在真实环境中持续学习和修正自己。这篇文章不是新闻复述而是想把 Sutton 的判断拆成几个可以讨论、可以落地验证的技术问题。大模型的局部最优到底指什么为什么传统的预训练加微调路线会走向这条死胡同强化学习为什么被认为是打破僵局的核心工具以及一个开发者在自己的项目里应该如何一步步把“静态模型”改造为“能持续学习的系统”。如果你正在做大模型应用或者在看 Agent、强化学习、世界模型相关方向这篇文章值得读完。它不会给你一个马上能用的“银弹”但会帮你建立一个判断技术路线的框架。1. 为什么这个问题值得关注当前大模型行业有一个很微妙的现象模型越来越大但讨论“性价比”的声音却越来越响。过去几年大家默认一个结论参数越多、数据越多能力就越强也就是 Scaling Law。这个规律在早期非常有效但从近年来的公开研究讨论和社区反馈看已经开始出现两个明显信号。第一个信号是数据瓶颈。互联网上的高质量文本是有限存量清洗后的有效数据可能已经接近可提取的上限。继续扩大数据规模重复数据的比例会升高训练收益会下降。第二个信号是能力分布的不平衡。大模型在代码、数学、写作等领域的表现确实惊艳但在多轮交互、长程规划、事实校验、自我纠错这些“需要不断与环境确认”的场景中经常暴露出脆弱性。Sutton 的判断之所以值得关注是因为他不是站在“规模还会继续涨”这一边也不是在唱衰大模型而是在提醒一件事如果学习过程不包含环境反馈模型的天花板就是训练数据所承载的知识上限。换句话说问题不在“模型不够大”而在“学习方式不够完整”。本文会把这个问题拆成三层局部最优的技术含义、模型被困住的机制原因以及持续学习的技术路径和工程落地方式。2. 大模型语境下的“局部最优”到底指什么局部最优是优化理论里的基础概念如果一个解在它邻近的区域内已经优于所有邻居但整体上不是全局最优解那么这个解就是局部最优。经典的比喻是爬山。你在山腰的某个平台往任何一个方向走都不再上升你就被困在当地尽管远处还有更高的山峰。但大模型的“局部最优”和传统的参数优化局部最优并不完全是一回事。对于一个 LLM训练过程确实在优化参数空间中的损失函数但更重要的是它被锁在了三个不同的层面上。第一层是训练数据覆盖的分布。预训练的目标是拟合训练集上的文本条件分布因此模型的能力上限由数据分布决定。如果某个任务在训练数据中很少出现或者从来没有以“试错—修正”的形式出现模型再大也很难凭空获得超过数据覆盖范围的能力。这一层的局部最优表现为模型在你的测试集上成绩很好但在真实环境的开放式任务中表现明显退步。第二层是目标函数所定义的“好”。当前主流的预训练目标是下一个词预测next token prediction微调目标也大多来自静态的人类标注偏好。这个目标函数本身不包含长期回报的概念。模型优化的是“像人类说过的话”而不是“在环境中做出有效行为并获得正反馈”。因此它学到的是一个文字分布上的最优而不是一个行为策略上的最优。第三层是部署后的冻结状态。训练结束后模型权重不变它面对的是不断变化的世界。分布偏移distribution shift之后模型的能力会快速衰减而且它自己没有能力感知这一点更不用说在运行过程中自我修正。从系统角度看这个静态部署状态本身就是一种局部最优——模型和真实环境之间没有反馈回路。理解这一点非常重要。因为很多人听说“局部最优”之后第一反应是“那就把模型继续调大一点、训练久一点”。但 Sutton 强调的恰恰是在静态数据上继续优化本质上仍然是在同一个山腰上打转。真正需要改变的是学习范式本身。有人可能会问那 RLHF 不就是在加入反馈吗这里要做一个判断RLHF 本质上还是离线学习。它用人类偏好对一个已经训练好的模型做对齐收集的偏好数据是静态的优化目标仍然是拟合人类标注而不是让模型真的去环境里探索。它是从监督学习走向强化学习的过渡台阶但还不是 Sutton 所说的“持续学习”。3. Sutton 的一贯逻辑从“痛苦教训”到交互式计算如果你看过 Sutton 在 2019 年发表的那篇著名文章《The Bitter Lesson》你会对他的新判断有很强的熟悉感。那篇文章的核心是AI 研究在过去七十年得到的最重要的教训是利用算力进行大规模搜索和学习长期来看总是会战胜研究者手工设计的精巧机制。他举了很多例子。最典型的是围棋。早期围棋 AI 依赖大量人类棋谱和专家特征工程研究者花费大量精力设计评估函数和搜索剪枝策略。当时看起来那是一条聪明的路。但 AlphaGo 最终证明真正有效的方案是把通用算法、深度网络、自我对弈和蒙特卡洛树搜索结合起来让系统通过大量“交互—反馈”来学习。人类棋谱起作用了但只是个起点。真正让系统突破人类经验上限的是自我对弈和搜索产生的海量新经验。这个案例背后是一条非常清晰的逻辑链从手工特征到自动学习从静态数据集到交互式生成数据。Sutton 一直相信智能不是被注入到模型里的而是在“行动—观察—修正”的循环中涌现出来的。从公开的访谈和观点看他对当前大模型的评价也可以放进这条逻辑线里。他认可大规模语言模型在表示知识方面的能力但这只是第一步。如果模型只学习预测文字却没有办法通过行动来验证“它对世界的理解是否正确”它就停留在“录像带回放”式的学习阶段。一个能理解句子结构的模型和一个能理解如何在真实世界中行动并承担后果的模型中间隔着一条巨大的鸿沟。需要说明的是这些是对他公开观点的一致性推理并非逐字的演讲记录。但即使只看技术逻辑方向也足够清晰下一阶段的 AI 不能只吃数据要开始和环境交互。4. 大模型为什么会被困住四个结构性原因如果局部最优只是理论层面的说法可能显得空泛。这里从工程角度拆解四个更具体的机制原因。4.1 静态数据快照当前大模型的训练数据基本上是互联网内容的一次性快照。模型训练完成后它所有的“经验”都来自这份快照。问题是真实世界的信息是持续变化的而模型没有任何手段感知这种变化。更关键的是训练数据里记录的是“人类如何表达”而不是“行为之后发生了什么”。模型学到了大量陈述性知识却缺少程序性知识——也就是在面对一个新场景时应该采取什么动作、动作之后要如何修正。4.2 目标函数缺少回报维度预训练阶段的损失函数本质上衡量的是“模型对下一个词的预测与真实文本的差距”。这个目标是二维的已知上文预测下文。它没有第三个维度这样做的结果是好是坏。例如模型可以写出一段看起来非常流畅的代码但这段代码能不能编译通过、测试用例能不能跑过、运行性能是否合格这些信息根本不会进入预训练损失函数。模型对“代码语法结构”的掌握来自数据统计对“代码行为正确性”的掌握却需要通过运行反馈来获得而这种反馈并不在训练信号中。4.3 权重冻结与分布偏移工程部署上大多数模型训练完就冻结权重。推理时即使发现答错了模型也不会调整自己。遇到分布偏移比如用户提问方式变了、业务数据格式变了、世界局势和产品条款变了模型的表现只会越来越差而不会自动适应。解决这个问题传统做法是定期人工收集新数据重新微调但这种做法成本高、周期长而且很难形成实时反馈回路。持续学习的价值就在于把“重新训练”变成“在线更新”。4.4 没有自主探索的动作空间大模型的推理过程虽然带有随机采样但这种随机性不属于结构化的探索。它只是在给定分布内产生不同文字而不是在“候选动作空间”中有目的地尝试并根据结果调整策略。AlphaGo 厉害的并不是它输出的棋步多样性而是它会自我对弈每走一步都能看到结局然后根据胜负信号更新价值判断。当前 LLM 没有这样的动作空间也没有环境返回结果。没有试错通道就算有学习算法也没有可以用来学习的经验数据。这四条原因叠加在一起产生了一个系统性的结果模型在同一条爬山路径上被固定住了。它可以在静态数据构造的“局部山头”上性能越调越好却永远看不到更远处的高峰。5. 持续学习的技术路径正在发生什么讨论完问题再看解法。当前有一个明显趋势把强化学习和语言模型结合从“离线拟合”过渡到“在线交互”。这条路径上已经出现了一些阶段性成果和清晰的技术分支。5.1 RLHF 是过渡不是终点RLHF基于人类反馈的强化学习是目前最广泛应用的方案。它引入了一个奖励模型这个奖励模型根据人类偏好给生成内容打分然后用 PPO 等强化学习算法更新语言模型。这个方案比纯 SFT 往前迈了一步因为它引入了“偏好信号”。但它的奖励来源仍然是人类离线标注奖励模型也是静态的。系统没有真正进入环境探索。持续学习要求的是更接近真实目标的奖励信号。5.2 可验证奖励和高确定性反馈现在更值得关注的方向是把奖励建立在客观可验证的结果上。典型例子是数学证明和代码运行。模型生成一段代码后直接放到沙箱环境中编译、运行、检查测试用例用结果作为奖励信号。这个机制绕过了“人类打分”的主观性也绕开了奖励模型作弊的风险。代码环境变成了真正的交互环境模型写代码、环境返回错误信息、模型可以迭代修改。这其实就是 Sutton 强调的“行动—反馈”循环的最小实现。5.3 Agent 与大模型的持续交互只靠模型自己做静态推理是不够的还要给模型装上“行动接口”。当前 Agent 架构做的事情本质上就是这件事把模型接到工具、代码解释器、数据库、浏览器等外部环境中让模型可以主动调用工具获得结果再继续决策。工具调用结果就是环境反馈。相比让模型从纯文本里学习Agent 架构让模型第一次有了“行为导致的后果”这种训练信号。5.4 世界模型与想象学习模型不可能在真实环境里无限试错成本和安全都不允许。因此世界模型是持续学习路线上的重要基础设施。Sutton 多年前提出过 Dyna 架构核心思想就是把真实交互中学到的知识压缩到一个世界模型里然后在世界模型内部做模拟和规划。这相当于在模型大脑里搭建一个“虚拟训练场”。今天让模型在模拟环境、游戏环境或代码沙箱中大量演练本质上都是世界模型思想的延伸。它让系统可以在安全、低成本的前提下生成海量“经验数据”。5.5 持续学习和元学习持续学习还有一个算法层面的挑战灾难性遗忘。模型学习新任务时很可能覆盖旧任务的知识。解决这个问题需要引入记忆机制、参数隔离、弹性权重巩固或者让模型学会“学会新任务”的元学习能力。虽然这些方向还很前沿但在 Agent 化和在线更新的趋势下它们会成为工程上必须面对的硬问题。判断很明确持续学习并不是某一种算法而是一条完整的技术栈。它需要环境、奖励信号、探索机制、世界模型和在线更新策略配合使用。RLHF 只是这条路上的第一块铺路石。6. 最小可运行示例从静态模型到在线交互学习理解了方向之后我们把它落到代码层面。这里用一个最小示例演示三件事静态训练的局限、带反馈的策略更新、以及把大模型放入环境的运行流程。代码刻意保持精简重点不是工程完备而是把持续学习的核心机制讲清楚。6.1 静态训练与在线学习的对比# 对比演示静态训练 vs 在线交互学习 # 静态训练一次训练权重永远不再更新 def train_static_model(train_data, model, optimizer, epochs10): for _ in range(epochs): for batch_input, batch_label in train_data: loss compute_loss(model(batch_input), batch_label) loss.backward() optimizer.step() # 训练结束权重冻结模型不再变化 return model # 在线交互学习边与环境交互边更新策略 def online_learning_loop(model, env, update_fn, max_steps100): state env.reset() for _ in range(max_steps): action model.select_action(state) # 决策生成动作 reward env.execute(action) # 反馈环境返回结果 model update_fn(state, action, reward, model) # 学习用反馈更新 if env.is_terminal(): break return model这段代码给出了两条路线的骨架。静态训练的问题在于loss 只来自历史数据数据分布不会因为模型行为而改变。在线学习则不同模型的行为会影响环境状态环境状态和奖励又反过来指导模型更新。两者最本质的差别就是有没有“行为产生后果后果指导后续行为”的闭环。6.2 策略梯度更新REINFORCE 最小实现要让语言模型学会根据反馈调整自己可以用策略梯度方法。下面是一个简化版本的 REINFORCE 逻辑模型生成一句话环境给出一个标量奖励然后根据“这条路径下每个 token 的 log 概率”和“奖励的值”计算一个可优化的 loss。import torch import torch.nn.functional as F # 简化示例计算一条回答的累积对数概率 def sequence_log_prob(model, input_ids, response_ids): model: 策略模型输入完整序列的 token 列表 input_ids: 提示部分的 token ids response_ids: 模型生成的回答 token ids log_probs [] for t in range(len(response_ids)): full_input torch.cat([input_ids, response_ids[:t]], dim-1) logits model(full_input) # 前向计算 log_probs.append(F.log_softmax(logits, dim-1)[0, response_ids[t]]) return torch.stack(log_probs).sum() # 策略梯度更新奖励高则增大这条回答概率奖励低则降低 def reinforce_update(model, optimizer, input_ids, response_ids, reward): log_prob sequence_log_prob(model, input_ids, response_ids) policy_loss -log_prob * reward # 梯度上升最大化期望回报 optimizer.zero_grad() policy_loss.backward() optimizer.step() return policy_loss.item()这个示例虽然简单但展示了持续学习的关键数学机制如果模型写代码后测试通过正奖励那么这条回答的概率会被调高如果运行失败负奖励下次生成类似内容的概率会被调低。通过多轮这样的“生成—运行—更新”模型会逐步把策略分布推向高回报区域。6.3 把大模型放进一个可反馈的环境持续学习不能只靠损失函数还要有一个能返回奖励信号的“环境”。下面用一个代码任务作为最小案例让模型写一个函数然后用测试用例验证正确性。# 最小环境代码执行沙箱演示用生产环境请使用隔离容器 class CodeTaskEnv: def __init__(self, task_desc: str, test_cases: list): self.task_desc task_desc self.test_cases test_cases # [(输入, 期望输出), ...] def reset(self): return self.task_desc def execute(self, generated_code: str) - float: 运行模型生成的代码根据测试通过率返回奖励。 真实环境中应采用沙箱执行并限制资源。 passed 0 namespace {} try: exec(generated_code, namespace) for input_value, expected in self.test_cases: try: result namespace[solution](input_value) if result expected: passed 1 except Exception: continue except Exception: pass return passed / len(self.test_cases) # 主流程多轮生成、执行、更新 def agentic_training_loop(model, optimizer, env, max_rounds16): for _ in range(max_rounds): prompt env.reset() response model.generate(prompt) reward env.execute(response) reinforce_update(model, optimizer, prompt, response, reward) print(f当前轮次奖励: {reward:.2f})这里真正值得注意的地方有两个。第一由于模型可以在多轮训练中看到自己的错误输出和对应的低奖励它可以逐步学会避免语法错误和逻辑错误而不是只模仿训练集里的代码风格。第二测试用例本身就是持续变化的环境状态这意味着模型面对的不是一个固定的标签集合而是一个动态的真实任务流。6.4 一个可复制的训练配置模板实际项目中在线强化学习的配置项很多。下面给出一份通用配置模板你可以根据自己的任务类型调整算法、奖励来源和探索参数。# 强化学习微调配置示例rl_finetune.yaml rl: algorithm: ppo # 可选ppo / reinforce / dpo reward_source: verifier # 可选human_feedback / verifier / environment rollout_batch_size: 64 # 每轮采样多少个回答 update_epochs: 3 # PPO 内部更新轮数 kl_coef: 0.05 # KL 惩罚系数防止偏离参考模型过远 learning_rate: 1e-6 max_turns_per_episode: 5 # Agent 一轮最多交互几步 exploration: temperature: 1.0 # 采样温度越高探索越强 top_p: 0.95 safety: max_gen_length: 2048 enable_content_filter: true几个关键参数值得解释。rollout_batch_size决定了每轮训练产生多少样本这直接影响探索覆盖度和训练稳定性。kl_coef是持续学习里不可忽视的红线如果完全不限制策略和参考模型的 KL 距离模型在探索过程中可能崩溃成乱码。temperature控制探索强度但探索不只依赖采样温度还要依赖环境本身提供的多样性任务。7. 常见误区与工程落地建议持续学习听起来很美好很多人容易在一开始就走偏。这里先整理几个高频误区再给出工程建议。7.1 常见的四个误区误区实际情况工程后果把 RLHF 当成真正的强化学习RLHF 的奖励来自离线人类标注模型没有与环境在线交互长期迭代慢无法适应动态环境认为持续学习就是不断 SFT单纯在新增数据上继续监督微调容易灾难性遗忘旧任务能力下降新任务能力也不稳定以为局部最优只是参数问题更本质的是数据分布、目标函数和部署模式三者共同锁死的能力空间只扩大模型规模解决不了瓶颈把随机采样当成探索单纯调高 temperature 不是结构化探索模型无法从反馈中定位错误原因训练轨迹混乱难以收敛这四个误区的共同根源是把“持续学习”理解成一种训练技巧而不是一种系统形态。持续学习要求环境、奖励、探索、记忆、安全约束同时存在。7.2 从静态评测走向环境评测如果你正在做 Agent 或者模型应用最直接的改变就是把评测方式从“刷静态 benchmark”改成“在环境里跑任务”。比如测试一个编程助手不要只看它生成的代码通过率还要看它拿到报错后能否自行定位 bug、修改代码、二次运行。后者才是持续学习能力的基本形态。静态评测只能衡量模型记住的能力环境评测才能衡量模型面对新情况的应变能力。7.3 给模型留一条安全退路在线学习的危险在于模型在探索阶段可能生成不可控的行为。工程上必须为探索加上边界。最小集包括参考模型约束KL 惩罚、内容安全过滤、资源限制沙箱、人工中断开关。对于高风险系统初期建议用离线对比验证的方式模拟在线更新先在旧数据上回放训练流程验证新策略不会让已有能力大幅退化再逐步灰度到线上。7.4 用日志与回滚管理在线迭代持续学习系统比静态模型复杂得多每一轮更新的数据来自当前策略的探索结果这一步如果不做记录后面会很被动。完整记录每一轮的提示、模型输出、奖励值、KL 距离、策略更新前后的效果差异是系统可维护的底线。上线策略永远要备份上一版本更新效果不达标时快速回滚。没有回滚机制之前不建议在生产环境做任何在线更新。8. 下一阶段的竞争点在哪里Rich Sutton 的判断其实给技术社区提了一个很现实的问题如果大模型只是局部最优那么下一阶段的工作重心和资源投入应该放在哪里从算法看重点会从预训练数据规模转向强化学习算法本身的效率问题包括奖励设计、探索机制、离线与在线策略的匹配度。从工程看重点会从模型参数管理转向环境建设和反馈链路建设沙箱、模拟器、工具接口、数据回放系统这些“AI 基础设施”的权重会明显上升。从应用看能够把静态模型改造成“有反馈环路的学习系统”的团队会比单纯调用 API 的团队拥有更深的竞争壁垒。对普通开发者的建议是先把一个静态模型放进一个最简单的环境里跑通一次“生成—反馈—更新”的闭环。这一步规模可以很小但会帮助你真正理解强化学习和持续学习的价值而不是停留在概念层面。在此基础上再去研究 PPO、在线 RL、世界模型、Agent 框架这些更复杂的工具认知效率会比直接啃论文高得多。大模型确实很强但它不会自动变成能够适应世界变化的智能体。从预测到交互从静态到持续这条路才刚刚开始。
返回列表