想象一个场景:一位游泳教练带着从来没下过水的孩子来到泳池边。如果直接把孩子扔进三米深的深水区,他大概率会呛水、哭闹、从此对水充满恐惧。而聪明的教练会先让孩子在浅水区练习憋气,再扶着泡沫板蹬水,接着教练托着腰游过半程,最后才放手让他尝试独立横渡泳道。这种“由易到难、层层递进”的训练安排,就是本文的主角——课程学习(Curriculum Learning)。 强化学习里的机器人智能体,就像这个刚下水道的孩子:它一开始什么都不懂,只能靠反复试错摸索。如果一上来就扔进最复杂的任务,它可能学得极慢,甚至彻底学不会。课程学习的思路,就是给智能体配一位“教练”,把任务按难度排成一串课表,让它先学简单的、再学困难的,最终能轻松应对复杂挑战。下面,我们就跟着这位教练,看看课表怎么排、难度怎么调、效果怎么算。

岗位关联

学会课程学习,等于掌握一门“训练加速术”:面对复杂的机器人任务,你不再只会堆算力和干等训练,而是能科学编排任务顺序,让智能体更快收敛、更稳落地——这是机器人强化学习工程师的核心竞争力。

目录
  1. 可视化演示
  2. 课程学习概念
  3. 课程设计原则
  4. 自动难度调节
  5. 实验对比分析
  6. 机器人应用场景
  7. 收敛与性能
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示课程难度递进、自动调节与训练收敛对比,支持敏感度调节。

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

课程难度递进曲线 绿色简单任务作为起始训练阶段 红色复杂任务在掌握基础后解锁 Difficulty = f(step, success_rate) 难度随成功率自动递进

课程学习概念

还记得那个被教练牵手走进浅水区的孩子吗?他才刚开始学憋气时,教练绝不会让他挑战百米自由泳。因为人的大脑天生擅长“先易后难”——背单词先背高频词,学数学先学加减再学微积分,游泳也是从憋气、漂浮、蹬腿一步步来。这种与生俱来的学习习惯,在人工智能领域有一个专门的名字:课程学习(Curriculum Learning)。

课程学习的思想最早由 Bengio 等人在 2009 年正式提出,核心就一句话:把训练数据或任务按照“容易→困难”的顺序排列,让模型先在简单样本上打好基础,再逐步接触难题。注意,这里的“简单”不是指数据量变少,而是指任务本身的可学性更高——比如目标离起点更近、障碍更少、奖励更容易获得。在强化学习里,这个思想被扩展到“任务级”:不改变环境本质,而是把整个任务拆成一串难度递增的子任务。

课程学习在强化学习中尤其重要,因为机器人面对的大多任务都存在“稀疏奖励”问题:目标点只占整个空间的一小片,奖励信号难得一见,从头随机探索就像在大海里捞针。如果先让机器人完成简单版本,比如目标就在眼前,它很容易获得奖励,学会“靠近目标”的基本技能;再把这个技能迁移到复杂版本中,探索就有了方向感。

就像教练给孩子排出“憋气→漂浮→蹬腿→换气”的课表一样,课程学习也把容易的“憋气”(简单样本)安排在前,把困难的“完整泳道”(复杂任务)安排在后。孩子不会因为一上来就呛水而放弃,机器人也不会因为一开始就一无所获而学不到任何东西——这就是课程学习最朴素的智慧。

L=1N∑i=1Nwi⋅Li\displaystyle L = \frac{1}{N} \sum_{i=1}^{N} w_i \cdot L_i
这个公式是课程学习的“加权账本”:$L_i$ 是模型在第 $i$ 个样本上的损失,$w_i$ 是根据难度打的折扣券——简单样本权重高、困难样本权重低,模型先把简单样本吃透,再去啃难题。
  1. 样本损失$L_i$ 表示模型在第 $i$ 个样本上的损失,损失越大说明模型在这道题上错得越离谱,是“考试成绩”的反向指标。
    Li=−log⁡P(yi∣xi)L_i = -\log P(y_i \mid x_i)
  2. 课程权重$w_i$ 是与样本难度挂钩的权重,由课程设计者根据任务难度映射得到,简单任务在前期拿到更高权重。
    wi=f(difficultyi)w_i = f(\text{difficulty}_i)
  3. 加权平均把所有样本的损失按权重加起来再取平均,得到总损失 $L$,优化器通过最小化 $L$ 更新网络的参数。
    Lˉ=1N∑i=1NwiLi\bar{L} = \frac{1}{N} \sum_{i=1}^{N} w_i L_i

课程设计原则

教练排课表时心里有一本账:孩子水性如何、每节课练多少分钟、从扶板到托腰的过渡会不会太突然。如果第一天就要孩子从浅水区直接跳到深水区,这种“悬崖式”跳跃会让他瞬间崩溃。课程设计也是如此,需要遵循几条原则。

第一条是难度分级:要有一个可量化的难度定义,比如目标距离、障碍物数量、干扰噪声强度。对机器人而言,“把机械臂伸到固定点”比“在运动中抓取移动物体”简单得多。第二条是任务排序:把任务按难度从低到高排好,就像课表里浅水区练习永远排在深水区之前。第三条是平滑过渡:相邻两个课程阶段的难度差不能太大,否则模型刚学会的技能会因为任务骤变而失效,这种现象在深度学习里叫“灾难性遗忘”——好比孩子刚学会蹬腿,突然要求他游自由泳,手脚全乱。第四条是进度评估:要定期检验模型当前水平,判断是否可以进入下一阶段。

在实际操作中,工程师常用一条“难度曲线”来描绘课程进度:

这就像教练看着节气安排训练量:第一周只练憋气,第十周游完整条泳道,难度沿着一条缓坡往上走,孩子每一步都踩得踏实。课程设计的目的,就是把“跳崖”变成“爬坡”。

d(t)=dmin⁡+(dmax⁡−dmin⁡)×tT\displaystyle d(t) = d_{\min} + \big( d_{\max} - d_{\min} \big) \times \frac{t}{T}
它描述的是:训练进行到时刻 $t$ 时,当前任务的难度 $d(t)$ 从起步难度 $d_{\min}$ 线性爬升到最终难度 $d_{\max}$。$\frac{t}{T}$ 是训练的时间进度比例——课表已经上到第几周。
  1. 起步难度$d_{\min}$ 是课程开始时第一个任务的难度,必须足够简单,确保机器人一开始就能获得正反馈,建立“我也可以游起来”的信心。
    dmin⁡=d(0)d_{\min} = d(0)
  2. 目标难度$d_{\max}$ 是课程结束时需要达到的难度,也就是真实任务本身的难度,课表最终要“毕业”到这个水平。
    dmax⁡=d(T)d_{\max} = d(T)
  3. 进度因子$t$ 是当前训练时刻,$T$ 是课程总时长,比值 $\frac{t}{T} \in [0,1]$ 表示课表已经完成的比例。
    p=tTp = \frac{t}{T}
  4. 线性插值括号内是难度总跨度,乘上进度因子后加上起步难度,得到当前应采样任务的难度,完成从易到难的平滑爬升。
    Δd=(dmax⁡−dmin⁡)×p\Delta d = (d_{\max} - d_{\min}) \times p

自动难度调节

前面说的课表是提前排好的静态规划,但聪明的教练绝不会死板执行——看到孩子今天状态不好,就让他退回浅水区巩固;状态爆发,就提前进入深水区试水。这种“察言观色、随机应变”的能力,对应技术上的自动难度调节(Automatic Difficulty Adjustment)。

最经典的代表是自步学习(Self-Paced Learning):系统内部维护一个“学生模型”,用模型当前在样本上的损失来判断难度——模型还没学会的样本,损失大,就是“深水区”;已经学会的样本,损失小,就是“浅水区”。课程不再是教练单方面定的,而是学生根据自己的水平动态挑选,老师只负责设定“该学的量”有多大。

自步学习的目标函数可以用一个紧凑的公式表达:

教练的眼睛就是“学生模型”,每次训练都盯着学员哪里游得歪、哪里呼吸乱,再悄悄把训练菜单调一档。等模型水平上来了,同样的样本损失变小,自然会被“毕业”出去,换成难度更高的新样本——课表活了,训练也就更高效。

min⁡θ,v  1N∑i=1N(vi⋅Li−λ⋅vi),vi∈{0,1}\displaystyle \min_{\theta, v} \; \frac{1}{N} \sum_{i=1}^{N} \big( v_i \cdot L_i - \lambda \cdot v_i \big), \quad v_i \in \{0, 1\}
公式里的 $v_i$ 是一个“开关”:取 1 表示把第 $i$ 个样本加入今天的训练菜单,取 0 表示先放一放。目标是在给定“课程容量” $\lambda$ 的条件下,挑选出当前最能提升模型的样本。
  1. 样本开关$v_i \in \{0,1\}$ 是二值决策变量,决定样本 $i$ 是否参与本轮训练,相当于教练决定今天练哪个项目。
    vi∈{0,1}v_i \in \{0, 1\}
  2. 选中代价$v_i \cdot L_i$ 表示只有当 $v_i=1$ 时才把该样本的损失计入总目标,代表“练了就付出学习成本”。
    costi=vi⋅Li\text{cost}_i = v_i \cdot L_i
  3. 课程奖励$-\lambda \cdot v_i$ 是一个负向奖励项,每选中一个样本就给目标函数“减分”,$\lambda > 0$ 控制训练菜单的容量大小。
    bonusi=−λ⋅vi\text{bonus}_i = -\lambda \cdot v_i
  4. 联合优化同时对网络参数 $\theta$ 和开关变量 $v$ 求最小化。容易发现:当 $L_i < \lambda$ 时选中样本能降低目标值,即“当前能学会的样本优先入选”——这就是自动难度调节的核心逻辑。
    min⁡θ,v  1N∑i=1N(viLi−λvi)\min_{\theta, v} \; \frac{1}{N} \sum_{i=1}^{N} \big( v_i L_i - \lambda v_i \big)

实验对比分析

要证明教练的课表有用,不能光靠嘴说,得让两个孩子同场竞技:A 孩子跟着课表从浅水区练起,B 孩子直接扔进深水池。三个月后比赛,成绩说话。科研里的实验对比也是这个思路。

典型实验设置是这样:第一组叫随机课程(Random Curriculum),把不同难度的任务完全随机打乱,相当于教练今天教深水明天教憋气,毫无章法;第二组叫固定课程(Fixed Curriculum),按照人工精心设计的静态课表从易到难;第三组叫自适应课程(Adaptive Curriculum),用自步学习动态调节难度。三组使用完全相同的算法、网络结构、总训练步数,唯一变量就是“任务以什么顺序呈现”。

衡量指标通常是两个:一是收敛速度,即达到同一成功率所需的环境交互回合数;二是最终性能,即训练结束后在目标任务上的成功率。课程学习的效果经常用一个“加速比”来量化:

实验成绩单往往长得像一张柱状图:随机课程组的成功率曲线像心电图一样上下抖动,迟迟爬不上去;固定课程组稳步上升;自适应课程组不仅爬得最快,最终成功率也最高。教练的课表,被实验数据证明有效。

SpeedUp=TrandomTcurriculum\displaystyle \text{SpeedUp} = \frac{T_{\text{random}}}{T_{\text{curriculum}}}
SpeedUp 表示课程学习相对随机课程快了多少倍:分子是随机课程达到目标性能所需的回合数,分母是课程学习所需的回合数。比值大于 1,说明教练的课表确实省时间。
  1. 基线回合数$T_{\text{random}}$ 是随机课程组收敛所用的回合数,通常很长,因为模型在难度跳跃中反复迷失。
    Trandom=episodesrandomT_{\text{random}} = \text{episodes}_{\text{random}}
  2. 课程回合数$T_{\text{curriculum}}$ 是课程学习组的收敛回合数,由于有由易到难的引导,通常显著更短。
    Tcurriculum=episodescurriculumT_{\text{curriculum}} = \text{episodes}_{\text{curriculum}}
  3. 加速比两者相除得到相对加速倍数,比如结果为 2.5 就表示课程学习快 2.5 倍。
    SpeedUp=TrandomTcurriculum>1\text{SpeedUp} = \frac{T_{\text{random}}}{T_{\text{curriculum}}} > 1

机器人应用场景

学成归来的“学员”终于要参加真正的比赛——不是游泳馆里的百米泳道,而是真实世界的机器人任务。课程学习在机器人学与自动化实践中的价值,正体现在一个个具体的工程场景里。

第一类场景是机械臂操作。以分拣抓取为例,传统训练直接让机械臂从杂乱零件堆里抓取目标物体,奖励稀疏、动作空间巨大,学习过程缓慢。用课程学习编排后,第一阶段让机械臂抓取位置固定的物体,第二阶段加入传送带的匀速移动,第三阶段才引入随机姿态和障碍物。每一阶段都为下一阶段提供了“手感”,整体训练时间可以缩短数倍。

第二类场景是自主导航避障。轮式机器人或无人车先在空无一物的训练场学会“从 A 点走到 B 点”,再逐步增加静态障碍物、动态行人、复杂地形。这样训练出来的策略,比直接扔进拥挤环境训练的导航策略收敛更快、失败率更低。为了让课程可量化,工程师需要给任务难度打分:

从产线上的机械臂,到仓库里的 AGV 小车,再到家庭服务机器人,课程学习都扮演着“金牌教练”的角色。它不改变机器人的硬件,也不改变算法本身,只改变“先学什么、后学什么”,就能让训练过程大为改观——这是它工程价值极高的重要原因。

D(s)=α⋅Nobstacle+β⋅Dtarget\displaystyle D(s) = \alpha \cdot N_{\text{obstacle}} + \beta \cdot D_{\text{target}}
这条难度公式把“环境里有多少障碍物” $N_{\text{obstacle}}$ 和“目标有多远” $D_{\text{target}}$ 加权求和,得到一个综合难度分数 $D(s)$,用来决定把任务排进课表的哪一档。
  1. 环境复杂度$N_{\text{obstacle}}$ 表示当前场景中障碍物的数量,障碍越多,机器人撞墙的概率越高,导航越难。
    Nobstacle∈{0,1,2,… }N_{\text{obstacle}} \in \{0, 1, 2, \dots\}
  2. 目标距离$D_{\text{target}}$ 表示起点到目标点的距离,距离越远,奖励越稀疏,探索越困难。
    Dtarget=∥goal−start∥D_{\text{target}} = \| \text{goal} - \text{start} \|
  3. 权重系数$\alpha$ 和 $\beta$ 调节两个维度的相对重要性,比如室内场景更看重避障则调大 $\alpha$。
    α+β=1\alpha + \beta = 1

收敛与性能

比赛不只看谁先到终点,还要看谁的动作更稳定、冲线后不呛水。课程学习训练出的机器人,不仅学得快,而且表现稳。收敛速度和最终性能,是评价训练效果的两位“裁判”。

为什么课程学习能加速收敛?有三个层面的原因。第一,初始策略更好:在简单任务上学会的技能(比如“靠近目标”)为复杂任务提供了合理的初始化,相当于孩子先在浅水区建立了水性。第二,探索更有方向:由于奖励信号在简单任务中很容易获得,模型能更快建立“什么行为有价值”的准则,随后的探索不再是漫无目的的随机游走。第三,损失曲面更平滑:从易到难的样本序列,让梯度更新方向更一致,避免了在复杂损失曲面上的剧烈震荡。

最终性能的提升可以用一个“收益比”来度量:

就像教练的学员不仅游得最快,而且换气节奏最匀、转身没有多余动作,课程学习训练的机器人也具有更强的泛化能力:面对训练中没见过的新布局、新噪声,策略依然稳健。稳定收敛 + 性能领先 + 泛化良好,这三枚奖牌,共同铸就了课程学习在机器人强化学习中的核心地位。

Gain=Rcurriculum−RbaselineRmax⁡−Rbaseline×100%\displaystyle \text{Gain} = \frac{R_{\text{curriculum}} - R_{\text{baseline}}}{R_{\max} - R_{\text{baseline}}} \times 100\%
Gain 衡量课程学习相对基线把性能差距缩小了多少:如果基线成功率只有 30%,课程学习达到 60%,满分 100%,那么 Gain 就是 42.9%——用百分数直观表达课程学习的“提分幅度”。
  1. 课程回报$R_{\text{curriculum}}$ 是课程学习训练完成后在目标任务上获得的平均回报或成功率,代表学员的最终比赛成绩。
    Rcurriculum=E[reward]R_{\text{curriculum}} = \mathbb{E}[\text{reward}]
  2. 基线回报$R_{\text{baseline}}$ 是基线方法(如随机课程)的最终成绩,作为对照基准。
    Rbaseline=baseline performanceR_{\text{baseline}} = \text{baseline performance}
  3. 理论上限$R_{\max}$ 是任务可能达到的最高回报,比如成功率 100%,用来归一化性能提升的空间。
    Rmax⁡=100%R_{\max} = 100\%
  4. 提升占比分子是课程学习超过基线的绝对增量,分母是“基线到满分”的剩余空间,两者相除得到性能提升占可提升空间的百分比。
    Gain=ΔRRspace×100%\text{Gain} = \frac{\Delta R}{R_{\text{space}}} \times 100\%

AI 应用场景

机械臂智能分拣

阶段:训练策略设计

解决的问题:传统方式直接让机械臂在杂乱零件堆中学习抓取,奖励稀疏导致训练几千回合仍学不会;课程学习把任务拆成“固定位置抓取 → 传送带跟随 → 随机姿态抓取”三阶段,每阶段都是上一阶段的自然进阶,让机械臂像学员先在浅水区学会蹬腿、再去深水区游泳一样,抓取成功率大幅提升。

具体案例:某电子产品装配厂的六轴机械臂,采用课程学习后,抓取随机姿态螺丝钉的收敛回合数从 8000 回合降至 2000 回合,最终分拣成功率从 61% 提升到 93%。

自主导航避障

阶段:环境编排与奖励塑形

解决的问题:无人车直接进入拥挤环境训练,碰撞惩罚过于频繁,策略容易陷入“原地打转”的局部最优;课程学习从空旷房间起步,逐步增加障碍物密度和数量,让导航策略先掌握“到达目标”的基本能力,再叠加“回避障碍”的高级技能,训练稳定性和最终到达率都显著改善。

具体案例:仓储 AGV 在某物流园区的调度导航中,课程学习让策略从仿真环境顺利迁移到真实园区,迁移后的任务完成率从 74% 提升到 96%,且部署后没有再出现频繁急停的抖动行为。

双足机器人行走控制

阶段:技能迁移与渐进学习

解决的问题:双足机器人直接学习站立行走,关节动作耦合度高、极易摔倒;课程学习把“保持静态平衡 → 小步慢走 → 平地快走 → 上下斜坡”排成一串课表,让控制器在每个阶段先巩固平衡本能,再挑战更动态的动作,最终在复杂地形上也能稳定行走。

具体案例:某高校人形机器人团队用课程学习训练步态策略,在仿真中摔倒次数下降 82%,跨地形测试的平衡保持时间从 8 秒提升到 45 秒,为真实场景部署赢得了安全余量。

Python 演示

python61 行
import random  class QLearning:    def __init__(self, n_states, n_actions=2):        self.q = [[0.0] * n_actions for _ in range(n_states)]        self.lr = 0.1        self.gamma = 0.95        self.eps = 0.3     def act(self, s):        if random.random() < self.eps:            return random.randint(0, 1)        return 0 if self.q[s][0] >= self.q[s][1] else 1     def update(self, s, a, r, s2):        old = self.q[s][a]        best = max(self.q[s2])        self.q[s][a] = old + self.lr * (r + self.gamma * best - old)  def play_once(agent, goal, train=True, max_steps=200):    s = 0    done = False    for _ in range(max_steps):        a = agent.act(s)        ns = s + 1 if a == 1 else max(0, s - 1)        r = 10.0 if ns == goal else -0.1        if train:            agent.update(s, a, r, ns)        s = ns        if ns == goal:            done = True            break    return done  def train(goals):    agent = QLearning(6)    for goal in goals:        for _ in range(300):            play_once(agent, goal, train=True)    return agent  def evaluate(agent, goal=5, rounds=200):    agent.eps = 0.0    wins = 0    for _ in range(rounds):        if play_once(agent, goal, train=False):            wins += 1    agent.eps = 0.3    return wins / rounds  if __name__ == '__main__':    random.seed(42)    cur_agent = train([2, 5])     # 课程学习:先简单后困难    base_agent = train([5, 5])    # 基线:一直面对困难任务    print('课程学习成功率:', round(evaluate(cur_agent), 3))    print('基线成功率:  ', round(evaluate(base_agent), 3))
目的:把“游到泳池对岸”抽象成一维线世界,用 Q 学习训练智能体从起点抵达目标格。课程学习先学近目标(距离 2),再迁移到远目标(距离 5);基线组全程只练远目标。两组算力完全相等,对比成功率验证课程学习的效果。
  1. class QLearning:定义智能体的“大脑”,用 Q 表记录每个状态下两个动作(左移/右移)的价值估计。
  2. self.q = [[0.0] * n_actions for _ in range(n_states)]Q 表初始化为全零,价值完全未知。
  3. self.eps = 0.3ε 贪心探索率:三成概率随机试探,避免一直走老路。
  4. r = 10.0 if ns == goal else -0.1到达目标给大奖励,其他每步给一个小惩罚,塑造“尽快到达”的行为。
  5. def play_once(agent, goal, train=True, max_steps=200):跑一回合,train 参数控制这一回合是“上课学习”还是“期末测验”。
  6. def train(goals):课程学习的核心:goals 列表就是教练的“课表”,按顺序逐个攻克目标。
  7. for goal in goals:严格按课表顺序训练,先易后难,这就是课程学习与随机训练的差别所在。
  8. train([2, 5])课程学习:先学距离 2 的简单目标,把“接近目标”的本能学会,再挑战距离 5 的困难目标。
  9. train([5, 5])基线:同样的总回合数全部花在困难目标上,没有简单任务热身。
  10. agent.eps = 0.0测试时关闭随机探索,纯比试学到的策略本领。

常见误区

误区我以为课程学习就是让简单样本在训练集中出现更多次,简单任务练得越多,模型自然就越强,本质上是数据增强。

正解课程学习的核心不是“量”而是“序”:它强调按难度有序推进,让模型先把基础能力内化,再迁移到困难任务。简单样本重复过多会造成过拟合,让模型在简单任务上“背题”而非“学游泳”,反而损害最终性能。孩子憋气练一百遍也学不会换气,还得按部就班进入下一阶段。

为何常见:“熟能生巧”的直觉深入人心,容易把课程学习误解成简单的重复采样,忽略了难度递进这一真正的要点。

误区我认为把任务切成几百个微小的难度台阶,课程学习的效果一定最好,因为过渡最平滑,学员永远不会感到吃力。

正解课程台阶过多会带来两个问题:一是每一级训练预算被摊薄,模型还没学会就切换到下一级,每个难度都“浅尝辄止”;二是任务频繁切换可能引发灾难性遗忘,让前面学到的本领在切换中流失。合理的课程应该像教练的课表,每节课有明确目标,而不是把一节课切得七零八落。

为何常见:刚接触时容易把“平滑过渡”理解成“无限细分”,忽略了两级之间需要足够的时间让技能内化。

误区既然有自步学习这类自动课程方法,人工排课表就是多余的,让算法自己决定学什么就行,教练可以下课休息了。

正解自动调节依赖“学生模型”对自身能力的估计,而模型在训练初期对能力评估并不准,容易误判样本难度,造成课程节奏混乱。人工先验(比如“先学直线再学转弯”“先学固定目标再学移动目标”)可以提供高质量的初始课表,自动调节在局部做微调,两者互补效果最佳。

为何常见:因为“自动化”这个名字听起来省心,人们容易忽视“准确评估自身能力”这件事本身也需要先验知识和精心设计。

误区我觉得课程学习和预训练差不多,都是先在一个任务上练,再换另一个任务,没必要区分,反正都是多阶段训练。

正解预训练重在选择“通用知识丰富”的源任务,不强调源任务与目标任务之间的难度关系;课程学习则要求源任务比目标任务更简单,且难度呈阶梯排列。一个是“打好广泛地基再盖楼”,一个是“从低楼层一步步爬到高楼层”,两种训练哲学完全不同。

为何常见:两者都涉及“多阶段训练”的外在形式,初学者容易只看到表面流程,忽略内在的难度组织逻辑这一核心差异。

面试题

Q1. 课程学习(Curriculum Learning)的核心思想是什么?

单选题 · easy

  • A.用更多数据训练模型
  • B.由易到难组织任务← 正确答案
  • C.随机打乱训练顺序
  • D.只使用困难任务

答案:B。课程学习模仿人类认知规律,就像游泳教练先让孩子在浅水区学漂浮,再逐步进入深水区。B 正确;A 说的是数据量问题,C 是随机课程,D 违背了由易到难的基本原则。

Q2. 在一维线世界任务中,目标从第 2 格变为第 5 格,这属于课程设计的哪个环节?

单选题 · easy

  • A.难度分级环节← 正确答案
  • B.奖励设计环节
  • C.状态编码环节
  • D.网络调参环节

答案:A。目标的远近决定了任务难度,把“近距离目标”和“远距离目标”划分成不同难度等级,正是课程设计的“难度分级”环节。B 是奖励定义,C 是状态表示,D 是模型训练细节,都与难度阶梯的划分无关。

Q3. 自步学习中 $v_i$ 表示样本 $i$ 是否参与训练,它取 1 的典型条件是什么?

单选题 · mid

  • A.样本损失小于阈值← 正确答案
  • B.无论损失大小都取 1
  • C.损失越大越优先选取
  • D.随机抽样决定取舍

答案:A。在目标函数 $\sum (v_i L_i - \lambda v_i)$ 中,当 $L_i < \lambda$ 时选中该样本能降低总目标,即“当前能学会的样本优先入选”,对应 A。B 破坏了自动调节,C 与“先易后难”相反,D 则失去了自适应意义。

Q4. 自步学习目标函数中的 $-\lambda \cdot v_i$ 项起什么作用?

单选题 · mid

  • A.对所有困难样本加惩罚
  • B.鼓励选择当前能学会的样本← 正确答案
  • C.增大神经网络模型的参数量
  • D.加快环境模拟器的运行速度

答案:B。$-\lambda v_i$ 是选中样本的“奖励项”,每选一个样本目标函数就减去 $\lambda$,等价于在给定预算下尽量多挑当前学得动的样本。A 误读了符号方向,C 和 D 与该目标函数毫无关系。

Q5. 实验对比中 $\text{SpeedUp} = T_{\text{random}} / T_{\text{curriculum}}$ 的含义是什么?

单选题 · mid

  • A.课程学习比随机课程快几倍← 正确答案
  • B.随机课程的成功率比值
  • C.训练内存占用的比值
  • D.模型参数增加的倍数

答案:A。分子是随机课程收敛所需回合数,分母是课程学习所需回合数,两者相除表示课程学习带来的收敛加速倍数,数值大于 1 即说明更快。B 混淆了速度与成功率,C 和 D 与收敛速度无关。

Q6. 课程学习与预训练的核心区别是什么?

单选题 · hard

  • A.预训练不按难度组织任务← 正确答案
  • B.两者在概念上完全相同
  • C.预训练只用于机器人领域
  • D.课程学习不更新网络权重

答案:A。预训练追求在通用源任务上获取丰富的先验知识,不关心源任务与目标任务谁难谁易;课程学习则严格要求任务按难度从低到高排列,难度组织是命脉。B 混淆概念,C 对预训练领域理解过窄,D 与事实相反。

Q7. 关于“自动难度调节”,下列说法正确的是?

单选题 · mid

  • A.可以完全替代人工课程设计
  • B.难度一旦设定就不能改变
  • C.根据学生模型调整难度← 正确答案
  • D.只能用于监督学习任务

答案:C。自动难度调节的核心是引入“学生模型”评估当前水平,动态决定下一阶段任务难度。A 忽略了初期能力评估不准的问题,B 与“动态”矛盾,D 错在自动调节同样适用于强化学习。

Q8. 课程学习给强化学习训练带来的常见收益有哪些?

多选题 · mid

  • A.加快训练收敛的速度← 正确答案
  • B.必然减少网络的层数
  • C.提升最终任务的性能← 正确答案
  • D.完全消除探索的问题

答案:AC。课程学习通过由易到难的引导,让模型更快建立有效策略(A),并在充分学习基础上提升最终性能(C)。B 把收益误解为网络结构变化,D 说“完全消除”过于绝对,探索问题只能缓解不能根除。

Q9. 下列属于课程设计原则的有哪些?

多选题 · hard

  • A.难度跨越越大越好
  • B.相邻任务过渡平滑← 正确答案
  • C.任务顺序随机排列
  • D.根据进度评估调整← 正确答案

答案:BD。平滑过渡避免任务骤变引发灾难性遗忘(B),进度评估用于判断何时进入下一阶段(D)。A 与平滑原则相反,悬崖式难度跨越会让训练崩溃,C 是随机课程,违背由易到难的排序要求。

Q10. 关于课程学习的实验设计,下列说法正确的有哪些?

多选题 · extreme

  • A.对照组可随机打乱课程← 正确答案
  • B.基线必须用更大的模型
  • C.成功率是唯一有效指标
  • D.需对比固定与自适应课程← 正确答案

答案:AD。随机打乱课程是经典对照方案,用于排除顺序本身带来的偏差(A);对比固定课程与自适应课程能评估动态调节的增量价值(D)。B 违反“单一变量”原则,基线应使用相同模型,C 说法片面,收敛回合数、训练稳定性同样是重要指标。