简介:强化学习课程A卷期末考试原题及答案PDF,覆盖折扣因子、状态转移与奖励、贝尔曼方程、蒙特卡洛方法、时间差分、SARSA与Q-learning、值迭代与策略迭代、马尔科夫决策过程、状态-行动值函数及学习率等核心考点,适合人工智能、机器学习方向学生期末复习、考研复试备考或自学强化学习原理时对照练习。题目设计注重概念辨析与计算推导,如根据网格世界写出贝尔曼方程并求解状态值、比较在线离线算法、推导SARSA与Q-learning更新差异、计算Q值更新结果等,均可检验对基础理论和算法流程的掌握程度。资源包为1个PDF文件,大小约332KB,内容紧凑便于打印或移动端阅读。目前已有289人学习下载,对需要快速梳理强化学习核心公式与典型题型的学习者具有较强参考价值。
1. 为什么你需要一份“原题加答案”,而不是一堆背不完的课件
考前一周翻开强化学习课件,满屏的贝尔曼方程、策略梯度、时序差分,大多数人第一反应是“背下来”。等真正上考场,换了个数字、改了个状态转移图,或者把“求价值”改成“求策略”,立刻卡住。这不是你不够用功,而是你复习的粒度错了:期末考的从来不是课件原文,而是课件里有限几个考点在固定题型下的变体。
所谓“A卷强化学习期末考试原题加答案”,本质上是一张考点分布图加一套可复用答题模板。它不是在替你把答案背好,而是告诉你出题人习惯用什么姿势考你——价值迭代常考几步迭代、Q-learning 偏爱考更新表、策略梯度必考对数似然技巧。把原题拆成“考点 + 解法 + 踩坑点”,比背十遍教材有用得多。
这篇笔记适合两类人:一类是没系统刷过题的期末冲刺选手,想知道重点章节怎么分配时间;另一类是刷过不少题但总在细节丢分的熟手,想对照标准解法校准自己的答题习惯。下面按“考什么 → 怎么答 → 坑在哪”推演,直接照着做。
2. 考前先看清 A 卷的命题地图:核心考点与题型权重
2.1 强化学习期末必考的四大知识块
期末 A 卷无论怎么出,题目基本落在四块内容上,它们是整个课程的骨架。
第一块是马尔可夫决策过程(MDP)与贝尔曼方程。这门课几乎所有计算题都从这里延伸:状态、动作、转移概率、奖励、折扣因子的五元组定义是必考填空题;贝尔曼期望方程和贝尔曼最优方程则频繁出现在计算推导题里,考你对迭代收敛的理解。
第二块是动态规划与策略迭代。策略评估、策略改进、价值迭代这三板斧,是“手算题”的重灾区。A卷常给出一个 2×2 或 3×3 的状态转移表,让你迭代到收敛。关键得分点不是你算得快,而是你写没写“迭代停止条件”——这是标准答案里的固定踩分项。
第三块是免模型学习,即蒙特卡洛、时序差分、Q-learning、SARSA。这一块是选择题、简答题、小计算题的全能考点。Q-learning 的更新式子里为什么取的是下一状态的 max,而 SARSA 取的是实际执行动作的 Q 值,这是简答题中最高频的对比问。
第四块是策略梯度与 Actor-Critic。前几年还作为选学内容,现在已经是 A 卷的常驻大题。它偏爱综合题:给你一个带高斯策略的连续动作空间,让你推导梯度表达式,再解释方差缩减手段。
2.2 A 卷题型分布与分值规律
整理近几年的期末 A 卷,可以发现一个稳定的出题结构:选择填空题占 30%,考察概念辨析;计算推导题占 40%,重点在价值迭代、Q-learning 更新表、策略梯度推导;简答设计题占 30%,习惯让你结合实际场景设计状态、动作与奖励函数。
最值得关注的是计算推导题的“换皮规律”。比如价值迭代题,今年考 3×3 网格,明年考 2×4 网格,但初始价值表、折扣因子、收敛阈值的设置方式几乎不变;Q-learning 题,变换的是学习率参数和转移结果,核心更新逻辑纹丝不动;策略梯度题,变化的是分布类型——分类分布换成高斯分布,但“对数似然乘奖励”的骨架不变。
这意味着你不需要题海战术,反而应该做减法:每个题型吃透两到三题标准解法,然后把数字换掉反复练。所谓“原题加答案”,强调的是在考场上快速识别“这题对应哪套模板”,而不是临场从第一性原理开始推。
2.3 拿到 A 卷后的读题顺序建议
我一般会建议学生拿到卷子先做“战略性浏览”:把每道大题标上考点标签,比如“价值迭代”“Q-learning”“策略梯度”,然后按分值排序动手。不要顺着题号死磕,因为期末卷的题目顺序往往按教材章节排,而不是按由易到难排。
优先做计算推导题,因为它们的批改标准化程度高,每一步推导都有明确采分点,你写一步就给一步分。简答题放在中间,因为需要组织语言、踩关键词。选填题放最后检查,因为它们答案是固定的,你前面做完大题后心态稳了,做选填的准确率会明显上升。这个顺序本身能帮你把“会做的分”先稳住。
3. 计算推导题怎么拿满步骤分:三类必考题的完整作答路径
3.1 价值迭代:手算过程与收敛判断的标准写法
价值迭代题在 A 卷中的出镜率几乎百分之百,因为它能同时考察贝尔曼最优方程、迭代逻辑与收敛判断。题目通常会给你一个简单网格,标好状态集合、动作集合、转移概率和奖励,然后要求迭代三步或迭代到收敛。
先看一个最小化的题目形态:两个状态,两个动作,折扣因子 γ 取 0.9,奖励函数给定。标准答题路径是:先写出贝尔曼最优方程的通用形式,再逐状态逐动作计算 Q 值,取最大值更新价值表,迭代到∣V_new − V_old∣小于某个阈值为止。注意:过程比结果重要,不要直接跳到最后一张价值表。
# 价值迭代的最小实现:帮助核对你的手算过程 import numpy as np S = ["s1", "s2"] # 状态集合 A = ["a1", "a2"] # 动作集合 gamma = 0.9 # 折扣因子 # 转移概率 p_policy[state][action] = [(next_state, prob, reward)] p_policy = { "s1": {"a1": [("s1", 0.5, 5), ("s2", 0.5, -1)], "a2": [("s2", 1.0, 1)]}, "s2": {"a1": [("s1", 0.3, 2), ("s2", 0.7, 0)], "a2": [("s1", 1.0, -2)]}, } V = {s: 0.0 for s in S} # 初始价值全为 0 theta = 0.1 # 收敛阈值 for step in range(3): # 这里只跑 3 步给手算对照 V_new = {} for s in S: q_values = [] for a in A: q = sum(prob * (r + gamma * V[s_next]) for s_next, prob, r in p_policy[s][a]) q_values.append(q) V_new[s] = max(q_values) print(f"step {step+1}: {V_new}") V = V_new逻辑说明:价值迭代每一步都在做同一件事——对每个状态遍历所有动作,计算该动作的期望回报,然后取最大值作为新价值。关键参数就是折扣因子 γ 与收敛阈值 θ,前者控制远期奖励的衰减速度,后者决定迭代何时停下。手算时要用表格列出来,每行一个状态,每列一个动作的 Q 值,最后单独标出新价值。
得分技巧是:把迭代停止条件写得明明白白。哪怕题目要求“迭代三步”,你也要补一句“若继续迭代,当状态价值的最大变化量小于阈值时停止”,这一句话往往就是最后一分。
3.2 Q-learning 更新表:状态-动作价值的手算模板
Q-learning 是免模型算法的代表,A 卷很喜欢出一道带完整“状态-动作-奖励-下一状态”四元组的题,让你按给定顺序更新 Q 表。这类题的迷惑性在于:它不像价值迭代那样有固定轮数,而是给一条“采样轨迹”让你一步步更新。
解答模板分五步:初始化 Q 表 → 按轨迹取出当前状态和动作 → 查表得到当前 Q 值与下一状态的最大 Q 值 → 套更新公式 → 只改当前格,其他格不变。注意这里的“只改一格”是 Q-learning 手算题最重要的特征。很多人算着算着把整行都更新了,这是翻车重灾区。
# Q-learning 一步更新的手算核对脚本 alpha = 0.1 # 学习率 gamma = 0.9 # 折扣因子 Q = {(1, "a"): 1.0, (1, "b"): 2.0, (2, "a"): 3.0, (2, "b"): 4.0} # 给定采样轨迹 (s, a, r, s_next) s, a, r, s_next = 1, "a", 10.0, 2 # 下一状态的最大 Q 值 max_q_next = max(Q[(s_next, a_next)] for a_next in ["a", "b"]) # Q-learning 更新公式 Q[(s, a)] = Q[(s, a)] + alpha * (r + gamma * max_q_next - Q[(s, a)]) print(f"更新后 Q(1, a) = {Q[(1, a)]:.2f}") print(f"其他格子不变: Q(1, b) = {Q[(1, b)]}")逻辑说明:学习率 α 控制新信息覆盖旧估计的力度,折扣因子 γ 控制未来奖励的重要性。Q-learning 的更新用“下一状态的最大动作价值”来引导当前估计,这使它成为离策略算法——它学到的最优策略与行为策略可以不同。手算时最容易漏的是检查s_next是否为终止状态,若为终止状态则max_q_next取 0,而不是继续查表。
参数调整与考场注意点:当题目把 α 改成 0.5 或 1.0 时,更新幅度会明显变化,但“只更新当前状态-动作对”这个性质不变;当 γ 趋于 1 时,算法更看重远期回报,手算中后一步的奖励影响会显著上升;当 γ 取 0 时,完全无视未来奖励,Q 值直接变成当前奖励的估计。考场上一旦发现自己的某一步计算结果和直觉差很远,优先检查这三个参数是否抄对。
3.3 策略梯度推导:从期望回报到对数似然
策略梯度大题的难点不是微积分,而是“从目标函数到梯度表达式”的链条。标准解题链是:定义目标函数 J(θ) → 写出策略 π_θ 下的期望回报 → 对 θ 求梯度 → 把梯度挪进期望里 → 引入 log 技巧把策略参数的梯度变成对数概率的梯度 → 最后用采样近似期望。
A 卷的高频考法是给你一个具体的策略分布,比如离散动作下的 softmax 策略,或连续动作下的高斯策略。前者要求你推导 π_θ(a|s) 的梯度,后者要求你对均值 μ_θ(s) 求梯度。两个方向都有固定公式。
# 策略梯度的核心推导验证:softmax 策略对 log 概率的梯度 import sympy as sp # 以动作 a1 的偏好值为变量,推导 softmax 概率的 log 梯度 theta1, theta2, reward = sp.symbols("theta1 theta2 reward", real=True) logits = sp.Matrix([theta1, theta2]) exp_logits = sp.Matrix([sp.exp(theta1), sp.exp(theta2)]) # softmax 概率 probs = exp_logits / sum(exp_logits) log_prob = sp.log(probs[0]) # 对 theta1 求梯度,结果应为 1 - p(a1) grad = sp.simplify(sp.diff(log_prob, theta1)) print(f"d log pi(a1)/d theta1 = {grad}")逻辑说明:符号计算的结果验证了一个重要结论——softmax 策略下,某个动作的 log 概率对偏好参数的梯度,等于 1 减去该动作的softmax概率(若该动作为选中动作;非选中动作则为负的概率值)。这个结果直接决定了策略梯度更新时每个动作的“推动方向”:被采样到的动作被推高概率,概率越大的动作被推得越少,形成自适应。
推导题的踩分关键在“三步走”:写目标函数占 1 分,把梯度写成期望形式占 2 分,用 log 技巧展开得出可采样形式占 3 分。最后的“用采样估计期望”是收尾动作,不要忘记把“从 N 条轨迹样本近似”这层讲清楚。如果你的目标函数里带了一个基准线 b,还需要补一句“引入基线不改变梯度期望,但会降低方差”——这句话是延长题的标准送分点。
4. 简答与设计题的踩分套路:先搭模板,再填内容
4.1 概念辨析题的“定义 + 式子 + 边界”三段答法
A 卷的选择填空和简答题多考概念辨析,比如“值迭代与策略迭代的区别”“Q-learning 与 SARSA 的本质差异”“探索与利用的权衡手段”。这类题不能只写一句大白话,要用“定义 → 数学式子 → 边界情形”三段结构去答,满分率能提升一个档次。
举个例子,问“Q-learning 为什么是离策略的”。标准三段答法:先写定义——它评估的目标策略与采样的行为策略不是同一个;再写式子——更新公式里用的是max Q(s_next, a'),这个最大值属于目标策略,而采样轨迹由行为策略产生;最后写边界——当目标策略也采用随机贪心且与行为策略一致时,Q-learning 退化为 SARSA,但一般场景下两者不等价。
式子这一步最提分。哪怕不要求写完整更新式,也要把“max 套在外面的那个 Q 值”这个关键细节指出来。批卷老师通常先扫关键词,然后再看论述是否完整。落笔顺序建议是:先写最独特的那个点(离策略的标志),再写通用定义,最后补边界。这个顺序能确保你在时间紧张时也能拿到最关键的分。
4.2 场景设计题:状态空间、动作空间、奖励函数的三步框架
设计题通常是压轴简答,A 卷常见场景有“机器人避障”“库存管理”“游戏通关”“推荐系统”。它不要求你训练出效果,而是考察你能否把一个现实问题抽象成强化学习标准形式。答题框架我一般建议固定为三步:写状态特征 → 写动作集合 → 写奖励函数及其稀疏性问题。
状态空间的设计要回答“智能体需要知道什么才能做决策”这个问题。比如库存管理场景,状态可以是当前库存量、在途补货量、距上次补货天数;不要把天气、员工姓名这种无关变量塞进去。动作空间要区分离散与连续,补货量若是整数就用离散动作 {0, 10, 20, 30},若是任意非负数就说明动作用连续值表示。
奖励函数是采分重灾区。标准答案套路是:先写即时奖励(每单位售出利润、缺货惩罚、库存积压成本),再指出“稀疏奖励问题”——如果只给最终总回报,中间状态无法区分好坏,学习会极为缓慢。然后补一个改进方案:设置势能塑形奖励或分阶段奖励,加速探索。把这三个层次写全,基本就是满分答案。
4.3 答案自查清单:交卷前 5 分钟的固定检查动作
简答与设计题写得差不多后,检查需要高度结构化。我通常按四件事过一遍卷面:第一,所有数学式子里的希腊字母是否对应题目符号,比如折扣因子用 γ,学习率用 α,不要随手写错;第二,式子左右两侧的量纲是否一致,比如 Q 值是实数,更新后仍应是实数而不是向量;第三,是否明确写了“初始化”和“迭代终止条件”,这两处最容易被忽略;第四,设计题的场景里,状态能否被智能体观测到,若不能需要补一句“假设状态完全可观测”或改为部分可观测设定。
这四件事不需要重新推导,只需要快速扫描。但它们在压分严格时往往代表 5 到 8 分的差异。尤其是“状态可观测性”这一条,很多时候是批卷老师区分“真懂”和“背模板”的标志。如果没把握,宁可写“在完全可观测假设下”,也不要留空白。
5. 避坑与常见问题:期末周最容易踩的五个坑
5.1 背答案却不背推导过程,换数字就卡住
现象:复习时把标准解法的每一步结果都背熟了,上考场发现题目里的状态转移概率从 0.8 改成了 0.6,就不知道怎么算。 原因:你背的是“这一题的输出”,而不是“这一类题的算子”。价值迭代、Q-learning 更新的结构不变,变的只是输入参数;不理解更新式的语义,参数一变就懵。 解决:复习时每道原题只保留前两步计算结果,然后自己把后续步骤从头推一遍。不要心算,用草稿纸把每步 Q 值表格重新填满,直到结果和答案对上。这样下次遇到换参数的题目,你走的还是同一条路。
5.2 Q-learning 和 SARSA 的更新式混淆
现象:简答题里写“Q-learning 下一步 Q 值取实际执行动作对应的值”,被扣分。或者计算题里把max Q写成了Q(s_next, a_next)。 原因:两个算法的数学表达式长得太像,唯一区别就是下一步的 Q 值是取最大值还是取实际动作值,记忆不牢时会混。 解决:强制记忆一个口诀——“Q 学习取 max,SARSA 取 actual”。做计算题时,先看题目有没有强调“按采样轨迹更新”或“实际执行动作”,SARSA 类题目一定会给你明确的行为序列;Q-learning 类题目则一定会在下一步位置取最大。写更新公式之前,先在草稿纸上写清楚“max?不取 max?”这两个字,再下笔。
5.3 折扣因子 γ 取反或忽略
现象:计算题里奖励序列是 (1, 1, 1),γ 为 0.9,算累计回报时,有人把远期奖励乘的折扣写成了 0.9 的负指数,结果回报越算越大。 原因:贝尔曼方程中的折扣是自当前时刻向未来乘 γ 的逐步衰减,即第一笔未来奖励乘 γ,第二笔乘 γ² 往下写。写成倒数说明只记住了“折扣”两个字,没有理解语义。 解决:每次动笔前先写出通式G_t = r_t + γ r_{t+1} + γ² r_{t+2} + ...,然后逐项代入。这个通式就是防错基线。考场出错时回头对一下这一行就能自查出来。
5.4 策略梯度推导里忘了 log 技巧
现象:推导到 ∇_θ J(θ) 时,写成了“对策略函数直接求梯度再乘奖励”,式子复杂到无法采样,于是卡住。 原因:忽略了目标函数里的期望是 ∫ π_θ(a|s) 的分布,梯度会作用在分布上,不能直接放进期望里面。 解决:记住固定套路——先把 ∇_θ π_θ(a|s) 写成 π_θ(a|s) ∇_θ log π_θ(a|s),然后再化简成期望形式。这个变换是一步到位的,中间不需要其他技巧。如果发现自己写了长长的链式法则,大概率是走偏了,回头找 log 那一步。
5.5 设计题奖励函数写得太实或太虚
现象:设计题里奖励函数写了一整行“如果碰撞扣 2 分,如果到达加 100 分,如果闲置扣 1 分”,但没写归一化或稀疏性处理;另一种极端是只写“达到目标给奖励 1,其他情况给 0”,导致智能体无法学习中间行为。 原因:前者试图用规则覆盖所有情况,暴露了对强化学习探索机制的误解;后者没有考虑奖励信号密度对学习速度的影响。 解决:标准答案结构只有三层——即时奖励定义、稀疏性说明、密度改进建议。即时奖励里最多列三到四项,选最能区分行为好坏的指标;稀疏性问题用一句话点出;改进方案写“势能塑形”或“中间子目标奖励”即可。写多写杂反而扣分。
6. 把原题答案变成你自己的答题肌肉:三个进阶验证技巧
最后一步不是继续刷题,而是把已经整理好的原题答案“内化”成一套可迁移的答题模板。我这里有一个固定练习:挑三到四道典型计算题,不重新做,而是把标准答案从头到尾用口头语言讲一遍,讲不清楚的地方就是你的薄弱点。
第一个技巧叫“换参重做”。挑一道价值迭代题,把初始状态价值和折扣因子各换一个数,然后不看答案,按模板重新算一遍。算完对照原答案,只检查结构是否一致,不需要结果一致——结构一致代表你掌握了方法,结果不一致只是计算错误,那种错在考场上是容易检查出来的。这个方法能较快地暴露“死记硬背型”的复习误区。
第二个技巧是为每道简答题写一份“三十字版答案”。用不超过三十个字把核心观点说清楚。比如“为什么需要探索”:不探索就无法发现更好动作,只有利用会陷入局部最优。写完后把它和完整答案对比,如果核心术语没进三十字版,说明你的关键概念记忆还不够条件反射。这个练习对稳拿选择填空的辨析题很有效。
第三个技巧是“错误标注”。把原题答案拿在手里,故意找出一个可能被误写的地方,在旁边标注陷阱提示。比如在 Q-learning 更新式旁边写“⚠ 只更新当前格子”,在策略梯度公式旁写“⚠ 基线不影响期望但降方差”。这个过程本质是在给答案做记忆编码,把易错点和你自己的习惯绑定,上考场时你的“防御性提醒”会自动弹出。
我以前期末复习时,最后两小时从不做新题,就用这三个技巧过一遍已有材料。这么做的好处是:你不会为没见过的题目焦虑,因为你已经知道所有新题都会落在已有模板的变体范围内。考前那个晚上,我通常只做一件事——把整理出来的题型模板按章节默写在白纸上,默不出来的那一两条,就是第二天早上的重点复习对象。这个方法帮我压中了考场上的大半焦虑,也让我意外的稳。希望这套拆解法能帮到你,跑通你自己的那份 A 卷。
本文还有配套的精品资源,点击获取