你领养了一只金属骨骼的机器狗,名叫辉仔。它关节灵活,却连“先迈哪条腿”都不会。你的目标是让它穿过堆满玩具的客厅,在一堆杂物里找到那根仿真骨头。你手里没有说明书,唯一的训练工具是一袋“能量零食”:走对一步,给一颗;撞上茶几,没有零食,也不挨骂。就这么一次次试、一遍遍调,辉仔慢慢知道“看见沙发往右拐、听见响动先停步”。这套“给反馈、反复试”的驯养法,正是强化学习的骨架。 工程师们在机器人上最常用的两套“驯养方案”,一个叫 PPO,一个叫 SAC。PPO 像一位谨慎的老教练:每天只在训练笔记上改一小处,拒绝任何推倒重来的激进更新,靠“小步走”换稳定。SAC 则像一位鼓励好奇心的年轻教练:它把“多尝试、多张望”也写进评分表,给探索发奖金,让辉仔见过客厅每个角落后再去冲刺终点。这篇文章用辉仔找骨头的故事,把两套方案从原理讲到工程落地的取舍,最后告诉你:你家的狗,到底该跟谁练。

岗位关联

掌握 PPO 与 SAC 的思想内核和选型经验,是机器人算法、具身智能方向的从业者把论文里的公式变成真机能跑起来的代码的第一步。

目录
  1. 可视化演示
  2. 任务建模ABC
  3. PPO裁剪机制
  4. SAC最大熵
  5. 超参敏感性
  6. 连续控制实践
  7. 选型决策
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

对比PPO策略裁剪与SAC最大熵探索两种强化学习算法在机器人连续控制中的原理与性能。切换模式查看不同维度,拖动滑块调节探索强度。

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

PPO策略裁剪机制 策略裁剪:限制新旧策略比值在[1-ε,1+ε]区间,保证稳定更新 优势估计:GAE广义优势估计平衡偏差与方差 L_CLIP = Ê[min(r·A, clip(r,1±ε)·A)] PPO通过裁剪避免策略更新过大导致训练崩溃

任务建模ABC

在请教练之前,你得先给辉仔布置一座“学步房”:地上贴好起点和终点,明确它能看见什么、能使动哪些关节、什么行为算“对”。房间布置得越清楚,后面不管哪位教练来,都不会跑偏。这套“布置房间”的动作,在强化学习里叫任务建模。

任何机器人控制任务都能拆成四个零件:状态、动作、奖励、回合。状态是机器人的“眼睛”,比如辉仔各关节的角度、身姿、与骨头的距离;动作是它的“肌肉指令”,对机器狗来说就是每条腿多个关节的力矩值;奖励是环境给的分数,比如前进一步 +0.01、咬到骨头 +1;回合则是一次从起点到终点的完整试跑。

强化学习的全部目标,是找到一个策略 $\pi$——一个能把“看到的画面”翻译成“该做的动作”的决策函数——让整个回合的累积奖励最大。不过未来的奖励要打折扣:今天的一根骨头,远比一年后的一根诱人。于是引入折扣因子 $\gamma$ 和“回报”公式:

学步房的三样布置——状态、动作、奖励——决定了辉仔学习的天花板。哪怕后边请来最顶级的教练,如果“奖励”定义得稀里糊涂,它也只能学到一套莫名其妙的动作。地基打得稳,楼才盖得高。

Gt=∑k=0∞γkrt+k+1\displaystyle G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}
这个公式把“从此刻起所有未来的奖励”折算成“现在的一根骨头”,折扣因子 $\gamma$ 越小,远期奖励就缩水得越厉害。
  1. 回报 $G_t$从某一时刻 $t$ 开始,把未来所有奖励折合成“现在的一根骨头”值多少。
    GtG_t
  2. 求和符号把当前步以及之后每一步的奖励全部累加起来,一步都不漏。
    ∑k=0∞\sum_{k=0}^{\infty}
  3. 折扣因子 $\gamma^k$$\gamma$ 在 0 和 1 之间,$k$ 越大表示越远期的奖励,被乘得越小,代表“远期骨头打折扣”。
    γk\gamma^k
  4. 即时奖励 $r_{t+k+1}$在第 $t+k+1$ 步,环境因为辉仔的动作而给出的分数。
    rt+k+1r_{t+k+1}

PPO裁剪机制

老教练的训练哲学只有一句话:每天只改一个坏习惯。今天辉仔在沙发前犹豫,教练就在笔记上添一笔“往右多半步”;绝不同时又改步幅又改路线又改奖励习惯。为什么这么保守?因为狗的记忆是连续的,一次大改等于把过去全部经验作废,狗会当场蒙圈,这就是“步子太大伤身体”。

在算法里,这种“大改伤身”的问题叫策略更新过大。直接使用策略梯度时,数学会告诉你“朝哪个方向调收益更高”,但它没说“调多快”。步子太大,新策略和旧策略彻底脱节,之前攒的经验全部失真,学习曲线就会像过山车一样剧烈震荡。

PPO 的解法是给策略更新装一道“护栏”——裁剪(clip)。它先计算新策略相对旧策略在每个动作上的概率比值 $\rho_t(\theta)$:比值等于 1 说明策略没变,大于 1 说明这个动作被更偏爱了。如果比值落在 $[1-\varepsilon, 1+\varepsilon]$ 内,说明改动不大,放心更新;一旦越界,就把更新幅度硬压回边界。这就是裁剪后的替代目标:

老教练的护栏有一格刻度,就是 $\varepsilon$,默认开 0.2,意思是“一次最多改变两成的动作倾向”。正因为这条“最多改两成”的铁纪律,PPO 在机器人任务里以稳定著称——它宁可学得慢一点,也绝不把辉仔教到人格分裂。这也是它成为仿真机器人训练最常用算法之一的原因。

LCLIP(θ)=Et[min⁡(ρt(θ)A^t,  clip(ρt(θ), 1−ε, 1+ε)A^t)]\displaystyle L^{\mathrm{CLIP}}(\theta)=\mathbb{E}_t\left[\min\left(\rho_t(\theta)\hat{A}_t,\;\mathrm{clip}\left(\rho_t(\theta),\,1-\varepsilon,\,1+\varepsilon\right)\hat{A}_t\right)\right]
一句话理解:当比值越界时,目标函数不再继续增长,梯度也就不再推着策略往外跑,相当于教练在笔记上写了“今天到此为止”。
  1. 新旧策略比值 $\rho_t(\theta)$用同一个动作的新概率除以旧概率,得 1 是没变,偏离越多变得越猛。
    ρt(θ)=πθ(at∣st)πθold(at∣st)\rho_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)}
  2. 优势 $\hat{A}_t$这一步的结果比“平均预期”好多少;为正说明该鼓励,为负说明该抑制。
    A^t\hat{A}_t
  3. 裁剪函数把比值强行限制在 $[1-\varepsilon, 1+\varepsilon]$,超出部分不再奖励“改得更激进”。
    clip(ρt(θ), 1−ε, 1+ε)\mathrm{clip}\left(\rho_t(\theta),\,1-\varepsilon,\,1+\varepsilon\right)
  4. 取最小值当优势为正时,只按被裁剪后的保守值计算,彻底切断越界更新的激励。
    min⁡(⋅,⋅)\min(\cdot,\cdot)

SAC最大熵

年轻教练小林的方法完全不同。她给辉仔的第一条训令是:不急着找骨头,先把客厅每一寸都闻一遍。每发现一个新鲜角落,照常得分。在别人眼里这是“绕路”,在她眼里这是“为未来存本钱”——见过世面的狗,遇到突发状况才不慌。

“多尝试就有奖”在数学上叫最大熵。熵衡量一个策略的随机程度:动作分布越均匀,行为越多样,熵越大。普通强化学习只要累计奖励最大;SAC 在目标里额外加了一项“熵奖金”——除了找到骨头得分,行为够不够多样也得分。于是机器人不会太早死磕一条固定路线,而是持续保持探索的可能。

SAC 的完整目标函数形如:每一步的奖励,加上“温度系数 $\alpha$ × 当前策略的熵”。$\alpha$ 大,探索权重高,辉仔满屋乱逛;$\alpha$ 小,探索权重低,辉仔专注冲刺。现代 SAC 还会自动调节 $\alpha$:训练初期多探索,后期自动降温,把“好奇心”这个旋钮交给算法自己拧。结构上,它用“软演员-评论家”架构:评论家学一个考虑熵的软 Q 值(可以理解为“预测未来骨头总数”的估分器),演员再从软 Q 值里提炼策略。

小林的聪明之处在于把“好奇”直接写进了成绩单。代价是前期绕路、每一步都要算熵;回报是辉仔对房间的全局更熟,样本利用率更高。这正是 SAC 在真机学习、样本稀少任务中经常胜过 PPO 的深层原因——同样一次试错,它榨出了更多信息。

J(π)=∑tE(st,at)∼ρπ[r(st,at)+α H(π(⋅∣st))]\displaystyle J(\pi)=\sum_t\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}\left[r(s_t,a_t)+\alpha\,\mathcal{H}\left(\pi(\cdot|s_t)\right)\right]
这个公式的意思是:每个时刻的总分 = 环境给的奖励 + “好奇心奖金”× 当前策略有多随机。好奇心本身被明码标价。
  1. 求和与期望把每个时刻、每条试跑轨迹的收益都平均进来,代表“整体表现”。
    ∑tE(st,at)∼ρπ\sum_t\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}
  2. 奖励项 $r(s_t,a_t)$环境给的基础分数,例如咬到骨头的 +1。
    r(st,at)r(s_t,a_t)
  3. 熵项 $\mathcal{H}$策略在当前状态下的混乱程度,行动越均匀熵越大,“只认一条路”时熵最小。
    H(π(⋅∣st))=−∑aπ(a∣st)ln⁡π(a∣st)\mathcal{H}\left(\pi(\cdot|s_t)\right)=-\sum_a \pi(a|s_t)\ln\pi(a|s_t)
  4. 温度系数 $\alpha$决定“好奇心奖金”在总目标里占多大权重,是 SAC 最重要的旋钮。
    α\alpha

超参敏感性

两位教练手里各有一排旋钮:骨头该发多大颗、每天允许改几条习惯、好奇心奖金开多少。这些旋钮在算法里统一叫超参数。旋钮拧不对,再好的训练哲学也带不出好狗——小林的“好奇奖金”开太大,辉仔可能永远在闻沙发而不去吃骨头。

工程经验告诉我们,选错算法不可怕,选错超参才真要命。PPO 最敏感的是学习率和裁剪系数 $\varepsilon$:学习率太大,更新步子大得护栏都拦不住;$\varepsilon$ 太大护栏形同虚设,太小则学不动。SAC 最敏感的是温度系数 $\alpha$ 和学习率:$\alpha$ 太大策略变成纯随机,太小探索早早熄灭。此外批量大小、经验池容量(可以理解为辉仔的“成长日记”能记多少页)会影响数据利用方式,属于第二梯队。

调参没有魔法,只有“手感”。而手感来自对度量工具的理解——熵就是最直观的度量:它告诉你当前策略到底有多“随机”。熵的公式如下:

老工程师的调参顺序往往是:先用小规模实验把学习率镇住,再动 $\varepsilon$ 或 $\alpha$,最后才碰批量相关参数。每次只拧一个旋钮,观察曲线形态变化——就像教练不会同时改三个训练习惯:一次只调一个变量,才能知道是哪颗螺丝在起作用。

H(π(⋅∣s))=−∑aπ(a∣s)ln⁡π(a∣s)\displaystyle \mathcal{H}(\pi(\cdot|s))=-\sum_a \pi(a|s)\ln\pi(a|s)
熵为 0 表示策略像个“一条道走到黑”的犟狗;熵越大,表示辉仔在岔路口的选项越丰富。
  1. 负号保证熵是非负的数,0 代表一点不随机、绝对确定。
    −-
  2. 对每个动作求和把所有可能动作的“信息量”累加起来。
    ∑a\sum_a
  3. 概率乘对数动作越确定(概率接近 1),$\ln$ 越接近 0,熵越小;动作越平均,熵越大。
    π(a∣s)ln⁡π(a∣s)\pi(a|s)\ln\pi(a|s)

连续控制实践

辉仔的关节不是键盘上的四个方向键,而是像人类的胳膊一样,每个关节都能输出一个范围内的任意力矩。这就是“连续动作空间”:动作不是选择题,而是一道连续填空题。这也让机器人控制比棋类游戏难了一个量级——可能的动作有无限多个。

在算法里,处理连续动作的常见做法是让策略输出一个高斯分布:均值 $\mu$ 是“最该做的动作”,方差 $\sigma^2$ 是“探索的噪声量”,然后从这个分布里采样出具体动作。PPO 和 SAC 都能干这活,但工程习惯上,PPO 更常跑在仿真里——可以开几百个平行“样板间”同时收集数据;SAC 更常用于真机——交互次数金贵,它那套经验复用和熵探索更省样本。

从仿真搬到真机,最大的敌人叫“差距”:虚拟世界的摩擦力、重量、光线和现实完全不同。工程师们用域随机化来对付它——训练时把房间的装修风格、地板的摩擦系数、负载重量统统随机打乱,让辉仔在仿真里“见过 100 种客厅”,真机上才不会一进门就傻眼。

一句话总结:在样板间里练胆子用 PPO,在真客厅里精进用 SAC;无论用谁,都要记得在训练时多换几种“装修风格”。仿真不是目的,把辉仔安全地送进真实客厅才是。

at∼N(μθ(st), σθ2(st))\displaystyle a_t\sim\mathcal{N}\left(\mu_\theta(s_t),\,\sigma_\theta^2(s_t)\right)
这表示:动作不是直接算出来的唯一值,而是从一个以“期望动作”为中心的正态分布里抽出来的。
  1. 动作采样 $\sim$从分布里抽一个具体的力矩值,就像从一叠牌里抽一张,每次可能略有不同。
    ∼\sim
  2. 均值 $\mu_\theta(s_t)$策略网络认为当前状态下“最该做的动作”,是分布的中心。
    μθ(st)\mu_\theta(s_t)
  3. 方差 $\sigma_\theta^2(s_t)$探索噪声的大小,方差越大动作越飘、越随机,越小越精准。
    σθ2(st)\sigma_\theta^2(s_t)

选型决策

大老板把两位教练都叫到跟前:我家这只狗,到底跟谁练?老教练沉默,小林也沉默——他们都等你先回答一个问题:你家有几个客厅?狗撞一次茶几的维修费是多少?你打算训几天?选型不是比谁更强,而是比谁更匹配。

四条经验供参考:仿真算力足、能并行开几百个环境,选 PPO,它能把并行算力兑换成稳定;真机交互预算极少,选 SAC,它的样本效率能帮你省下大量试错成本;奖励清晰、希望行为可复现,PPO 的裁剪机制更稳;任务需要持续适应变化环境,SAC 的熵探索能防止过早收敛。

从工程账本上看总样本量:

最后给一条朴素建议:先算账,再请教练。用一次小规模实验同时摸清“样本预算”和“曲线手感”,再决定 PPO 还是 SAC。没有最好的教练,只有最合适的教练——这句话,在机器人强化学习里同样成立。

Nsamples=E×T\displaystyle N_{\mathrm{samples}}=E\times T
样本总预算 = 回合数 × 每回合步数。仿真里 $E$ 可以开得很大,所以 PPO 大方地耗样本换稳定;真机上 $E$ 被维修费和耐心锁死,SAC 便成了划算的选择。
  1. 样本总量 $N_{\mathrm{samples}}$整个训练过程中机器人与环境交互的总步数,是算法开销的“总账单”。
    NsamplesN_{\mathrm{samples}}
  2. 回合数 $E$辉仔从起点到终点完整试跑的次数;仿真里可以成千上万,真机上往往只有几百。
    EE
  3. 每回合步数 $T$单次试跑里迈出的步数;找不到骨头时 $T$ 会被步数上限截断。
    TT

AI 应用场景

四足机器狗步态学习的两段式工程

阶段:仿真训练 + 真机微调部署

解决的问题:真机试错成本极高,一个跟头就是上万元维修费;直接端到端在真机上学习既危险又缓慢。AI 先用低成本仿真把绝大多数技能学会,再在真机上做小范围适应,把风险锁进虚拟世界。

具体案例:某足式机器人团队在 Isaac Sim 中开启 2000 个平行仿真“客厅”,用 PPO 训练机器狗学会小跑、上坡、越障,权重收敛后挑选表现最优的策略;随后部署到真机,改用 SAC 做 50 次以内的真机步态微调,补偿仿真与现实的摩擦差异,最终在真实草坪上稳定行走。

机械臂精密插孔装配

阶段:策略学习与奖励设计

解决的问题:传统示教编程只能复现固定轨迹,遇到孔位偏差 1~2 毫米就失败;手工调参试错周期长。AI 通过强化学习让机械臂自己学会“试探-修正”的插入策略,把模糊偏差消化在动作序列里。

具体案例:工程师设计稀疏奖励(成功插进才给 1 分)配合 SAC 训练,利用经验池复用和熵探索,把原本需要数百次真实插孔尝试的任务压缩到几十次;与 PPO 在相同样本预算下对比,SAC 的探索特性让机械臂更主动地尝试不同插入姿态,成功率明显更高。

轮式配送机器人避障导航

阶段:仿真并行训练 + 部署

解决的问题:园区地图户型千变万化,单机学习太慢,手工规则在拥挤场景泛化差。AI 把策略训练放到大规模并行仿真中,用数据量换泛化能力。

具体案例:某园区配送机器人项目用 PPO 在上百个随机生成的户型里并行训练端到端避障策略,配套域随机化把地板摩擦、行人速度都随机打乱;部署到实车后,端到端反应速度比传统局部规划快约 30%,且在不同园区间迁移时几乎不需要重新训练。

Python 演示

python77 行
import numpy as np  def softmax(logits):    p = np.exp(logits - np.max(logits))    return p / np.sum(p)  def clipped_surrogate(ratio, adv, eps=0.2):    clip_ratio = np.clip(ratio, 1.0 - eps, 1.0 + eps)    return np.minimum(ratio * adv, clip_ratio * adv)  print("== PPO 裁剪效应观察 ==")print("ratio  adv=1 输出  adv=-1 输出")for ratio in [0.7, 0.85, 1.0, 1.15, 1.3, 1.5]:    up = clipped_surrogate(ratio, 1.0)    down = clipped_surrogate(ratio, -1.0)    print("%.2f    %.3f      %.3f" % (ratio, up, down))  class SimpleRoom:    def __init__(self, size=5):        self.size = size        self.goal = size * size - 1        self.state = 0        self.moves = [(-1, 0), (1, 0), (0, -1), (0, 1)]     def reset(self):        self.state = 0        return self.state     def step(self, act):        r, c = divmod(self.state, self.size)        dr, dc = self.moves[act]        r = max(0, min(self.size - 1, r + dr))        c = max(0, min(self.size - 1, c + dc))        self.state = r * self.size + c        done = self.state == self.goal        return self.state, 1.0 if done else -0.01, done  def train(env, episodes=250, lr=0.15, use_entropy=True, alpha=0.08, seed=0):    rng = np.random.default_rng(seed)    logits = np.zeros((env.size * env.size, 4))    curve = []    for _ in range(episodes):        s = env.reset()        ep = []        total = 0.0        done = False        while not done:            probs = softmax(logits[s])            a = int(rng.choice(4, p=probs))            ns, r, done = env.step(a)            ep.append((s, a, r))            total += r            s = ns        curve.append(total)        g = 0.0        for s, a, r in reversed(ep):            g = r + 0.9 * g            probs = softmax(logits[s])            grad = g * (1.0 - probs[a])            if use_entropy:                ent = np.sum(probs * np.log(probs + 1e-12))                grad = grad + alpha * probs[a] * (ent - np.log(probs[a] + 1e-12))            logits[s, a] += lr * grad    return curve  env = SimpleRoom()plain_curve = train(env, use_entropy=False)entropy_curve = train(env, use_entropy=True)print("== 迷你房间: 熵探索 vs 普通采样 ==")print("普通策略梯度 末10回合均分:", round(float(np.mean(plain_curve[-10:])), 2))print("带熵奖金训练 末10回合均分:", round(float(np.mean(entropy_curve[-10:])), 2))
目的:用 5×5 迷你网格复现“辉仔找骨头”,演示 PPO 的裁剪如何压住越界更新,以及 SAC 式的熵奖金如何提升探索收益。
  1. clipped_surrogate(ratio, adv, eps=0.2)计算 PPO 的裁剪目标;比值越界后输出不再增长,这就是“护栏”所在。
  2. clip_ratio = np.clip(ratio, 1.0 - eps, 1.0 + eps)把概率比值限制在 [0.8, 1.2],越界值被强行拉回。
  3. np.minimum(ratio * adv, clip_ratio * adv)取两者较小值,确保越界方向的激进更新得不到任何额外收益。
  4. probs = softmax(logits[s])把当前状态的“动作偏好分”转成概率,相当于辉仔在每个格子里的迈腿倾向。
  5. a = int(rng.choice(4, p=probs))按概率随机采样一步动作,模拟狗在探索时的随机性。
  6. grad = g * (1.0 - probs[a])策略梯度的核心:成绩越好、越不常做的动作,被加权的幅度越大。
  7. g = r + 0.9 * g从回合末尾倒推累计回报,对应折扣因子 0.9 的回报公式。
  8. ent = np.sum(probs * np.log(probs + 1e-12))计算当前策略的熵,作为“好奇心”的度量。
  9. logits[s, a] += lr * grad用学习率把梯度写入偏好分,辉仔的“肌肉记忆”就更新了一步。

常见误区

误区经常把 PPO 的 $\varepsilon$ 从 0.2 一路调小到 0.02,觉得越保守越好,结果跑了几百轮策略几乎没变化,还以为是代码写错了。

正解裁剪是护栏而不是刹车。$\varepsilon$ 太小等于每天只许改 2% 的训练笔记,学习速度会被压到几乎停滞;$\varepsilon$ 太大护栏形同虚设,又回到大步更新的震荡。0.2 是论文和工程里最常见的默认值,应该围绕它小幅搜索,而不是“越小越好”。

为何常见:人们容易把“稳定”误解为“幅度小”,却忽略了稳定是为了持续进步——完全不动的策略,稳定得毫无意义。

误区看到 SAC 训练早期的轨迹歪歪扭扭,觉得它在浪费算力,甚至怀疑是探索噪声没调好。

正解SAC 的熵奖励是“受控的好奇”——它给随机性发奖金,但温度系数 $\alpha$ 会随训练自动下调:前期多探索、后期多利用。这不是乱走,而是在给策略积累“见过世面”的底子,让它在环境变化时不至于惊慌失措。

为何常见:只盯着单条轨迹看,忽略了多次试验的统计收益;单看一条路确实是绕远,看整体分布才知道它在铺路。

误区看到仿真里 PPO 的训练曲线上升快,就下结论说 PPO 全面占优,写进项目汇报里被追问才发现站不住脚。

正解PPO 的“快”主要来自能开成百上千个并行仿真环境,把墙钟时间换成样本量;在同样的样本数量下,SAC 的经验池复用加熵探索通常更省样本。比较速度前,先问横轴是“墙钟时间”还是“样本数”。

为何常见:混淆了“计算速度快”和“样本效率高”两个概念。仿真并行解决的是前者,SAC 解决的是后者。

误区把论文里的学习率、$\alpha$、批大小原样拷到自己任务上就开跑,效果崩了还怀疑是算法有 bug。

正解超参和任务强相关:奖励尺度变 10 倍,学习率的安全区间完全变味;动作维度变高,$\alpha$ 的需求也不一样。正确做法是先跑小规模实验看曲线形态,再按“学习率 → $\varepsilon$ 或 $\alpha$ → 批量相关参数”的顺序逐个调。

为何常见:忽视了环境奖励量纲、状态维度和网络结构都会影响最优超参;论文给的是“那一个任务的答案”,不是“所有任务的答案”。

面试题

Q1. 强化学习智能体在每一步与环境交互时,输出给环境的是什么?

单选题 · easy

  • A.状态观测值
  • B.控制动作量← 正确答案
  • C.累计回报值
  • D.环境奖励值

答案:B。智能体的输入是状态、输出是动作,而状态和奖励都来自环境。就像辉仔看见沙发(状态)后迈腿(动作),骨头(奖励)是客厅给的。A 是输入而非输出,C、D 把环境的职责安到了智能体头上。

Q2. PPO 裁剪系数 ε 的常见经验默认值约为多少?

单选题 · easy

  • A.大约 0.2← 正确答案
  • B.大约 0.5
  • C.大约 1.0
  • D.大约 2.0

答案:A。0.2 是 PPO 论文和工程实现中最常用的默认值,含义是“一次更新最多改变两成的动作概率倾向”。其他数值均有文献或实践尝试,但都没有成为默认共识,故选 A。

Q3. PPO 的裁剪机制主要为了解决什么问题?

单选题 · mid

  • A.策略更新步幅过大的震荡← 正确答案
  • B.动作空间维度过高的爆炸
  • C.奖励信号过于稀疏难学
  • D.环境状态观测噪声太大

答案:A。策略梯度只告诉方向不告诉步幅,步子太大会导致新策略和旧策略脱节、历史经验失真。裁剪把比值限制在 [1−ε, 1+ε] 内,专治“一步跨太大”的震荡。B、C、D 是其他维度的挑战,与裁剪机制无关。

Q4. SAC 的最大熵思想会带来下列哪些影响?

多选题 · mid

  • A.策略保持一定的随机探索性← 正确答案
  • B.温度系数会随训练自动调节← 正确答案
  • C.完全忽略环境给的稀疏奖励
  • D.训练后期会自动偏向更多利用← 正确答案

答案:ABD。最大熵在目标里加入熵奖金,让策略保持随机(A);为了平衡探索与利用,现代 SAC 会自动调节温度系数(B);随着训练推进,熵权重相对下降,策略会偏向利用(D)。C 错误,SAC 从不忽略环境奖励,只是额外叠加了熵项。

Q5. 在其他条件相同时,SAC 的温度系数 α 增大会让策略变得更?

单选题 · mid

  • A.更有好奇心更爱探索← 正确答案
  • B.更倾向直接利用经验
  • C.完全不再接收外部奖励
  • D.训练曲线立刻变得平滑

答案:A。α 是“好奇心奖金”的权重,α 越大,策略越重视熵奖励,行为越随机、越爱探索。B 是 α 减小的效果,C 和 D 在数学上都不成立,α 只会调整探索权重,不会关闭奖励或抹平曲线。

Q6. 连续控制任务中,机器人的动作空间通常被建模为什么?

单选题 · hard

  • A.关节力矩的连续区间值← 正确答案
  • B.有限个离散动作选项的集合
  • C.纯符号化的高层次语义指令
  • D.二值开关组合成的比特流

答案:A。机器人关节能输出任意范围内的力矩,动作是连续值,通常用高斯分布采样建模。B 是离散动作空间(如游戏按键),C 是任务规划层,D 是数字电路思维,都不适用于关节级连续控制。

Q7. 把策略从仿真部署到真机时,下列哪些是常用手段?

多选题 · hard

  • A.仿真中加入域随机化训练← 正确答案
  • B.真机上做小规模在线微调← 正确答案
  • C.每一步都从零开始重新训练
  • D.把奖励函数换成无关随机量

答案:AB。域随机化让策略在仿真里见过多种摩擦、光照、负载,增强迁移鲁棒性(A);真机交互金贵,通常只做小规模微调(B)。C 既不现实也无必要,D 会直接破坏学习目标,都是错误选项。

Q8. 折扣因子 γ 越接近 1,表示智能体越看重什么?

单选题 · easy

  • A.看重长远累计回报← 正确答案
  • B.重视眼前一步得失
  • C.忽略全部环境奖励
  • D.快速忘记历史经验

答案:A。γ 越接近 1,远期奖励被打的折扣越小,说明智能体越有“远见”,愿意为长远回报放弃眼前小利。γ 越接近 0 才越短视(B),C 和 D 与 γ 的定义无关。

Q9. SAC 在样本效率上通常优于 PPO 的关键原因是什么?

单选题 · extreme

  • A.经验复用加软更新和熵搜索← 正确答案
  • B.能并行开更多传统仿真环境
  • C.完全不需要人工设计奖励函数
  • D.只适合处理低维离散动作空间

答案:A。样本效率指“每个样本学到的信息量”。SAC 通过经验池复用历史数据、软 Q 更新减少估值方差、熵奖励扩大探索覆盖面,让每个样本被榨出更多信息。B 提升的是墙钟速度而非样本效率,C、D 与事实不符。

Q10. 选择 PPO 还是 SAC 作为机器人控制算法时,合理考量有哪些?

多选题 · mid

  • A.仿真算力充足时优先考虑 PPO← 正确答案
  • B.真机交互预算少时优先考虑 SAC← 正确答案
  • C.奖励设计清晰稳定时优先 PPO← 正确答案
  • D.只看论文引用量不看任务匹配

答案:ABC。仿真并行环境多时,PPO 能把算力换成稳定(A);真机样本金贵时,SAC 的样本效率更划算(B);奖励清晰、需要行为可复现时,PPO 的裁剪更稳妥(C)。D 是典型的“技术选型迷信”,用引用量代替任务分析,不可取。