☰
强化学习核心概念图解:贝尔曼方程、MC/TD与SARSA/Q-learning辨析
2026/10/28 2:07:41 网站建设 项目流程

简介:本资源为强化学习课程期末考试A卷真题及详细解析,面向高校人工智能、计算机科学等相关专业本科生及考研复习者,聚焦核心算法理解与公式推导能力训练。试卷覆盖折扣因子、贝尔曼方程、MDP建模、蒙特卡洛与TD方法对比、SARSA/Q-learning更新机制、值迭代与策略迭代实现、基于模型/无模型方法辨析等十大关键知识点,每道大题均含完整解题过程与原理说明,助力考生厘清概念边界、掌握计算逻辑、规避常见误区。资源为单文件PDF格式,大小332KB,内容精炼、排版清晰,便于打印复习或碎片化学习。目前已有290人下载学习,适合作为期末冲刺刷题、课堂补充练习及算法面试前置准备的高质量教学辅助材料。

1. 强化学习期末考题集:不是“刷题秘籍”,而是你大脑里那张还没画完的决策地图

你有没有过这种感觉:学完强化学习,脑子里全是“贝尔曼”“γ”“Q值”这些词,可一看到网格图就发懵——那个带箭头的方格子,到底在讲什么?是数学题?是编程题?还是某种玄学推演?其实,它更像一张你正在亲手绘制的「决策地图」:每个格子是你可能身处的位置(状态),每条箭头是你能做的选择(动作),每个数字是你走这一步后,未来可能拿到的“心理账户余额”(折扣后的累积奖励)。而这份《A卷强化学习期末考试原题加答案》,就是一套带批注的“地图草稿本”——它不教你从零画图,但它把老师出题时真正盯住的十个关键坐标点,用真实考题+手写式推演+错因标注,全摊开在你眼前。为什么值得搞懂?因为所有算法——不管是SARSA还是Q-learning,不管是蒙特卡洛还是TD——最终都在回答同一个问题:“如果我现在站在这里,往哪走,才最可能攒够退休金?”这份资料,就是帮你把抽象公式,锚定到具体格子、具体箭头、具体数字上的第一块路标石。


2. 贝尔曼方程:不是递归公式,而是智能体的“心理记账本”

贝尔曼方程常被初学者当成一道必须硬背的数学题。但换个角度想:一个刚学会做决定的机器人,每天醒来都要问自己三件事——“我现在在哪?”“我刚才干了啥?”“接下来最可能赚多少?”贝尔曼方程,就是它给自己写的每日记账模板。

2.1 它到底记什么账?

它记的不是现金流水,而是期望累积奖励的现值。比如你在状态s₁,做了动作a,得到即时奖励r,然后跳到s₂——但s₂本身还有未来收益,这个未来收益不能直接加,得打个折(乘以γ=0.9),因为明天的钱不如今天的钱值钱。所以s₁的价值,等于“今天拿到的r + 明天起打折后的s₂价值”。这就是最简版贝尔曼方程:

v(s₁) = r + γ × v(s₂)

但现实更复杂:s₁的动作可能有50%概率去s₃、50%去s₂;s₂的未来价值也不是固定值,它取决于你之后怎么选。于是方程变成带概率和求和的版本:

v_\pi(s) = \sum_{a} \pi(a|s) \sum_{s'} P(s'|s,a) \left[ r(s,a,s') + \gamma v_\pi(s') \right]

提示:π(a|s) 是策略(你有多大概率在s选a),P(s'|s,a) 是环境模型(你选a后,有多大概率跳到s')。这两个量,决定了v(s)到底是“你打算怎么干”和“世界允许你怎么干”的共同结果。

2.2 网格世界题里的“手算真相”

看原题第一题:四个状态s₁~s₄,γ=0.9,s₁奖励-1,50%下到s₃(奖励1),50%右到s₂(奖励1)……
很多人卡在第一步:为什么s₁的方程是
v(s₁) = 0.5×[1 + 0.9×v(s₃)] + 0.5×[-1 + 0.9×v(s₂)]?
注意两个细节:

  • 每一项都包含“当前转移的即时奖励 + 折扣后下一状态价值”,不是只写v(s₃)或v(s₂);
  • 奖励r(s,a,s')是转移发生时立刻到账的,不是状态本身的固有属性(s₁奖励-1,但向下转移时额外拿+1,向右转移时也额外拿+1)。

所以s₁的真实收益不是“-1”,而是“-1 + 向下拿1”或“-1 + 向右拿1”,即0或0?不对——再读题:“状态s₁的奖励为-1,有50%概率向下转移至s₃(奖励为1)”——这里的“奖励为1”指的是转移过程产生的奖励,不是s₃的状态奖励。因此向下转移的完整回报是:s₁自身奖励(-1) + 转移奖励(1) = 0;向右转移是:s₁自身奖励(-1) + 转移奖励(1) = 0。但题干又写“s₃奖励为1”“s₂奖励为1”,这是s₃/s₂作为到达状态的即时奖励,会在下一步计算中体现。
所以正确拆解是:

  • 从s₁向下:立刻获得r = -1(s₁自身)+ 1(转移奖励)= 0,然后进入s₃,s₃自身奖励1将在后续步骤计入;
  • 但从贝尔曼方程标准写法看,r(s,a,s')通常指从s经a到s'这一跳所获得的全部即时奖励,题干中“s₁奖励为-1”实为s₁的状态奖励,而“向下转移至s₃(奖励为1)”中的“奖励为1”应理解为该转移弧上的转移奖励。因此,向下转移的r = 1(题干明确说“奖励为1”),与s₁自身奖励无关——因为贝尔曼方程中r(s,a,s')已涵盖该跳全部即时反馈。

结论:题干表述存在教学简化,实际应统一按“r(s,a,s')”理解。s₁向下转移的r=1,向右转移的r=1;s₂和s₃的“奖励为1”是它们作为下一状态的自身奖励,在v(s₂)、v(s₃)中体现。因此s₁方程为:
v(s₁) = 0.5×[1 + 0.9×v(s₃)] + 0.5×[1 + 0.9×v(s₂)]
而s₂的方程是:v(s₂) = 1 + 0.9×v(s₄)(s₂自身奖励1 + 转移到s₄的r=0?题干说“s₂总是向右转移至s₄(奖励为0)”,故r=0),即v(s₂) = 1 + 0.9×v(s₄)。
s₄是终止状态,v(s₄)=0,代入得v(s₂)=1,v(s₃)=1,v(s₁)=0.5×[1+0.9×1]+0.5×[1+0.9×1]=1.9。
但原题答案给出v(s₁)=-0.5+γv(s₄)/(1-γ),说明出题者将s₁的-1视为唯一即时奖励,转移奖励已含在“向下至s₃(奖励为1)”中——即向下转移的r=1,但s₁自身无额外奖励?逻辑矛盾。
血泪经验:考试时别纠结“奖励归属”,紧盯题干给的等式形式。原题直接给出:
ν_π(s₁) = 0.5[0 + γν_π(s₃)] + 0.5[-1 + γν_π(s₂)]
其中[0]和[-1]就是r(s,a,s'),照抄即可。它本质是告诉你:在s₁,选“下”动作得0分并去s₃,选“右”动作得-1分并去s₂——这就是你的记账本第一行。

2.3 为什么必须用它?——没有它,AI就是“活在当下”的短视者

假设一个机器人只看眼前奖励:s₁→s₂得-1分,s₁→s₃得0分,它永远选s₃。但s₃→s₄得1分,s₂→s₄得1分,s₄终止。最终两条路都是1分。可如果s₄不是终止,而是s₄→s₅有100分大奖呢?短视者永远看不到。贝尔曼方程强制它把“s₄之后还能赚多少”折现回来,算进s₁的价值里。这就是“远见”的数学表达。值迭代、策略迭代,全是在反复重写这张记账本,直到每一格的数字都不再跳动——那时,最优路径自然浮现。


3. 蒙特卡洛 vs 时间差分:一场关于“等不等收据”的学习哲学辩论

强化学习两大流派,常被简化为“MC要等回合结束,TD不用”。但这只是表象。本质是:它们对“不确定性”的处理哲学完全不同——一个坚持“眼见为实”,一个信奉“边走边猜”。

3.1 蒙特卡洛:教科书式的“秋后算账”

想象你开一家奶茶店,想评估“周末下午三点”这个时段值不值得请兼职。蒙特卡洛方法的做法是:连续记录100个周末,每次从三点开始营业,一直干到打烊,记下当天总利润G。最后取平均:V(s) ← V(s) + α(G - V(s))。
关键特征:

  • 必须等到“回合结束”(打烊)才能算出G;
  • G是真实发生的完整轨迹回报,不含任何猜测;
  • 因此无偏差(bias-free)——只要样本够多,平均值无限接近真实期望;
  • 但方差大(high variance)——某天暴雨没人,G=-500;某天明星打卡,G=+3000;单次G波动剧烈。

原题第二题指出MC是“离线算法”,正是因为它像财务审计:数据全收齐了,再统一结账。你无法在第三个顾客买单时就调整“三点时段”的估值——因为还不知道后面会不会来团建大单。

3.2 时间差分:街头摊贩的“日结小账本”

还是奶茶店,TD方法的做法是:每服务完一位顾客,立刻心算一句:“刚才这杯赚了15块,但我预估接下来一小时还能赚60块(基于昨天经验),所以此刻‘三点时段’的总预期是15 + 0.9×60 = 69块。而我昨天记的值是50块,那就更新为50 + α(69-50)。”
关键特征:

  • 每步都更新,无需等待回合结束;
  • 用当前估计值v(s')替代未来真实回报,所以引入了“猜测”;
  • 因此有偏差(biased)——如果昨天的v(s')估高了,今天的更新也跟着偏;
  • 但方差小(low variance)——每次更新只依赖一步奖励和一个估计值,波动远小于MC的整轮G。

原题中TD被定义为“在线算法”,正因它像摊主边卖边调价:看到第一个顾客买芋圆波波,立刻微调“芋圆系列”的备货量,而不是等月底盘库。

3.3 常见误区 / 易混概念:别再把“在线/离线”当万能标签

初学者极易混淆以下三点,导致选错算法:

易混点1:认为“在线”=实时,“离线”=延时训练
→ 为什么混:字面意思误导。
→ 怎么区分:“在线/离线”在RL中特指更新时机是否依赖完整回合。MC即使部署在实时系统中,也必须等回合结束才更新;TD即使跑在离线服务器上,也能每步更新。核心是数据流节奏,不是部署方式。

易混点2:以为MC一定比TD准,因为“不猜”
→ 为什么混:忽略方差代价。
→ 怎么区分:MC无偏差但高方差,TD有偏差但低方差。在动态环境(如顾客口味月月变),MC的100次历史可能全过期,而TD用最新5步就能快速适应。精度≠实用性。

易混点3:把SARSA/Q-learning的on-policy/off-policy和MC/TD的在线/离线混为一谈
→ 为什么混:四者常一起出现。
→ 怎么区分:

  • MC/TD 是如何利用数据更新值函数(等不等、猜不猜);
  • SARSA/Q-learning 是用什么策略生成数据+更新什么策略(用A策略采样,更新A策略?还是用A采样,更新B策略?)。
    二者正交:SARSA可以是MC版(Monte Carlo SARSA),也可以是TD版(标准SARSA);Q-learning同理。

4. SARSA vs Q-learning:一个关于“敢不敢赌下一把”的性格测试

如果你让两个AI玩德州扑克,一个每押注前都默念“我下一手牌会怎么出”,另一个只盯着“我这手牌现在能赢多少”,前者像SARSA,后者像Q-learning。它们的根本差异,不在公式多一个max,而在于对未来的信任程度不同。

4.1 公式背后的人格画像

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(sₜ₊₁,aₜ₊₁)来评估这条路。”
  • Q-learning说:“我不管下一步实际选啥,我只关心sₜ₊₁里理论上最好的动作值,所以用max Q。”

打个比方:你站在岔路口,左边路标写“前方500米有加油站(但油价贵)”,右边写“前方800米有超市(但可能关门)”。

  • SARSA型司机:查导航APP,发现当前策略(省油模式)会选左边,于是按“500米加油站”规划油耗;
  • Q-learning型司机:打开所有地图APP比价,发现“800米超市”如果开门,油价便宜30%,于是按“800米超市”规划,哪怕实际开过去发现门关着——它赌的是“最优可能”,不是“实际选择”。

4.2 on-policy vs off-policy:策略的“言行一致性”

原题第三题点出SARSA是on-policy,Q-learning是off-policy。这直指核心:

  • On-policy(言行一致):生成数据的策略(behavior policy)和要优化的策略(target policy)是同一个。SARSA用π采样aₜ₊₁,也用π更新Q,所以它学的就是π本身。好处是稳定,坏处是π若太保守(如总选安全动作),Q永远学不会冒险的高回报路径。
  • Off-policy(知行分离):behavior policy和target policy可以不同。Q-learning常用ε-greedy采样(偶尔乱选探索),但target policy是纯greedy(永远选max Q)。这就让它能“用乱试的数据,学最优的策略”,效率更高,但也更脆——如果乱试太少,max Q可能长期被错误估计。

4.3 原题第四题:一次SARSA更新的完整解剖

题干:s₁选a₁,得r=3,到s₂,再选a₂。Q(s₁,a₁)=2, Q(s₂,a₂)=3, α=0.5, γ=0.9。
代入SARSA:
Q(s₁,a₁) ← 2 + 0.5 × [3 + 0.9×3 - 2] = 2 + 0.5×(3+2.7-2) = 2 + 0.5×3.7 = 2 + 1.85 = 3.85

注意三个灵魂参数:

  • r=3:这是s₁→s₂这跳的即时奖励,不是s₁或s₂的状态奖励;
  • Q(s₂,a₂)=3:这是下一步实际选择的动作值,由当前策略决定;
  • α=0.5:学习率不是越大越好。α=1表示“全信新数据,忘掉旧知识”,容易被单次噪声带偏;α=0.1表示“慢热型”,需要更多次更新才收敛。考试中常考α对收敛速度的影响。

提示:Q-learning在此场景会算maxₐ Q(s₂,a)。若s₂有a₁/a₂两个动作,Q(s₂,a₁)=0, Q(s₂,a₂)=3,则max=3,结果相同;但若Q(s₂,a₁)=5,则Q-learning会用5,SARSA仍用3——这就是“赌不赌”的分水岭。


5. 值迭代 vs 策略迭代:两种抵达“最优”的登山路线

假设你要爬一座雾中的山,目标是找到最高点。值迭代像一个执着的测绘员:他不急着登顶,先在山脚画一张粗糙海拔图(v₀),然后一步步精修——每轮把每个点的海拔更新为“从这点出发,走一步后能到达的最高邻点海拔×γ + 当前步奖励”,直到整张图不再变化。策略迭代则像一个老练的向导:他先随便画一条上山路线(初始策略π₀),然后做两件事:① 沿着这条路走一遍,精确测量每点海拔(策略评估);② 在每点检查:如果换条路走,会不会更高?(策略改进)。反复这两步,直到路线不再改变。

5.1 值迭代:一步到位的“价值优先”

原题第五题给出值迭代公式:
v(s) ← maxₐ [r(s,a) + γ Σₛ′ P(s′|s,a) v(s′)]

精髓在于:每轮更新,v(s)直接取所有动作a中能带来的最大“一步回报+折现后未来价值”。它不关心你具体用什么策略,只问“理论上这里最多能赚多少”。
优点:实现简单,内存占用小(只需存v(s));
缺点:策略隐含在max中,不显式输出,且可能收敛慢(尤其状态多时)。

5.2 策略迭代:稳扎稳打的“策略驱动”

原题第五题描述的四步:
I. 初始化策略π(如随机选动作);
II. 策略评估:解线性方程组v_π(s) = Σₐ π(a|s) Σₛ′ P(s′|s,a)[r + γ v_π(s′)],得到当前π下的精确v_π;
III. 策略改进:对每个s,令π′(s) = argmaxₐ Q_π(s,a),即选能带来最高Q值的动作;
IV. 若π′ ≠ π,令π = π′,回II。

优点:通常收敛更快(尤其初始策略不错时),每轮产出的π都可用;
缺点:策略评估需解方程组(计算量大),内存需存π和v_π。

5.3 一个关键洞察:它们不是非此即彼,而是光谱两端

值迭代可看作“策略评估只做一次,策略改进做无数次”的极限;策略迭代是“策略评估做透,策略改进做一次”的组合。实际中,还有截断策略迭代(Truncated Policy Iteration):评估只做k次迭代(不求精确),就改进策略——这正是n-step TD的思想源头。原题第十题提到n-step SARSA是MC(n=∞)和SARSA(n=1)的混合,同理,值迭代(n=1)和策略迭代(n=∞)也是同一思想谱系。


6. 什么时候该用这份考题集?——一份来自血泪现场的使用说明书

这份《A卷强化学习期末考试原题加答案》不是万能钥匙,而是一套精密的“认知校准器”。它的真正价值,不在帮你押中考题,而在帮你识别自己思维里的“未爆弹”——那些你以为懂了、其实只是记住了公式的盲区。下面用一个真实模拟场景,告诉你它该怎么用。

6.1 场景还原:考前72小时,你卡在“贝尔曼方程不会列”

你翻开教材,看到贝尔曼方程的标准形式,点头:“哦,递归的。”
你做练习题,套公式算出v(s₁)=5.2,但心里发虚:“这个5.2,到底代表什么?如果γ变成0.99,它会怎么变?如果s₂的转移概率从0.5变成0.8,我又该改哪一项?”
这时,别急着翻答案。打开这份资料,定位第一题,遮住答案,只看题干:

  • 画出四个状态s₁~s₄的网格图;
  • 在s₁旁标:“奖励-1”;
  • 画向下箭头到s₃,旁注:“50%概率,奖励1”;
  • 画向右箭头到s₂,旁注:“50%概率,奖励1”;
  • 继续标s₂→s₄(奖励0)、s₃→s₄(奖励0)、s₄=终止。

然后,强迫自己写出v(s₁)的方程,不查书,不看答案。写完对比:

  • 是否漏了概率权重(0.5)?
  • 是否把s₁的-1和转移奖励1混在一起?
  • 是否误把s₄的v(s₄)=0写成其他值?

如果错了,不是记忆问题,而是概念锚点没找对——你没真正把“v(s)是期望值”这个本质刻进肌肉记忆。这时,资料的价值来了:它的答案不是冷冰冰的等式,而是像导师手写批注:“此处r(s,a,s')=1,因题干明确‘向下转移至s₃(奖励为1)’,s₁自身奖励-1不参与此跳计算”。这种提示,直击你思维断点。

6.2 什么时候别用?——三类典型误用场景

误用场景为什么危险正确做法
当作代码模板直接抄题目是纸面MDP,真实项目要对接ROS/Gym环境,状态空间可能是百万维。抄公式无法解决observation.shape=(210,160,3)怎么映射到s的问题。用它验证你对stateactionrewarddone四要素的理解,再用Gym写env.step()调试。
只背答案不推演过程原题第六题问“s₁在不同策略下的状态值”,答案给出9.4和6.5。但若题目改成“s₁有三个动作a₁/a₂/a₃”,你能否独立写出三个v(s₁)?背数字毫无意义。每道题,强制自己补全“策略π是什么”“转移概率P是多少”“r(s,a,s')怎么分配”,哪怕题干没给,也要假设。
忽视题干括号里的限定词如“折扣因子γ=0.9”“学习率α=0.5”,这些不是装饰。γ影响收敛速度,α影响稳定性。考试常考“若α过大,会发生什么?”。对每个超参,自问:增大它,v(s)收敛变快还是变慢?Q值震荡会加剧吗?用Python写两行代码验证(如v = v + 0.9*(r + 0.9*v_next - v)vsv = v + 0.1*(...))。

6.3 我的血泪习惯:从那以后,我每次打开强化学习资料,都强制走一遍“三问法”

  1. 这道题在哪个知识点坐标上?(例:第一题=贝尔曼方程在确定性转移中的应用)
  2. 如果把题干的一个条件改掉,答案会怎么变?(例:把γ=0.9改成γ=0,v(s₁)变成多少?——立刻暴露你是否真懂“折扣”的意义)
  3. 这个解法,能不能用一行Python伪代码写出来?(例:v[s1] = 0.5*(1 + gamma*v[s3]) + 0.5*(1 + gamma*v[s2]))

这三问做完,公式不再是天书,而是你大脑里可调试、可修改、可质疑的活代码。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询