假设你搬进了一座完全陌生的城市,晚上八点要去市中心找一家餐厅。没有导航,没有地图,你唯一能靠的就是自己的双脚和一个空白小本子:每走到一个路口,凭感觉选一条路;走完一段路,把“从刚才路口沿这条路走过来的体验”记在本子上;下一次再到这个路口,翻出本子,选体验最好的一条路。SARSA算法,就是把这个“边走边记、边记边学”的过程变成数学公式的经典方法。 SARSA五个字母分别代表State状态、Action动作、Reward奖励、State新状态、Action新动作——正好是一次完整的“走一步记一步”记录。它属于时序差分(TD)算法家族,最大的特点是:更新本子时,用的是自己实际走的那条路,而不是“听说最好”的路。这让SARSA学习风格保守、稳妥,特别适合走错一步代价很高的场景。 想象你正站在城市街角,手里握着本子,前方是无数路口。接下来,我们跟着这位本子记录员,把SARSA的每一步都走到。
学习SARSA能让你真正理解强化学习中“同轨策略”(on-policy)的核心含义,搞清它和Q-Learning的本质差异,这是从事智能决策、游戏AI、机器人控制等岗位绕不开的基础功。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
CLIFF SARSA 五元组 一次完整的状态转移包含这五个要素 SARSA Q值更新公式 SARSA = State-Action-Reward-State-Action
算法起源:一本边走边记的带路笔记
小萨刚搬进陌生城市时,手里只有空白本子。他每走到一个路口,凭感觉选一条路,走完一段就在本子上记一笔:“从A路口走左边路,到了B路口,沿途感觉不错。”下次再到A路口,他翻本子,挑评分最高的一条路走。这个朴素过程就是强化学习的雏形:智能体(小萨)与环境(城市)不断交互,靠奖励信号(沿途感受)逐步改进决策,而不是像监督学习那样需要现成的标准答案。
强化学习把这种“试错学习”形式化为马尔可夫决策过程(MDP):智能体在每个时刻观察状态 \(s_t\),执行动作 \(a_t\),环境反馈奖励 \(r_{t+1}\) 并转移到新状态 \(s_{t+1}\)。小萨的“带路笔记”在算法里就是一张Q值表,而时序差分(TD)思想的精髓在于:不等结局分晓,每走一步就用实际体验修正估计。小萨不需要等真正找到餐厅,每走完一段路就能立刻更新记录。
1. 旧估计 \(V(s_t)\):本子上对当前路口价值的旧评分,来自之前所有路过的经验积累。
2. 步长系数 \(\alpha\):一次记录修正的幅度,太大则判断摇摆不定,太小则学得太慢。
3. 即时奖励 \(r_{t+1}\):刚走完这段路的真实感受,是“新信息”的来源。
4. 未来价值 \(\gamma V(s_{t+1})\):对新路口价值的打折估计,代表“后面还能捞到多少好处”。
5. TD误差:实际体验加未来预期与旧判断的差距,差距越大这次修正就越猛。
1994年,Rummery和Niranjan在一份技术报告中首次提出SARSA,后来Sutton将其推广并正式命名。小萨或许不知道,自己“边走边记”的习惯,在学术界有一个响亮的名字——而这个名字本身,就是算法的完整故事。
五大要素:本子上的五栏记录
小萨的本子上,每一条记录都固定写五栏:当前路口、选的路、沿途感受、到达的新路口、下一步打算选的路。这五栏缺一不可,对应着SARSA的五个字母。第一栏State是智能体观察到的环境快照——路口A和路口B看似都是路口,但位置不同,决策就不同;第二栏Action是在这个状态下选择的动作——选左边还是右边;第三栏Reward是执行动作后环境给出的反馈——沿途舒适还是崎岖;第四栏State'是转移后的新状态;第五栏Action'则是根据当前策略为下一时刻选好的动作。
1. 当前状态 \(s_t\):t时刻智能体所处的位置,对应本子第一栏“当前路口”。
2. 执行动作 \(a_t\):智能体在状态 \(s_t\) 下选择的动作,对应“选的路”。
3. 即时奖励 \(r_{t+1}\):执行动作后环境返回的奖励信号,注意下标是 \(t+1\),因为奖励是动作之后的反馈。
4. 后继状态 \(s_{t+1}\):动作执行后转移到的新路口。
5. 后继动作 \(a_{t+1}\):在新状态下按当前策略选定的下一步动作——这是SARSA最关键的“同轨”标记。
注意,SARSA里的五个字母不是孤立概念,而是一条完整的因果链:你在哪个路口(s),决定走哪条路(a),路况反馈(r),到了新路口(s'),还要为下一步做个打算(a')。小萨每记录一笔,本子就多了一行真实的城市经验。
更新公式:用一次体验修正一条笔记
小萨走到B路口后,会做这样一件事:把这次实际体验和出发前对A路口的预期对比,如果实际体验比预期好,就给A路口的这条路线加分;如果比预期差,就减分。SARSA的更新公式就是这句话的数学翻译。这里的“预期”不是凭空想象,而是由“这步实际奖励 + 对新路口的未来估计”构成的。
1. 更新目标 \(Q(s_t,a_t)\):本子上“在路口 \(s_t\) 选动作 \(a_t\)”这条记录的当前评分。
2. 步长 \(\alpha\):学习率,控制这次修正的力度,通常取0到1之间的小数。
3. 即时奖励 \(r_{t+1}\):这次行动的立刻反馈,对应“这段路的真实感受”。
4. 折扣因子 \(\gamma\):0到1之间,衡量未来奖励的打折程度,越接近1越看重长期收益。
5. 后继价值 \(Q(s_{t+1},a_{t+1})\):在下一个路口 \(s_{t+1}\) 按当前策略实际选出的动作 \(a_{t+1}\) 对应的Q值。
6. TD误差:整个公式的灵魂——实际体验加折扣未来与当前估计的差距,差值驱动着每一次学习。
如果给小萨的公式配一句口诀,那就是“旧分 + 小步修正”。修正的方向由TD误差决定,修正的幅度由\(\alpha\)控制。正是这个看起来简单的算式,让小萨的本子越记越准,也让算法在数学上保证最终能收敛到稳定的策略。
策略平衡:什么时候听本子,什么时候瞎逛
小萨面临一个两难:如果每次都听本子的,走评分最高的路,那他永远发现不了新开的捷径;如果每次都不听本子,到处乱逛,那可能永远到不了餐厅。这个矛盾在强化学习中叫“探索与利用”的权衡——探索是尝试没走过的路,利用是走已知最好的路。SARSA用一套叫 \(\varepsilon\)-greedy(ε-贪心)的机制解决这个难题:绝大多数时候利用,但留一小部分概率随机探索。
1. 最优动作概率:选中贪心最优动作的概率,除了大部分“听话”概率,还分到一份探索概率。
2. 非最优动作概率:每个非最优动作在探索时都有平等机会被选中。
3. 可选动作数 \(|A(s)|\):状态 \(s\) 下可供选择的动作总数,用于把探索概率均匀分摊。
4. 探索率 \(\varepsilon\):控制“瞎逛”和“听话”的比例,通常初始较大,训练后期逐渐调小。
对小萨来说,\(\varepsilon\) 就是他允许自己“偶尔抽风”的概率。前期本子还很薄,需要多探索,\(\varepsilon\) 大一些;后期本子越来越厚,路线的好坏已经比较清楚,\(\varepsilon\) 就该调小,把小萨从“爱乱逛的路痴”改造成“稳重的熟客”。
同轨学习:用自己真实走的路更新判断
小萨的笔记有一条铁律:只记录自己实际走过的路,绝不记录“听说最好但没走过”的路。这听起来很傻——明明听说有条路更好,为什么不记?但正是这个“傻”成就了SARSA最重要的特性。当小萨站在路口,心里想的是“我实际会走哪条路”,而不是“理论上哪条路最好”,这种用当前策略产生的动作来更新Q值的方式,就叫同轨策略(on-policy)。
1. 同轨的关键 \(a_{t+1}\):SARSA的后继值是当前策略(含探索)实际选出的动作对应的Q值,本子只记真实走过的路。
2. 离轨的关键 \(\max_a\):Q-Learning的后继值是对后继状态所有动作取最大,假设下一步总能做出最优选择。
在经典的“悬崖行走”环境中,两种算法的差异被放大:Q-Learning因为总是幻想“下一步能完美避开悬崖”,学到一条贴着悬崖边的冒险路线;SARSA考虑到自己真实执行时可能会“手抖”(ε探索选了危险动作),学到一条绕远但安全的保守路线。哪个更好?取决于场景——如果错误代价极高,小萨宁愿多绕两步路。
算法流程:从第一次出门到轻车熟路
小萨第一次出门时手忙脚乱:忘了带本子、走错路口、把体验记串行。但试了几次后,他总结出一套固定流程:出门前把本子放兜里,站在路口先翻本子,选一条路走,到新路口后立刻掏出本子记录。算法流程就是把这套“出门流程”固化成程序。强化学习的最终目标是最大化长期累积回报——也就是小萨希望从出门到抵达餐厅,全程体验分总和最高,而且要考虑时间一长体验会打折。
1. 即时序列 \(r_{t+1}, r_{t+2}, \ldots\):未来每一步获得的即时奖励,对应一路上每一段路的体验分。
2. 折扣幂次 \(\gamma^k\):越遥远的奖励折扣越多,体现“远水解不了近渴”。
3. 求和 \(\sum_{k=0}^{\infty}\):把未来所有时刻的折扣奖励累加,得到这条路径的总分。
完整的SARSA流程可以概括为四步:先初始化Q表(本子清零);然后在每个回合从初始状态出发,用ε-greedy选初始动作;接着在回合内循环——执行动作、观察奖励和新状态、再选新动作、更新Q表、移动状态;最后判断Q表是否收敛(变化量足够小)或达到最大回合数。小萨经过几百次出门实践后,本子上的评分趋于稳定,他也就从“路痴”变成了“活地图”。
代码实现:悬崖边的谨慎行者
为了让小萨的记路本领在程序里跑起来,我们需要一个迷你“城市”——经典的悬崖行走(Cliff Walking)环境。这是一张4行12列的网格地图,起点在左下角,目标餐厅在右下角,中间一排是悬崖,掉下去奖励为﹣100并立即结束本回合。每走一步普通格子的代价是﹣1,到达终点奖励+50。这个环境特别能检验算法的“性格”:SARSA会学到贴着安全区绕行的路线,而Q-Learning总想贴着悬崖边走。
1. 初始探索率 \(\varepsilon_{\text{init}}\):训练第一回合的探索概率,通常设为0.5到1.0。
2. 衰减系数 \(\text{decay}\):略小于1的常数,每回合乘以一次,\(\varepsilon\) 逐步缩小。
3. 下限 \(\varepsilon_{\min}\):防止探索率衰减到零,保证始终保留少量随机性。
在Python实现中,Q表是一张三维数组,代码逻辑与公式一一对应:用ε-greedy选动作,执行后观察奖励和新状态,再选下一步动作,然后套用更新公式。完整可运行的代码在下一节给出,小萨的“带路笔记”终于从本子变成了 q_table。
应用场景:从游戏角色到仓库管家
学会了记路的小萨,从陌生城市街道走进了更广阔的世界。第一个用武之地是仓库机器人路径规划:传统AGV小车按固定磁条路线运行,遇到临时堆放的货物只能停车等待,而用SARSA类算法训练的机器人能在线学习绕行路线,每走一步都用实际路径更新策略,特别适合“走错一步就撞货架”的仓储场景。第二个典型场景是游戏NPC决策:开放世界里的NPC如果只会按脚本走固定路线,玩家很快会觉得无聊,SARSA能让NPC边探索边学会在城镇里灵活移动、躲避障碍。
1. 策略加权期望:用策略概率对后继状态所有动作的Q值做加权平均,而不是只取某一个动作。
2. 折中方案:期望SARSA是SARSA与Q-Learning的中间地带,方差更小,是高风险的进阶方向。
SARSA也有自己的边界:表格型Q值无法应对高维状态空间(比如围棋的棋局),探索效率也比较低。但作为强化学习入门的第一块基石,它把“同轨策略”“时序差分”“探索与利用”这些核心思想讲得明明白白。小萨的本子,正是通往深度强化学习大门的起点。
AI 应用场景
仓库机器人动态路径规划
阶段:策略学习 / 在线决策
解决的问题:传统AGV小车沿固定轨道运行,遇到临时障碍物只能急停等待,导致整个仓储链路堵塞。SARSA让机器人把每次实际行驶的路线和碰撞反馈当作“边走边学的经验”,用真实路径更新Q值,学会在动态变化的货架间绕行,宁可多绕两步也不撞货架。
具体案例:某电商仓库引入SARSA策略训练的搬运机器人,在通道被临时货物占用时,机器人不再停车等待,而是根据之前学到的“哪些路口稳妥、哪些路口危险”的信息,自主选择绕行路线。训练初期机器人偶尔会蹭到货架,但随着Q表逐渐收敛,绕行效率显著提升,碰撞率下降了约40%。
游戏NPC的智能移动决策
阶段:行为决策 / 强化学习训练
解决的问题:传统游戏NPC用行为树或脚本控制移动,动作模式固定,玩家很快就能找到规律。SARSA让NPC在游戏世界中实时学习“从当前位置到目标点怎么走更安全”,把每一次实际移动都作为训练样本,逐步学会避开墙壁、水域等障碍区域。
具体案例:在一款开放世界RPG中,城镇里的商贩NPC需要从摊位走到广场再返回。开发团队用SARSA训练其移动策略,NPC探索时会偶尔走弯路,但最终学会了沿安全步行道往返的路线,不再像以前那样频繁卡在墙角。玩家也明显感觉NPC的移动更自然、更有“人味”。
Python 演示
import numpy as np class GridWorld: """4x12 悬崖行走环境:起点在左下,目标在右下,中间是悬崖""" def __init__(self, rows=4, cols=12): self.rows = rows self.cols = cols self.start = (rows - 1, 0) self.goal = (rows - 1, cols - 1) self.cliff = set((rows - 1, c) for c in range(1, cols - 1)) self.actions = [(0, 1), (0, -1), (1, 0), (-1, 0)] self.state = self.start def reset(self): self.state = self.start return self.state def step(self, action_idx): dr, dc = self.actions[action_idx] r = max(0, min(self.rows - 1, self.state[0] + dr)) c = max(0, min(self.cols - 1, self.state[1] + dc)) self.state = (r, c) if self.state in self.cliff: return self.state, -100, True if self.state == self.goal: return self.state, 50, True return self.state, -1, False def choose_action(q_table, state, epsilon, n_actions): """epsilon-greedy 策略:随机探索或选当前最优""" if np.random.random() < epsilon: return np.random.randint(n_actions) return int(np.argmax(q_table[state[0], state[1]])) def sarsa(env, episodes=400, alpha=0.1, gamma=0.95, epsilon=0.2): """SARSA 训练循环,返回训练好的 Q 表""" rows, cols = env.rows, env.cols n_actions = len(env.actions) q_table = np.zeros((rows, cols, n_actions)) for ep in range(episodes): state = env.reset() action = choose_action(q_table, state, epsilon, n_actions) total_reward = 0 while True: next_state, reward, done = env.step(action) next_action = choose_action(q_table, next_state, epsilon, n_actions) q_sa = q_table[state[0], state[1], action] q_next = q_table[next_state[0], next_state[1], next_action] q_table[state[0], state[1], action] = q_sa + alpha * (reward + gamma * q_next - q_sa) state, action = next_state, next_action total_reward += reward if done: break return q_table if __name__ == "__main__": env = GridWorld() q = sarsa(env) print("Q表形状:", q.shape) state = env.reset() path = [state] while state != env.goal: action = int(np.argmax(q[state[0], state[1]])) state, _, done = env.step(action) path.append(state) if done and state != env.goal: break print("学习到的路径:", path)
q_table = np.zeros((rows, cols, n_actions))初始化Q表,对应小萨的清空本子,所有路线评分从零开始。if np.random.random() < epsilon:ε-greedy的探索分支,小萨“偶尔抽风”乱走一条路。next_action = choose_action(q_table, next_state, epsilon, n_actions)SARSA的精髓:用当前策略真实选出下一步动作,而不是幻想最优动作。q_sa = q_table[state[0], state[1], action]取出当前状态动作对的旧Q值,相当于本子上那条路线的旧评分。q_table[state[0], state[1], action] = q_sa + alpha * (reward + gamma * q_next - q_sa)完整执行SARSA更新公式,用一次真实体验修正一条笔记。if done and state != env.goal: break如果掉进悬崖,提前结束本回合,避免在悬崖下面继续瞎走。
常见误区
误区总听到有人说“SARSA就是Q-Learning的保守版,换个符号而已,多训练几个回合结果就一样了”。甚至有人在写代码时直接把两个算法的更新函数混着用,觉得反正都会收敛到最优策略。
正解两者的目标值来源根本不同。SARSA更新时使用“当前策略实际执行的动作”对应的Q值,Q-Learning使用“所有动作里的最大Q值”。在悬崖行走环境中,SARSA会学习一条远离悬崖的绕行路线,Q-Learning则学习贴着悬崖边的危险路线。策略的“性格”差异不会随训练回合增加而消失,因为两种算法优化的目标本身就不同。
为何常见:表面上两个公式结构极其相似,初学者往往只看到“都用了时序差分、都在更新Q表”,而忽略了最关键的差异——下一个动作从哪里来。这个差异藏在公式的细节里,不亲手对比实验很难察觉。
误区一些初学者觉得SARSA学习就是靠探索,那 ε 设为0.9甚至1.0,每步都随机走,不是能更快把地图走遍吗?反正最后Q表会收敛。
正解当 ε 过大时,智能体大部分时间在随机游走,Q值被大量低质量的随机经验干扰,更新方差极大,很难收敛。且SARSA是同轨策略,它会用这些随机探索的动作去更新Q值,相当于本子上记了大量“瞎逛”的笔记,反而淹没了真正有用的路线信息。实际使用中ε通常从0.2到0.5开始,并随着训练衰减到0.05左右。
为何常见:“探索越多见识越广”符合日常直觉,但在强化学习中,探索的价值在于发现更好策略,而过量探索会破坏已有知识的稳定性。人们容易忽视“探索成本”——每一次随机动作都在污染Q表。
误区学习SARSA更新公式时,看到 \(Q(s',a')\) 里的 \(a'\) 是“下一步的动作”,有初学者想当然地以为这个动作一定是当前状态下最好的动作,于是觉得SARSA和Q-Learning一样是off-policy算法。
正解SARSA的 \(a'\) 是用当前ε-greedy策略实际选出来的动作,它可能是最优动作,也可能是一次随机探索的“抽风”动作。正因为更新用的数据全部来自当前策略的交互过程,SARSA才是典型的on-policy(同轨策略)算法。如果 \(a'\) 换成 \(\max_a\),那就变成了Q-Learning,不再是SARSA。
为何常见:对“当前策略”和“目标策略”两个概念区分不清。Q-Learning里行为策略和目标策略分离,而SARSA里两者是同一个,这个微妙差异容易在初学时被忽略。
误区跑SARSA训练时,看到某一次更新中TD误差是正数,就觉得“这个动作值得肯定”,认为当前策略正在朝好的方向改进。如果TD误差是负数,就认为动作不好。
正解TD误差的正负只是表示“实际奖励加未来估计”相对于旧Q值的单次偏差,它受探索随机性、环境噪声、后继状态估计误差等多重因素影响。一次TD误差为正,可能只是因为这次随机探索碰巧遇到了好路况,并不代表这个动作在所有情况下都好。单独看某一次的TD误差没有统计意义,要看大量回合的平均趋势。
为何常见:人们习惯用单次样本的收益判断好坏,但强化学习的本质是估计期望回报,单次样本有巨大方差。和“看到股票涨了一天就以为牛市来了”是同一个思维陷阱。
面试题
Q1. SARSA名称中五个字母依次代表什么?
- A.状态、动作、奖励、状态、动作← 正确答案
- B.动作、状态、奖励、状态、动作
- C.状态、动作、奖励、动作、状态
- D.奖励、状态、动作、状态、动作
答案:A。SARSA五个字母依次是State-Action-Reward-State-Action,即状态、动作、奖励、状态、动作,构成一条完整的经验五元组。选项C把最后两个字母顺序颠倒,选项D从Reward开始,都与算法定义不符。
Q2. SARSA属于哪种学习范式?
- A.同轨策略on-policy算法← 正确答案
- B.离轨策略off-policy算法
- C.有模型监督学习算法
- D.无模型监督学习算法
答案:A。SARSA更新Q值时用的是当前策略实际选择的动作 \(a_{t+1}\),即“行为策略”和“目标策略”是同一个,因此是on-policy(同轨策略)。Q-Learning才是off-policy的典型代表。它与监督学习无关,属于无模型强化学习。
Q3. SARSA更新时,公式中的 \(a'\)(即 \(a_{t+1}\))是如何获得的?
- A.用当前策略在下一个状态实际选择的动作← 正确答案
- B.用目标策略在下一个状态的最优动作
- C.从所有历史经验中随机挑选一个动作
- D.由环境在转移后自动给定的动作
答案:A。SARSA在观察到后继状态 \(s_{t+1}\) 后,会用当前的ε-greedy策略再选择一次动作,这个动作就是 \(a_{t+1}\)。它可能是探索性的随机动作,这正是SARSA保守稳妥风格的原因。如果用最大Q值对应的动作,就变成了Q-Learning。
Q4. 在ε-greedy策略中,增大ε会带来什么影响?
- A.增加探索行为同时减少利用行为← 正确答案
- B.增加利用行为同时减少探索行为
- C.同时增强探索行为和利用行为
- D.同时削弱探索行为和利用行为
答案:A。ε是随机探索的概率,增大ε意味着智能体更频繁地随机选择动作,相应地选择当前最优动作(利用)的概率1-ε就降低。探索和利用存在此消彼长的关系,无法同时增强。
Q5. 以下关于SARSA的特点,哪些描述是正确的?
- A.更新时使用实际执行的动作对应的Q值← 正确答案
- B.学习过程整体风格偏向保守稳妥← 正确答案
- C.属于离轨策略的经典算法
- D.属于时序差分算法家族← 正确答案
答案:ABD。SARSA用当前策略实际选择的动作更新Q值,因此是同轨策略而非离轨策略,选项C错误。它沿用了TD思想的更新方式,A、B、D均正确。在悬崖行走等高风险环境中,SARSA会学到更安全的绕行路线,体现其保守特性。
Q6. SARSA更新公式中的TD误差表达式是什么?
- A.\(r_{t+1} + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)\)← 正确答案
- B.\(r_{t+1} - \gamma Q(s_{t+1},a_{t+1}) + Q(s_t,a_t)\)
- C.\(Q(s_t,a_t) - r_{t+1} - \gamma Q(s_{t+1},a_{t+1})\)
- D.\(\gamma r_{t+1} + Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)\)
答案:A。TD误差定义为“实际奖励 + 折扣后的后继价值 − 当前估计”,即 \(r_{t+1} + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)\)。选项B和C符号组合错误,选项D对即时奖励错误地加了折扣系数。
Q7. 在悬崖行走环境中,为什么SARSA学到的路线通常比Q-Learning更安全?
- A.更新时考虑了实际走的路线,包括可能的探索动作← 正确答案
- B.探索时完全避免随机动作,因此不会走悬崖边
- C.奖励函数设置得更加合理,惩罚了靠近悬崖的行为
- D.使用更大的学习率,使Q值更快收敛到安全值
答案:A。SARSA是on-policy算法,更新时使用当前策略(含ε探索)实际选择的动作。即便最优路径贴着悬崖边,SARSA也意识到“自己手抖”可能选到坠崖动作,因此学会远离危险区域的路线。Q-Learning则总幻想下一步能选最优动作,会学到贴着悬崖的冒险路线。
Q8. 以下哪些因素会影响SARSA算法的收敛效果?
- A.学习率参数α的取值设置← 正确答案
- B.折扣因子γ的取值设置← 正确答案
- C.探索率ε的衰减策略设计← 正确答案
- D.环境状态空间和动作空间的大小← 正确答案
答案:ABCD。α控制修正步长,过大震荡、过小收敛慢;γ决定远近收益权衡,影响策略偏好;ε的衰减策略影响探索与利用的节奏;状态动作空间大小直接影响Q表规模和样本复杂度。四个因素都会显著影响SARSA的收敛效果。
Q9. 折扣因子γ接近1表示智能体?
- A.更加看重长期的未来奖励← 正确答案
- B.更加看重近期的即时奖励
- C.完全忽略所有类型的奖励
- D.随机看待所有未来的奖励
答案:A。γ越接近1,未来奖励被打折的程度越小,智能体越重视远期收益;γ越接近0,智能体越短视,只关心眼前的即时奖励。γ=0时完全忽略未来,γ=1时一视同仁(但可能不收敛)。
Q10. 关于探索与利用的权衡,以下说法正确的是?
- A.训练前期应多探索,后期应多利用← 正确答案
- B.探索有助于发现当前未知的更优策略← 正确答案
- C.利用是指选择当前Q值最高的动作← 正确答案
- D.完全利用一定能保证找到最优策略
答案:ABC。前期Q表不准确,需要大量探索收集经验;后期Q表趋于收敛,应减少探索、多利用已有知识。利用就是选当前价值最高的动作。但完全利用可能陷入局部最优,因为没尝试过的动作可能更好,所以选项D错误。