资讯动态

强化学习核心概念全解:贝尔曼方程、SARSA与Q-learning算法对比

发布时间:2026/10/23 3:27:45 来源:尧图企业网站定制
简介这份PDF文档汇总了强化学习课程A卷期末考试的原始试题与详细解答面向高校相关专业学生、考研备考者及需要快速梳理强化学习核心概念的自学者。内容覆盖折扣因子、状态转移与奖励、贝尔曼方程、蒙特卡洛方法、时间差分方法、SARSA与Q-learning对比、值迭代与策略迭代、MDP以及状态-行动值函数等高频考点并配有带计算步骤的典型例题与答案解析便于对照公式理解推导过程。资源为单个PDF文件大小约332KB内容紧凑适合考前冲刺、专题复习或作为教学配套练习使用。目前已有290人学习下载题目与解答一一对应能帮助读者快速定位薄弱环节巩固强化学习中的关键算法与理论基础。1. 强化学习到底在学什么从一只学叼球的小狗说起设想你在教一只小狗叼球。它一开始乱扑扑错给轻奖励叼到球给大奖励几次以后就慢慢学会先看球再动嘴——因为它摸清了“什么状态下做什么动作将来的甜头更大”。强化学习就是让智能体通过试错在一个马尔可夫决策过程MDP里学会这套判断。听起来玄学可期末考卷把它拆成了固定考点贝尔曼方程怎么算价值蒙特卡洛和TD怎么更新价值SARSA与Q-learning怎么改进策略值迭代与策略迭代怎么找最优。这份A卷复习资料把每个考点都做成了带答案的原题下面我用大白话把这套流程讲透。2. 为什么要给未来奖励打折折扣因子、状态转移与贝尔曼方程强化学习的公式里最先让你犯迷糊的一般是折扣因子γ。原题第一问设定“折扣因子γ0.9的网格世界”后面的贝尔曼方程全绕不开它。要搞懂这类题得先把三件事串起来γ怎么影响价值、状态转移和奖励提供什么信息、贝尔曼方程怎么把这些信息变成可解的方程组。2.1 折扣因子未来的100块为什么不值现在的100块先问一个问题一年后的100块和现在手里的100块你选哪个大概率选现在。原因很简单——现在的钱马上能花未来的钱要等中间还可能变数不断。折扣因子γ就是把这种“未来的贬值”量化成一个0到1之间的系数。γ0.9的意思是每往后走一步奖励在“今天”的眼里就打9折。下一步的奖励只算90%下两步只有81%下三步只有72.9%。奖励越往后折算到当前决策里的权重越小。这个设定不是拍脑袋它解决了两个实际问题。第一避免价值变成无穷大。在一个永不终止的环境里如果γ1累积奖励一路加下去迟早发散算法没法比较“哪种策略更好”。打完折几何级数在γ1时收敛价值才是一个可以计算的有限数。第二控制决策眼光。γ越接近1智能体越看重长远收益γ越接近0智能体越只顾眼前。期末题常把γ设成0.9就是为了让当前奖励和远期奖励都保持一定分量。计算时有一个高频结论当某个状态的价值满足 v(s) r γv(s) 时也就是“当前价值等于即时奖励加上折扣后的自身价值”解出来就是 v(s) r/(1-γ)。网格世界里的终止状态正是这种情况。原题里 s4 的价值只和自己有关代入 γ0.9 可得 v(s4) 1/(1-0.9) 10。这是整道计算题的“地基”因为 s2、s3 的价值都指向 s4地基定了上面的状态才能一个个解出来。2.2 状态转移与奖励环境给智能体的两张牌网格世界题的描述里有另一组关键信息从 s1 出发有50%概率进入 s2奖励相关值为1有50%概率进入 s3奖励相关值为1从 s2 出发总是进入 s4从 s3 出发也总是进入 s4。这些内容翻译成强化学习的行话就是“状态转移”和“奖励函数”。状态转移回答“做了某个动作之后会到哪去”。关键在于它可以是概率性的——同一个动作不一定每次都落到同一个状态。例如原题中 s1 的两个去向各占一半概率。奖励则是在这次转移发生时环境立刻给智能体的反馈。一个管去路一个管打分两者共同决定了“这一步到底划不划算”。为什么概率这么重要因为强化学习里的几乎所有公式都在算期望。期望就是给每种可能的下一个状态赋予一个概率权重再把这些权重下的未来收益汇总。看到 P(s|s,a) 和 r(s,a) 这类记号时你要知道它们只是压在公式底层的信息卡片这张写着“到哪儿去的概率”那张写着“到那儿能拿多少”。贝尔曼方程所做的不过是把两张卡片合起来算一个带折扣的加权均值。这部分还隐含一个重要习惯做题时先把状态转移和奖励列成一张表再写贝尔曼方程。列清楚了后续每一步计算都不容易错。这也是复习这类题最值得养成的动作。2.3 贝尔曼方程把长远收益写成一封递归的信现在可以进入核心贝尔曼方程。它的形式看起来是一堆字母本质上只有一句话——当前状态的价值等于“本步的期望奖励加上折扣后的下一个状态的期望价值”。用原题的四个状态举例可以写出四个方程v(s1) 0.5×[0 γv(s3)] 0.5×[-1 γv(s2)] v(s2) 1 γv(s4) v(s3) 1 γv(s4) v(s4) 1 γv(s4)竖着看这些式子会发现 s1 的价值取决于 s2、s3而 s2、s3 又取决于 s4s4 又取决于自己。这一串“我依赖你、你依赖它、它依赖我”的循环正是递归的形态。方程的解就是把这些层层依赖同时满足的那组状态价值。具体代入很简单先解 s4v(s4)10.9v(s4)得到 v(s4)10再带回 s2、s3各自得到10最后带回 s1算出一个确定数值。整个过程可以用一小段Python描述gamma 0.9 # 四个状态的贝尔曼方程 # v4 1 gamma * v4 # v3 1 gamma * v4 # v2 1 gamma * v4 # v1 0.5 * (0 gamma * v3) 0.5 * (-1 gamma * v2) v4 1 / (1 - gamma) # 终止状态自环v(s)r/(1-γ) v3 1 gamma * v4 # s3 的价值指向 s4 v2 1 gamma * v4 # s2 的价值也指向 s4 v1 0.5 * (0 gamma * v3) \ 0.5 * (-1 gamma * v2) # s1 两个去向各占 50%这段代码不算算法只是把四个方程翻译成可执行的算术。gamma0.9 是折扣因子v4 用自环公式一步求出v3、v2 都是“即时奖励1 折扣后的 v4”v1 则按两个去向的概率加权求和。执行完v1 等于 8.5。很多人第一次算出这个数时会怀疑“价值怎么比即时奖励还高”原因就是价值包含了后面无数步的折扣累积只要 γ 不太小价值就会明显高于第一步的奖励。所以贝尔曼方程不是一道孤立的数学题它是所有后续算法的理论源头。蒙特卡洛和时间差分本质上是用不同方式去估计方程里的期望SARSA和Q-learning则在方程的基础上换了“下一步的动作价值取谁的”。把这张递归的关系记在脑子里后面每一章都能对号入座。3. 先跑完再复盘还是走一步算一步蒙特卡洛与时间差分有了贝尔曼方程下一步要让它“跑”起来变成可执行的算法。原题第二问直接问蒙特卡洛和时间差分是什么谁是在线算法谁是离线算法。这个问题其实是在问你打算用什么节奏去更新价值。3.1 蒙特卡洛方法一局打完完整复盘蒙特卡洛的想法非常朴素要估计一个状态的价值那就真把这个状态所在的回合跑到结束把这一路上累积的奖励全部收集起来用一个“真实回报”来修正估计。回报的定义是G(t) r(t) γr(t1) γ²r(t2) ...r(t) 是当前步的即时奖励后面每一项都带着越来越高的折扣。把这个 G(t) 和当前估计值 v(s) 一比用学习率 α 修正v(s) ← v(s) α×(G(t) - v(s))更新的含义是如果这次真实回报比原来的估计高就往高调一点低就往低调一点。跑很多个回合后v(s) 就会被拉向多次回报的平均值。这就像一个人看了十场球赛用十场比分来估计主队的真实水平每场结束只修正一点。蒙特卡洛有一个绕不开的代价必须等回合结束。围棋要下完一盘才能复盘智能体要走到终止状态才知道这一路的“总成绩单”。所以它被归为离线算法。这里的“离线”不是说它不能实时控制动作而是说它的价值更新只能发生在完整轨迹结束之后。原题第八问给出的蒙特卡洛流程就是五个步骤先初始化价值在环境中按策略跑一个回合并记录路径算出从每个状态出发的累计回报 G(t)按上面的公式更新价值重复直到收敛。这套流程特别适合回合分明的任务——一局游戏、一次导航、一盘对局天然就知道终点在哪儿。下面是一段更直观的Python伪代码展示蒙特卡洛的一次完整更新alpha 0.1 gamma 0.9 def mc_update(rewards, states, V): G 0 # 从回合末尾向前累计回报天然实现 G r γr_next ... for t in reversed(range(len(rewards))): G rewards[t] gamma * G s states[t] # 用本次完整回报更新状态价值 V[s] V[s] alpha * (G - V[s]) return V这段代码的关键是“从后往前”累计最后一刻的回报先记为 G然后向前每一步 G r γG这样每一步都拿到了从该状态到回合结束的完整回报再按 α 的比例修正 V[s]。如果任务没有明确的“回合结束”蒙特卡洛就用不了这时就该轮到时间差分出场。3.2 时间差分方法走一步就估一次时间差分的方法论是没必要非等终点不可。每一步转移发生后你手里已经有两个信息刚拿到的即时奖励 r以及新状态的当前估计价值 v(s)。于是可以立刻构造一个“本次看到的未来估计”r γv(s)它既用了真实采到的奖励 r又用了尚未完全准确的猜测 v(s)所以叫“自举”。更新公式是v(s) ← v(s) α×(r γv(s) - v(s))方括号里的差叫 TD 误差。它衡量的是“刚刚走的这一步比我原来预想的好多少”。如果实际奖励加下一步估计高于原来的价值就把 v(s) 向上调低则下调。每一步都能做一次这样的修正完全不需要等到回合结束——这就是时间差分属于在线算法的原因智能体可以一边走路一边修正对每条路的判断走一步学一次。TD 方法结合了两边的优点它有蒙特卡洛的“采样”成分从真实转移中拿数据它又有动态规划的自举成分用现有估计来更新未来估计。代价是初始阶段 TD 的估计会带着“想象成分”——因为下一步的 v(s) 还没准可能把错误一路传下去。这个偏差会随着数据变多慢慢消失但方差比完整回报要小因为每一步只赌一步不需要赌一整条轨迹。用同场景对比蒙特卡洛像“期末统一考试后按总成绩改平时的印象”时间差分像“每道练习题做完立刻订正”。前者反馈更真实但来得慢后者反馈及时但每道题的正确性会影响后面订正的基准。3.3 在线与离线先分清“更新时机”再谈算法原题要求判断 MC 和 TD 谁在线谁离线这正是最容易弄混的维度。在线/离线其实只回答一个问题价值能不能在一回合结束前更新方法更新时机是否需要完整终止状态主要风险蒙特卡洛回合结束后必须方差大无法用于没有终止点的连续任务时间差分每一步结束后不需要初始估计不准确时偏差会被自举放大拿到任何算法先问“它什么时候更新”再去想别的。蒙特卡洛是离线算法时间差分是在线算法这个结论在期末题里可以直接用。但一定要记住在线/离线针对的是“更新时机”后面要讲的 on-policy/off-policy 针对的是“更新时数据是否来自当前策略”。两个维度互相独立一个算法可以是在线的、off-policy比如 Q-learning也可以是离线的、on-policy比如用当前策略收集回合后再用同一策略评估的蒙特卡洛。很多人栽跟头就是把“在线”和“on-policy”当成了同一回事。4. 最易混的概念逐个拆SARSA、Q-learning、两种迭代与价值函数原题从第三问开始进入高频易混区考试丢分的重灾区也在这里。我把最常搞混的四组概念放在一起每条说清“怎么混”和“怎么分”。4.1 SARSA与Q-learning一步之差哲学不同先看公式。SARSA 更新Q(s,a) ← Q(s,a) α×[r γQ(s,a) - Q(s,a)]Q-learning 更新Q(s,a) ← Q(s,a) α×[r γ max Q(s,a) - Q(s,a)]公式几乎长得一样唯一的区别是方括号里到底用 Q(s,a) 还是 max Q(s,a)。SARSA 用“当前策略在下一个状态实际选出的动作 a 的Q值”Q-learning 用“下一个状态里所有动作中最大的那个Q值”。这背后的差异可以打个比方。你开车快到一个路口时SARSA 会想按我平时的驾驶习惯我会转进哪条路按这条路走下去收益有多少。Q-learning 会想如果这里有一个完美司机他会选哪条路那条路能带来多高的收益。一个带着自己策略的“脚印”去评估一个朝着“理论上最好的那个”去评估。由此推出 on-policy 和 off-policy 的分野SARSA 是 on-policy学习和更新都基于当前正在用的策略。探索期里策略会犯错SARSA 的价值估计也会包含这些错误的预期因此更保守、更稳。Q-learning 是 off-policy它用什么策略收集数据都可以只要拿到 (s,a,r,s) 四元组就可以用 max 那一项把价值朝“最优可能”修正因此更乐观更新方向更激进。原题第四问给了一个代入题Q(s1,a1)2执行 a1 后拿到奖励 r3转移到 s2 并选择了动作 a2已知 Q(s2,a2)3α0.5γ0.9。用 SARSA 算Q(s1,a1) 2 0.5×[3 0.9×3 - 2] 3.85注意方括号里用的是 Q(s2,a2)3不是 s2 下所有动作的 max。如果把 3 换成 s2 里的最大Q值同一道题就变成了 Q-learning。做题时关键不是背公式而是看清题目给的是“实际选择的动作”还是“最大价值的动作”。下面把两套更新放在一起对比# SARSA: 依赖实际下一步动作 a1 的 Q 值 Q[s][a] alpha * (r gamma * Q[s1][a1] - Q[s][a]) # Q-learning: 依赖下一状态所有动作的最大 Q 值 Q[s][a] alpha * (r gamma * max(Q[s1][:]) - Q[s][a])前一行里的 a1 来自当前策略的真实选择后一行的 max 则绕开了当前策略。这就是两套算法在代码层面唯一的实质差异也是判断到底是 on-policy 还是 off-policy 的起点。4.2 值迭代与策略迭代一个磨价值一个磨方案值迭代和策略迭代都在解决“找最优策略”的问题但路径完全不同。值迭代的更新v(s) ← max [r(s,a) γ Σ P(s|s,a) v(s)]它每一步都直接把状态价值置成“所有动作里未来收益最大的那个”。整个过程中只关心一个变量——价值函数。价值磨到收敛最优策略就是每个状态下选择价值最高的动作自然浮现。策略迭代换了一种节奏先随便初始化一个策略 π策略评估用当前策略把每个状态的价值算出来策略改进看看哪个动作能带来更高价值把策略改成选那个动作重复评估和改进直到策略不再变化。打个比方值迭代像“每到一个路口就重新查一次地图把所有路的价值标出来最后直接挑最优路”策略迭代像“先按一套方案走几天发现某条路更好就走那条不断微调路线”。两者的关系不是谁取代谁。值迭代通常代码简单适合状态空间不大、转移概率已知的离散问题策略迭代每轮评估价值时要解一组方程轮数往往更少但每轮开销更大。很多实际实现会先跑几轮策略迭代加速再切到值迭代收尾。期末题考这个对比通常是让你指出两个关键区别值迭代更新价值时用 max策略迭代则是“评估改进”交替进行。4.3 状态值 v(s) 与行动值 Q(s,a)一个看位置一个看动作状态值衡量“站在某个状态按当前策略走下去长期期望收益是多少”。行动值衡量“在这个状态执行某个动作之后再按当前策略走长期期望收益是多少”。两者有明确关系状态值等于行动值在策略分布下的加权平均。v(s) Σ π(a|s) Q(s,a)也就是说Q 比 v 多了一层“动作”信息。想判断一个状态本身好不好看 v 就够了想决定下一步做哪个动作必须看 Q。在策略改进时我们得靠 Q 选出价值最高的动作再把这个动作作为新策略的走向。这也是原题第九问要求写出两个公式、说出各自作用的原因状态值用于评估状态和策略的好坏行动值用于指导动作选择和策略改进。两者相互配合一个管“评估”一个管“决策”。4.4 在线/离线与 on-policy/off-policy两个独立维度别混成一锅这组混淆几乎每个人都会踩一回。我第一次做题也栽在这——把在线算法和 on-policy 当成同义词结果一遇到 Q-learning 就糊涂了它明明能每步更新怎么还会是 off-policy关键在于“在线/离线”只回答更新时机“on-policy/off-policy”只回答数据来源。在线/离线轴的判断句是这个算法需要等一个完整回合才能更新吗等就是离线不等就是在线。MC 离线TD 在线。on-policy/off-policy轴的判断句是算法更新时方括号里用的是当前策略实际选出的动作还是不受当前策略控制的值SARSA 用实际选出的动作是 on-policyQ-learning 用 max是 off-policy。把两个维度放在一起会得到四个可能的组合。Q-learning 是“在线的 off-policy 算法”这不是矛盾恰恰说明两个维度本来就不相等。SARSA 是“在线的 on-policy 算法”。蒙特卡洛如果回合结束后用同一条策略评估就是“离线的 on-policy”。做题时每遇到一个算法先拆成两问什么时候更新更新时用谁的 Q 值拆完这两问这组概念就再也不会骗人了。4.5 n-step Sarsa夹在中间的学习节奏原题第十问还讨论了一个细节n-step Sarsa。它把 SARSA 和蒙特卡洛放在同一条轴上n 就是“看一眼多远的未来”。当 n1 时它就是标准 Sarsa每一步只看一步以后偏差相对大但方差小。当 n 趋向无穷时它几乎等于蒙特卡洛要等完整轨迹的回报方差变大但偏差变小。n 取中间值时它是两者的混合看得越远越接近真实回报看得越近越依赖自身估计。这个“偏差-方差权衡”是理解一切强化学习算法取舍的钥匙也是原题把三者放一起考的原因。5. 怎么选有地图就规划没地图就试错原题第七问把基于模型和无模型的方法放在一起比较并让你给出应用场景。这道题其实是整套资料的收尾前面学的贝尔曼、MC、TD、SARSA、Q-learning最终都指向一个问题——你知道环境长什么样吗如果你知道转移概率 P(s|s,a) 和奖励 r(s,a)你手里就有一张完整地图。贝尔曼方程可以直接联立求解值迭代、策略迭代都可以用精确公式推出最优策略。这种基于模型的方法好处是样本效率高、不需要大量试错风险全压在“模型准不准”上。模型一旦和真实环境有出入后面所有决策都会被带偏。而如果你对环境一无所知只能用智能体去真实环境中采样那么蒙特卡洛和时间差分这类无模型方法就是主场。它们不需要你画地图靠大量交互一点点把价值函数磨出来。代价是样本效率低、收敛慢好处是适应性强环境再怎么动态变化只要交互接口不变算法就能慢慢跟上。选择边界其实一句话就能概括模型容易拿到且稳定的时候优先用基于模型的方法环境复杂、模型难以建立或总在变化的时候直接上无模型方法。原题提到的棋类游戏和经典控制是典型的模型已知场景机器人导航、开放世界的控制任务则是无模型方法的主场。我自己复习这套题时最深的教训不在于记不住公式而在于动手前没先问“环境模型我知不知道”。明明题目给了转移概率我却习惯性地想去套 Q-learning 的通用框架绕了一大圈才走回贝尔曼方程的精确解。从那以后我拿到任何强化学习问题都强制自己先拆两步第一步环境模型可不可得第二步更新时机和数据来源各是什么。这两步走完该用哪个算法、该写哪个公式基本就清清楚楚了。希望这套“先定义、再推导、后区分”的思路能帮到你。把这套题每一步都自己推一遍强化学习就不再是那个一上来就劝退的黑匣子了。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑