深山里住着一只老狐狸,每天要从洞穴走到悬崖对面的羊圈找食。悬崖边有一条近道,贴着崖壁走能省一半路程;山腰上还有一条绕行的安全路,远但踏实。狐狸没有地图,只有一个记性本子,每走一步就记一笔:这个位置、这个方向,到底划算不划算?本子越记越厚,它也越走越熟。 但狐狸有个秘密:它只把自己真正迈出的步子记进本子里。它目前习惯谨慎地走,所以本子记录的全是“谨慎路线下”的经验。而隔壁的 Q 狼不一样——Q 狼每到一个地方,都会在想象里翻遍本子上所有方向的最高分,哪怕自己根本不敢踩,也要在脑内模拟那条贴崖捷径。 这只“只记自己走过的路”的狐狸,就是今天的主角 SARSA。它是强化学习中典型的 on-policy(同策略)算法:用一个策略既负责走路采集经验,又负责修正自己的记性本子。与之相对的 Q-Learning 属于 off-policy(异策略),它用当前策略采集数据,却用“想象中的最优动作”来修订目标。两者在悬崖漫步、机器人导航等场景里,会走出截然不同的路。
SARSA 是理解“同策略学习”的第一把钥匙。掌握它,你就能读懂策略梯度、PPO 等现代算法的源头思想,也能在面试中讲清楚“为什么保守有时反而是优势”。
可视化演示
动态演示深入理解SARSA的on-p的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
深入理解SARSA的on-p:onpo on-policy的核心概念与 SARSA的on-policy 核心机制可视化 深入理解SARSA的on-p整体架构与关键组件
策略概念基础
老狐狸站在岔路口,它凭什么决定往哪迈腿?凭“习惯”。在熟悉的岩石区,它习惯往右;在松软的沙地,它习惯绕行。这个“站在什么地形、习惯往哪个方向走”的对应关系,在强化学习里就叫策略。
在强化学习的术语中,智能体(狐狸)在每个状态(地形)下选择动作(方向)的规则叫做策略 π(a|s)。它不是一个死板的指令表,而是一个概率分布:某些方向概率高,某些方向概率低。狐狸还要在“走熟路”(利用)和“试新路”(探索)之间做平衡,这个平衡靠 ε-贪心策略实现。
策略世界里有两个角色:真正迈腿走路的叫“行为策略”,被学习和改进的叫“目标策略”。如果两者是同一个,就是 on-policy;如果分离开,就是 off-policy。SARSA 属于前者,Q-Learning 属于后者——这正是两种算法命运的分水岭。
所以策略不是死板的路线图,而是狐狸“边走边调”的行为问卷。搞清楚了“习惯”是什么,才能理解 SARSA 为什么非要“用自己的习惯来学自己的路”。
- 策略符号 π这是狐狸的“行走习惯”定义:给定地形 s 时选择方向 a 的概率规则,是策略的标准记号。
- 条件概率解读式子右边读作“第 t 步站在 s 时,迈出的方向恰好是 a 的概率”,所有方向的概率相加为 1,保证狐狸每次都会迈出一步。
- 策略的角色分工行为策略负责实际迈腿,目标策略是被学习改进的对象,on-policy 要求两者同为当前策略。
SARSA算法原理
狐狸迈出一步,记性本子就要更新一笔。SARSA 这五个字母,恰好就是这一笔的完整流水账:State 站在哪、Action 迈哪步、Reward 得到什么、State' 到哪了、Action' 接着又迈哪步。一笔完整的账,串起来就是“边走边学”的轨迹。
强化学习没有现成的老师,只能靠“这一步的实际反馈 + 对下一步的估计”来修正当前判断。这种思想叫时序差分(Temporal Difference,TD):用一步的体验去逼近长期回报,不必等回合结束再总结。狐狸不需要走到羊圈才知道哪步对,走一步就能修正一步。
SARSA 的更新公式,就是把流水账写进本子的数学表达:新估计 = 旧估计 + 学习率 ×(TD 目标 − 旧估计)。括号里的差叫 TD 误差,它度量的是狐狸发现“原来这一步和我原来想的不太一样”的意外程度。
记住这条流水账的结构:它每一笔都来自狐狸真实走过的一步。这正是 SARSA 名字里那个“接着又迈的下一步 A'”存在的意义——账目必须与实际脚步严丝合缝。
- 五元组流水账S_t 旧地形、A_t 旧方向、R_{t+1} 实际反馈、S_{t+1} 新地形、A_{t+1} 新方向,五个字母首尾相连,正好组成 SARSA。
- TD 目标括号中的前两项,“这一步的反馈 + 对下一步动作的折扣估计”,是这一笔新账的“应有值”。
- TD 误差括号整体,衡量新目标与旧估计差多少,记号 δ_t 表示狐狸“意外”的程度。
- 学习率 α每次按 δ_t 的大小把旧值往新目标方向拉近一点,0 < α ≤ 1,控制修正力度。
On-policy内涵
SARSA 更新公式里的关键,藏在那最后一个 A' 里。A' 不是随便选的,也不是本子上最好看的,而是狐狸按照当前习惯(ε-贪心策略)真正会迈出的下一步。这意味着:更新目标和采集数据的策略,是同一个策略。
“on-policy“直译就是”在策略上“。同一个策略既当司机(采集经验)又当老师(生成更新目标)。因为 A' 来自同一个带探索的策略,SARSA 学到的价值,是”在我这个会偶尔脚滑的习惯下,这条路到底划不划算“。它不学”如果我不犯错会怎样“,只学”以我现在的样子走下去会怎样”。
这个细节带来一个重要的性格:保守。设想狐狸站在悬崖边,按照当前 ε-贪心习惯,它有 ε 的概率会随机迈出掉崖的一步。SARSA 的更新会把这种风险算进贴崖格子的 Q 值里,于是它本能地远离悬崖。ε-贪心策略的数学形式,把这种“带着犯错概率的选择”表达得很清楚。
自己尝自己做的菜,味道才最真实。SARSA 这只狐狸正是如此——它评估的永远是“在当前习惯下”的路,所以它不会高估一条自己根本不敢走的路。这就是 on-policy 的诚实:账目与行为永远对得上。
- 最优动作的主概率大部分时候选本子里 Q 值最大的方向,概率接近 1,保证“利用”。
- 探索动作的均分概率剩余概率 ε 平均分给所有方向,每个方向都有被尝试的机会,保证“探索”。
- ε 的胆量旋钮ε = 0 时完全利用,ε = 1 时完全随机,中间值在探索与利用之间滑动。
Q-Learning对比
隔壁住着狐狸的兄弟 Q 狼,它也记本子,但想象力和胆子都大得多。每次到了一个新位置,Q 狼不看自己下一步会怎么走,而是翻遍本子上这个位置所有方向的最高分,在想象里模拟“如果走最好那步会怎样”。
Q-Learning 的更新公式和 SARSA 只差一个动作的写法:把“当前策略实际采样的 A'”换成“取最大值的 max 算子”。别小看这个差别——A' 是现实主义的下一步,max 是理想主义的最佳步。数据仍然由 ε-贪心策略采集,但学习目标指向贪心策略,行为与目标就此分离,这就是 off-policy。
因为 max 总挑最好看的数字,它会系统性高估 Q 值(最大化偏差),让 Q 狼更加乐观。贴崖那一步“看起来”能最快到达羊圈,于是 Q 狼本子上捷径的分值被抬高——哪怕它平时谨慎的爪子根本不敢踩上去。
一个学“自己会走的路”,一个学“最理想的路”。SARSA 保守稳妥,Q-Learning 激进冒进,这两种性格在悬崖边会走出截然不同的两条路。没有谁绝对正确,只有谁更适合当下的风险处境。
- max 算子在新地形 S_{t+1} 的所有可选方向里挑 Q 值最大的动作,对应“想象中最优的一步”。
- 两张公式的对照SARSA 写 A_{t+1}(策略实际采样),Q-Learning 写 max(理想取值),一字之差决定性格。
- 最大化偏差对含噪声的估计取最大,期望上会系统性高估,让 Q-Learning 比 SARSA 更乐观激进。
悬崖漫步实验
现在把两只狐狸放到同一个悬崖边。经典实验 Cliff Walking 里,智能体从左下角出发,要走到右下角的终点,最下面一排除了起点和终点全是悬崖:掉下去奖励 −100,普通一步奖励 −1。目标自然是“少掉崖、快到达”。
SARSA 学出来的路径是:先向上绕到第二行,横穿过去,再向下折回终点。为什么?因为贴崖格子的 Q 值已经被“ε 探索可能掉崖”的预期压低了,它认为绕行虽然远,但在“自己会犯错”的前提下更划算。训练全程,它掉崖次数少,累计奖励更高。
Q-Learning 学出来的路径是:贴着悬崖一路狂奔。因为 max 算子只认“如果走最优步”的想象,忽略了探索期的掉崖风险,所以贴崖捷径在账面上最诱人。最终贪心策略确实步数更短,但训练前期它频繁掉崖,累计奖励远不如 SARSA 好看。
悬崖漫步是一面镜子:安全路径和最优路径,往往不是同一条。SARSA 选择了安全,Q-Learning 选择了最优——没有绝对对错,只有取舍。真实世界里,掉一次崖的代价,常常比绕行几步大得多。
- 悬崖的代价−100 是一次大惩罚,告诉狐狸“这一步绝不能踩”。
- 普通步的代价−1 是时间成本,催促狐狸尽快到达羊圈,避免原地转圈。
- 终点的奖励到达终点奖励为 0,本次觅食结束,开始新一轮尝试。
参数调试要诀
狐狸身上有三个旋钮,调试它们就像调火锅的火候。α 是“记性旋钮”:每次吃到新反馈,旧记忆要改写多少;γ 是“远见旋钮”:未来的奖励折算成当下价值要打几折;ε 是“胆量旋钮”:有多大故意走一条没走过的路。
α 太大,记性来得快去得也快,本子上的分值剧烈震荡、很难稳定;α 太小,学得慢,走几十趟还记不住悬崖在哪。γ 越接近 1,狐狸越看重长远收益,愿意为远处的羊圈绕远路;γ 接近 0,则只顾眼前一步。ε 直接控制探索频率:ε 大,前期疯狂试错;ε = 0,完全凭当前本子走,容易困在次优路线上。
实践中常用“退火”技巧:训练初期 ε 调大,让狐狸把地形摸熟;后期 ε 调小,让学到的经验稳定下来。折扣回报把“未来一串奖励”压缩成一个数字,是理解 α、γ、ε 三者如何配合的数学基础。
火候调对了,狐狸才能既敢探索又守得住安全;调错了,要么畏手畏脚,要么莽撞掉崖。参数调试的本质,是帮狐狸找到“探索与利用”的平衡点,而不是某个旋钮的绝对值。
- 折扣回报把从当前步开始的一串未来奖励,按 γ 逐级打折后加总,得到一条路的总估价。
- γ 的远见作用γ 越接近 1,越看重远处奖励;γ 越小,越只顾眼前,是“远见旋钮”的数学表达。
- 与 TD 目标的关联SARSA 的 TD 目标 R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) 正是用一步估计来逼近 G_t。
应用场景与选型
什么时候该放出这只“只记自己走过的路”的狐狸?答案是:当犯错的代价很贵、而你又必须边做边学的时候。SARSA 的保守性格在这里成为优点——它天然会把探索风险算进价值,主动避开高风险动作。
反过来,如果错误随便犯、模拟器随便跑,比如棋牌游戏、仿真平台测试,那就该用 Q-Learning 这类 off-policy 算法去追求最优路径。现代深度强化学习中,DQN 用经验回放打破数据相关性,正是 off-policy 思想的延伸;而 PPO 等策略梯度方法继承的则是 on-policy 的基因——数据必须来自当前策略。
选型判断其实就三句话:训练期能不能犯错?探索成本高不高?你要的是“理想最优”还是“当前能力下的最优”?风险敏感场景选 SARSA,容错环境选 Q-Learning。
狐狸的故事讲完了。它教会我们:学习不一定要盯着最远大的目标,有时候把脚下的每一步都算清楚,反而能走得更远。这正是 on-policy 的智慧——先认识现在的自己,再一步步变成更好的自己。
- 策略价值函数在状态 s 下,按照策略 π 走下去的期望总回报,是狐狸对“这块地形值多少钱”的估计。
- 下角标 π 的含义期望按照当前策略 π 计算,on-policy 只对“当前策略下会发生的事”负责。
- 选型的数学语义SARSA 学的是当前策略 π 下的价值,Q-Learning 学的是最优策略下的价值,目标不同、性格不同。
AI 应用场景
机器人避障路径学习
阶段:强化学习在线决策
解决的问题:传统行为树和固定规则难以覆盖未知地形,一旦遇到没写过的障碍就“死机”。SARSA 在线边执行边修正,把“撞到障碍物”这类高风险事件直接记入 Q 值,学出来的路径会天然远离危险区域,适合不允许大事故的物理世界。
具体案例:仓库 AGV 小车学习避让人群。初始 ε 调大,小车随机探索绕行路线;由于 SARSA 会把“差点撞人”的惊险经历折进贴墙格子的价值里,训练完成后,小车宁可多绕一点,也不从人群密集的通道硬穿。
量化交易执行策略
阶段:市场数据驱动的在线决策
解决的问题:off-policy 算法容易高估极端收益路径,导致下单策略过于激进,单次滑点超限就造成大额亏损。SARSA 的保守更新更适合风险敏感的盘口执行环节,它把“滑点过大”当作悬崖奖励,学会用更稳妥的拆单节奏完成交易。
具体案例:高频拆单场景中,把单笔冲击成本超过阈值视为掉崖(−100),正常成交视为普通步(−1)。SARSA 学出的下单节奏会避开大额档口,虽然成交时间略长,但极端亏损次数显著下降。
游戏 NPC 在线自博弈
阶段:在线自博弈与策略持续修正
解决的问题:游戏上线后无法离线大规模重训,每一步体验都来自当前水平的策略,正好契合 on-policy“用当前策略边走边学”的特性。NPC 无需等一整局结束再总结,每走一步都能即时吸收玩家反馈。
具体案例:棋牌休闲游戏中,NPC 边陪玩边学习玩家出牌习惯。因为 SARSA 只学自己实际打出的牌路,NPC 的策略不会突然变得过于激进,始终维持在“和玩家水平接近、又偶尔犯错”的友好难度区间。
Python 演示
import random ACTIONS = [(-1, 0), (1, 0), (0, -1), (0, 1)] class CliffWalking: def __init__(self, rows=4, cols=9): self.rows = rows self.cols = cols self.state = (rows - 1, 0) def reset(self): self.state = (self.rows - 1, 0) return self.state def step(self, action): r, c = self.state dr, dc = ACTIONS[action] nr = max(0, min(self.rows - 1, r + dr)) nc = max(0, min(self.cols - 1, c + dc)) self.state = (nr, nc) if nr == self.rows - 1 and 0 < nc < self.cols - 1: return self.state, -100.0, True if nr == self.rows - 1 and nc == self.cols - 1: return self.state, 0.0, True return self.state, -1.0, False def greedy_action(q, state): vals = q[state[0]][state[1]] return vals.index(max(vals)) def epsilon_greedy(q, state, eps): if random.random() < eps: return random.randrange(4) return greedy_action(q, state) def make_q_table(rows, cols): return [[[0.0] * 4 for _ in range(cols)] for _ in range(rows)] def extract_path(env, q): s = env.reset() path = [s] done = False while not done and len(path) < 20: a = greedy_action(q, s) ns, r, done = env.step(a) s = ns path.append(s) return path def run_sarsa(env, episodes=30, alpha=0.1, gamma=0.95, eps=0.1): q = make_q_table(env.rows, env.cols) returns = [] for _ in range(episodes): s = env.reset() a = epsilon_greedy(q, s, eps) total = 0.0 done = False while not done: ns, r, done = env.step(a) na = epsilon_greedy(q, ns, eps) target = r + gamma * q[ns[0]][ns[1]][na] q[s[0]][s[1]][a] += alpha * (target - q[s[0]][s[1]][a]) s, a = ns, na total += r returns.append(total) return returns, q def run_qlearning(env, episodes=30, alpha=0.1, gamma=0.95, eps=0.1): q = make_q_table(env.rows, env.cols) returns = [] for _ in range(episodes): s = env.reset() total = 0.0 done = False while not done: a = epsilon_greedy(q, s, eps) ns, r, done = env.step(a) target = r + gamma * max(q[ns[0]][ns[1]]) q[s[0]][s[1]][a] += alpha * (target - q[s[0]][s[1]][a]) s = ns total += r returns.append(total) return returns, q if __name__ == "__main__": env = CliffWalking() s_ret, s_q = run_sarsa(env) q_ret, q_q = run_qlearning(env) print("SARSA 最后10回合均分: %.1f" % (sum(s_ret[-10:]) / 10)) print("Q-Learning 最后10回合均分: %.1f" % (sum(q_ret[-10:]) / 10)) print("SARSA 贪心路径:", extract_path(env, s_q)) print("Q-Learning 贪心路径:", extract_path(env, q_q))
a = epsilon_greedy(q, s, eps)狐狸按当前 ε-贪心习惯选方向,这一步既是行动依据,也是后续学习的数据来源。na = epsilon_greedy(q, ns, eps)SARSA 的标志:下一步方向同样由当前策略采样,“同策略”就体现在这里。target = r + gamma * q[ns[0]][ns[1]][na]TD 目标:实际奖励 + 折扣后的下一步估计,其中 A' 是当前策略真正会走的步子。q[s[0]][s[1]][a] += alpha * (target - q[s[0]][s[1]][a])用 TD 误差修正旧估计,α 控制每次修正的力度。s, a = ns, naSARSA 把“下一步”接成“当前步”,五元组像流水账一样滚动前进。target = r + gamma * max(q[ns[0]][ns[1]])Q-Learning 的分水岭:目标用最大 Q 值,不看当前策略实际会走哪一步。
常见误区
误区on-policy 就是只用自己的经验,那 SARSA 肯定从不尝试新动作,一直走熟悉的老路,所以学不到最优路径。
正解这是把“策略相同”误解成了“不随机”。SARSA 同样用 ε-贪心策略探索,只不过它的 TD 目标用的是同一个 ε-贪心策略真正会采取的下一步 A'。因为探索(掉崖)的风险被算进了 Q 值,它学到的不是“理想最优”,而是“在会犯错的前提下最优”。它探索,但探索的后果也会被它自己记账。
为何常见:很多人把 on-policy 的“同”理解成“死板”,忽略了 ε-贪心策略本身就包含随机探索,探索也是当前策略的一部分。
误区Q-Learning 能学到最短路径,SARSA 只会绕远路,所以 Q-Learning 永远更好。
正解在悬崖漫步中,Q-Learning 学到的贪心路径确实更短,但它在训练期因探索频繁掉崖,累计奖励反而低于 SARSA 绕行的安全路。两者优化的不是同一个目标:Q-Learning 优化“理想贪心策略”下的表现,SARSA 优化“实际执行策略”下的表现。风险敏感的真实任务中,保守常常更值钱。
为何常见:只盯着最终路径长度,忽略了训练过程的代价和现实任务的风险约束,把“最优”狭隘地等同于“最短”。
误区on-policy 用自己的数据,off-policy 用别人或历史里淘来的数据,两者根本差别在数据来源。
正解Q-Learning 完全可以用自己当前交互的数据来更新,它同样是行为策略 ε-贪心采集、目标指向贪心策略。off-policy 的本质是“更新目标所指的策略 ≠ 采集数据的策略”,而不是数据来自哪里。经验回放只是 off-policy 的一个附加福利,不是定义本身。
为何常见:很多教程把 off-policy 和“大范围重用历史数据”绑在一起讲,让人误以为是数据来源的差别。
误区SARSA 和 Q-Learning 差不多,A' 就是 Q 值最大的那个动作,所以两者最终学到的策略一样。
正解A' 是从当前 ε-贪心策略中采样得到的实际动作,可能是最优动作,也可能是随机探索动作。如果采到探索动作,Q(S',A') 就会偏低,悬崖边的 Q 值因此被压低,SARSA 才会本能地绕开危险。这正是 SARSA 与 Q-Learning 行为分化的根源。
为何常见:看到 Q(S',A') 里的 A' 就望文生义以为是“最优”,忽略了它来自策略采样这一关键细节,而“来自哪个策略”恰恰是 on-policy 的灵魂。
误区探索只会导致掉崖,把 ε 设成 0,完全不随机,训练又快又稳。
正解ε = 0 意味着永远按当前 Q 值贪心行动。初始 Q 全是 0 时,狐狸只能按固定顺序重复迈步,永远发现不了悬崖在哪、绕行路在哪。探索不是添乱,而是获取信息的手段。实践中常用退火:先大 ε 探索地形,再小 ε 稳定利用。
为何常见:直觉上“少犯错 = 好”,但没意识到没有探索就缺少修正 Q 值的必要信息,保守过头反而寸步难行。
面试题
Q1. SARSA 名称中的五个字母依次代表什么?
- A.状态、动作、奖励、下一状态、下一动作← 正确答案
- B.状态、奖励、动作、下一状态、目标策略
- C.动作、状态、奖励、策略、更新幅度
- D.奖励、状态、动作、折扣、回合结束
答案:A。SARSA 是五元组 (S, A, R, S', A') 的缩写:旧状态、旧动作、奖励、新状态、新动作。B 把奖励和动作顺序写反且混入“目标策略”,C 混入“策略”和“更新幅度”,D 混入“折扣”和“回合结束”,都不符合五元组定义。可以把它想象成狐狸记账本上的一行流水账。
Q2. SARSA 更新公式中 Q(S_{t+1}, A_{t+1}) 里的 A_{t+1} 是如何得到的?
- A.直接取动作价值最大的那个最优动作
- B.从当前 ε-贪心策略中采样出来的实际动作← 正确答案
- C.从历史经验缓冲库中随机抽取的记录
- D.由环境状态转移函数自动决定的动作
答案:B。A_{t+1} 来自当前行为策略(ε-贪心)的采样,可能是最优动作也可能是探索动作,这正是 on-policy 的核心:更新目标和采集数据用同一个策略。A 是 Q-Learning 的做法(max),C 是经验回放的思路,D 混淆了环境与策略的职责——环境只给奖励和下一状态,不给动作。
Q3. 关于 on-policy 与 off-policy,下列说法正确的是?
- A.SARSA 的行为策略与目标策略是同一个策略← 正确答案
- B.Q-Learning 的探索策略与目标策略完全相同
- C.off-policy 算法无法使用自己产生的交互数据
- D.on-policy 算法一定比 off-policy 算法收敛更快
答案:A。on-policy 的定义就是“采集数据的策略 == 被更新改进的策略”,SARSA 完美符合。Q-Learning 数据由 ε-贪心采集、目标指向贪心策略,两者不同,B 错。off-policy 完全可以使用自己的数据,C 错。收敛速度取决于任务和参数,不能一概而论,D 错。
Q4. 悬崖漫步实验中,SARSA 绕行上方而 Q-Learning 学到贴崖捷径,原因包括?
- A.SARSA 的 Q 值包含 ε 探索可能掉崖的风险← 正确答案
- B.Q-Learning 的 max 算子忽略探索期的恶劣结果← 正确答案
- C.SARSA 在训练过程中完全不会经过悬崖边缘
- D.Q-Learning 的更新目标不依赖当前行为策略← 正确答案
答案:ABD。A 对,SARSA 把 A' 的探索风险算进贴崖格子,Q 值被压低。B 对,max 只取最大值,等于假设下一步总走最优,无视探索会掉崖。C 错,SARSA 训练初期也可能踩到悬崖边,只是学完后主动避开。D 对,Q-Learning 的目标用 max,与当前 ε-贪心行为策略无关,这正是 off-policy 的特性。
Q5. 关于最大化偏差(maximization bias),下列说法正确的是?
- A.max 算子会系统性高估 Q 值,使策略变得乐观激进← 正确答案
- B.max 算子会让 SARSA 的更新变得保守安全
- C.最大化偏差只可能出现在 off-policy 算法中
- D.学习率 α 越大,最大化偏差的影响就越小
答案:A。对含噪声的估计取最大值,期望会高于真实值,这是数学上可证明的(Jensen 不等式),A 对。SARSA 不用 max,谈不上被它影响,B 错。只要对估计取 max 就可能产生偏差,与 on/off-policy 无关,C 错。学习率影响更新速度,不改变 max 高估的方向,D 错。
Q6. 下列哪些因素会影响 SARSA 算法探索与收敛的表现?
- A.学习率 α 决定每次修正的幅度← 正确答案
- B.折扣因子 γ 决定未来奖励的打折程度← 正确答案
- C.ε-贪心中的探索概率 ε 决定随机试错频率← 正确答案
- D.环境状态空间越大,收敛需要的样本越多← 正确答案
答案:ABCD。四个选项都通过不同渠道影响算法表现:α 控制记忆更新快慢,γ 控制远见,ε 控制探索频率,状态空间大小决定需要覆盖的样本量。调参时四者要联动考虑,例如状态空间大时往往需要更长的 ε 退火过程。
Q7. ε-贪心策略中,ε 的主要作用是什么?
- A.控制智能体随机探索新动作的概率← 正确答案
- B.控制 Q 值更新时的学习速率
- C.决定未来奖励的折扣力度
- D.决定每个回合的最大步数上限
答案:A。ε 的含义就是“随机乱走”的概率:以 ε 等概率选任意动作,以 1−ε 选当前最优动作。B 是 α 的职责,C 是 γ 的职责,D 是环境或调度器的事。可以把 ε 理解为狐狸的“胆量旋钮”。
Q8. 若把悬崖漫步中 SARSA 的 ε 设为 0,最可能发生什么?
- A.智能体无法发现新路径,性能取决于初始 Q 值← 正确答案
- B.智能体一定更快收敛到全局最优路径
- C.智能体掉崖次数会比 ε=0.1 时显著更多
- D.更新公式会自动退化为 Q-Learning 的形式
答案:A。ε = 0 时只贪心,而 Q 表初始全 0,贪心会选第一个动作并一直重复,无法探索出悬崖和绕行路,A 对。B 错在“一定”,没有探索就没有信息修正。C 错,完全贪心反而不会因随机掉崖。D 错,更新公式是否用 max 是算法设计决定的,与 ε 无关。
Q9. 下列真实场景中,更适合选择 SARSA 的有?
- A.机器人行走,跌下台阶会损坏硬件← 正确答案
- B.棋牌对战,输一局只损失一次积分
- C.量化交易,单次滑点超限造成大额亏损← 正确答案
- D.仿真平台,允许千万次失败试错
答案:AC。SARSA 保守、把探索风险算进价值,适合“犯错代价高”的场景,A 和 C 符合。B 和 D 容错度高,更该用 Q-Learning 去追求最优路径。选型的核心是问一句:训练期的一次失误,我能承受吗?
Q10. SARSA 更新公式括号中的 TD 误差表示什么意思?
- A.新 TD 目标与旧 Q 估计之间的差距← 正确答案
- B.当前奖励与未来所有奖励的加总
- C.动作价值表中全部条目的平均值
- D.策略 π 在某个状态下的概率取值
答案:A。括号里是 R_{t+1} + γQ(S_{t+1},A_{t+1}) − Q(S_t,A_t),即新目标减旧估计,差值越大说明这一步越“意外”,修正幅度也越大。B 写的是折扣回报的雏形但没有差值结构,C 与单步更新无关,D 是策略概率,不是 TD 误差。