本节摘要:强化学习最贵的资产是交互样本。换一个任务就从零学一百万步,既浪费也常常不现实——迁移学习把旧任务的资产(表征、价值、策略)搬到新任务,元学习更进一步,训练一个"见到新任务只需几步就能适应"的学习系统。本节讲清三种迁移对象的取舍、"负迁移"的风险来源、元学习两层循环的机制,以及它们与多任务训练的边界。
先看浪费有多大。一个 CartPole 变体把小车质量改了三成,DQN 从零再学十万步;仓库机器人换了个货架布局,导航策略推倒重来——而人类适应新布局只需走两圈。重学的成本由两部分构成:感知层(怎么理解观测:像素里的物体、力矩与速度的关系)与决策层(知道环境后怎么选动作)。两层里,感知层学到的往往与新任务高度通用——物体的视觉概念不因任务目标而变;决策层则可能完全不同。这个拆解直接给出迁移的第一原则:能迁的是"不变的部分",必须重学的是"变了的部分",迁移失败的根源是认错了哪部分变了。
迁移表征(最常用):冻结或微调旧任务的感知网络(卷积底座),只重训决策头。适用前提是新旧任务的观测同构——同样的传感器、相近的画面分布。代价最小、风险最低,是机器人仿真到现实的常用第一板斧。判断"底座还合不合用"的土办法:把新旧任务的观测各自过一遍底座,比较特征分布的距离,距离突增说明换底座。
迁移价值或模型:旧任务的 Q 函数、世界模型作为新任务的初始化或先验。风险显著升高——价值对奖励设计极度敏感,奖励一变,旧价值就不是"近似对"而是"方向错"。世界模型相对好迁(物理规律不随任务目标变),这也是第 6 章基于模型路线的一个隐藏红利:模型是可复用资产。
迁移策略:直接把旧策略拿来微调(第 6 章 BC 预训练加 RL 微调的骨架正是策略级迁移)。适用前提是任务结构相近;否则策略里的动作习惯会成为"错误先验",微调反而不如从零学——这就引出下一个问题。
迁移不是免费午餐。负迁移的三个典型来源:其一,先验冲突——旧任务的"好习惯"在新任务里是坏习惯(赛车道上学的贴内线超车,搬到闹市是事故配方),微调把策略拽出坏习惯的速度可能比从头学还慢;其二,表征错位——底座特征对旧任务敏感的维度恰是新任务需要忽略的,特征越"优秀"越带偏见;其三,容量挤占——多任务共网时任务间梯度打架(第 5 章 A2C 共享底座的梯度互扰是它的双人版)。工程上的防御三板斧:小学习率微调(先验只许轻摇不许推翻);分层冻结(先训决策头,稳定后再放开底座);多任务时给各任务损失加权并监控梯度范数比。
一个值得记住的数字感觉:迁移的收益曲线是倒 U 的——新旧任务差异越小收益越大,但完全相同的任务没有迁移意义;差异增大,收益先降后穿底(负迁移区)。动手项目里建议先做"差异评估"再决定迁移深度,评估方法就是分别从零训一个便宜的基线,看迁移起点是否真的更快、终点是否真的不低。
元学习把"适应"本身当作优化目标。MAML(模型无关元学习)的设定:一族任务(比如一百种不同摩擦力的半猎豹),要求训练出参数 θ,使得对任何新任务,只需几步梯度下降就能到达该任务的好策略。实现是内外两层循环:内层在单个任务上走 k 步普通梯度下降得到任务专属参数 θ_k;外层回看"这 k 步之后离好策略还有多远",把这个"适应后的损失"对 θ 求梯度并更新——θ 被优化的不是"在当前任务上表现好",而是"容易被少量梯度调整到任何任务上表现好"。直觉上,θ 学到了这族任务的共同结构(物理规律、观测语义),每个新任务只需在这份底稿上做小修。
# MAML 一步元更新的骨架(伪代码) theta = init() for batch_of_tasks in meta_train: outer_grad = 0 for task in batch_of_tasks: # 外层:一族任务 f = theta.clone() for _ in range(k): # 内层:k 步普通梯度下降 f = f - alpha * grad_loss(task, f) outer_grad += grad_loss(task, f) # 对"适应后的参数"求损失梯度 theta = theta - beta * outer_grad / len(batch_of_tasks)
实现上有一个著名工程难点:外层梯度要穿过 k 步内层更新(二阶导),需要二阶实现或一阶近似(FOMAML 直接用适应后参数的梯度,实践中常够用)。元学习与迁移的边界一句话:迁移把资产搬过去,元学习把"搬运与修整的方法"本身学出来——前者省一次适应,后者把适应成本压到常数。
给一个可执行的组合拳次序。第一步,判断任务族差异:观测同构吗、物理规则变吗、奖励结构变吗。第二步,按差异选迁移深度:同构观测选表征迁移,物理同、目标异选世界模型复用,任务结构近选策略微调。第三步,永远保留一个从零训练的对照实验——迁移收益必须与它对账,否则负迁移会伪装成"努力"。第四步,任务族庞大且经常来新任务时,才上元学习:它的训练成本高,为"频繁适应"这个需求才值回票价。
动手迁移之前,用三个问题把决策钉死。第一问:不变的是什么?把新旧任务的差异拆到要素级——观测分布变了(换传感器)、动力学变了(换质量摩擦)、奖励结构变了(换目标)、动作空间变了。差异清单决定迁移对象:只变奖励就复用表征与世界模型;观测都变了,迁移基本只剩"网络结构先验"。第二问:旧资产的可信范围在哪?旧价值只在旧奖励下有效,旧策略只在旧任务状态分布里可信,超出范围的资产不是先验而是毒药——这一问决定微调的学习率与冻结层数。第三问:验收基线是什么?从零训练一个便宜版(小网络、短训练)作为对照,迁移版必须在"相同训练预算下显著更好"才算迁移成功,仅仅"也能跑"不算。三问之外补一个经验数字:迁移收益最明显的区间是新任务数据量在"从零训练所需量的一成到五成"之间——数据充足时从零训练往往反超,数据极少时任何迁移都救不了,两头都不值得上迁移的复杂度。
时事层面的一个辨析值得补上:既然预训练加微调这么有效,元学习还有存在感吗?两者解决的是不同形状的问题。预训练加微调的范式是"大海量、大模型、目标任务靠梯度慢慢掰"——适应成本是算力与数据,且每次适应都是一次完整的训练工程;它适合任务族极宽(自然语言、通用视觉)、单次适应可以很贵的场景。元学习的目标是"适应本身要廉价到能在线发生"——几百步梯度、无工程师介入,适合任务族窄但切换频繁的场景:机器人每天面对新物件、个性化系统每个用户都是一个新任务、控制系统每次部署环境参数不同。一个务实的对照数字:少样本图像分类上,好的元学习方法与"大模型预训练加线性探测"的差距已缩到几个百分点,但后者的适应依赖巨量底座;在"底座装不进部署环境"的边端场景,元学习的小模型快速适应仍是不可替代的路线。选型时问一句:适应要发生在哪里、多快、多频繁——答案决定走哪条岔路。