想象一位厨房学徒的故事。他走进一家老字号餐厅想学好厨艺,面前有两条极端路线:第一条,死死盯着师傅的每个动作、每个火候,照单全收地复制——这叫模仿学习,学得快、起步稳,但换个陌生灶台就手忙脚乱;第二条,完全不看师傅,自己乱炒乱炖,全靠顾客吃后的脸色来调整配方——这叫强化学习(RL),熬到最后也许能端出惊艳的创新菜,但大概率先烧掉三间厨房。聪明的学徒会怎么做?他先照师傅的示范苦练基本功,再在师傅的监督下大胆尝试新配方,快出错时师傅立刻喊停纠正。这条“先模仿、再探索、有人兜底”的成长路线,正是模仿学习+RL混合训练的精髓。本文就用这位学徒的学厨之旅,把混合训练的每一块配方、每一个火候控制讲透。

岗位关联

掌握模仿学习与RL的混合训练范式,是AI从业者把机器人从“实验室样板”推向“真实落地”的核心技能,也是具身智能岗位面试的高频考点。

目录
  1. 可视化演示
  2. 模仿学习基础
  3. 强化学习基础
  4. 混合训练动机
  5. 预训练与微调
  6. 联合损失设计
  7. 人在回路纠错
  8. 评估与挑战
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示预训练微调范式(BC->RL)、联合损失函数(a*IL+b*RL)端到端训练,以及DAgger人在回路在线纠错三种混合训练方法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

预训练微调:BC先学RL后优化 DEM=专家示范 BC=行为克隆预训练 RL=强化学习微调 进一步优化策略 PI = pretrain(BC, demo) -> finetune(RL, reward) BC提供良好初始化,避免RL从零随机探索

模仿学习基础

学徒入门第一课,是站在师傅旁边“看”。师傅怎么握刀、怎么颠勺、什么时候转小火,学徒把这些瞬间一一记在心里,回到自己的灶台上照着重现。机器人学里的模仿学习,干的就是这件事:让智能体观察并复刻专家的示范行为,用最短的时间学会“像样的动作”。

把师傅的示范变成机器人能用的“教材”,需要先采集示教数据。一段示范轨迹就是一个“状态→动作”的有序序列——状态是眼前所见(锅里的菜色、火候大小),动作是师傅的操作(翻勺的角度、下料的时机)。收集几百上千条这样的轨迹后,模仿学习就有了训练集,等着被喂给策略网络。

最朴素的学习方法叫行为克隆(Behavior Cloning)。它把示范数据当作监督学习样本:状态当输入、示范动作当标签,训练一个策略网络让预测动作尽量贴近真实动作。公式上,它最小化两者之间的平均平方误差。问题在于,克隆出来的策略只在“见过的状态”上可靠,一旦测试时的状态分布与训练时不同,误差就会一步步累积放大——这就是分布偏移,好比学徒被换到陌生的炉灶前,手法立刻走样。

行为克隆像一本“抄来的菜谱”,学得快但脆弱。它让学徒有了基础手艺,却应付不了新厨房。要真正出师,还得靠第二套功夫——自己试错,这正是强化学习的舞台。

LBC(θ)=1N∑i=1N∥πθ(si)−ai∥2\mathcal{L}_{BC}(\theta) = \frac{1}{N} \sum_{i=1}^{N} \left\| \pi_{\theta}(s_i) - a_i \right\|^2
这个公式衡量“学徒动作”与“师傅动作”的平均差距,差距越小,说明克隆得越像。
  1. 状态与示范动作$s_i$ 是第 i 条示教轨迹中的状态,$a_i$ 是师傅在该状态下执行的动作,两者构成一个用于训练的样本对。
    (si,ai)(s_i, a_i)
  2. 策略输出动作$\pi_\theta(s_i)$ 表示当前策略网络面对同样状态时输出的动作,初始时和师傅的差别往往很大。
    πθ(si)\pi_{\theta}(s_i)
  3. 平方误差衡量$\left\| \pi_\theta(s_i) - a_i \right\|^2$ 计算两个动作的欧氏距离平方,值越小说明动作模仿得越精准。
    ∥πθ(si)−ai∥2\left\| \pi_{\theta}(s_i) - a_i \right\|^2
  4. 批量平均损失$\frac{1}{N}\sum_{i=1}^{N}$ 把所有样本的误差取平均,得到一个可求导、可优化的整体损失。
    1N∑i=1N\frac{1}{N} \sum_{i=1}^{N}

强化学习基础

学徒开始独自创新了。这次没有师傅的菜谱,只有顾客的舌头——好吃就给好评,难吃就给差评。这个“好评/差评”信号,就是强化学习里的奖励信号:它是环境中唯一告诉智能体“你做得好不好”的反馈。

强化学习让智能体不断与环境互动,根据奖励调节策略。如果某个动作带来了更高奖励,就提高下次再选它的概率;反之就降低。这种“边试边学”的机制天然适合解决长期序贯决策问题,比如机器人走路、抓取、导航。

策略梯度是其中一类核心方法:用当前策略采样一批轨迹,计算每个动作的优势——即比平均水平好多少——然后沿着“更可能选出好动作”的方向更新网络参数。RL在理论上能超越示范上限,但它有一个致命弱点:样本效率太低。从零探索就像蒙着眼睛找味道,可能需要成千上万次尝试才能摸到门道,这在真实机器人上几乎不可承受。

纯RL的学徒会烧掉几座厨房,纯模仿的学徒又只会照本宣科。于是聪明的训练师想:能不能让学徒先模仿打底,再放手探索?这就是混合训练的出发点。

LRL(θ)=−Es∼ρπ,a∼πθ[Aπ(s,a)log⁡πθ(a∣s)]\mathcal{L}_{RL}(\theta) = -\mathbb{E}_{s \sim \rho_{\pi}, a \sim \pi_{\theta}} \left[ A^{\pi}(s,a) \log \pi_{\theta}(a|s) \right]
以优势函数为权重的策略梯度,本质是让好动作的概率上升、坏动作的概率下降,从而最大化期望回报。
  1. 状态访问分布$s \sim \rho_\pi$ 表示状态来自按当前策略探索时访问到的分布,而非示范数据的分布。
    s∼ρπs \sim \rho_{\pi}
  2. 策略动作采样$a \sim \pi_\theta$ 表示动作由当前策略网络随机采样得到,保证动作带有探索性。
    a∼πθa \sim \pi_{\theta}
  3. 优势函数加权$A^{\pi}(s,a)$ 表示该动作相对平均水平高出多少,正优势应提升概率,负优势应压低概率。
    Aπ(s,a)A^{\pi}(s,a)
  4. 负期望与梯度整体取负号是为了把“最大化回报”转化为最小化损失,从而可以直接使用梯度下降优化。
    −E[Aπ(s,a)log⁡πθ(a∣s)]-\mathbb{E}\left[ A^{\pi}(s,a) \log \pi_\theta(a|s) \right]

混合训练动机

让学徒先跟师傅学再做菜,到底图什么?第一,是加速探索。示范给了“大致正确的方向”,RL不需要在整个动作空间里乱撞,只需在示范轨迹附近精修,探索效率成倍提升。

第二,是降低训练风险。纯RL初期动作完全随机,对真实机器人来说轻则动作怪异,重则损坏硬件;而示范初始化的策略一上场就能做出基本像样的动作,让探索始终在可控范围内进行,相当于学徒不会把厨房烧掉再来重学。

第三,是突破性能上限。师傅的示范不一定是最优配方,或许还有更好的火候组合。RL在模仿基础上继续优化,最终可能端出连师傅都惊艳的菜品。混合训练并非简单堆叠两类方法,而是让“示范先验”与“回报最大化”在流程中互补——如下式所示,RL的终极目标仍是最大化期望折扣回报,只是出发点站在了示范的肩膀上。

明确了“为什么要混合”,下一步是“怎么混合”。目前有两大主流做法:先预训练再微调,或者每个训练步都用联合损失同时打分。我们逐一拆解。

η(πθ)=Eτ∼πθ[∑t=0Tγtrt]\eta(\pi_{\theta}) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \gamma^{t} r_t \right]
期望折扣回报衡量智能体长期表现的“总顾客满意度”,是所有RL算法共同追求的终极目标,混合训练也不例外。
  1. 轨迹采样$\tau \sim \pi_\theta$ 表示一条从起始到终止的状态-动作序列,由当前策略与环境交互产生。
    τ∼πθ\tau \sim \pi_{\theta}
  2. 折扣累计回报$\sum_{t=0}^{T} \gamma^{t} r_t$ 把每一步奖励按时间远近打折相加,越近的奖励权重越大,暗示“眼前的满足更重要”。
    ∑t=0Tγtrt\sum_{t=0}^{T} \gamma^{t} r_t
  3. 期望收益目标$\eta(\pi_\theta)$ 是这个累计回报在多次交互下的期望,代表策略的长期综合水平,RL 的目标就是最大化它。
    η(πθ)=Eτ[⋅]\eta(\pi_\theta) = \mathbb{E}_{\tau}\left[ \cdot \right]

预训练与微调

这是最直观的混合方案:学徒先跟师傅闭关三个月,照菜谱练基本功——对应模仿预训练阶段;出关后再独立接客,根据顾客反馈精进手艺——对应强化微调阶段。

预训练阶段只使用示范数据优化BC损失,得到一个“至少能把菜做出来”的策略。微调阶段切换为RL目标,让策略在真实或仿真环境中继续探索优化。整个过程可以概括为一句话:RL 的优化不是从零开始,而是从模仿学到的参数出发。

这个范式最大的陷阱是灾难性遗忘:微调过程中如果只盯着RL目标,网络会慢慢忘掉师傅教的稳健动作,甚至退化成乱撞。常用对策有三——降低微调学习率、周期性回放示范数据、或者干脆加入一部分BC损失兜底。预训练+微调胜在流程清晰,但阶段切换可能带来震荡。有没有办法让两个目标在每一刻都同时起作用?这就引出了联合损失。

θ∗=arg⁡min⁡θLRL(θ),θ0=θBC\theta^{\ast} = \arg\min_{\theta} \mathcal{L}_{RL}(\theta), \qquad \theta_0 = \theta_{BC}
微调阶段的最优参数仍是RL目标的最小值点,但它以BC预训练参数为初始化,起点决定终点的高度。
  1. 模仿预训练参数$\theta_{BC}$ 是仅用示范数据优化BC损失后得到的参数,相当于学徒基本功结业时的状态。
    θBC=arg⁡min⁡θLBC(θ)\theta_{BC} = \arg\min_{\theta} \mathcal{L}_{BC}(\theta)
  2. 微调阶段目标$\arg\min_\theta \mathcal{L}_{RL}(\theta)$ 表示在微调阶段继续最小化RL损失,让策略从“像师傅”转向“赢顾客”。
    arg⁡min⁡θLRL(θ)\arg\min_{\theta} \mathcal{L}_{RL}(\theta)
  3. 参数接力初始化$\theta_0 = \theta_{BC}$ 说明强化微调不是随机初始化,而是在模仿基础上接着训练,这是混合训练的关键所在。
    θ0=θBC\theta_0 = \theta_{BC}

联合损失设计

想象师傅和顾客同时站在学徒身后:每个动作既要让师傅点头(像不像示范),又要让顾客满意(好不好吃)。联合损失就是给两个评分各设一个权重,然后在每个训练步里一起打分、一起更新——双导师制。

形式上,联合损失是BC损失与RL损失的加权和。$\lambda_{BC}$ 控制“模仿分量”,$\lambda_{RL}$ 控制“强化分量”。当 $\lambda_{BC}$ 较大时,策略偏向保守、贴近示范;当 $\lambda_{RL}$ 较大时,策略更大胆探索。实际工程中 λ 常从 1:1 起步,再根据训练曲线动态调整。

权重的意义不只是缩放数值,它直接改变梯度合成的方向。两个损失方向一致时,总梯度加速收敛;方向相反时,总梯度是两者的折中——这正是混合训练“既要像样、又要创新”的数学表达。

联合损失解决了“同时兼顾”,但它依赖的奖励和示范都可能过时。当学徒在真实厨房里碰到完全没见过的状况时,还需要一位能随时出手的师傅——这就是人在回路纠错。

Ltotal(θ)=λBCLBC(θ)+λRLLRL(θ)\mathcal{L}_{\text{total}}(\theta) = \lambda_{BC} \mathcal{L}_{BC}(\theta) + \lambda_{RL} \mathcal{L}_{RL}(\theta)
联合损失让模仿与探索在同一训练步内融合,师傅和顾客每时每刻同时在打分,策略在两者夹缝中找最优。
  1. 模仿考核项$\lambda_{BC}\mathcal{L}_{BC}(\theta)$ 是“像不像师傅”的评分,权重越大,策略越不敢偏离示范动作。
    λBCLBC(θ)\lambda_{BC} \mathcal{L}_{BC}(\theta)
  2. 强化考核项$\lambda_{RL}\mathcal{L}_{RL}(\theta)$ 是“顾客满不满意”的评分,权重越大,策略越敢探索创新配方。
    λRLLRL(θ)\lambda_{RL} \mathcal{L}_{RL}(\theta)
  3. 加权求和合成两项相加得到总损失,每个训练步的梯度同时朝两个方向合成,实现双导师持续打分、互不偏废。
    Ltotal=λBCLBC+λRLLRL\mathcal{L}_{\text{total}} = \lambda_{BC}\mathcal{L}_{BC} + \lambda_{RL}\mathcal{L}_{RL}

人在回路纠错

即使有了预训练和联合损失,机器人仍可能在部署中遇到“没见过的大火”或“陌生食材”。这时最可靠的兜底是:让真人师傅在旁边盯着,一发现要糊锅就立刻叫停,亲手示范正确操作——这就是人在回路(Human-in-the-Loop)。

人在回路与离线收集示教数据有本质区别:后者是一次性采集,前者强调在线闭环。机器人执行过程中,人类在线纠错产生的样本会被立即回放给策略,让“犯过的错”不再犯。这种“犯错→纠正→回放→再犯错再纠正”的迭代循环,比离线批量训练扎实得多,也让安全干预得以实时生效。

除了显式的动作纠正,师傅还会给“软性评价”——比如“这个动作太生硬”“这个火候刚刚好”。这类偏好反馈可以被训练成一个奖励模型,替代或辅助稀疏的环境奖励,让策略理解人类隐含的意图。数学上,每次纠错相当于在策略参数上施加一次即时的监督更新:

人在回路让训练从“离线跑批”变成“在线护航”,但同时也带来新的问题:如何科学衡量一个混合训练系统的真实水平?这就来到最后一课——评估与挑战。

θ←θ−α∇θ∑j=1M∥πθ(sj)−ajh∥2\theta \leftarrow \theta - \alpha \nabla_{\theta} \sum_{j=1}^{M} \left\| \pi_{\theta}(s_j) - a_j^{h} \right\|^2
每次人类纠正都产生一小批新示范,参数立刻沿着“更像纠正后动作”的方向更新,让错误不过夜。
  1. 人工纠正样本$(s_j, a_j^{h})$ 是师傅针对机器人犯错片段给出的新示范动作,构成一小批“纠正教材”。
    (sj,ajh)(s_j, a_j^{h})
  2. 纠正损失计算$\sum_{j=1}^{M} \left\| \pi_\theta(s_j) - a_j^h \right\|^2$ 衡量策略输出与师傅纠正动作的累计差异。
    ∑j=1M∥πθ(sj)−ajh∥2\sum_{j=1}^{M} \left\| \pi_{\theta}(s_j) - a_j^{h} \right\|^2
  3. 即时梯度更新$\theta \leftarrow \theta - \alpha \nabla_\theta$ 表示参数立刻沿负梯度方向更新,形成在线闭环迭代。
    θ←θ−α∇θ\theta \leftarrow \theta - \alpha \nabla_{\theta}

评估与挑战

学徒到底毕业没有?不能只听他说“我会了”,标准答案是看结果:端菜的成功率、出菜速度、动作是否颠簸。机器人领域最常用的核心指标是任务成功率——在 K 个部署场景里测试,成功几个就是几个。

评估之外,混合训练还面临三道坎。第一道是分布偏移应对:即使加了RL探索,训练与部署环境仍有差异,常用手段包括域随机化、扩大状态覆盖、以及用在线纠错补充数据分布。

第二道坎是超参调节:λ 比值、预训练轮数、微调学习率、探索噪声方差,这些参数互相纠缠,没有通解,只能靠曲线观察和网格搜索积累手感。第三道坎是真机部署约束:真实机器人不允许随意探索,安全边界和算力限制让许多算法只能止步仿真,这提醒我们评估时的每个指标都要贴着“落地”二字来定。

评估与挑战讲完,学徒的故事也接近尾声:先跟师傅模仿打底,再用强化学习探索创新,中间师傅持续在线纠错,最后用成功率验收。这一整套流程,正是模仿学习+RL混合训练在真实机器人项目中的完整缩影。

SuccessRate=1K∑k=1K1[task k 成功]\text{SuccessRate} = \frac{1}{K} \sum_{k=1}^{K} \mathbb{1}[\text{task } k \text{ 成功}]
成功率把模糊的“表现好不好”变成 0 到 1 之间的硬数字,是混合训练效果验收的黄金标尺。
  1. 测试任务抽取$k$ 表示从部署环境中抽取的第 $k$ 个测试任务,共 $K$ 个,覆盖不同起始状态与扰动条件。
    k=1,2,…,Kk = 1, 2, \dots, K
  2. 成功指示函数$\mathbb{1}[\cdot]$ 是示性函数,任务完成记 1,失败记 0,把主观判断变成客观的 0/1 数值。
    1[task k 成功]\mathbb{1}[\text{task } k \text{ 成功}]
  3. 成功率平均$\frac{1}{K}\sum_{k=1}^{K}$ 对所有测试结果取平均,得到 0 到 1 之间的成功率,越接近 1 说明策略越稳。
    1K∑k=1K\frac{1}{K} \sum_{k=1}^{K}

AI 应用场景

人形机器人灵巧抓取

阶段:离线示教预训练 + 仿真RL微调

解决的问题:纯示教策略对物体位置变化不泛化,换个摆放角度就抓空;纯RL在真机上试错会损坏硬件。混合范式先用人类遥操作采集示教数据,预训练视觉-动作策略,再在物理仿真中用RL微调,最后迁移到真机。

具体案例:某实验室用 VR 遥操作让人形机器人收集 2000 条抓取示范,BC 预训练后成功率约 60%;接入仿真 RL 微调后,成功率提升到 85%,且物体摆放位置的泛化范围扩大了一倍。

自动驾驶决策规划

阶段:人类驾驶数据预训练 + 仿真RL微调 + 安全员在环

解决的问题:真实道路不能随便探索,纯RL的试错成本不可接受;人类驾驶数据提供先验策略,仿真RL补充长尾场景覆盖,安全员在环纠错兜底。

具体案例:某自动驾驶公司用 1000 小时人类驾驶数据预训练决策模型,把环岛、鬼探头等长尾场景放入仿真器用 RL 加强训练,遇到仿真-真实差异时由安全员在线干预并回放修正,最终决策模型接管率显著提升。

游戏NPC行为控制

阶段:玩家对局数据预训练 + 胜率奖励RL微调

解决的问题:游戏AI从零RL需要上亿帧交互样本,而高阶玩家的对局数据天然覆盖大量有效策略,可急剧压缩探索空间。

具体案例:MOBA 游戏用王者段位玩家对局数据预训练英雄决策网络,再用胜率作为奖励做 RL 微调,最终 AI 既保留了人类战术习惯,又提升了团战操作的响应上限。

Python 演示

python81 行
import numpy as np np.random.seed(42)G = 1.0  # 目标位置  def expert_action(s):    # 师傅的策略:朝目标方向迈出一步    return np.clip(0.6 * (G - s), -0.3, 0.3)  def gen_demo(n=400):    S, A = [], []    for _ in range(n):        s = np.random.uniform(0.0, 0.8)        S.append(s)        A.append(expert_action(s))    return np.array(S), np.array(A)  class Policy:    # 线性策略:action = w * state + b    def __init__(self):        self.w, self.b = 0.0, 0.3     def action(self, s):        return self.w * s + self.b     def bc_update(self, S, A, lr=0.01):        pred = self.action(S)        self.w -= lr * np.mean((pred - A) * S)        self.b -= lr * np.mean(pred - A)     def explore(self, s):        return np.clip(self.action(s) + np.random.normal(0, 0.12), -0.3, 0.3)  def rollout(policy, start=0.0):    s, states, actions, rewards = start, [], [], []    for _ in range(30):        a = policy.explore(s)        states.append(s)        actions.append(a)        s = np.clip(s + a, 0.0, 1.2)        rewards.append(-abs(s - G))    return states, actions, rewards  def rl_update(policy, paths, lr=0.002):    for states, actions, rewards in paths:        baseline = np.mean(rewards)        for s, a, r in zip(states, actions, rewards):            adv = r - baseline            pred = policy.action(s)            policy.w += lr * adv * (a - pred) * s            policy.b += lr * adv * (a - pred)  def hybrid_train(epochs=40, bc_first=10):    S, A = gen_demo()    pi = Policy()    # 阶段1:模仿预训练(先跟师傅做菜)    for _ in range(bc_first):        pi.bc_update(S, A, lr=0.02)    print('模仿预训练后: w=%.3f b=%.3f' % (pi.w, pi.b))    # 阶段2:RL微调 + 周期BC巩固    for epoch in range(epochs):        paths = [rollout(pi, np.random.uniform(0, 0.3)) for _ in range(8)]        rl_update(pi, paths, lr=0.002)        if epoch % 4 == 0:            idx = np.random.choice(len(S), 64)            pi.bc_update(S[idx], A[idx], lr=0.005)        if epoch % 10 == 0:            avg_err = np.mean([abs(path[2][-1]) for path in paths])            print('epoch %2d 平均末距 %.4f' % (epoch, avg_err))    return pi  if __name__ == '__main__':    pi = hybrid_train()    print('混合训练后: w=%.3f b=%.3f' % (pi.w, pi.b))
目的:实现一个一维“向目标靠近”任务的模仿学习+RL混合训练,先行为克隆预训练,再用策略梯度优化微调,并周期性回放示范数据防止遗忘。
  1. def expert_action(s):定义“师傅”的专家策略,输出朝向目标动作
  2. def gen_demo(n=400):采集 400 条示教数据,模拟师傅做菜的示范轨迹
  3. def bc_update(self, S, A, lr=0.01):行为克隆更新:让策略输出贴近示范动作
  4. def explore(self, s):在策略输出上叠加高斯噪声,模拟RL的探索
  5. def rl_update(policy, paths, lr=0.002):用优势加权更新参数,好评动作被强化
  6. for _ in range(bc_first):第一阶段:纯模仿预训练,建立基础策略
  7. if epoch % 4 == 0:每隔 4 轮回放一批示范数据,防止灾难性遗忘

常见误区

误区只要采集足够多的示范数据,行为克隆就能学会所有技能,强化学习完全是多余的,数据量可以解决一切问题。

正解数据再多也覆盖不了部署时可能出现的状态分布,分布偏移会让误差在长轨迹中越积越大。RL 的价值正是通过探索生成示范数据覆盖不到的状态,让策略学会“没见过的场景下怎么办”,两者是互补关系而非替代关系。

为何常见:行为克隆训练稳定、实现简单,且数据规模与效果呈正相关,容易让人误以为“数据即一切”。

误区混合训练就是把两个模型串起来——先完整跑完模仿学习,再把训练好的模型丢给强化学习,两阶段之间毫无重叠。

正解真正的混合训练更多指两种损失在训练过程中持续交织:要么每个训练步联合损失同时起作用,要么频繁交替更新并周期性回放示范数据。两阶段模型只是最简单的一种实现,并非混合训练的全貌。

为何常见:“预训练+微调”的说法在 NLP 中太流行,让人误以为所有混合方案都只是简单串行。

误区人在回路纠错,说到底就是多雇几个人采集新数据,把它们丢进离线数据集一起训练就完事了。

正解人在回路强调“在线闭环”:机器人执行过程中,人类实时发现错误、立即纠正、马上回放给策略更新。它与离线采集的关键区别在于时效性和针对性——纠正样本直击当下弱点,形成“犯错-纠正-回放”的快速迭代,而非等待下一轮批量训练。

为何常见:因为离线数据集也是“人参与标注的”,两者表面相似,但反馈的实时性与闭环机制完全不同。

误区设置 λ_BC 和 λ_RL 只是为了把两个损失的数值缩放到相近大小,让加总后的数字不至于被某一个损失淹没,不影响训练方向。

正解λ 不仅缩放数值,更直接决定梯度合成的方向和幅度。两个损失方向相反时,λ 的比值决定了策略偏向“模仿”还是“探索”;λ 设置不当甚至会导致训练发散。它本质上是在定义“学徒该听师傅多些,还是听顾客多些”。

为何常见:从公式表面看,加权平均似乎只是缩放,容易忽略梯度动力学中方向和平衡才是关键。

面试题

Q1. 行为克隆最核心的训练方式是什么?

单选题 · easy

  • A.从顾客好评中获得反馈
  • B.拟合示范状态动作对← 正确答案
  • C.随机初始化网络参数
  • D.在仿真中大规模试错

答案:B。行为克隆把示范数据当作监督学习样本,拟合“状态→动作”映射。A描述的是强化学习,C是通用初始化手段,D是RL探索,均不是行为克隆的核心训练方式。

Q2. 纯模仿学习最常见的失败原因是什么?

单选题 · mid

  • A.训练需要海量算力资源
  • B.示范数据已经过时无效
  • C.测试时发生分布偏移← 正确答案
  • D.网络框架不兼容环境

答案:C。行为克隆只见过示范中的状态分布,部署时遇到稍不同的状态会步步走偏,误差累积放大,这就是分布偏移。A、B、D都不是模仿学习特有的核心失败原因。

Q3. 预训练+微调范式中,预训练的含义是什么?

单选题 · mid

  • A.用示范数据初始化策略← 正确答案
  • B.先训练一个奖励预测模型
  • C.用随机策略探索环境
  • D.提前收集全部测试数据

答案:A。预训练阶段用BC损失在示范数据上优化策略,得到的参数作为微调的起点,相当于学徒先练基本功。B是奖励建模,C是RL冷启动,D涉及数据泄露,均不符合。

Q4. 联合损失中设置 λ_BC 较大时,可能出现哪些情况?

多选题 · mid

  • A.策略输出更贴近示范动作← 正确答案
  • B.策略探索性明显增强
  • C.模仿信号主导梯度方向← 正确答案
  • D.奖励信号对更新完全失效

答案:AC。λ_BC 增大意味着模仿项权重大,梯度更偏向“贴近示范”,策略表现得更保守,A、C正确。探索性增强通常对应 λ_RL 增大而非 λ_BC,只要 λ_RL 不为零,奖励信号仍参与更新,D表述绝对化。

Q5. 人在回路纠错与离线示教数据的本质区别是什么?

单选题 · mid

  • A.前者需要人工标注样本
  • B.前者强调在线闭环修正← 正确答案
  • C.前者不需要策略网络
  • D.前者一定采用监督学习

答案:B。人在回路的核心是“实时执行-实时纠正-立即回放”的闭环,而离线示教是一次性采集后批量训练。A不是本质区别,C、D说法错误,人在回路仍需策略网络且不局限于监督学习。

Q6. 混合训练相比纯强化学习的优势有哪些?

多选题 · easy

  • A.前期探索过程更加稳定← 正确答案
  • B.完全消除奖励函数设计
  • C.显著减少无效探索次数← 正确答案
  • D.无需任何真实环境交互

答案:AC。示范数据让策略起步就有“大致对”的方向,因此前期更稳、无效探索更少,A、C正确。混合训练并未取消奖励设计,也没有免除环境交互,B、D错误。

Q7. 微调阶段缓解灾难性遗忘的常用方法是什么?

单选题 · hard

  • A.定期回放示范数据参与训练← 正确答案
  • B.增大探索噪声的幅度方差
  • C.冻结策略网络全部输出层
  • D.删除预训练阶段的全部数据

答案:A。周期性回放示范数据能让BC损失持续约束策略,防止RL更新把模仿知识覆盖掉。增大噪声会加速遗忘,冻结输出层则无法微调,删除数据更会加剧遗忘,故B、C、D均错误。

Q8. 强化学习中的奖励信号相当于学徒学厨中的什么?

单选题 · easy

  • A.顾客吃后的评价反馈← 正确答案
  • B.师傅示范的标准动作
  • C.厨房里的传统菜谱本
  • D.采购食材的日常清单

答案:A。奖励信号是环境给出的“好不好”评价,正如顾客的评价反馈。A是RL的奖励。师傅示范属于模仿学习,菜谱本对应先验知识,食材清单则与学习机制无关。

Q9. 关于分布偏移的正确描述有哪些?

多选题 · hard

  • A.训练与部署状态分布不一致← 正确答案
  • B.加大示范数据量必然根除问题
  • C.RL探索可以补充状态覆盖← 正确答案
  • D.人在回路干预能及时纠偏← 正确答案

答案:ACD。分布偏移的本质是训练与部署状态分布不一致,A正确。RL探索产生更多样化的状态可缓解偏移,C正确;人在回路在线纠偏可兜底,D正确。B中“必然根除”过于绝对,数据量增大只能缓解而非根除。

Q10. 评估混合训练效果时,最核心的指标是什么?

单选题 · hard

  • A.部署场景中的任务成功率← 正确答案
  • B.策略网络模型的参数量
  • C.训练数据集的样本条数
  • D.奖励函数设计的复杂度

答案:A。任务成功率直接反映策略在真实场景中能否完成任务,是验收的黄金标准。参数量、样本数、奖励函数复杂度都只是间接指标,不代表最终性能高低。