想象一位叫小厨的年轻厨师,第一次站到后厨灶台前,想学做一道酸菜鱼。他有两种学法:第一种是找一本详细菜谱,把备菜、腌鱼、炒料、加水、下鱼片的每个步骤都提前记在心里,甚至可以闭上眼睛推演一遍;第二种是直接点火上灶,凭手感操作,尝一口咸淡再调整。前者像 Model-based(基于模型),后者像 Model-free(无模型)。菜端上桌后,他又面临新的选择:是先评估整道菜的“价值”,还是直接决定下一秒放多少盐?于是又分出 基于价值(Value-based) 与 基于策略(Policy-based) 两派。再往后,他发现学习资料的来源也不同:是只能用自己当天的菜谱产生的经验,还是能用师兄弟的旧笔记?这又引出 On-policy(在线策略) 与 Off-policy(离线策略)。 本文就沿着小厨学做菜的这条主线,把强化学习中最重要的几个分类维度讲清楚,再带你看懂 DQN、Q-Learning、SARSA、REINFORCE 这些经典算法分别站在哪个“象限”里。

岗位关联

掌握强化学习算法分类,是进入 AI 决策系统的第一步。它能帮你在游戏、机器人、推荐系统等场景中,快速选对算法方向,避免“拿菜谱去修车”式的错配。

目录
  1. 可视化演示
  2. 学习框架:智能体、环境与奖励
  3. 有无模型:菜谱派与实战派
  4. 策略学习方式:打分派与行动派
  5. 在线与离线:自己的练习与师兄的笔记
  6. 代表算法巡礼:四道经典名菜
  7. 算法选择:从任务出发做选择
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

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

强化学习算法四维分类框架 四个维度正交组合 → 覆盖所有RL算法 | 根据任务需求选择合适算法Model-based vs Model-freeModel-based四个维度正交组合 → 覆盖所有RL算法 | 根据任务需求选择合适算法四个维度正交组合 → 覆盖所有RL算法 | 根据任务需求选择合适算法Model-based vs Model-freeModel-based四个维度正交组合 → 覆盖所有RL算法 | 根据任务需求选择合适算法 四个维度正交组合 → 覆盖所有RL算法 | 根据任务需...

学习框架:智能体、环境与奖励

第一天进后厨,小厨站在灶台前,面前是一盆酸菜、一条鱼和一口烧热的锅。他不知道该先腌鱼还是先炒料,于是师父告诉他:你是一个智能体,厨房是你的环境,鱼在锅里的生熟程度是状态,你每一次下勺、翻面、加料是动作,而客人夹起鱼肉的表情就是奖励。就这么一个四件套,构成了强化学习的最小闭环。

传统机器学习盯着静态数据集反复拟合,强化学习却是在动态交互中不断试错。智能体每做一个动作,环境就给出新状态和奖励;这个循环不断推进,智能体才慢慢学会“在什么状态下做什么动作”。因此,状态、动作、奖励、环境这四样东西,是所有强化学习算法的共同舞台,后续所有的分类维度都在这套框架上展开。

为了比较谁学得好,我们要给“好吃程度”算总账。只看当前一口不够,因为酸菜鱼的咸香是出锅后才显现的,所以要用折扣累计回报来衡量:

对小厨来说,这就是他给自己未来所有“好吃程度”开的长期账单。有了这份账单,后面的算法分类才立得住。

Gt=Rt+1+γRt+2+γ2Rt+3+⋯=∑k=0∞γkRt+k+1\displaystyle G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}
累计回报 G_t 是从当前时刻开始,把每一步的奖励按照时间折扣后全部加起来。折扣因子 γ 越小,越看重眼前利益。
  1. 累计回报 G_t表示从时刻 t 开始,未来所有即时奖励折算到现在的总和。
    Gt=Rt+1+γRt+2+γ2Rt+3+⋯G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots
  2. 即时奖励 R_{t+1}当前这一步动作结束后,环境立刻返回的分数。
    Rt+1R_{t+1}
  3. 折扣因子 γ^kγ 在 0 到 1 之间,k 越大,远期奖励被打的折扣越狠。
    γk\gamma^k
  4. 求和符号把从第 1 步到最后一步所有打折后的奖励都累加起来。
    ∑k=0∞γkRt+k+1\sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

有无模型:菜谱派与实战派

小厨问师父,学一道新菜,要不要先背菜谱?师父说,背菜谱的徒弟叫 Model-based,不背菜谱直接上灶台的叫 Model-free。背菜谱的人会先建立一个“环境模型”:盐放 5 克鱼片会怎样变化,汤烧开后下鱼片几秒能熟。有了这个模型,他可以在心里把流程推演一遍再动手,省材料。不背菜谱的人直接做,出锅后尝一口,再根据反馈调整,虽然会浪费几条鱼,但练出的手感更贴近真实灶台。

在强化学习里,“模型”指的是环境的状态转移规律:智能体在状态 s 做出动作 a 之后,环境会跳到哪个新状态 s′、给出什么奖励 r。Model-based 方法尝试估计这个规律,再基于它做规划;Model-free 方法干脆不学这个规律,直接从真实交互的经验里学价值或策略。

对小厨来说,背菜谱的徒弟能“脑内推演”,但真正灶台的火候很难写进菜谱;实战派虽然费鱼,却永远在真实反馈中纠偏。今天的主流深度强化学习,大多走 Model-free 这条更通用的路。

P(s′,r∣s,a)=Pr⁡(St+1=s′,Rt+1=r∣St=s,At=a)\displaystyle P(s', r | s, a) = \Pr(S_{t+1}=s', R_{t+1}=r \mid S_t=s, A_t=a)
P(s', r | s, a) 是“环境模型”的数学写法,表示在状态 s 做动作 a 后,环境转移到 s′ 并给出奖励 r 的概率。Model-free 方法不会去显式估计这个概率。
  1. 状态 s 和动作 a当前的灶台火候和小厨刚做出的动作。
    St=s, At=aS_t=s,\ A_t=a
  2. 下一状态 s′ 与奖励 r动作执行完后,环境反馈的新状态和分数。
    St+1=s′, Rt+1=rS_{t+1}=s',\ R_{t+1}=r
  3. 条件概率 Pr表示在给定当前状态动作的情况下,这个转移发生的概率。
    Pr⁡(⋅∣St=s,At=a)\Pr(\cdot \mid S_t=s, A_t=a)
  4. 环境模型的意义如果这个概率可预测,就能做规划;否则只能靠试错。
    P(s′,r∣s,a)P(s', r | s, a)

策略学习方式:打分派与行动派

接下来,小厨发现即使是无模型的徒弟,动手风格也分两派。一派是“打分派”:给每道工序都打一个分,然后选分数最高的动作。另一派是“行动派”:不看总分,直接凭策略出招,比如“看到鱼片泛白就翻面”,把从状态到动作的映射直接学出来。打分派对应 Value-based,行动派对应 Policy-based。

打分派的招牌是动作价值函数 Q(s,a),字面意思是“在状态 s 这个灶台火候下,做动作 a 带来的长期期望回报”。有了它,策略可以很偷懒:哪个动作 Q 值高就做哪个。行动派则直接维护一个策略 π(a|s),把每一步的动作概率都练出来,适合连续动作场景,比如机械臂拧多大力、方向盘转几度。

对小厨来说,打分派要把“加盐”“加醋”“加水”都打出分来,然后稳稳选最高分;行动派则直接形成肌肉记忆,一步到位。两者没有高下,只是不同的出招哲学。

Qπ(s,a)=Eπ[Gt∣St=s,At=a]\displaystyle Q^\pi(s, a) = \mathbb{E}_\pi\left[G_t \mid S_t = s, A_t = a\right]
Q^π(s,a) 表示在策略 π 下,从状态 s 出发执行动作 a 以后,期望能拿到的累计回报。Value-based 就是把这张“动作评分表”学准。
  1. 动作价值 Q^π(s,a)给“当前状态 + 某个动作”这个组合打分。
    Qπ(s,a)Q^\pi(s, a)
  2. 期望符号 E_π在策略 π 的随机性下求平均。
    Eπ[⋅]\mathbb{E}_\pi[\cdot]
  3. 条件 G_t|S_t=s,A_t=a固定当前状态与动作,观察未来的回报。
    Gt∣St=s,At=aG_t \mid S_t = s, A_t = a
  4. 整体含义动作越好,价值越高;Value-based 算法据此选动作。
    π(s)=arg⁡max⁡aQπ(s,a)\pi(s) = \arg\max_a Q^\pi(s, a)

在线与离线:自己的练习与师兄的笔记

小厨还发现,同样是练厨艺,有的师兄只用自己的菜谱练,这叫 On-policy;有的师兄拿来一堆别人做菜的笔记,照着笔记揣摩,这叫 Off-policy。差别不在数据从哪来,而在学习的目标策略和产生数据的行为策略是不是同一个。

On-policy 像“一边开车一边看路”,学习数据必须由当前策略产生,策略一更新,老数据就有点过期。Off-policy 像“翻日记复盘”,前任厨师留下的记录虽然行为策略不同,但照样能提炼经验,所以样本利用效率更高。正因为 Off-policy 能反复使用旧数据,后面才有了 DQN 的经验回放,把整段整段的做菜经历存进记忆库,随机抽出来温习。

Q-Learning 的更新公式最能体现 Off-policy 的味道:

对小厨来说,师兄的笔记虽然来自不同的做菜习惯,但只要足够多、足够杂,一样能把“好吃”的规律提炼出来。这就是 Off-policy 最迷人的地方。

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]
这个公式用“下一状态里最优动作的 Q 值”作为目标,而不是用当前行为策略实际选出的动作。因为目标策略和行为策略可以不同,所以它是 Off-policy 的典型代表。
  1. 更新目标把 Q(s,a) 往带折扣的最优未来价值方向拉近。
    Q(s,a)←Q(s,a)+α[⋅]Q(s,a) \leftarrow Q(s,a) + \alpha[\cdot]
  2. 学习率 α控制每次吸收新经验的幅度,太大容易震荡,太小学得慢。
    α\alpha
  3. TD 目标当前奖励 r 加上下一状态的最优 Q 值。
    r+γmax⁡a′Q(s′,a′)r + \gamma \max_{a'} Q(s',a')
  4. 离策略的关键目标里用的是 max,而不是行为策略实际做的动作。
    max⁡a′Q(s′,a′)\max_{a'} Q(s',a')

代表算法巡礼:四道经典名菜

把上面三对维度像叠调料一样叠起来,就得到几道经典名菜。Q-Learning 是表格版的离线价值学习,属于 Model-free、Value-based、Off-policy;DQN 是它的深度网络版,用神经网络拟合 Q 值,加经验回放,是强化学习登上深度时代的代表作;SARSA 是 On-policy 的表格式价值算法,边采边学,保守稳定;REINFORCE 则是 Model-free、Policy-based、On-policy 的策略梯度算法,直接调策略参数。

DQN 之所以出名,是因为它把深度学习和 Q 值函数成功结合,在 Atari 游戏里打出了超人类水平。它的损失函数像一张“厨师考试评分卡”:

对初学者来说,记住“DQN = 深度网络 + 经验回放 + 离线价值学习”就够了。它让打菜谱从手抄表格升级成了自动笔记系统。

L(θ)=E(s,a,r,s′)∼D[(r+γmax⁡a′Q(s′,a′;θ−)−Q(s,a;θ))2]\displaystyle L(\theta) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \left[ \left( r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta) \right)^2 \right]
DQN 用一个小批量经验,计算“目标 Q 值”与“当前 Q 值”的差,然后平方求平均,作为神经网络参数的损失函数。
  1. 经验池 D从记忆库里随机抽一批做菜经验。
    (s,a,r,s′)∼D(s,a,r,s') \sim \mathcal{D}
  2. 目标网络参数 θ⁻用来计算稳定目标值,不随每一步即时更新。
    θ−\theta^-
  3. TD 误差目标值和当前预测值之间的差距,差距越小越好。
    r+γmax⁡a′Q(s′,a′;θ−)−Q(s,a;θ)r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta)
  4. 平方与期望先平方让正负误差都为正,再对批量求平均。
    E[⋅2]\mathbb{E}[\cdot^2]

算法选择:从任务出发做选择

最后一节课,师父让小厨自己设计新菜。选哪一派,取决于任务本身。如果环境是仿真器,摔坏不心疼,就可以优先试 Model-based;如果动作是连续的,比如机械臂关节角度,策略梯度这类 Policy-based 更顺手;如果历史数据很多但不能重新采样,Off-policy 能把旧数据喂给算法;如果要求边试边学、即时反馈,On-policy 更稳妥。

所有这些选择,最终都落在一个目标上:让期望累计回报最大化。我们可以把策略的“总成绩单”写成:

回到小厨身上:没有绝对最好的菜谱,只有最适合今天食材的选择。分类学的意义不是把人分成三六九等,而是让你在动手前,先知道自己在哪条路上。

J(πθ)=Eτ∼πθ[∑t=0Tγtrt]\displaystyle J(\pi_\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\left[ \sum_{t=0}^{T} \gamma^t r_t \right]
J(π_θ) 是策略的总得分,表示在一个完整交互轨迹上,按折扣累计奖励的期望。算法选择本质上就是在为最大化这个得分寻找最顺手的工具。
  1. 策略总得分 J(π_θ)评价一个策略好不好用的最终指标。
    J(πθ)J(\pi_\theta)
  2. 轨迹 τ一条从开始到结束的状态动作序列。
    τ\tau
  3. 累计折扣奖励把一条轨迹上所有奖励按时间折扣相加。
    ∑t=0Tγtrt\sum_{t=0}^{T} \gamma^t r_t
  4. 期望运算因为策略和环境的随机性,要取平均意义下的分数。
    Eτ∼πθ[⋅]\mathbb{E}_{\tau \sim \pi_\theta}[\cdot]

AI 应用场景

游戏 AI 陪练

阶段:策略选择与模型训练

解决的问题:传统游戏 AI 靠规则脚本写死,玩家多走几步就会被看穿。DQN 这类 Model-free、Value-based、Off-policy 算法可以从像素画面直接学习动作价值,配合经验回放,让 NPC 越打越聪明。

具体案例:某游戏团队用 DQN 训练一个 Boss 战 AI,先让它与自己的历史数据反复离线学习,再上线和玩家对战。因为用的是 Off-policy,训练时把早前“打不过”的经验也存进记忆库,模型进步明显快于传统脚本。

机器人抓取任务

阶段:策略选型与训练

解决的问题:机械臂在真实环境里试错成本高,砸坏夹爪很贵。工程师先在有模型的仿真器里训练策略,再用策略梯度方法学习连续关节控制,最后再迁移到真机上微调。

具体案例:某仓储机器人团队用 Model-based 方式搭建仿真环境,先生成大量“虚拟抓取”经验;再用 Policy-based 策略梯度优化连续动作,让机械臂学会不同角度抓取箱子,大幅减少真实试错次数。

推荐系统中的离线学习

阶段:离线评估与策略优化

解决的问题:推荐系统每次向用户展示内容,都是一次动作;用户点击与否就是奖励。若每次都重新采样,成本太高。Off-policy 方法可以直接利用历史行为日志训练价值函数,预估每个动作的价值。

具体案例:某在线内容平台把用户一周的曝光与点击日志存入经验池,用类似 Q-Learning 的价值更新方式训练“点击价值预估模型”,再用价值最高动作决定推荐顺序,使 CTR 提升了 8%。

Python 演示

python64 行
import random # 一个只有 4 个状态、3 个动作的微型环境ENV = {    (0, 0): (1, 0.0, False),    (0, 1): (0, -1.0, False),    (0, 2): (2, 0.0, False),    (1, 0): (3, 1.0, True),    (1, 1): (0, 0.0, False),    (1, 2): (1, -0.1, False),    (2, 0): (2, 0.0, False),    (2, 1): (3, 0.5, True),    (2, 2): (1, -0.2, False),}  def epsilon_greedy(Q, state, epsilon=0.1):    """按 epsilon 概率随机探索,否则选 Q 值最大的动作"""    if random.random() < epsilon:        return random.randint(0, len(Q[state]) - 1)    return max(range(len(Q[state])), key=lambda a: Q[state][a])  def q_learning_update(Q, s, a, r, s2, alpha=0.1, gamma=0.9):    """Off-policy:用下一状态的最优 Q 值更新"""    best_next = max(Q[s2])    Q[s][a] += alpha * (r + gamma * best_next - Q[s][a])  def sarsa_update(Q, s, a, r, s2, a2, alpha=0.1, gamma=0.9):    """On-policy:用当前策略选出的下一个动作更新"""    Q[s][a] += alpha * (r + gamma * Q[s2][a2] - Q[s][a])  def simulate(use_sarsa, episodes=500):    Q = [[0.0, 0.0, 0.0] for _ in range(4)]    for _ in range(episodes):        s = 0        a = epsilon_greedy(Q, s)        while True:            s2, r, done = ENV[(s, a)]            if use_sarsa:                a2 = epsilon_greedy(Q, s2)                sarsa_update(Q, s, a, r, s2, a2)                a = a2            else:                q_learning_update(Q, s, a, r, s2)                a = epsilon_greedy(Q, s2)            s = s2            if done:                break    return Q  if __name__ == "__main__":    random.seed(0)    q_qlearning = simulate(use_sarsa=False)    q_sarsa = simulate(use_sarsa=True)    print("Q-learning final Q:")    for row in q_qlearning:        print([round(x, 2) for x in row])    print("SARSA final Q:")    for row in q_sarsa:        print([round(x, 2) for x in row])
目的:用同一个微型环境对比 Q-Learning(Off-policy)和 SARSA(On-policy)在学习结果上的差异,帮助你直观感受“离线更新”与“在线更新”的区别。
  1. best_next = max(Q[s2])这是 Q-Learning 的离策略关键:它直接取下一状态最优动作的价值,而不是当前行为策略实际选的动作。
  2. Q[s][a] += alpha * (r + gamma * best_next - Q[s][a])Q 表按 TD 误差方向更新,一步就把当前估计拉向目标。
  3. a2 = epsilon_greedy(Q, s2)SARSA 必须先按当前策略选出下一个动作,再用这个动作的价值来做目标。
  4. Q[s][a] += alpha * (r + gamma * Q[s2][a2] - Q[s][a])SARSA 的目标依赖行为策略实际选出的动作,所以是 On-policy。
  5. simulate(use_sarsa=False)同一个环境分两次实验,控制变量,只用是否使用 SARSA 来区分两种更新方式。

常见误区

误区无模型方法是不是完全不用模型?那 DQN 里的神经网络算什么模型?

正解这里的“模型”特指环境模型,即状态转移和奖励的预测器。DQN 用的神经网络是价值函数的拟合器,不属于环境模型。Model-free 只是不显式学习“环境会怎么变”,但可以用网络去拟合价值函数或策略。

为何常见:因为“model”这个词在机器学习里太常用来表示“任何函数”,人们容易把环境模型和值函数模型混为一谈。

误区Off-policy 能复用旧数据、样本效率高,是不是全面碾压 On-policy?

正解并非如此。On-policy 方法数据和目标策略保持一致,训练过程更稳定,策略更新不容易被分布偏移带偏。Off-policy 虽然样本效率高,但对超参数和经验回放的质量更敏感,也更容易不稳定。

为何常见:看到“复用旧经验”就觉得更聪明,忽略了训练稳定性和实现复杂度也是工程中的关键指标。

误区Policy-based 直接输出动作,还能处理连续控制,是不是比 Value-based 高级?

正解两者是不同路线的解题思路,没有高下。Value-based 在离散动作空间里通常更稳、数据效率也不错;Policy-based 更适合连续动作和随机策略。很多实际系统还会把两者结合成 Actor-Critic。

为何常见:因为 Policy-based 能解决的问题听起来更广,初学者容易被“能力范围”误导,而忽略了不同方法各自的适用边界。

误区DQN 用了深度网络,应该属于 Policy-based 吧?

正解DQN 的网络拟合的是动作价值函数 Q(s,a),最终策略只是对所有动作取 Q 值最大的那个,并没有直接输出策略。因此 DQN 属于 Value-based、Model-free、Off-policy 算法。

为何常见:把“深度学习”和“基于策略”两个概念混淆了,误以为所有深度方法都直接学策略。

面试题

Q1. 强化学习中,“无模型”(Model-free)最准确的含义是什么?

单选题 · easy

  • A.不需要预测环境变化
  • B.不需要环境转移模型← 正确答案
  • C.不需要设置奖励信号
  • D.不需要定义动作空间

答案:B。Model-free 指不显式学习环境的状态转移和奖励模型,只从真实交互数据中学习。A 说法接近但不够准确,C 和 D 明显错误。就像小厨不背菜谱,但不代表他不需要锅和调料。

Q2. On-policy 学习最大的特点是什么?

单选题 · easy

  • A.用当前策略产生的数据更新← 正确答案
  • B.用任意历史数据也能更新
  • C.只使用固定不变的数据集
  • D.完全不需要探索动作空间

答案:A。On-policy 要求目标策略与行为策略一致,数据必须由当前策略产生。B 是 Off-policy 的特点,C 是监督学习,D 不可能,因为没有探索就学不到新经验。

Q3. DQN 在分类上属于哪种组合?

单选题 · mid

  • A.无模型、基于值、离线学习← 正确答案
  • B.有模型、基于值、在线学习
  • C.无模型、基于策略、在线学习
  • D.有模型、基于策略、离线学习

答案:A。DQN 没有显式学习环境转移规律,属于 Model-free;它用神经网络拟合 Q 值函数,属于 Value-based;它使用经验回放和 max 目标,目标策略与行为策略不同,属于 Off-policy。

Q4. 值函数 Q(s,a) 表示什么含义?

单选题 · mid

  • A.状态s下执行动作a的期望回报← 正确答案
  • B.状态s下所有动作的平均回报
  • C.当前策略输出的动作概率
  • D.环境结束时的累计奖励

答案:A。Q(s,a) 是给定状态 s 后执行动作 a,然后继续按策略走下去的期望累计回报。B 没有固定动作,C 是策略函数的定义,D 只取了终止时刻,都不完整。

Q5. 策略梯度方法相比值函数方法的主要优势之一是?

单选题 · mid

  • A.能处理连续动作空间← 正确答案
  • B.只需要更少的训练样本
  • C.保证找到全局最优解
  • D.不需要奖励信号反馈

答案:A。策略梯度直接输出策略,不依赖对每个离散动作求 max,所以能处理机械臂关节角度这样的连续动作空间。它并不保证全局最优,也需要奖励,样本效率通常也不比值函数方法更高。

Q6. Model-based 方法和 Model-free 方法的核心区别是?

单选题 · mid

  • A.是否显式学习环境转移模型← 正确答案
  • B.是否使用神经网络做函数逼近
  • C.是否需要智能体与环境交互
  • D.是否使用经验回放存储器

答案:A。核心区别在于是否学习“环境会如何变化”的模型。Model-based 用模型做规划,Model-free 跳过这一步。B、D 只是实现手段,C 是两者都需要的。

Q7. 经验回放(Experience Replay)主要解决什么问题?

单选题 · easy

  • A.打破样本相关性并提高利用率← 正确答案
  • B.降低神经网络训练的参数数量
  • C.让策略一定收敛到全局最优
  • D.让算法不需要定义状态空间

答案:A。经验回放把交互数据存进记忆库,再随机抽样训练,能打破连续样本之间的强相关性,也提高了旧数据的利用率。它不降低参数数量,也不能保证全局最优。

Q8. 关于无模型方法的特点,下列说法正确的是?

多选题 · mid

  • A.直接学习状态动作价值← 正确答案
  • B.直接学习当前策略网络← 正确答案
  • C.不依赖环境转移模型← 正确答案
  • D.需要提前知道奖励函数

答案:ABC。无模型方法可以直接学价值函数,也可以直接学策略网络,共同点是不依赖环境转移模型。奖励函数仍然通过环境交互获得,而不是提前告知的,所以 D 错误。

Q9. 关于 Off-policy 学习,下列说法正确的是?

多选题 · hard

  • A.可以从旧经验样本中学习← 正确答案
  • B.行为策略与目标策略可以不同← 正确答案
  • C.必须使用当前策略采样数据
  • D.常见代表算法有 Q-Learning← 正确答案

答案:ABD。Off-policy 允许用产生数据的“行为策略”与最终要学习的“目标策略”不一致,因此能复用旧经验。C 是 On-policy 的特征,Q-Learning 的更新目标用的是 max,不依赖行为策略,属于 Off-policy。

Q10. 在算法选型时,以下哪些说法是合理的?

多选题 · extreme

  • A.连续控制任务优先考虑策略梯度← 正确答案
  • B.样本稀缺时优先考虑有模型方法← 正确答案
  • C.小离散动作空间适合值函数方法← 正确答案
  • D.在线学习必须使用离策略方法

答案:ABC。连续控制适合策略梯度;样本稀缺时有模型方法可以白嫖一个模拟器;小离散动作空间用 Q 表或 DQN 都很顺手。在线学习也可以使用 On-policy,所以 D 过于绝对。