想象你来到一座陌生城市,手里有一张全城地图,上面标着每条路通向哪里、每段路的出租车费是多少——唯独缺的是:市中心在哪个方向、从每个路口怎么走最近。于是你在每个路口立了一块路牌,先胡乱填上“距市中心大概 100 公里”。接下来你做的事情很朴素:每天清晨,每一块路牌都向相邻路口的邻居打听“你写的是多少”,再按“这段路的费用 + 邻居写的距离”重新计算,擦掉自己原来的数字。日复一日,奇怪的事情发生了:路牌上的数字越来越稳定,最后每一块路牌都指向了真正最优的方向。这就是贝尔曼迭代——用一条递归的公式,让“猜测”自己逼近“真相”。本文会把这套问路规则拆开,讲清值迭代与策略迭代这对“动态规划双子星”,以及它们如何通向现代强化学习。
这节知识是强化学习入门的分水岭:看懂贝尔曼方程与两大迭代算法,你就真正握住了最优决策的地图;学完它,再读 Q 学习等无模型算法将会水到渠成。
目录
可视化演示
动态演示用贝尔曼迭代求解值函数的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
用贝尔曼迭代求解值函数:从贝尔曼 从贝尔曼方程到迭代求解思路 值迭代算法的流程与特性 核心机制可视化 用贝尔曼迭代求解值函数整体架构与关键组件
贝尔曼方程:路牌上的递归公式
假设你是这座陌生城市新上任的“路牌管理员”。第一天,每块路牌都随便填一个数;真正让数字变准的,是一条朴素的问路规则——想知道自己这块路牌该写多少,就站在路口,把所有可行方向都模拟一遍:先为这一步付掉预期的油费(即时回报),再抬头看看下一个路口那块路牌上的数字,打点折扣后加起来,得到一个“预计总距离”。每个方向都算一次,取数值最小的那个距离,那就是这块路牌该写的新数字。
这条“用邻居的数字定义自己”的规则,就是贝尔曼方程(Bellman Equation)。它不直接给答案,而是把“我的价值”改写成“邻居的价值”,形成一条递归链。而城市里恰好有一个特殊路口——市中心地标,它写死了 0(也就是奖励明确的吸收态),于是这条链有了锚点,可以从终点一路倒推回来。在强化学习中,这种“从该路口出发、按最优策略走下去能期望拿到的累计回报”就叫状态价值函数 V(s)。
把“取最优方向”揉进递归式,就得到贝尔曼最优方程:在状态 s 下,对每个动作 a 都算一遍“这一步的期望回报 + 折扣后的未来价值”,再取最大值。它由四块拼图组成——动作选择 max、转移加权平均、即时奖励 R、折扣未来 γV。公式如下:
回到路牌:每一块路牌都在“转述邻居的话”,并且越远的邻居,传输损耗越大。折扣因子 γ 就是这个损耗系数。γ 越接近 1,路牌越相信远处的消息,越有远见;γ 越小,路牌越只看眼前几步。整个城市的路牌更新,就建立在这条递归公式之上。
- 最优值函数 V^*(s)它表示从路口 s 出发、全程都按最优方向走,能期望得到的累计回报——就是路牌上最终要写下的“真理数字”。
- 动作取优 max_{a ∈ A}在所有可选方向里挑一个最好的。值函数只关心“最好能到多少”,所以外部套了一个最大值号。
- 转移加权平均 ΣP(s'|s,a)选了方向 a 未必一定到某个邻居,可能以不同概率到达多个 s',所以要按概率加权平均——就像看天气预报决定出门带不带伞。
- 即时奖励 R(s,a,s')这一步实际拿到手的油费补助,是“现在就能兑现”的回报,不必打折。
- 折扣未来 γV^*(s')邻居路牌上的数字要乘一个小于 1 的折扣因子再转述——因为未来的奖励不如眼前的香,而且每传一轮都要损耗一点。
动态规划前提:地图为什么能算
你可能要问:全城路牌互抄答案,凭什么越抄越准而不是互相传染错误?答案藏在地图的稳定性里。你手里这张地图是死板的:每条路连到哪、每段路费多少,永远不变。也就是说,转移概率 P 和奖励 R 完全已知且恒定——这正是动态规划(Dynamic Programming,DP)能跑起来的大前提。
有地图和没地图,是两种世界。手里攥着完整地图,你不需要真的开车出去试,坐在办公室里就能把全城最优路线算清楚——这是“有模型”的规划问题;地图丢了,只能真开车出去记录感受——那是“无模型”的强化学习。本文前六节都在“有地图”的世界里工作,最后一节再谈丢地图后的世界。
除了地图全知,动态规划还需要两个结构性质。第一是最优子结构:最短路线的任意一段小路,本身也必须是从该小段起点到市中心的最短路,否则把这一段换成更短路,整条路线还能更短,与“最优”矛盾。第二是重叠子问题:不同路线会反复经过同一批路口,与其每次都从头算,不如把每个路口的答案存成一张表,用时直接查——这正是“查表式动态规划”。
路牌的本质就是一张“答案表”。聪明的管理员把每个路口的数字写下来,下次谁问就直接念——重叠子问题就这样被查表化解了。地图已知 + 最优子结构 + 重叠子问题,三个条件齐了,贝尔曼迭代才敢开工。
- 动作价值函数 Q^*(s,a)与 V 的区别只在于第一个方向已经定死——路牌上先写死“第一站往 a 走”,剩下的事依然交给最优策略。
- 先走一步的奖励 R(s,a,s')这一步付掉的油费,无论后续怎么走都先记在账上。
- 后续最优 max_{a'} Q^*(s',a')到了邻居 s' 之后,重新获得自由,从那里再挑最好的方向。这就是最优子结构在公式里的化身——局部最优拼成全局最优。
- 状态价值取最大 V^(s)=max_a Q^(s,a)站在路口的自由人只关心“哪个方向最好”,所以状态价值是动作价值里的最大值。
值迭代算法:全城路牌同步刷新
有了公式,最直接的算法就叫值迭代(Value Iteration)。想象你定下一条城规:每天深夜十二点,所有路牌同时擦掉旧数字,按邻居“今天白天”的数字模拟一遍并写上结果。任何一块路牌都不许偷看今天刚出炉的新数字——这就叫同步更新。
值迭代从一块全零的初始路牌表 V₀ 出发,反复套用贝尔曼最优方程,产生一串值函数 V₀, V₁, V₂……每一步更新都是一次“回溯”(backup):终点的奖励像声波一样,以每轮一个折扣因子的速度向四周扩散,越靠近终点的路口越早看到大数字。
它的更新公式就是把贝尔曼最优方程直接变成递推式:用第 k 轮的表,产出第 k+1 轮的表。注意右边的 V_k 全是旧值,所以所有状态可以同时更新;每轮结束后统计全城最大改动量 Δ,当 Δ 小于阈值 ε 时停机。
值迭代很像“全城深夜集体加班”:每一次都是整城路牌重算一遍,简单、粗暴、容易并行。当数字们终于安分下来,最后一步只需从每块路牌选出使总距离最小的方向,最优策略——每块路牌该指的箭头——就到手了。
- 迭代下标 V_{k+1}(s)左边是“明天清晨”的路牌,右边全部来自“今天”的旧表——两代路牌被一个轮次隔开。
- 依赖上一轮 V_k(s')更新时只看邻居上一轮留下的数字,不允许偷看本轮新值。这是保证全城同步、算法稳定的关键。
- 贪心取最大 max_a每一轮都假设从下一站开始已经最优,于是只需选“这一步 + 后续最优”最大的方向。
- 收敛判据 Δ < ε每轮统计所有路口改动量的最大值,当它小于阈值 ε,就认为路牌数字已经稳定,可以停止。
策略迭代算法:先走再改路的交替
值迭代每轮都把全城数字重算一遍,其实有很多地方是白费功夫。想想现实中怎么改路牌:先随便给每块路牌定一个方向方案,比如“一律向右”,然后真按这个方案开车跑起来,把每段实际花销一一记下,更新数字——这叫策略评估。跑完一阵子,你发现有路口换一个方向能明显缩短总距离,就悄悄改掉那块路牌的方向——这叫策略改进。
策略迭代(Policy Iteration)把策略 π(每个路口该指哪个方向)当作主角。外层循环只有两步:固定策略 π,解出对应的值函数 V^π(评估);再对每个路口用贪心挑 Q 值最大的动作,拼出新策略 π'(改进)。新策略一定不比旧策略差,所以改进步总是“向上爬”,永远不会回退。
评估公式里没有 max——方向已经钉死,只是把路线上的奖励和折扣未来加权求和。改进公式重新请回 argmax:拿着刚算好的 V^π,看每个路口换哪个方向总距离最短。两个公式轮流出场,直到某轮改进后的策略和原来一模一样,就收敛了。
比喻上,值迭代是“整城通宵重算”,策略迭代是“按图施工、按需返工”:大多数路口方向本来就对,不用动;只有发现明显捷径才改一次箭头。两者代价结构也因此不同——策略迭代轮数少但每轮贵(评估要求值函数先收敛),值迭代轮数多但每轮便宜。
- 固定策略 π(s)评估公式里没有 max,因为每个路口的箭头已经规定好了——π(s) 就是“从 s 出发按方案走哪个方向”。
- 只按 π 转移 ΣP(s'|s,π(s))概率仍然按地图加权,但动作不再挑选,直接代入策略给出的方向。
- 策略改进 π'(s)评估完旧方案后,重新请回 argmax,为每个路口选一个让总距离最小的新方向。
- 交替循环与终止评估一轮 → 改进一次 → 再评估……当改进结果与旧策略完全一致,说明已经找不到任何更好的箭头,循环停止。
收敛与复杂度:数字何时稳定
路牌更新会不会永远震荡,你今天写 5、明天写 8、后天又写 5?直觉告诉我们不会,原因正是“打折扣”。每块路牌都只把邻居的话乘一个小于 1 的 γ 再转播,于是一场扰动每传一轮就衰减一轮,最后彻底消散。如果 γ=1,一场风就能让全城路牌声浪叠加、永无宁日——这也是为什么折扣因子几乎从不设为 1。
数学上,把“全城更新一遍”抽象成贝尔曼算子 T。T 有一个漂亮的性质:对任意两份路牌表 V 和 U,分别让它们各自更新一轮,更新后的两张表之间的最大差距,至多只有原来的 γ 倍。也就是说,无论两个答案初始差多远,每传一轮都会按 γ 的比例被“压缩”一点。
γ 这个参数,是远见与耐心之间的旋钮:调小,消息传不远,收敛快但路牌普遍短视;调大,远方的影响要几十轮才能传到近处,但一旦传遍,全城都能看见最远的市中心。工程上常用 γ=0.9 到 0.99,在远见与收敛速度之间取平衡。
- 贝尔曼算子 T把“整城路牌同步更新一轮”这个动作本身记作 T,输入一份旧表,输出一份新表。
- 无穷范数 ||·||∞衡量两份路牌表差多远,取所有路口里差距最大的那个——“最大改动量”。
- 压缩系数 γ不等式右边多乘了一个小于 1 的 γ,这正是“传话衰减”的数学化:扰动每轮衰减。
- 不动点 T V* = V*由压缩映射不动点定理,T 有且仅有一个不动点 V*,从任意 V₀ 出发反复迭代都必然收敛到它。
最优策略提取:从数字到方向
值迭代交付的是一张数字表,可路牌真正要展示给行人看的,是一个箭头。别担心,从数字换到方向只需要最后一步:站在每个路口,把每个方向都按当前表估算一遍总距离,然后把箭头指向估算值最小的那个方向——这步操作叫策略提取(policy extraction)。
一旦拿到最优值函数 V*,最优策略不需要再迭代,只需对每个状态做一次“单步贪心”。这看起来简直像作弊:前面几千轮算的全是数字,最后方向却是临时一拍脑袋选出来的。之所以可以这样,是因为 V* 本身已经编码了“从每个后续路口出发的最优结果”,所以局部贪心就等于全局最优。
数字和方向是一张牌的正反面。值迭代把数字磨准后,方向只是顺手一画;策略迭代则把方向当成主角,数字只是评估方向的标尺。无论从哪条路走完,你手里都会同时拥有这座城市的“最优值表”和“最优路线图”。
- 一步贪心 argmax_a只往前看一步,但未来每一步的价值都已经浓缩在 V* 里,所以这一步贪心就是全局最优。
- 代入最优值 V^*(s')这里的邻居数字用的不是随便某个策略的价值,而是已经收敛的最优值函数。
- 策略可以不唯一如果两个方向的“油费 + 折扣邻居距离”完全相等,路牌可以指任意一个——多个最优策略共享同一张最优值函数表。
无模型衔接:没有地图也能学
现在,最戏剧性的一刻来了——城市的地图丢了。你不知道每条路通向哪里,不知道每段路费多少,手里的路牌也全空了。这时候再用贝尔曼方程“向邻居打听”,邻居面露难色:我自己也不知道啊!唯一可行的方法是亲自开车出去跑:每条路线反复试,把实际收到的油费记录在案。
回归公式本身:贝尔曼最优方程里的求和 ΣP(·)[R+γV] 是“对所有可能转移求期望”。有地图时这个期望可以精确算出来;没地图时,数学给你开了一扇窗——期望可以换成一次真实采样:实际走一步,拿到真实的奖励 r、看到真实的下一路口 s',然后用 r + γ·邻居最好估计 当作这次“试验得出的目标值”。
于是 Q 学习(Q-Learning)的更新公式水到渠成:每次实验后,把 Q 表里对应条目的估计值,向目标值方向挪一小步。α 是学习率,决定每次信多少新证据;方括号里的差值叫时序差分误差(TD error),是“这次试出来的结果与原估计的差距”。仔细看,它和值迭代惊人地相似:值迭代是“把期望算准”,Q 学习是“用一次采样慢慢逼近同一个期望”。
从值迭代到 Q 学习,心脏始终是同一个贝尔曼方程,变的只是交通工具:有地图时用计算器(精确期望),没地图时用方向盘(单次采样)。所以小白读者别把“动态规划”和“强化学习”看成两座孤岛——它们共享同一张城市攻略的蓝图,而你已经拿到了这张蓝图。
- 采样目标值 r + γ max Q'没有地图,就用一次真实走位代替期望——“这条道我实际拿到了 r,下一站最好估计是 max Q',打点折扣加起来”。
- 时序差分误差方括号里的整体就是 TD 误差,它是“这次试出来的目标”与“旧估计”之间的差距,是学习的原始动力。
- 学习率 α 的挪动新旧估计之间差多少,只取其中 α 比例来修正,避免一次坏运气把路牌带偏。
- 与值迭代对照把这里的采样目标换成带期望的贝尔曼最优方程,再令 α=1,就变回值迭代的同步更新——同一条公式,两种交通工具。
AI 应用场景
仓储机器人路径规划
阶段:模型已知的离线规划
解决的问题:传统做法靠人工设定固定巡回路线,货架一变动就要重新布线,费时费力。把仓库离散成网格,每个格子是 MDP 状态,机器人四个方向的动作转移概率已知,用值迭代为每个格子算出价值,任意起点到出货口的最优路线就自动浮出水面。
具体案例:某电商仓库有 5000 个货架位,按 1 米网格建模,奖励设为“越靠近出货口越高”,值迭代约 200 轮后每个格子都标好了方向箭头,调度系统直接查表下发指令,拣货机器人路径耗时下降约两成。
棋类残局基准策略
阶段:策略搜索与评估
解决的问题:西洋双陆棋残局状态成千上万,完全靠人工规则既不准也不全。用策略迭代在已知规则模型上求基准最优策略,作为在线搜索和神经网络价值头的对照基准,让强化学习智能体少走弯路。
具体案例:把棋子位置编码成状态,走子规则即转移模型,策略迭代通常 50 轮内策略就稳定,得到的基准策略可用于标注训练数据,帮助基于自对弈的智能体更快收敛。
库存补货动态规划
阶段:决策优化
解决的问题:传统补货靠经验阈值,需求波动时经常缺货或爆仓。把库存量当状态、订货量当动作、缺货与持有成本当负奖励,转移概率由历史需求统计得到,策略迭代直接产出“看到多少库存就补多少”的最优补货策略表。
具体案例:某便利店连锁用过去三个月销售数据拟合需求分布,对 300 个 SKU 分别跑策略迭代,把补货表下发给门店,缺货率下降约两成,库存周转天数改善明显。
Python 演示
GAMMA = 0.9THRESH = 1e-4N = 5 def clamp(x): return max(0, min(N - 1, x)) def step_state(s, a): # 动作 0 向右, 动作 1 向左, 边界处原地不动 return clamp(s + 1) if a == 0 else clamp(s - 1) def reward(s, sp): return 1.0 if sp == N - 1 else 0.0 def q_value(V, s, a): sp = step_state(s, a) return reward(s, sp) + GAMMA * V[sp] def value_iteration(): V = [0.0] * N rounds = 0 while True: delta = 0.0 new_V = [0.0] * N for s in range(N): best = max(q_value(V, s, a) for a in (0, 1)) new_V[s] = best delta = max(delta, abs(best - V[s])) V = new_V rounds += 1 if delta < THRESH: break return V, rounds def policy_evaluation(pi): V = [0.0] * N while True: delta = 0.0 for s in range(N): v = q_value(V, s, pi[s]) delta = max(delta, abs(v - V[s])) V[s] = v if delta < THRESH: break return V def policy_improvement(V): pi = [0] * N for s in range(N): q0 = q_value(V, s, 0) q1 = q_value(V, s, 1) pi[s] = 0 if q0 >= q1 else 1 return pi def policy_iteration(): pi = [0] * N while True: V = policy_evaluation(pi) new_pi = policy_improvement(V) if new_pi == pi: return pi, V pi = new_pi def greedy_policy(V): return policy_improvement(V) if __name__ == '__main__': V_vi, rounds = value_iteration() print('值迭代轮数:', rounds) print('最优值函数:', [round(v, 3) for v in V_vi]) pi_vi = greedy_policy(V_vi) print('由值提取的策略:', pi_vi) pi_pi, V_pi = policy_iteration() print('策略迭代的策略:', pi_pi) print('策略迭代的值函数:', [round(v, 3) for v in V_pi])
return clamp(s + 1) if a == 0 else clamp(s - 1)把动作翻译成环境反馈:向右或向左走一格,边界处被墙挡回,这就是状态转移模型。return reward(s, sp) + GAMMA * V[sp]贝尔曼公式的五脏:即时奖励 + 折扣 × 邻居价值,对应“路牌向邻居打听距离”。best = max(q_value(V, s, a) for a in (0, 1))值迭代的核心:对每个动作取最大,每块路牌只信最好的方向。new_V[s] = best把新值先写进新表,等整轮算完才整体替换,这就是同步更新。if delta < THRESH: break收敛判据:全城最大改动量小于阈值就收工。v = q_value(V, s, pi[s])策略评估里没有 max:方向已定,只需顺着箭头算距离。pi[s] = 0 if q0 >= q1 else 1策略改进:贪心换成 Q 值更大的方向。if new_pi == pi: return pi, V箭头不再变动,说明已经到达最优,可以停下。
常见误区
误区教科书把值迭代和策略迭代分在两节讲,于是初学者觉得它们是两条互不相干的技术路线,只要记住值迭代就够应付面试了。
正解它们同源于贝尔曼最优方程。值迭代在每一轮里隐式地同时改进所有状态的价值;策略迭代则显式地维护一个策略,并交替做策略评估与策略改进。两者收敛到同一个最优解,差别只是“谁当主角”——数字还是箭头。在模型已知的小规模问题上,策略迭代往往轮数更少。
为何常见:教材为了教学清晰会把算法拆开讲,读者跟着章节走就误以为它们是彼此独立的算法家族,忽略了共通的数学骨架。
误区很多人认为“路牌数字稳定了,箭头自然就对”,于是用值函数的最大变化量是否为零来判断策略是否最优。
正解值函数收敛到唯一的不动点,是策略最优的必要铺垫,但不等于策略一定唯一。当存在多个最优策略时,值函数唯一而策略可以不唯一;而且值函数收敛的“速度”与策略收敛的速度并不完全同步。实践中要么要求变化量小于阈值后继续验证策略,要么直接用“策略是否再改变”作为停止条件。
为何常见:把“数字稳定”的直觉等同于“方向最优”,忽略了“平顶效应”——多个箭头指向同样好的邻居时,数字不会再动,箭头却可以不同。
误区直觉上“看得越远越厉害”,于是初学者把 γ=1 当成最理想设置,认为这样算法会考虑无限远的未来。
正解γ=1 意味着贝尔曼算子不再是压缩映射,压缩性证明失效,值迭代可能不收敛;即便在有限步内勉强运行,长程回报的方差也大、学习慢。实际工程中常在 0.9 到 0.99 之间取值,既保留远见,又保证“传话衰减”带来的稳定性。
为何常见:只看到“远见”的收益,没意识到折扣因子同时也是收敛性的数学保障,少一个小于 1 的系数就少一座压舱石。
误区学习路径上先学动态规划、再学无模型强化学习,容易让人把 Q 学习理解成一套全新的理论,和贝尔曼方程划清界限。
正解Q 学习公式就是贝尔曼最优方程的“采样版”——把对转移概率求和算期望,换成走一步拿真实 r 和 max Q' 的单次采样,再用学习率 α 做移动平均。方程骨架、递归结构、最优性思想完全一致,变的只是交通工具。
为何常见:课程通常按“有模型 / 无模型”分章节,学生记住了标签,却没留意两者的公式是同一张面孔,导致知识体系断裂。
面试题
Q1. 在贝尔曼最优方程中,折扣因子 γ 的主要作用是?
- A.控制算法学习速率
- B.给未来奖励打折← 正确答案
- C.平衡探索与利用
- D.压缩状态空间规模
答案:B。γ 负责把未来奖励折算成“现值”,数值越小越短视,越接近 1 越有远见,同时它也是压缩映射收敛性的保障。学习速率是 α 的事,探索与利用是无模型算法的概念,压缩状态空间与 γ 无关。
Q2. 值迭代做同步更新时,当前轮次的计算依赖哪版值函数?
- A.本轮刚更新的数值
- B.上一轮保留的数值← 正确答案
- C.随机抽样的数值
- D.固定不变的数值
答案:B。值迭代要求同步更新:右边只读 V_k(上一轮旧表),产出的新表整体替换为 V_{k+1}。像路牌深夜集体刷新,谁都不许偷看今晚刚出炉的新数字,这样才能保证更新步的一致性。
Q3. 值迭代停止的常用判据是?
- A.累计奖励达到上限
- B.策略完全不再改变
- C.值函数变化量小于阈值← 正确答案
- D.迭代次数达到一万次
答案:C。值迭代的经典停机条件是统计本轮最大变化量 Δ = max|V_{k+1} - V_k|,当 Δ 小于 ε 时认为接近不动点。奖励上限本身不是停机信号,固定次数太机械,策略不变则更常作为策略迭代的收敛信号。
Q4. 策略迭代循环中交替执行的两个步骤是?
- A.采样与估计
- B.评估与改进← 正确答案
- C.探索与利用
- D.预测与控制
答案:B。策略迭代先做策略评估:固定方向 π,把值函数 V^π 算到稳定;再做策略改进:对每个路口贪心换方向。评估与改进交替进行,直到策略不再变化。采样、探索属于无模型学习的词汇,与这里的精确计算路线不同。
Q5. 最优策略提取时,对每个状态应选择?
- A.使 Q 值最大的动作← 正确答案
- B.当前奖励最高的动作
- C.任意可执行的动作
- D.转移概率最大的动作
答案:A。拿到最优值函数 V* 后,只需对每个状态做一次贪心 argmax_a Q*(s,a),Q 值最大的动作就是最优方向。当前奖励最高忽略未来,任意动作显然不对,转移概率大小与价值高低无关。
Q6. 下列哪种情况会破坏贝尔曼算子的压缩性?
- A.状态空间规模极大
- B.动作空间远大于状态
- C.折扣因子恰好等于 1← 正确答案
- D.奖励函数全部为负
答案:C。压缩不等式 ||TV - TU|| ≤ γ||V - U|| 成立的关键是 γ < 1。γ = 1 时算子不再压缩,不动点存在性和收敛保证全部失效。状态多、动作多、奖励为负都不影响压缩性质。
Q7. Q 学习更新中的时序差分误差是指?
- A.前后两步奖励的差值
- B.估计价值与目标之差← 正确答案
- C.动作概率的变化幅度
- D.状态转移矩阵的误差
答案:B。TD 误差是方括号里的整体 r + γ max Q' - Q,即“这次采样得到的目标值”与“旧估计”之差。它推动 Q 表向新证据靠拢。它不是奖励差,也不涉及动作概率或转移矩阵。
Q8. 动态规划求解 MDP 需要满足哪些前提?
- A.环境模型完全已知← 正确答案
- B.必须采用神经网络
- C.问题具有最优子结构← 正确答案
- D.奖励必须始终非负
答案:AC。动态规划要求转移概率 P 和奖励 R 已知(有完整地图),并要求最优子结构成立,才能把大问题拆成可复用的子问题。神经网络是一种函数逼近工具而非前提;奖励可以为负,负奖励恰好能惩罚坏动作。
Q9. 关于值迭代与策略迭代,正确的说法是?
- A.值迭代每轮更新所有状态← 正确答案
- B.策略迭代通常轮数更少← 正确答案
- C.策略迭代不需要转移概率
- D.两者都不能求最优策略
答案:AB。值迭代确实是每轮同步更新所有状态;策略迭代因为引入了评估与改进的交替,通常以更少的轮数收敛,但每轮更昂贵。策略迭代同样需要转移概率来计算 Q 值,且两者都能求出最优策略,所以 C、D 错误。
Q10. 关于最优值函数与最优策略的关系,正确的是?
- A.值函数唯一则策略必唯一
- B.贝尔曼算子有唯一不动点← 正确答案
- C.策略收敛必须先于值函数
- D.多个策略可共享同一值函数← 正确答案
答案:BD。由压缩映射不动点定理,最优值函数是唯一不动点;但多个最优策略可以对应同一张最优值函数表,比如两条路到达价值完全相同的邻居时,箭头各有各的指法。因此 A 错误;策略收敛不必先于值函数,C 颠倒了二者的关系。