资讯动态

大模型陷入局部最优?Rich Sutton 论持续学习与 AI 系统进化路线

发布时间:2026/10/9 8:11:52 来源:尧图企业网站定制
这次我们拆一个观点而且拆的是一个重量级人物的判断强化学习奠基人 Rich Sutton 最新指出大模型已经困在静态数据训练带来的“局部最优”里下一步的关键不是继续堆参数、堆语料而是让 AI 真正学会“持续学习”。这句话不是学术圈的抽象感慨它直接关系到当前大模型微调、Agent、RLHF、企业私有化部署这批工程实践怎么选型。很多人现在做的事情本质上是在一个固定训练好的模型上做局部修补而 Sutton 问的是模型上线之后能不能从每一次使用、每一次反馈、每一次环境交互里继续变强如果不能大模型就是一个极其强大的“静态拟合器”而不是一个持续进化的智能体。本文就把“局部最优”这个说法拆成可验证的技术事实讲清楚为什么 RLHF 不算持续学习再给出参数层、系统层、策略层三条可落地的改进路线附代码模板和排查清单。适合正在做大模型微调、Agent 系统、模型 API 服务或者正在观望模型演进路线的工程师阅读。信息量比较大建议先收藏。1. Rich Sutton 判断的核心信息速览先给一张速览表把这次讨论的关键维度列清楚后面逐项展开。维度说明提出者背景Rich SuttonTD 时序差分学习提出者Sutton Barto 合著《Reinforcement Learning: An Introduction》长期从事强化学习与智能体研究核心判断大模型在固定静态语料上完成预训练后权重基本冻结缺乏从真实交互经验中持续改进的机制处于“局部最优”问题指向Next-token prediction 目标、固定语料一次性拟合、评测套件过拟合、RLHF 仍依赖静态偏好数据解法方向持续学习、在线经验回放、环境交互与强化学习闭环、记忆系统、数据飞轮涉及关键技术EWC/LWF 正则、Experience Replay、RLHF/PPO/DPO、RAG 外部记忆、Agent 环境反馈对工程的影响微调前先建评测门禁部署时考虑模型版本演进、灰度与回滚反馈数据要合规采集适合读者大模型微调工程师、Agent 系统开发者、模型服务化与 MLOps 工程师、算法研究者合规边界用户反馈、RLHF 标注、私人数据采集必须获得授权做脱敏与最小化处理单独看“局部最优”四个字听起来像优化理论术语放到大模型语境里它描述的是一个非常具体的事实模型的训练目标、训练数据、训练终点都是固定的训练结束之后经验和反馈进不了权重。2. 为什么说大模型被困在“局部最优”把“局部最优”翻译成工程语言其实是三层事实叠加。第一层预训练的目标函数是静态拟合。当前主流大模型的预训练目标很统一在固定的大型互联网语料上做 next-token prediction也就是学习给定上文条件下下一个 token 的概率分布。这个目标函数一旦确定整个训练过程就变成在一个静态数据分布上做大规模优化。算力足够、训练充分之后模型会收敛到该目标函数附近的最优解——这就是 Sutton 语境下的“局部最优”。它不是贬义而是说你在一个固定目标上做到了很好的位置但这个目标本身不随世界变化。第二层训练结束后权重冻结。绝大多数模型的部署方式是预训练权重保持不变后续通过 SFT、RLHF 或 LoRA 微调做有限修正然后进入服务。上线之后用户每一次提问、纠错、反馈都不会直接改变模型权重。模型可能会因为上下文信息做“临时修正”但不会形成长期记忆。你今天告诉模型一个事实是错的它明天可能会犯同样的错。第三层评测机制强化了静态最优现象。榜单评测本质上是把模型当作一个冻结的快照去测试。评测集不变模型不变分数自然稳定。但如果把模型放进真实业务用户问题的分布、知识的新旧、交互的复杂度都在变静态最优就会很快失效。这也是为什么很多团队发现榜单分数涨线上体验却并不涨。更值得注意的是一点RLHF 这个“强化学习”环节看似引入了反馈但它用的还是静态偏好数据。人类标注员在固定时间段内按固定标准给样本打分奖励模型在固定分布上训练策略模型对着这个奖励模型优化。整个过程没有开放环境探索没有新经验持续流入。用一句话概括RLHF 是在一个封闭房间里做强化学习而不是在真实世界里持续学习。3. Sutton 的立场从“数据拟合”到“经验累积”要理解这个判断得先看 Sutton 的技术底色。Sutton 是强化学习领域的奠基性人物之一提出过 TD 时序差分学习和 Barto 合写的强化学习教材是行业内最经典的入门书之一。他的核心思想可以概括为智能体应该通过与环境持续交互来改善自身行为预测和行动都从经验中来而不是把人类已经知道的知识直接注入模型。2019 年他发表了著名的《The Bitter Lesson》核心观点是随着算力增长通用方法配合大规模搜索与学习长期来看会击败那些精心设计的人类先验知识。这个观点在当时针对的是棋类 AI、语音识别、计算机视觉这些领域里手工特征和规则被深度学习追平甚至反超的现象。放到今天的大模型语境里Sutton 的态度其实很一致大模型在海量数据上的预训练本身就是“通用学习方法”的胜利但它只完成了学习的前半段——从静态数据中学习后半段从持续变化的交互经验中学习还没有真正展开。从公开观点看Sutton 对当前大模型路线的批评集中在一点数据不动、权重不动、经验进不来。模型再大如果只是在训练时一次性看完全部数据然后冻结权重进入部署它就缺少了强化学习最核心的“策略改进”回路。真正意义上的持续学习是智能体在部署环境下继续感知、行动、获得奖励、更新策略形成闭环。这也是“局部最优”这个比喻最尖锐的地方一个冻结在固定数据分布上的模型无论推理时怎么发挥都只能在已经学到的参数空间里做插值。想跳出这个局部最优唯一的路径是让新的经验重新进入学习过程。4. 持续学习的三条技术路线从工程角度看持续学习不是一个单一算法而是分层的系统能力。这里给出三条可落地的路线每条都附通用代码模板。4.1 参数层面增量训练与防遗忘正则最直接的做法是让模型持续接受新训练把新数据以增量方式喂进去同时防止“灾难性遗忘”。灾难性遗忘是指模型学了新知识后把旧任务的能力严重覆盖掉。目前工业界最常用的缓解手段有三种EWC 弹性权重巩固、LWF 无遗忘学习、经验回放。前两者在损失函数里加正则项让重要参数不要偏离旧值太远后者在训练时混入旧任务代表样本。EWC 的简化实现思路如下# EWC 弹性权重巩固模板需要根据实际模型结构调整 import torch def compute_fisher(model, dataloader, sample_num100): 用旧任务数据估计 Fisher 信息矩阵衡量各参数的重要性。 fisher {name: torch.zeros_like(param) for name, param in model.named_parameters()} model.eval() count 0 for batch in dataloader: logits model(batch) probs torch.softmax(logits, dim-1) for i in range(min(sample_num - count, probs.size(0))): # 从一个类别分布中采样并计算对数概率近似 Fisher sampled_index torch.distributions.Categorical(probs[i]).sample() log_prob torch.distributions.Categorical(probs[i]).log_prob(sampled_index) model.zero_grad() log_prob.backward() for name, param in model.named_parameters(): if param.grad is not None: fisher[name] param.grad.pow(2) count 1 if count sample_num: break for name in fisher: fisher[name] / max(count, 1) return fisher def ewc_penalty(model, fisher, old_params, lambda_ewc1000.0): EWC 正则项限制重要参数相对旧权重的偏移。 penalty torch.tensor(0.0) for name, param in model.named_parameters(): if name in fisher and param.requires_grad: penalty penalty (fisher[name] * (param - old_params[name]).pow(2)).sum() return lambda_ewc * penalty经验回放则更直观把旧数据保留一个子集每个训练 batch 里混合一部分新数据和一部分旧数据避免模型在单一新分布上走得太远。# 经验回放混合新样本与旧样本缓解灾难性遗忘 from collections import deque import random class ReplayBuffer: def __init__(self, max_size20000): self.buffer deque(maxlenmax_size) def add(self, sample): self.buffer.append(sample) def sample(self, batch_size): return random.sample(self.buffer, min(batch_size, len(self.buffer))) # 增量训练时每个 batch 中按比例混入回放数据 def train_step(model, new_batch, replay_batch, optimizer, loss_fn): new_loss loss_fn(model(new_batch[input_ids]), new_batch[labels]) replay_loss loss_fn(model(replay_batch[input_ids]), replay_batch[labels]) total_loss new_loss 0.3 * replay_loss # 回放权重可按经验调整 optimizer.zero_grad() total_loss.backward() optimizer.step()放到大模型上更常见的工程组合是基座模型冻结训练 LoRA 适配器增量数据经过清洗、去重、隐私过滤后和旧任务代表样本混合训练过程配合低学习率和早停。这套方案相对省显存也更容易回滚。4.2 系统层面外部记忆与 RAG参数层面更新的成本高、周期长不适合处理高频更新的知识。更稳妥的做法是让知识存放在外部记忆系统里模型只负责“读取和推理”。这就是 RAG 路线。RAG 的持续学习思路很清晰模型权重不需要频繁变动变的是知识库。新知识写入向量库旧知识定期淘汰检索器负责给出与当前问题最相关的资料模型基于检索结果生成答案。这个方案在很大程度上绕开了灾难性遗忘问题。# RAG 持续记忆模板更新知识库后新知识立即生效 from langchain.vectorstores import FAISS from langchain.embeddings import HuggingFaceEmbeddings embedding_model HuggingFaceEmbeddings(model_nameyour-embedding-model) vector_store FAISS.load_local(index_dir, embedding_model) def ingest_document(doc_path, authorizedTrue): if not authorized: raise PermissionError(文档写入需要授权) docs load_documents(doc_path) # 按你的格式加载比如 txt/pdf vector_store.add_documents(docs) vector_store.save_local(index_dir) def query_with_memory(question, top_k5): docs vector_store.similarity_search(question, ktop_k) context \n.join(doc.page_content for doc in docs) return build_prompt(question, context)注意RAG 不等于真正的权重学习它是“外部记忆 检索增强”的系统级方案。对大部分企业场景这是性价比最高的持续更新方式线上知识过期改知识库即可不需要动模型。但当需要模型内化某种新的推理模式或新的行为偏好时仍然要回到参数增量训练。4.3 策略层面强化学习式自我改进Sutton 强调的持续学习最终指向的是强化学习闭环模型作为策略环境给出奖励策略根据奖励更新。在大模型上这个闭环可以表现为代码执行反馈、搜索检索结果、工具调用结果、人工偏好反馈等。# 大模型 Agent 的简化 RL 训练循环模板 # 完整实现需要 GAE、PPO clip、参考模型约束等这里仅展示数据闭环结构 def collect_trajectory(env, policy_model, tokenizer, prompt, max_steps6): obs env.reset(prompt) trajectory [] for _ in range(max_steps): action policy_model.generate(obs) # 模型产生动作 reward, next_obs env.step(action) # 环境返回奖励与下一状态 trajectory.append((obs, action, reward, next_obs)) obs next_obs return trajectory def update_with_reward(policy_model, trajectories, reward_model, optimizer): for obs, action, reward, next_obs in trajectories: # 简化用奖励作为优势估计 advantage reward logp policy_model.log_prob(action, obs) loss -logp * advantage # 策略梯度 optimizer.zero_grad() loss.backward() optimizer.step()这种路线把模型从“一次性拟合”推向“持续交互改进”。难点不在算法本身而在奖励设计奖励函数如果定义得粗糙模型会走捷径出现 reward hacking即奖励分数在涨真实任务质量在跌。所以工程上必须叠加规则校验、人工抽查和 KL 惩罚并且定期更新奖励模型。4.4 数据层面数据飞轮与评测门禁持续学习真正的瓶颈不是模型结构而是数据质量与迭代流程。一个可运行的数据飞轮应该是反馈采集 → 过滤清洗 → 标注与审核 → 增量训练 → 评测门禁 → 灰度上线。这里给一个配置模板实际项目需要替换路径和参数# 持续学习流水线配置模板 data_flywheel: collect: source: user_feedback_api # 经授权的用户反馈接口 sample_rate: 0.01 # 抽样比例 filter: pii_detection: true # 隐私信息检测 language_filter: zh,en label: human_review: true model_assist: true # 大模型预标注人工复核 train: method: lora base_model: your-llm-path lora_rank: 16 replay_ratio: 0.3 # 旧数据回放比例 regularization: ewc evaluate: regression_suite: eval_set_v1 threshold: 0.95 # 回归套件得分阈值 deploy: strategy: canary canary_percent: 0.15. 持续学习的工程落地要点持续学习落到企业环境本质上是模型系统的版本演进问题。几个关键动作值得提前定好。第一评测先行。任何增量训练之前必须先建一套回归评测集覆盖历史所有重要能力点。增量训练结束后先用这套评测集判断旧能力是否回退。评测集要版本化并且定期加入新的真实困难样本防止评测集本身过拟合。第二反馈采集必须合规且可追溯。用户反馈、纠错数据、偏好标注都要在明确授权的前提下采集做脱敏处理并保留数据来源 ID。用于训练的反馈样本要做人工抽检不能完全信任自动标注。第三版本管理与灰度机制。每次增量训练生成一个新模型版本和训练数据版本、评测结果一起登记。上线时先跑 10% 流量灰度观察生成质量、延迟、用户反馈再决定全量发布或回滚。这个机制比“能不能持续学习”本身更影响线上稳定性。第四接口服务要考虑兼容性。模型持续更新后tokenizer 可能变化、输出风格可能变化、接口字段可能变化。对外 API 要保持版本兼容新模型先走内部分流确认无破坏性变更后再开放给外部调用方。6. 资源占用与性能观察持续学习系统比普通推理服务占用更多资源主要体现在三块。第一块是增量训练。以常见 LoRA 微调为例训练时显存和推理时不一样除了模型权重还要保存梯度、优化器状态和中间激活。行业里常见的做法是用 4-bit QLoRA、梯度检查点、混合精度来压低显存。具体占用和模型规模、LoRA 秩、序列长度、batch size 强相关7B 级模型与 70B 级模型差异很大必须以本机实测为准不要照搬网上的显存数字。第二块是 RL 闭环。强化学习训练需要同时加载策略模型、参考模型、奖励模型显存开销比单纯微调高很多。环境交互生成动作时推理延迟直接决定训练吞吐。如果环境是代码执行器、搜索引擎或浏览器这类外部工具还要考虑 CPU、带宽和工具本身的并发限制。第三块是记忆系统。RAG 的知识库索引、反馈数据的存储、回放样本的存取都会占用磁盘和内存。批量任务设计上要把数据采集、清洗、训练、评测拆成独立任务队列每类任务单独做日志、重试和失败告警。性能观察方法上可以用 nvidia-smi 监控 GPU 显存和利用率用 TensorBoard 记录训练 loss 和评测分数用 token/s 和请求耗时观察推理吞吐。启动服务和训练任务时注意端口与进程规划避免多个任务抢占同一块显存导致 OOM。7. 常见问题与排查持续学习系统最容易踩的坑集中在遗忘、过拟合、奖励崩溃和合规四类。下面给一份排查清单。问题现象可能原因排查方式解决方案增量微调后旧任务能力明显下降灾难性遗忘跑回归评测套件对比新旧权重同批样本输出加入旧数据回放叠加 EWC/LWF 正则降低学习率评测分数上涨但线上体验下降评测集过拟合或数据泄漏检查评测集与训练集重叠度新增盲测样本独立版本化评测集定期换新样本禁止训练时混入评测数据持续学习多轮后输出不稳定新数据分布偏移学习率过大观察 loss 曲线和生成样例缩短单轮步数降低学习率先小批量试点RL 奖励一直上涨但生成质量变差Reward Hacking人工抽查生成结果检查奖励模型是否被钻空子增加规则校验、KL 惩罚、人工复核定期更新奖励模型反馈数据接入后效果没有提升样本偏差或标注质量低抽样计算标注一致性数据清洗、人工审核、按比例采样高质量反馈批量训练任务卡住或超时队列阻塞、显存不足、带宽受限查看任务日志和资源监控指标拆分任务、限制并发、加超时重试和告警模型升级后外部 API 调用异常接口字段或 tokenizer 变更对比版本 changelog 与 HTTP 返回接口版本兼容先灰度再全量保留旧版本可回切8. 最佳实践与合规提醒持续学习这个方向很诱人但建议按下面这套节奏推进避免把系统搞成“自动生成垃圾数据再自动训练垃圾模型”的死循环。先建回归评测再谈增量训练。没有可靠评测门禁之前不要轻率地开启自动学习流程。训练之前先小参数、小数据量试跑确认流程能通、耗时可接受再逐步放大。训练过程中的数据要管理好版本。模型权重、训练数据、评测结果、训练参数必须一一对应。最好的实践是在每次训练前后生成一个可复现的配置快照出现问题时能够快速回到上一个稳定版本。合规是持续学习的硬边界。用户反馈、自动采集的日志、人工标注数据必须遵循授权、最小必要、脱敏的原则。涉及私人信息、人脸、声音、版权素材的内容没有明确授权一律不能进入训练集。模型在持续学习后可能记住训练样本中的敏感内容发布前需要做效果复核和隐私检查必要时进行遗忘或过滤处理。接口服务和批量任务也要限制访问范围。训练数据接口、模型管理接口不要直接暴露在公网建议走内网或加认证。日志和审计记录要保留方便追溯某轮训练数据来自哪里、由谁标注、在什么时间点上线。9. 总结与下一步Rich Sutton 这次判断的真正价值不是否定大模型已经取得的进展而是把注意力拉回到一条被忽视的技术主线上一个智能系统必须能从经验中持续改进自身。大模型在静态语料上完成了一次大规模学习拿到了一个很强的“初始策略”但如果缺少反馈回路这个初始策略就会停留在局部最优。对工程师来最值得做的下一步有三件事第一先给自己正在服务的模型建立一套回归评测集第二梳理现有业务里有哪些可合规采集的反馈信号哪怕只是用户纠错和搜索点击数据第三在可控范围内试一次小规模持续学习闭环比如用代码执行结果做奖励跑一个小参数的策略优化实验记录数据、评测和消耗。局部最优不是终点持续学习才是那个真正难的工程问题。谁能先把反馈闭环做得可靠、合规、可回滚谁就先从“静态大模型”走向“持续进化的 AI 系统”。这个方向值得持续跟踪建议收藏备用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑