跳到主要内容
赞助推荐 Claude Team 合租,少折腾账号
AI 大模型 #AI 模型横评

强化学习这十年,走的是一条不断"删东西"的路

19 分钟阅读阅读(103)
#AI 模型横评#MIT《How to AI (Almost) Anything》:多模态 AI 逐讲精读
赞助推荐 团队协作里的 AI 办公工作台

监督学习像一次考试,你答一道题,老师立刻给分。强化学习不是。强化学习是你下一整盘棋,走了几十步,最后才知道这盘赢没赢,而且没人告诉你哪一步是关键的。这个差别看起来只是”反馈给得晚一点”,但它把整套训练范式都拧到了另一个方向上。

这是 MIT《How to AI (Almost) Anything》的第 11 讲(原视频),主题是 强化学习与交互。Paul Liang 用 60 分钟把强化学习从最早的 MDP(马尔可夫决策过程)一路讲到今天 LLM 后训练里的 PPO、GRPO、DPO。听完我最大的感受是:这门技术过去十年的演进,主旋律不是”加东西”,而是”删东西”。

赞助推荐 一人公司 · 创业装备库
赞助推荐 一人公司 · 创业装备库

这一讲的总判断:RL 是在”标注拿不到”时,从结果倒推

Paul 一上来就把 RL 和监督学习摆在一起对比,我觉得这个对比是整堂课的题眼。

监督学习的世界很干净:输入一张猫的图,标签写着”猫”,模型预测错了立刻被打脸。每一步都有 dense reward(密集奖励),每一步都能算梯度。

强化学习的世界则是反过来:你是一个智能体(agent),站在某个状态里,得做一连串决策,环境会被你的动作改变,你跳到新状态,再做新决策,如此循环。奖励常常稀疏到一千步以后才来一次:机器人扫完整层楼才知道这次任务算不算成功,语言模型生成一千个 token 之后人类才给一个”喜欢/不喜欢”。

这个差异看起来只是”反馈滞后”,但带来一整串麻烦:你不知道这一千步里哪一步是关键、奖励信号噪声大、环境本身在变、策略也在变,两边都在动。Paul 反复强调,RL 的难,本质就是这个:当你拿不到逐步标注、只能从最终结果反推的时候,你怎么把信号一路传回去。

这门课不打算把 RL 的所有细节讲全,Paul 自己开场就说了。他要讲的是”为了理解今天 LLM 后训练里的那套 RL,你最少需要懂多少”。结果整堂课就像一条主线非常清楚的路径:从最早的策略梯度,到 actor-critic(演员-评论员),到 PPO,再到 GRPO,再到 DPO,每一步演进的方向都是把上一代里的某个组件干掉。

把世界写成 MDP:状态、动作、奖励、折扣

要把”反馈滞后”这件事数学化,经典办法是写成 MDP(马尔可夫决策过程)。Paul 一句话讲清楚了它的四件套:

  • 状态(state):你此刻看到的世界。机器人是它当前的坐标,语言模型是它已经生成的那串词。
  • 动作(action):你能做的事。机器人是上下左右,语言模型是下一个 token。
  • 转移函数:在某个状态做某个动作,会跳到哪个新状态。有时候是确定的,有时候带随机性。
  • 奖励函数:做了某个动作之后环境给你打多少分。这分可以是”任务完成了”、可以是”花了多少资源”,也可以是”用户满不满意”。

最不起眼但最关键的是折扣因子(discount factor),通常写成 0.9 这种小于 1 的数。它的意思是:今天到手的奖励比明天的更值钱,五百步之后的奖励要打折再打折。这不只是一个数学技巧。课上有个学生问了一个很到位的问题:做手术的医疗 RL 系统,是不是有时候哪怕结果更好,你也不想等太久?Paul 说对,折扣因子就是用来表达”早一点拿到更重要”的。在很多情况下折扣因子是算法能不能收敛的关键,没有它,算法会一直往未来追那点小奖励,跑不停。

策略(policy)就是从状态到动作的一个分布。它可以是确定的(在 A 状态就一定向前),也可以是随机的,今天 LLM 的 temperature 参数就是策略里的那点随机性。RL 的目标就一句话:学一个策略,让长期累计折扣奖励最大。

模仿学习不够:专家不会教你怎么从坑里爬出来

最朴素的做法是:既然 RL 难,我能不能直接把监督学习套上来?Paul 用自动驾驶举了一个我特别喜欢的例子。

你想训一个自动驾驶策略。状态是挡风玻璃前的画面,动作是方向盘怎么转。最简单的办法:找一堆人类老司机开车,记录每一帧画面和他们当时的方向盘动作,然后训一个分类模型,看一帧画面,预测人当时会怎么转。

这就是模仿学习(imitation learning)。它在原型阶段经常能跑起来,但在真实部署里几乎一定崩。原因 Paul 讲得特别直白:专家从来不示范错误

老司机不会偏到对向车道,也不会差点撞上停车标志,所以你的数据集里全是”正确路径上的正确动作”。模型只学会了”如果你在正确的路上,该怎么继续开”。一旦它自己开偏了那么一点点,进入了一个它在训练数据里从来没见过的状态,它就傻了,因为没人示范过”从这个尴尬的位置怎么修回来”。

这就是 RL 教材里反复强调的 distribution mismatch(分布偏移):训练时看到的状态分布,和真正部署时模型自己走出来的状态分布,根本不是同一个东西。光靠模仿学不到怎么从坑里爬出来。你必须让策略自己探索,自己犯错,自己见到那些”专家不会去的状态”,并从那里学到如何恢复。

这一节看起来是在讲模仿学习的局限,实际上是在解释 RL 为什么必须存在。

两条路:模型基的树搜索,策略基的直接学

接下来 Paul 把 RL 切成两个大流派,我觉得这个切法对理解后面 LLM 那一段特别有用。

模型基(model-based)RL:你心里画一棵树。当前状态是根节点,每个动作分出几个分支,每个分支又导向新的状态。你的任务是给每个节点估一个值,叫状态价值函数 V(s),意思是”如果我现在站在这个状态、按当前策略走下去,我未来累计能拿多少奖励”。或者更细一点,估状态-动作价值 Q(s,a),意思是”在这个状态做这个动作,未来累计能拿多少”。

经典的 AlphaGo 就是这一路。棋盘是状态,落子是动作,Paul 直接点了出来:AlphaGo 训了一个 CNN,输入是棋盘截图(它把棋盘当图像处理),输出就是这个棋盘的长期 V 值,也就是”我从这里走下去最后赢的概率有多大”。一旦你把每个节点的 V 估准了,下棋就退化成一个树搜索问题:在每一步取 V 最大的分支就行。这种方法擅长”提前在脑子里推演”,但工程上很复杂,你得维护和更新整棵价值树。

策略基(policy-based)RL:不画树,不估每个状态的价值,直接学一个从状态到动作的函数,而且直接对它求梯度。Paul 用乒乓球游戏 Pong 解释这个流派。屏幕是状态,动作只有两个:拍子向上还是向下。一局打完你赢或输,赢=+1,输=-1。

最早的算法 REINFORCE 想法极其直白:让模型自己玩一轮,赢了的那串动作整个加权 +1,输了的那串动作整个加权 -1,把这个奖励乘上各个动作的对数概率,梯度上去更新。听起来粗暴,但它是后面所有现代算法的祖先。

两条路 Paul 没有评孰优孰劣。模型基方法样本利用率高、能做规划,但实现复杂;策略基方法实现简单,但样本饿。今天 LLM 这边几乎一边倒地走策略基这条路,因为生成 token 这件事天然就是”从策略里采样”,根本没办法预先画出整棵树。

从 PPO 到 GRPO:每一代都在删一个组件

策略基方法的故事真正开始于 2015 年之后。Paul 把现代 RL 的演进画成了一条”不断简化”的脉络,这是我整堂课最受启发的部分,值得慢慢讲。

第一代痛点是方差太大。REINFORCE 直接用裸奖励算梯度,但裸奖励本身可能根本不可比:有些游戏永远是正分,你只想拿更多正分;有些游戏永远是负分,你只想离 0 近一点。直接看绝对值没用。改进办法是减一个 baseline:看你这次的奖励比”平均水平”高多少,而不是看绝对值。

第二代 Actor-Critic:把 baseline 从”奖励滚动均值”升级成一个学出来的价值模型 V(s)。这下你需要两个网络:演员(actor)学策略,评论员(critic)学每个状态的价值,二者一边互相打架一边共同进步。GAN 难训的所有问题在这里都出现了。Paul 顺手提了一句:这套架构 2016 年到 2020 年统治了深度强化学习,机器人、Atari 游戏、AlphaStar 全是它的天下。

第三代 PPO(近端策略优化):Actor-Critic 还有一个新麻烦,更新一步策略,可能就把它推得离原来太远,直接崩了。最早 TRPO 用 KL 散度去严格约束”新策略不能离旧策略太远”。PPO 是个工程简化版:别算什么 KL 了,直接把新旧策略概率比 clip 在 [1-ε, 1+ε] 这个范围里,粗暴但好用。PPO 是 RLHF(基于人类反馈的强化学习)最早用的那个算法,GPT 训练成今天这副可对话的样子,中间这一步就是 PPO。

PPO 用在 LLM 上时,这套机器有多少个组件?Paul 在屏幕上列了一长串:策略模型(被训练的 LLM 本身)、参考模型(上一步的 LLM,用来算 KL 防止跑偏)、奖励模型(从人类排序里学出来的,负责打分)、价值模型(critic,负责估每个 token 位置的平均价值)。四个模型一起转,工程复杂度爆炸。

第四代 GRPO:DeepSeek 那篇论文把这件事简化了一大刀。它说,价值模型干嘛要学?我每个 prompt 直接采样一组(group)响应,组内每个响应都打分,组内的平均分天然就是 baseline,我直接用”这个响应的奖励减去组内均值再除以组内标准差”当 advantage 不就行了? 价值模型整个被删掉。Paul 转述了一条 X 上的评论:”为什么从来没人这么干过?其实最早的 REINFORCE 算法用的 baseline 就是几条 trajectory 的奖励均值,GRPO 不过是把这个朴素办法又捡回来了,只是这次组够大,统计够稳。”

第五代:把奖励模型也删掉。Paul 提到了再往后的演进:奖励模型本来是为了模仿人类偏好,但如果任务是”代码能不能跑通”、”测试通过几个”、”输出格不格式合规”,根本不需要学一个奖励模型,写一段规则验证器(rule-based verifier)就能打分。又少一个要训的东西。

把这条主线一句话总结:PPO 删了 KL 显式约束(改成 clip),GRPO 删了价值模型(改成组内统计),verifier 又删了奖励模型(改成规则)。十年下来,RL 的核心算法越来越像 REINFORCE,只是基础设施和打分能力变强了。

我觉得这条主线值得每一个做工程的人看看。它说明在算法演进里,真正的进步常常是”我们以前以为不能省的那一步,其实可以省”,而不是堆叠更复杂的结构。

DPO:连 RL 这一步也想绕过去

讲到最后 Paul 顺手提了 DPO(直接偏好优化)。它的野心更大:连 RL 都不做了。

PPO 那条路线是”先用偏好数据训一个奖励模型,再用奖励模型做 RL 微调”。DPO 说,这两步合一,直接在偏好数据上跑监督学习式的优化,数学推导上等价于”在某种隐含奖励下做 RL”。它的好处是省得在线采样,直接在固定的偏好对儿数据集上算梯度,工程上比 PPO 简单得多。

Paul 用一个对比帮我们 get 到差别:把训练自动驾驶想象成两种模式。一种是把策略部署到车上,车一边跑一边收集新数据、一边更新模型,这是 PPO 那一类的在线 RL。另一种是看一堆别人开车的录像,我自己不上路,只从历史录像里学,这是 DPO 那一类的离线 RL。两边各有信徒,但 DPO 的工程吸引力是实打实的。

到这儿这一讲的算法线就讲完了。回头看,从 REINFORCE 一路走到 DPO,每一步都是在用更简单的形式去替代上一代的某个组件

我会怎么用 / 放到机器人上看

我做的是清洁/服务机器人的云服务,RL 这套理论在我们这儿不是论文,是工程现实。讲完这堂课,我脑子里立刻浮起几个对照。

第一个对照,模仿学习的坑我们天天踩。机器人上线一个新商场,我们当然希望它一上来就会走。最直接的办法是把另一个商场跑过的轨迹拿过来”模仿”,结果就是 Paul 描述的那个状况:专家路径上跑得好好的,一旦遇到训练里没见过的状态(玻璃门反光让激光雷达突然空一段、地面打滑让里程计漂了 30 公分、有个孩子突然窜出来),它没看过怎么修,就卡在那儿原地打转。专家从来不示范错误这句话,对应到现场就是:示范轨迹永远是”扫得干干净净那次”,你永远学不到打滑后怎么恢复定位、雷达失效后怎么靠相机硬撑。

第二个对照,稀疏奖励正是现场的核心难题。一台机器人扫完整层楼,我们才能给一个”这趟干得怎么样”的最终评分(覆盖率、漏扫率、用户投诉)。中间每一步该怎么打分?自动避障一次该奖励多少?在玻璃门前停下来不撞算几分?这就是 Paul 说的”sparse reward 把信号往回传”那个问题。今天我们工程上的解法很土:手写一堆 shaping reward,撞一下扣多少、绕路多少米扣多少、识别到玻璃门加多少。这些手写规则一多,就跟课上提到的”reward hacking”完全对得上,机器人会找出你规则的漏洞,做出一堆看上去”得分高”但其实不干活的动作。

第三个对照,在线 vs 离线 RL 就是我们的版本管理日常。Paul 那个自动驾驶的类比我直接拿来用:我们能不能让上线的机器人一边跑一边更新策略?答案是不能,出事不可控,客户也不接受。所以我们只能走离线 RL 这条路:线上机器人产生海量轨迹日志回流到云端,我们在云端把”好轨迹”和”坏轨迹”配成偏好对儿(用户投诉的就是坏的、清洁主管打高分的就是好的),用 DPO 那套思路在离线数据上更新策略,再以版本发布的形式推回去。机器人车队的更新节奏从来不是 online RL,是 offline RL 加灰度发布

第四个对照,GRPO 那个”组内对比”的思想可以迁移。我们做云端的路径策略评测,本来习惯给每条轨迹打一个绝对分(覆盖率几个百分点),但这个绝对分受地图复杂度影响很大,不可比。受 GRPO 启发,同一个商场同一天采样多条策略跑出来的轨迹放一组、组内相对打分,这个 baseline 比拍脑袋定阈值靠谱得多,它把”今天这地特别脏”这种环境因素自动抵消了。这就是组内统计代替绝对值的工程价值。

把这一讲放到我们机器人现场,最大的收获其实不是某个具体算法,而是 Paul 反复强调的那个思路:RL 难,难在”你拿不到逐步标注,只能从结果倒推”。这句话扣回我们现场,就是承认我们手里那点稀疏的、嘈杂的、迟到的信号,是这个问题域的真实样貌,优化算法的全部努力,都是为了把这点信号尽量用足。

收束

这一讲在课程里的位置很关键。前面十讲讲数据、讲架构、讲多模态、讲大模型,都是在静态地处理数据。从这一讲开始,模型不再只是”看”,而是开始”做”:它要在一个会因它的动作而改变的环境里,持续地决策、试错、调整。这是从”感知”迈向”行动”的那一步。

我会记住一件事:这十年 RL 的演进主旋律是删东西,不是加东西。下次再看到一个看起来无比复杂的 pipeline,先问一句:这里面有多少组件,其实是可以删掉的?

下一讲是这门课的收官,讲人机交互和 agent 的安全部署。从这一讲的”模型自己做事”,顺到下一讲的”模型和人一起做事”,收尾收得正好。

本系列

MIT《How to AI (Almost) Anything》共 12 讲,这是我的逐讲解读:

  1. 这门 MIT 课不教模型,教你怎么”想” AI
  2. 怎么做 AI 研究:读论文、找想法、快速验证
  3. 数据、结构与信息
  4. 实用 AI 工具
  5. 常见模型架构
  6. 多模态对齐
  7. 多模态融合
  8. 跨模态迁移
  9. 大型基础模型
  10. 大型多模态模型
  11. 强化学习与交互 (本篇)
  12. 人机交互
赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型
赞(0)
未经允许不得转载:80aj » 强化学习这十年,走的是一条不断"删东西"的路
赞助推荐 低成本上手 Claude Code 的中转选择
赞助推荐 低成本上手 Claude Code 的中转选择
赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型