设想一位登山者小明,口袋里只有一本“择路心法”:每次遇到岔路口,往左还是往右,全由这本心法按概率决定。第一次试走,他在一处斜坡选择了右路,成功攀上新高度;第二次遇到相似的坡,他选左路,却滑了下来。回到营地复盘时,他在心底默默记下:“右路值得多试,左路要少走。”这里,“择路心法”就是强化学习里的策略,“攀到的高度差”就是回报,而“根据这次表现调整心法”的过程,就是 REINFORCE 算法的全部秘密。它不画地图、不求捷径公式,只靠一次次的真实尝试和事后复盘,让“选路的偏好”逐渐朝着更高的海拔爬升。这篇文章会带你从登山者的视角,一步步理解策略梯度直觉、回报采样、方差与基线,以及它和 Q-Learning 等值函数方法的根本区别。

岗位关联

掌握 REINFORCE 是理解 PPO、Actor-Critic 等现代策略梯度算法(包括大模型 RLHF)的第一块基石,也能帮你在实际工作中快速上手“直接优化策略”类的强化学习任务。

目录
  1. 可视化演示
  2. 策略梯度直觉:择路心法决定登山风格
  3. 策略梯度定理:把复盘变成数学
  4. 蒙特卡洛采样:用有限次尝试估计期望
  5. 基线降方差:不看绝对海拔,看相对进步
  6. 算法流程:训练营的日常循环
  7. 对比值函数法:制图派 vs 直接派
  8. 改进方向:从独自复盘到团队协作
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示REINFORCE最简单的策的核心机制,通过架构/数据/状态/性能四种模式展示关键概念与交互流程。

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

REINFORCE最简单的策:一策略梯 一、策略梯度定理的推导逻辑 二、REINFORCE的蒙特卡 核心机制可视化 REINFORCE最简单的策整体架构与关键组件

策略梯度直觉:择路心法决定登山风格

小明登山时最重要的不是某一次具体选择,而是那本“择路心法”——在遇到相似地形时,他更倾向于左还是右。强化学习里,这本心法被称作策略,记作 π_θ(a|s)。参数 θ 是心法里的旋钮:调整它,就会改变“在这个状态下选那个动作”的概率。第一次尝试右路爬得高,他就在心里把右路的概率调高一点;左路摔得惨,就把左路的概率调低一点。这就是策略梯度最朴素的直觉:好动作概率上调,坏动作概率下调。

从数学上把这些直觉抽象出来,登山者要解决的其实是一个优化问题:找到一组心法参数 θ,让“平均海拔增幅”最大。这个平均表现被称为目标函数 J(θ)。由于登山路线充满随机性——风向、落石、脚滑都会影响结果——我们只能把所有可能路线的表现做加权平均,权重正是当前策略生成这条路的概率。

所以,REINFORCE 的第一步只是把“想爬得更高”这件事数学化:定义平均海拔代表心法的好坏,之后每一次更新,都是在朝着提高这个平均值的“上坡方向”迈步。

J(θ)=Eτ∼πθ[R(τ)]\displaystyle J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ R(\tau) \right]
这个公式的意思是:心法 θ 的好坏,等于“按这套心法去走,所有可能路线回报的平均值”。
  1. θ(策略参数)登山者心法里的可调旋钮,改变它就会改变选择岔路的偏好。
    θ\theta
  2. π_θ(a|s)由参数 θ 决定的择路概率——在状态 s 下选择动作 a 的可能性有多大。
    πθ(a∣s)\pi_{\theta}(a \mid s)
  3. 期望 E对随机路线求平均,相当于想象很多次平行宇宙里的登山尝试,把结果汇总。
    Eτ∼πθ[⋅]\mathbb{E}_{\tau \sim \pi_{\theta}}[\cdot]
  4. R(τ)一条完整路线 τ 的总回报,即把整段路程里每一步的即时奖励加起来。
    R(τ)=∑t=0TrtR(\tau) = \sum_{t=0}^{T} r_t

策略梯度定理:把复盘变成数学

复盘时小明遇到一个难题:这次攀到高处,究竟是“岔口选右”的功劳,还是“后面那段碎石路”本来就好走?他需要一套规则,把“结果好坏”归因到“当时的选择”上。数学上,这种归因靠的是对数概率梯度:对选中的动作概率取对数,再对参数求梯度,得到一个指示方向——如果想让这次的选择更容易被再次做出,参数该往哪边推。

为什么是“log”而不是直接求概率的梯度?因为直接使用 ∇π 会让期望里多出概率本身,导致采样时权重不均;而 ∇log π = ∇π / π 正好抵消了这个权重,让每个样本的贡献变得干净。这就是策略梯度定理里的对数技巧。它把“复盘”变成了一句可执行的话:用这次选择对参数的敏感度,乘以这次爬升的高度,再取平均,就得到了心法应该调整的方向。

小明终于有了自己的复盘公式:不是简单记“左路好”或“右路差”,而是用“这次爬升带来的总高度”乘以“心法对这次选择的敏感度”,再把多次尝试的结果平均。这个公式就是 REINFORCE 的更新引擎。

∇θJ(θ)=Eτ∼πθ[∑t=0TGt ∇θlog⁡πθ(at∣st)]\displaystyle \nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G_t \, \nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t) \right]
策略梯度定理的通俗版本:想要心法更好,就沿着“被高回报验证过的选择方向”推动参数。
  1. ∇θ(梯度符号)表示“朝哪个方向调整参数能提高目标”。就像指南针,指着上坡的方向。
    ∇θJ(θ)\nabla_{\theta} J(\theta)
  2. G_t(折扣回报)从时刻 t 之后累积的总收益,代表“这次选择后续带来的总回报”。
    Gt=∑k=0T−t−1γkrt+k+1G_t = \sum_{k=0}^{T-t-1} \gamma^{k} r_{t+k+1}
  3. ∇log π_θ(a_t|s_t)对数概率梯度,回答“想提高这次选择的概率,参数怎么动”。
    ∇θlog⁡πθ(at∣st)\nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t)
  4. 外层的期望无法穷举所有路线,于是用多次真实尝试的采样平均来近似。
    Eτ∼πθ[⋅]\mathbb{E}_{\tau \sim \pi_{\theta}}[\cdot]

蒙特卡洛采样:用有限次尝试估计期望

期望的精确计算需要枚举这座山的所有可能路径,路径数量随步数指数爆炸,根本做不到。小明的解决办法很朴素:多试几次,把实际看到的海拔增幅记下来,取平均。这就是蒙特卡洛采样——用随机样本的平均值去逼近真实的期望。“试一次完整的山”在强化学习里叫一个回合,回合结束时我们才把累计奖励算清楚。

由于后续奖励距离当前时刻越远越不确定,登山者会给它们打一个折扣。折扣因子 γ 介于 0 和 1 之间,好比“远处的风景对今天的决策影响要弱一些”。于是从时刻 t 开始的折扣回报 G_t 写成:

蒙特卡洛给了小明“用有限次尝试做统计”的能力,但每次尝试都被风向、偶发落石扰动——这就是方差偏大的来源,也顺理成章引出了下一节的基线技巧。

Gt=∑k=0T−t−1γkrt+k+1=rt+1+γrt+2+γ2rt+3+⋯\displaystyle G_t = \sum_{k=0}^{T-t-1} \gamma^{k} r_{t+k+1} = r_{t+1} + \gamma r_{t+2} + \gamma^{2} r_{t+3} + \cdots
蒙特卡洛采样最大的优点是“无偏”:只要样本够多,平均值一定收敛到真实期望;代价是单次样本波动大。
  1. G_t(折扣回报)站在时刻 t 回头看,后面所有奖励按折扣累加的总值。
    GtG_t
  2. r_{t+k+1}(即时奖励)第 t+k+1 步得到的单步奖励,比如登山时迈出一步后脚下新海拔带来的收益。
    rt+k+1r_{t+k+1}
  3. γ^k(折扣系数)γ 的 k 次幂。γ 越接近 1,远期奖励越受重视;γ 越小,越只看眼前。
    γk\gamma^{k}
  4. 求和区间从下一步一直加到回合结束,一个都不能漏。
    ∑k=0T−t−1\sum_{k=0}^{T-t-1}

基线降方差:不看绝对海拔,看相对进步

雾天里测得海拔 1000 米与 900 米,差距可能只是阵风造成的噪声。小明想到一个更聪明的参照:不比绝对海拔,而比“这次成绩比常规路线平均成绩高出多少”。这个“常规路线的平均成绩”就是基线 b(s)。它只与所在位置有关,与具体选择哪个动作无关。

数学上,从回报里减去基线后,梯度期望并不会变,因为 b(s) 与动作无关,在对动作做加权求和时会被抵消。换句话说,基线只是把“绝对海拔”换成了“相对进步”,不会改变爬坡方向,却能显著压缩样本间的抖动幅度。这就是“只降方差、不伤无偏性”的由来。

小明把“比常规路线高多少”作为修正信号后,天气噪声不再淹没真实进步,心法迭代变得更稳、更快。在下一节的 Python 演示里,我们也会用一个滑动平均基线来直观看到这个效果。

∇θJ(θ)=Eτ∼πθ[(Gt−b(st))∇θlog⁡πθ(at∣st)]\displaystyle \nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \left( G_t - b(s_t) \right) \nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t) \right]
加基线就像把测量基准从海平面换到营地:每个人“比营地高多少”这个相对结论,比绝对海拔更抗噪声。
  1. b(s_t)(基线)只依赖状态的参照值,典型的取值是该状态的平均价值 V(s)。
    b(st)b(s_t)
  2. G_t − b(s_t)(修正信号)表示“这次尝试比该位置的平均水平好多少”,是真正值得学习的差异。
    Gt−b(st)G_t - b(s_t)
  3. 期望不变因为 b(s) 与动作无关,在期望中对动作求和时,多减的部分被自然抵消。
    E[b(st)∇log⁡π]=0\mathbb{E}[b(s_t) \nabla \log \pi] = 0
  4. 方差降低每次样本从围绕大数字波动,变成围绕一个小得多的“相对进步”波动。
    Var[Gt−b]<Var[Gt]\mathrm{Var}[G_t - b] < \mathrm{Var}[G_t]

算法流程:训练营的日常循环

把前面几块拼起来,REINFORCE 的训练流程就像登山训练营的例行日程:早上带心法上山尝试,傍晚根据成绩调整心法,第二天再试。这个循环简单到可以写进一个 for 循环,但它必须等整座山爬完才能复盘——因为回报 G_t 要等到回合结束才能结算。

完整的算法分为五步:第一步,随机初始化策略参数 θ;第二步,按当前策略采样一个完整回合,记录下每一步的状态、动作和奖励;第三步,计算每一步的折扣回报 G_t;第四步,对回合里每一步用“修正后的回报乘以对数概率梯度”累加出梯度;第五步,用学习率 α 缩放后更新参数,然后回到第二步。更新公式就是 REINFORCE 的核心规则:

训练营日复一日,小明的择路心法从“哪边都行”逐渐变成“斜坡偏右、碎石靠左”,海拔纪录不断被刷新。这就是策略梯度爬坡最直观的画面:每调整一次,心法就沿着上坡方向前进一小步。

θ←θ+α(Gt−b(st))∇θlog⁡πθ(at∣st)\displaystyle \theta \leftarrow \theta + \alpha \left( G_t - b(s_t) \right) \nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t)
学习率 α 是每次调整的步长:太大容易一步迈过最优心法,太小则训练缓慢。
  1. ←(更新符号)把右边的计算结果赋给左边的 θ,相当于“根据今天的复盘改写心法”。
    θ←θ+Δθ\theta \leftarrow \theta + \Delta\theta
  2. α(学习率)控制每次调整的幅度,是训练营里“今晚改多少心法”的强度。
    α\alpha
  3. (G_t − b(s_t))(修正回报)决定这次更新的“大小与正负”——比平均好就正向推,比平均差就反向推。
    Gt−b(st)G_t - b(s_t)
  4. ∇log π(更新方向)决定往哪个旋钮方向拧,让好的选择更有可能被再次选中。
    ∇θlog⁡πθ(at∣st)\nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t)

对比值函数法:制图派 vs 直接派

山脚下还住着另一派登山者——制图派。他们不直接改心法,而是先画一张“高程地图”:每个岔路口标上“从这里出发的预期海拔”,也就是价值。选路时,挑地图上数字最大的岔口走。这张地图在强化学习里就是值函数,最经典的制图派算法是 Q-Learning。

Q-Learning 的更新式把“下一步的期望”记录在单元格里,决策时对动作取最大值:

REINFORCE 属于“直接派”:不画地图、不取 max,用试走和梯度直接调策略。它天然支持连续动作,也天然具备随机探索能力;代价是样本效率低、方差大。制图派适合小清单式岔路,直接派适合广阔荒野——理解这一点,就理解了 REINFORCE 在强化学习家族中的独特位置。

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]\displaystyle Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma \max_{a'} Q(s',a') - Q(s,a) \right]
制图派的核心动作是“取 max”,这要求动作空间是离散且可枚举的;一旦动作连续,max 就无从算起。
  1. Q(s,a)(动作价值)地图上“从状态 s 做动作 a 之后的预期海拔”。
    Q(s,a)Q(s,a)
  2. r + γ max Q(时序差分目标)当前这一步奖励,加上下一步能拿到的最大预期价值。
    r+γmax⁡a′Q(s′,a′)r + \gamma \max_{a'} Q(s',a')
  3. −Q(s,a)(时序差分误差)新信息和旧地图的差距,用来修正地图。
    δ=r+γmax⁡a′Q(s′,a′)−Q(s,a)\delta = r + \gamma \max_{a'} Q(s',a') - Q(s,a)
  4. max 的代价要枚举所有可能的 a′,所以在连续动作空间里不可行。
    max⁡a′Q(s′,a′)\max_{a'} Q(s',a')

改进方向:从独自复盘到团队协作

小明后来发现,只靠“整座山爬完的总高度”来复盘,噪音还是太大:一个回合有一百步,某一步的贡献早被其余九十九步淹没了。于是他请来一位老队友——评论家。队友在每个岔路口低声告诉他:“这个位置,这条路的平均海拔大概是多高。”这个提示就是状态价值 V(s)。比起冷冰冰的基线 b(s),它更精细、更动态。

把“动作价值”和“状态价值”的差称为优势函数:

再往前走,GAE(广义优势估计)在时间维度上累积优势,兼顾蒙特卡洛的无偏与时序差分的高效;PPO 则对更新幅度施加约束,防止一次雨崩式的调整毁掉整本心法。可以说,策略梯度家族的进阶路线,就是从一个独自爬山的 REINFORCE,逐步进化成有队友、有护具、有稳步行进节奏的现代团队登山。

A(s,a)=Q(s,a)−V(s)\displaystyle A(s,a) = Q(s,a) - V(s)
优势函数回答的问题是:选择这个动作,比在这个状态下随便乱走平均能好多少?
  1. Q(s,a)(动作价值)在状态 s 下选择动作 a 并继续到回合结束的期望回报。
    Q(s,a)Q(s,a)
  2. V(s)(状态价值)在状态 s 下按当前策略行动的平均期望回报——老队友给出的“常规海拔”。
    V(s)V(s)
  3. A(s,a)(优势)两者相减,得到“这个动作比平均水平好多少”的净增量。
    A(s,a)=Q(s,a)−V(s)A(s,a) = Q(s,a) - V(s)
  4. 与 REINFORCE 的衔接用优势代替 (G − b) 就是 Actor-Critic 的基本思想,评论家提供动态基线,演员据此更新策略。
    ∇J=E[A(s,a) ∇log⁡πθ(a∣s)]\nabla J = \mathbb{E}[ A(s,a) \, \nabla \log \pi_\theta(a \mid s) ]

AI 应用场景

大语言模型的 RLHF 策略微调

阶段:策略优化 / 强化学习微调

解决的问题:文本生成是离散的、不可导的过程,传统交叉熵只是模仿已有答案,无法直接优化“用户偏好”这类非结构化指标。奖励模型给出一段回复的整体打分后,REINFORCE 式的策略梯度恰好能把“分数高低”转化为生成策略参数的更新信号。

具体案例:把“生成一句回复”看作一个完整回合,奖励模型给这句话打 0.8 分;生成这句话时每个 token 的选择概率取对数求梯度,乘以 (0.8 − 基线) 后更新语言模型参数。高分的回复模式被强化,低分的回复模式被抑制,模型逐渐学会说更讨人喜欢的话。

机器人运动控制中的连续动作学习

阶段:模型训练 / 策略优化

解决的问题:四足机器人的关节扭矩是连续值,Q-Learning 需要对动作取最大值,连续空间里根本无法枚举。REINFORCE 直接把策略建模成高斯分布,输出“当前应该给关节多大扭矩”的均值和方差,天然匹配连续动作。

具体案例:机器人爬上碎石坡,一个回合是从坡底到坡顶的整段运动。每次尝试结束后,根据“是否比上一次更接近坡顶”调整扭矩策略分布的均值。经过几百个回合,机器人从最初的僵硬跌倒,渐渐学会了协调四肢。

广告竞价出价策略优化

阶段:在线决策 / 策略优化

解决的问题:广告竞价环境动态多变、转化回报有延迟,手工规则难以覆盖不断变化的流量特征。把一次广告投放时段看作回合,竞价成功与否和最终转化收益合成为回合回报,REINFORCE 直接学习“出价系数”策略。

具体案例:广告系统每轮拍卖时,策略根据当前流量特征输出一个出价倍率;一个时段结束后统计成交率与 ROI,作为总回报反馈。策略梯度会让高出价、高转化的流量特征下出价概率上升,低效流量下出价概率下降,最终自动收敛到更优的出价风格。

Python 演示

python39 行
import numpy as np np.random.seed(42) T = 5          # 每个回合做5次选择LR = 0.08      # 策略参数学习率w = np.array([0.0, 0.0])   # 两个动作的logits参数baseline = 0.0 def action_probs():    # 把两个动作的logits变成概率分布    logits = w - w.max()    e = np.exp(logits)    return e / e.sum() def grad_log_pi(a):    # 对选中动作的log概率求梯度    p = action_probs()    g = np.zeros(2)    g[a] = 1 - p[a]    g[1 - a] = -p[1 - a]    return g for episode in range(3000):    acts = []    # 采样一个完整回合    for t in range(T):        p = action_probs()        a = np.random.choice(2, p=p)        acts.append(a)    # 回合回报: 动作1每次+1, 动作0每次-1    G = float(np.sum(acts) - (T - np.sum(acts)))    # REINFORCE: 用整回合回报缩放累积梯度    grad = sum(grad_log_pi(a) for a in acts)    w += LR * (G - baseline) * grad    # 滑动平均基线: 降低方差且保持无偏    baseline = 0.9 * baseline + 0.1 * G    if episode % 500 == 0:        print('episode', episode, 'right_prob', action_probs()[1], 'G', G)
目的:用 REINFORCE 训练一个 5 步决策的“贪心登山者”,让它逐步学会每个回合都选择向右(动作 1),演示策略梯度加基线降方差的最简实现。
  1. w = np.array([0.0, 0.0])心法参数,两个动作的初始热度相同,代表“左右无所谓”。
  2. def action_probs():把热度(logits)变成真正的选路概率,用 softmax 做归一化。
  3. p = action_probs()每一步都按照当前心法随机采样动作,保证探索。
  4. G = float(np.sum(acts) - (T - np.sum(acts)))回合总回报:向右每步加 1 分,向左每步扣 1 分。
  5. grad = sum(grad_log_pi(a) for a in acts)把回合内每个选择的对数概率梯度累加,作为本次更新的方向。
  6. w += LR * (G - baseline) * gradREINFORCE 更新式:修正回报乘梯度,再按学习率更新心法。
  7. baseline = 0.9 * baseline + 0.1 * G维护一个滑动平均“常规成绩”,让每次信号围绕相对进步波动。

常见误区

误区我觉得强化学习里的“梯度”就是像神经网络那样从环境误差反向传播回来的,所以环境必须可微,否则没法训练。

正解REINFORCE 的梯度完全来自策略网络自身:对采样动作的 log 概率求参数梯度,再乘上回合回报。环境只需要返回一个奖励数值,不需要可微。就像登山者不需要知道山体函数的导数公式,只要爬上去、量一量海拔,就能复盘调整。

为何常见:监督学习中“反向传播”太深入人心,初学者容易混淆“梯度从模型来”还是“梯度从环境来”。

误区给回报 G 减去一个基线 b(s),梯度里少了一块正数,更新出来的策略肯定偏向错误方向,偏差很大。

正解基线只与状态有关、与动作无关,在期望意义下会被自然抵消,因此梯度期望完全不变,依然无偏。它只是让单次样本的波动变小。就像把测量基准从海平面换到营地,谁爬得更高这个相对结论不会改变。

为何常见:直觉上觉得“少了一个正数后乘法结果变小”,却没区分单个样本和期望之间的差别。

误区既然每个回合回报都是正数,所有动作的梯度都是正的,那所有动作都会被鼓励,大家共同进步,应该没问题吧?

正解全正回报会让所有动作的概率被同时推高,softmax 归一化后它们之间的相对差距不断被稀释,收敛极慢甚至停滞。基线的作用正是去掉那个公共抬升,让训练专注于“哪些动作比平均好”,而不是被整体正偏移带着走。

为何常见:只看到“某动作概率在上升”,忽略了 softmax 层里所有动作概率的相对竞争关系。

误区REINFORCE 和 Q-Learning 都是强化学习,都在学一张“动作好坏表”,然后从表里挑动作。

正解REINFORCE 直接参数化策略,输出的是“选动作的概率”,根本不维护 Q 表;Q-Learning 先学 Q(s,a) 再取 argmax 决定动作。REINFORCE 适合连续或超大动作空间,Q-Learning 适合小离散动作空间,二者路线完全不同。

为何常见:两者都涉及“回报/价值”概念,初学者容易把“策略”和“价值函数”混为一谈,忽略了“直接派”和“制图派”的本质区别。

面试题

Q1. 在 REINFORCE 中,对动作概率取对数再求梯度的核心作用是?

单选题 · easy

  • A.对回报的值取对数
  • B.从概率链式法则得到采样梯度← 正确答案
  • C.熵正则化的约束项
  • D.方差归一化的技巧

答案:B。策略梯度定理推导时用到 ∇π/π = ∇logπ,由此把“对概率的梯度”改写成“对对数概率的梯度”,才得到只需要采样动作就能估计的梯度形式。A 错在回报并不取对数;C、D 是无关的常见技巧。

Q2. REINFORCE 估算一个策略的期望回报主要采用哪种方式?

单选题 · easy

  • A.蒙特卡洛回合采样← 正确答案
  • B.时序差分递推估计
  • C.动态规划回溯求解
  • D.高斯过程函数近似

答案:A。REINFORCE 必须走完整个回合,用折扣回报 G 作为期望的无偏估计,这正是蒙特卡洛思想。时序差分用自举估计未来价值,动态规划需要环境模型,高斯过程则与策略梯度无关。

Q3. 与 Q-Learning 相比,REINFORCE 最大的特点是?

单选题 · easy

  • A.直接优化策略本身← 正确答案
  • B.依赖状态动作价值
  • C.需要精确环境模型
  • D.在线单步逐步更新

答案:A。REINFORCE 对策略参数求梯度,直接调整“择路心法”,不维护 Q 表。Q-Learning 才依赖价值函数;两者都不需要环境模型;REINFORCE 必须等完整回合结束才能更新。

Q4. 给 REINFORCE 的回报减去一个与动作无关的基线 b(s),以下说法正确的是?

单选题 · mid

  • A.保持无偏并降低方差← 正确答案
  • B.增加偏差并降低方差
  • C.降低无偏并提升方差
  • D.改变最优策略方向

答案:A。基线只与状态有关,在期望中对动作求和时被抵消,梯度的无偏性保留;同时它让样本围绕更小的“相对进步”波动,方差下降。它不会改变最优策略,只是让更新信号更聚焦。

Q5. 如果回合回报 G 恒为正,但代码里忘了加基线,通常会出现什么现象?

单选题 · mid

  • A.无偏但收敛变缓慢← 正确答案
  • B.完全无法收敛结果
  • C.偏向提升所有动作
  • D.导致方差自动消失

答案:A。全正回报会让所有动作都被正向推动,softmax 归一化后相对差异被稀释,梯度仍无偏但收敛很慢。B 说得太绝对;C 是现象的描述而非最终结果;D 方差不会自动消失。

Q6. REINFORCE 方差偏大的主要来源是?

单选题 · mid

  • A.单步回报值很精确
  • B.蒙特卡洛回报方差过大← 正确答案
  • C.梯度方向恒定不变
  • D.策略完全确定化

答案:B。REINFORCE 用整回合的折扣回报 G 估计梯度,而 G 是大量随机步奖励的累加,波动大。这就像雾天测海拔,单次读数充满噪声。单步精确、梯度恒定或策略确定化都与“方差大”不构成因果关系。

Q7. 如果把 REINFORCE 中的基线改成与动作有关的函数 b(s,a),会发生什么?

单选题 · hard

  • A.梯度期望改变从而有偏← 正确答案
  • B.方差一定降为零
  • C.必然加速收敛进程
  • D.梯度期望保持无偏不变

答案:A。基线必须与动作无关,才能在期望中被抵消。一旦 b 依赖动作,期望里多出的项不再为零,梯度估计就有偏,最优策略方向可能被扭曲。B、C 都过于绝对,D 与数学推导相悖。

Q8. 下列哪些属于 REINFORCE 的经典改进方向?

多选题 · mid

  • A.引入 Actor-Critic 结构← 正确答案
  • B.采用广义优势估计← 正确答案
  • C.加入价值函数基线← 正确答案
  • D.彻底放弃策略网络

答案:ABC。Actor-Critic 用评论家提供动态基线,GAE 在时间维度累积优势降低方差,价值基线则是 REINFORCE 最直接的方差削减手段。D 放弃策略网络就不再是策略梯度方法。

Q9. 关于 REINFORCE 的梯度估计,下列说法正确的有哪些?

多选题 · hard

  • A.梯度估计是无偏的← 正确答案
  • B.样本方差会比较大← 正确答案
  • C.必须采样完整回合← 正确答案
  • D.完全依赖环境模型

答案:ABC。REINFORCE 用蒙特卡洛回报近似期望,样本均值收敛到真值所以无偏;但整回合回报波动大,方差高;它必须等回合结束才能结算 G。整个过程只需要环境给出奖励,不需要模型,所以 D 错误。

Q10. 关于基线 b(s),下列说法正确的是?

多选题 · extreme

  • A.任意与动作无关函数均可← 正确答案
  • B.最优基线接近期望回报← 正确答案
  • C.基线会引入明显偏差
  • D.基线能有效降低方差← 正确答案

答案:ABD。只要 b(s) 与动作无关,期望中就会被抵消,因此原则上任意与动作无关的函数都可以;实践中常取状态价值 V(s) 作为近似最优基线,它接近该状态期望回报,能最大程度压低方差。C 与无偏性推导相反,是错误的。