想象你在一家陌生的城市开出租车。你手上有两种“知识”:一是地图和规则——到了某个路口,该左转还是直行,这决定了你接下来怎么开车;二是对路况的判断——走这条路大概要多久、那条路会不会堵,这告诉你每条路到底“值不值”。前者是策略,后者是值函数。在强化学习中,智能体(Agent)与环境的每一次交互,都像是在这个城市里反复试跑。搞清楚这两者的关系,你就掌握了强化学习的“方向盘”和“仪表盘”。

岗位关联

理解策略与值函数的关系,是看懂 Q 学习、策略迭代、Actor-Critic 等主流算法的第一步。掌握了它,你就拿到了通往强化学习核心机制的门票。

目录
  1. 可视化演示
  2. 策略定义
  3. 状态值函数
  4. 动作值函数
  5. 期望累计奖励
  6. 贝尔曼方程
  7. 策略评估与改进
  8. 贪心策略
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示搞清策略与值函数的关系的核心机制,通过采集/分析/决策/反馈四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

搞清策略与值函数的关系:策略的定 策略的定义与分类 值函数作为策略评估工具 核心机制可视化 搞清策略与值函数的关系整体架构与关键组件

策略定义

回到开出租车的比喻。你的策略就是一套“开车规则”:看到红灯右转,看到绿灯直行,乘客赶时间就抄小路。在强化学习中,策略是智能体在每个状态下选择动作的规则,记作 π。它回答了最根本的问题:“我现在身处这个状态,下一步该做什么?”

策略分为两种。确定性策略像一本精确的菜谱:每种食材组合对应唯一的烹饪方式,给定状态 s,策略直接输出唯一的动作 a = π(s)。随机性策略像掷骰子的决定:给定状态 s,策略输出的是每个动作的概率分布 π(a|s),表示在这个状态下选择各个动作的可能性。随机性策略在探索环境时非常重要,因为它保证了智能体不会永远困在同一个选择里。

就像出租车的“行车规则”决定了司机看到每个路口时会怎么走,策略决定了智能体在每一个状态下会采取什么行动。策略是行为层面的“方向盘”。

π(a∣s)=P[At=a∣St=s]\displaystyle \pi(a|s) = \mathbb{P}\left[ A_t = a \mid S_t = s \right]
这个公式就是说:策略 π 告诉我们在状态 s 下,选择动作 a 的概率有多大。
  1. π(a|s)策略函数,输出的是概率值。竖线左侧是“要评估的动作”,右侧是“当前所在状态”,整个式子读作“在状态 s 下选动作 a 的概率”。
    π(a∣s)\displaystyle \pi(a|s)
  2. 条件概率等式右侧的 \mathbb{P}[A_t = a \mid S_t = s] 表示随机变量“第 t 步的动作”在“第 t 步状态”已确定的条件下取值为 a 的概率。不确定性来自策略自身的随机性。
    P[At=a∣St=s]\displaystyle \mathbb{P}\left[ A_t = a \mid S_t = s \right]

状态值函数

有了方向盘,你还需要一个仪表盘来判断每条路到底好不好走。状态值函数 V(s) 就是这样一个仪表盘:它告诉你“如果从状态 s 出发,按照当前策略 π 继续行动,未来能获得多少累计奖励”。请注意,状态值函数总是相对某个策略而言的,所以完整写法是 V_π(s)。

为什么需要值函数?因为我们的目标是长期回报,不是眼前的一步奖励。就像出租车司机选择路线时,要看的不只是下一段路的拥堵情况,而是整趟行程的预计时间。状态值函数把“从当前状态到终点的所有未来奖励”压缩成一个数字,让智能体能比较不同状态的优劣。

设折扣因子为 γ,从状态 s 出发的期望累计奖励为:

状态值函数像汽车的油量显示:表盘上的数字告诉你当前位置还有多少“价值油量”可跑,但它不直接告诉你该踩油门还是刹车——那是动作层面的事。这就要引出动作值函数了。

Vπ(s)=Eπ[∑k=0∞γkRt+k+1  |  St=s]\displaystyle V_{\pi}(s) = \mathbb{E}_{\pi}\left[ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \;\middle|\; S_t = s \right]
通俗讲:V_π(s) 等于“从状态 s 出发,按照策略 π 一路走下去,把所有未来奖励打折加总后的平均值”。
  1. 期望符号\mathbb{E}_{\pi} 表示“按策略 π 行动时多次试验的数学期望”。由于环境有随机性,每次跑出来的奖励序列都不一样,取平均才是稳定的估计。
    Eπ[ ⋅ ]\displaystyle \mathbb{E}_{\pi}[\,\cdot\,]
  2. 累计求和\sum_{k=0}^{\infty} 把从第 t+1 步开始的所有奖励全部加起来,k=0 对应即时奖励,k=1 对应下一步奖励,以此类推,一直加到无穷远。
    ∑k=0∞\displaystyle \sum_{k=0}^{\infty}
  3. 折扣因子\gamma^k 是对第 k 步之后奖励的折扣。γ 在 [0,1) 之间,越靠后的奖励被乘上越小的系数,表示“远处的奖励没眼前的值钱”。
    γk\displaystyle \gamma^k
  4. 条件状态S_t = s 表示这一期望值是在“当前时刻恰好处于状态 s”这个前提下计算的,所以 V 是状态 s 的函数。
    St=s\displaystyle S_t = s

动作值函数

仪表盘只告诉你“现在这条路整体值不值”,但没告诉你“具体往左拐还是往右拐更好”。动作值函数 Q(s, a) 补上了这一环:它评估“在状态 s 下采取动作 a,之后继续按策略 π 行动”能获得的期望累计奖励。

Q 和 V 的关系非常紧密。如果把“从状态 s 出发”拆成两步——先选动作 a,再按策略行动——那么状态值函数就等于“按策略选出的动作”对应的动作值函数的期望。用公式表示就是:状态值等于动作值按策略概率加权平均。

打比方说,V 是“整家餐厅的平均评分”,Q 是“某道招牌菜的评分”。如果策略是“每次都点招牌菜”,那平均评分就等于招牌菜的评分;如果策略是“随机点菜”,平均评分就是各道菜评分的加权平均。Q 函数比 V 函数更精细,因为它直接告诉智能体“哪个动作更好”,这正是改进策略所需的信号。

Vπ(s)=∑a∈Aπ(a∣s) Qπ(s,a)\displaystyle V_{\pi}(s) = \sum_{a \in \mathcal{A}} \pi(a|s) \, Q_{\pi}(s,a)
白话版:V 是“所有可能动作的 Q 值按选择概率取平均”,Q 是“具体做某个动作的价值”。
  1. 求和范围\sum_{a \in \mathcal{A}} 遍历所有可行动作。每个动作 a 都有一个对应的 Q 值。
    ∑a∈A(⋅)\displaystyle \sum_{a \in \mathcal{A}} (\cdot)
  2. 策略加权\pi(a|s) 是策略给动作 a 的概率,概率大的动作在 V 值中占比更高。如果策略确定选 a,那 V(s) 就等于 Q(s,a)。
    π(a∣s) Qπ(s,a)\displaystyle \pi(a|s) \, Q_{\pi}(s,a)

期望累计奖励

前面反复提到“期望累计奖励”,它是值函数的“原材料”。回报(Return)G_t 指的是从某时刻开始的累计折扣奖励。值函数本质上是“回报的期望值”。

为什么要用折扣因子 γ?因为现实世界没有无限预算。今天的 100 元和一年后的 100 元价值不同,强化学习里的 γ 正是用来表达“未来奖励的衰减”。γ 越接近 1,智能体越看重长远利益;γ 越接近 0,智能体越短视。

期望累计奖励就像出租车司机评估一条路线时,会把“接下来每个路口的等待时间”都折算成总耗时:优先照顾眼前,但也不完全忽略远期。值函数就是这“总耗时”在数学上的化身。

Gt=Rt+1+γRt+2+γ2Rt+3+⋯=∑k=0∞γkRt+k+1\displaystyle G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}
一句话:回报就是“把未来的每一笔奖励都打个折扣,再全部加起来”的总收益。
  1. 即时奖励R_{t+1} 是执行动作后立刻获得的奖励,这是回报的第一项,不被打折。
    Rt+1\displaystyle R_{t+1}
  2. 折扣奖励\gamma R_{t+2} 是下一步奖励打一次折扣,\gamma^2 R_{t+3} 是下下步奖励打两次折扣。折扣次数随步数增长而增加。
    γRt+2+γ2Rt+3\displaystyle \gamma R_{t+2} + \gamma^2 R_{t+3}
  3. 无穷级数求和一直延续到无穷远。在实际训练中,奖励序列是有限的或通过截断处理,但数学上写成无限级数便于推导。
    ∑k=0∞γkRt+k+1\displaystyle \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

贝尔曼方程

期望累计奖励的定义有个麻烦:它是无穷级数,没法直接算。但我们可以发现一个美妙的递归结构:当前的回报 = 即时奖励 + 折扣后的未来回报。这就像你评估一段路的总耗时,只需要知道“这一段路的耗时 + 剩余路程的评估耗时”。

状态值函数的贝尔曼方程把 V 分解成“即时奖励的期望”和“下一状态值的折扣期望”两部分:

贝尔曼方程是强化学习中最重要的方程,没有之一。它把“评估一条路有多好”的问题,转化成“评估下一个路口有多好”的子问题,层层递推。这为算法的实现提供了抓手:我们不再需要等待无穷多个奖励到账,只要不断迭代更新 V 值,就能逐步逼近真实值。

Vπ(s)=∑aπ(a∣s)∑s′p(s′∣s,a)[r+γVπ(s′)]\displaystyle V_{\pi}(s) = \sum_{a} \pi(a|s) \sum_{s'} p(s'|s,a) \left[ r + \gamma V_{\pi}(s') \right]
白话:站在状态 s,按策略选动作 a,环境把你送到 s' 并给你奖励 r,然后你继续按策略走。当前状态的价值 = 平均“奖励 + 下一状态价值”。
  1. 动作层求和\sum_{a} \pi(a|s) 是外层按策略概率对所有动作加权。
    ∑aπ(a∣s)\displaystyle \sum_{a} \pi(a|s)
  2. 状态转移求和\sum_{s'} p(s'|s,a) 是内层按环境动力学对所有可能到达的下一状态求期望。环境可能随机地把智能体送到不同的 s'。
    ∑s′p(s′∣s,a)\displaystyle \sum_{s'} p(s'|s,a)
  3. 即时奖励r 是这一步转移获得的奖励。
    r\displaystyle r
  4. 递归价值\gamma V_{\pi}(s') 是下一状态价值的折扣形式——这就是“递归”的来源,把无穷级数压缩成了自指方程。
    γVπ(s′)\displaystyle \gamma V_{\pi}(s')

策略评估与改进

现在把方向盘和仪表盘拼在一起。强化学习的核心机制就是一个循环:评估 → 改进 → 再评估 → 再改进。

  • 策略评估:给定当前策略 π,计算它的状态值函数 V_π。就像拿到一份新的行车规则,先跑几趟数据,算出每条路的评估耗时。
  • 策略改进:根据值函数,更新策略。如果用 Q 值说话,那就是“在状态 s 下,把策略改成选择 Q 值最大的动作”。这一改动是否真的让策略变好?当满足单调改进条件时,新策略一定不差于旧策略——这是策略改进定理保证的。

这两个步骤交替进行,就构成了策略迭代。每一轮评估都更精确,每一轮改进都更强,策略和价值函数一路攀升,直到收敛到最优策略和最优值函数。这就像一位出租车司机:拿到新路线建议,跑几趟验证,发现有的路段更快,立刻把它纳入新路线,反复打磨,最终形成一套接近最优的开车方式。

有了这个循环,策略和值函数就像一对默契的舞伴:值函数为策略提供舞步建议,策略走出新舞步后又让值函数重新评估,两者螺旋上升,最终共舞出最优解。

πk+1(s)=arg⁡max⁡aQπk(s,a)\displaystyle \pi_{k+1}(s) = \arg\max_{a} Q_{\pi_k}(s,a)
改进公式:新策略在状态 s 下,选择旧策略的 Q 函数中最大的那个动作。如果每个状态都这么选,新策略不会比旧策略差。
  1. argmax\arg\max_a 表示“让后半部分取得最大值的那一个动作 a”。注意不是取最大值本身,而是取使 Q 最大的那个动作。
    arg⁡max⁡a(⋅)\displaystyle \arg\max_{a} (\cdot)
  2. 旧策略的 QQ_{\pi_k}(s,a) 是在旧策略 π_k 下计算的动作值。用旧值函数指导新策略的选择。
    Qπk(s,a)\displaystyle Q_{\pi_k}(s,a)
  3. 新策略\pi_{k+1}(s) 是改进后的策略在状态 s 的决定——它只输出一个动作,说明贪心改进得到的是确定性策略。
    πk+1(s)\displaystyle \pi_{k+1}(s)

贪心策略

最后来聊“贪心”这个看似贬义的词,在强化学习里却是金光闪闪的改进利器。贪心策略就是在每个状态都选择 Q 值最大的动作,像一位只盯着最热门餐厅的食客——他不看其他选项,直接走向评分最高的那家。

贪心策略为什么能改进?因为策略改进定理告诉我们:如果一个状态 s 下存在某个动作 a 的 Q 值大于当前 V 值,那么把策略改成“在 s 下必选 a”,得到的新策略在 s 上的表现至少不比旧策略差。把这个逻辑推广到所有状态,就得到贪心改进定理:

在 Q 学习中,智能体正是依靠“贪心选最大 Q 值”来不断更新策略的——虽然训练时为了探索会偶尔偏离贪心(比如 epsilon-greedy),但最终决策时还是会回到贪心选择。所以理解“贪心策略能改进策略”这件事,是理解 Q 学习收敛性的根基。方向盘(策略)听从仪表盘(Q 值)的指引,这就是强化学习最优雅的自举之美。

Qπ(s,π′(s))≥Vπ(s)⇒Vπ′(s)≥Vπ(s)\displaystyle Q_{\pi}(s, \pi'(s)) \geq V_{\pi}(s) \quad \Rightarrow \quad V_{\pi'}(s) \geq V_{\pi}(s)
含义:只要新策略 π' 在每一步选择的动作的 Q 值不低于旧策略的 V 值,那么新策略在整个状态空间上都不劣于旧策略。
  1. 前提条件Q_{\pi}(s, \pi'(s)) \geq V_{\pi}(s) 表示“按新策略选出的动作,其 Q 值 ≥ 按旧策略行动的平均价值”。这是改进的触发条件。
    Qπ(s,π′(s))≥Vπ(s)\displaystyle Q_{\pi}(s, \pi'(s)) \geq V_{\pi}(s)
  2. 结论V_{\pi'}(s) \geq V_{\pi}(s) 表示改进后策略的状态值函数普遍提升。这保证了贪心改进不会“退步”。
    Vπ′(s)≥Vπ(s)\displaystyle V_{\pi'}(s) \geq V_{\pi}(s)

AI 应用场景

Q学习算法

阶段:策略改进(决策部分)

解决的问题:传统方法需要完整的转移概率模型才能计算值函数,而现实中很多环境没有模型。Q 学习通过“贪心选最大 Q 值”直接更新动作值函数,无需模型也能找到最优策略。它用“试错 + 更新 Q 表”的方式替代繁琐的模型求解。

具体案例:一个让 AI 玩迷宫游戏的场景中,智能体初始 Q 表全为零。每次走到新格子,它以 epsilon 概率随机探索,否则贪心选择 Q 值最大的方向移动。到达终点获得奖励后,Q 值按“当前奖励 + 折扣后的下一状态最大 Q 值”反向传播。几千回合后,Q 表稳定,智能体学会了从任意起点走向终点的最短路径。

策略迭代在围棋AI中的应用

阶段:策略评估 + 策略改进

解决的问题:围棋的状态空间远超穷举能力,无法用蛮力求解。策略迭代的思路是“先按当前策略模拟对局评估局面,再根据胜率改进下法”,正是策略评估与改进循环的实战体现。

具体案例:AlphaGo 的早期版本先通过策略网络模仿人类棋手下棋(初始化策略),再用蒙特卡洛树搜索评估每个落子的胜率(评估值函数),最后根据胜率调整策略网络(改进策略)。这个过程反复迭代,策略网络越下越强,评估也越来越准。

推荐系统中的带宽分配

阶段:策略决策(线上服务)

解决的问题:推荐系统面对海量用户和物品,需要决定“给这个用户推荐哪个物品”——这就是策略问题。过去用固定规则,无法适配每个用户的实时反馈。动作值函数能把“用户点击、收藏、购买”等反馈信号压缩成每个物品的推荐价值,从而实时改进推荐策略。

具体案例:电商平台在给用户展示商品时,将“当前用户画像 + 当前页面上下文”看作状态,将“推荐某个商品”看作动作,用点击/购买数据训练 Q 函数。线上每次请求时,贪心选择 Q 值最高的商品优先展示,同时保留一定概率随机推荐以收集新数据。训练数周后,推荐转化率明显提升。

Python 演示

python71 行
import numpy as np class MDP:    def __init__(self, n_states, n_actions):        self.n_states = n_states        self.n_actions = n_actions        self.rewards = np.zeros((n_states, n_actions))        self.transition = np.zeros((n_states, n_actions, n_states))        self.gamma = 0.9     def set_dynamics(self, state, action, next_state, reward):        self.transition[state, action, next_state] += 1.0        self.rewards[state, action] = reward     def normalize(self):        for s in range(self.n_states):            for a in range(self.n_actions):                total = self.transition[s, a].sum()                if total > 0:                    self.transition[s, a] /= total     def policy_evaluation(self, policy, epochs=100):        V = np.zeros(self.n_states)        for _ in range(epochs):            V_new = np.zeros(self.n_states)            for s in range(self.n_states):                for a in range(self.n_actions):                    p_next = self.transition[s, a]                    expected_future = p_next @ V                    V_new[s] += policy[s, a] * (self.rewards[s, a] + self.gamma * expected_future)            V = V_new        return V     def greedy_improvement(self, V):        policy = np.zeros((self.n_states, self.n_actions))        for s in range(self.n_states):            Q_values = np.zeros(self.n_actions)            for a in range(self.n_actions):                p_next = self.transition[s, a]                Q_values[a] = self.rewards[s, a] + self.gamma * (p_next @ V)            best_a = np.argmax(Q_values)            policy[s, best_a] = 1.0        return policy     def policy_iteration(self, max_iters=50):        policy = np.ones((self.n_states, self.n_actions)) / self.n_actions        for _ in range(max_iters):            V = self.policy_evaluation(policy)            new_policy = self.greedy_improvement(V)            if np.array_equal(new_policy, policy):                break            policy = new_policy        return policy, self.policy_evaluation(policy)  mdp = MDP(4, 2)mdp.set_dynamics(0, 0, 1, 5.0)mdp.set_dynamics(0, 1, 2, 8.0)mdp.set_dynamics(1, 0, 3, 1.0)mdp.set_dynamics(1, 1, 3, 2.0)mdp.set_dynamics(2, 0, 3, 0.0)mdp.set_dynamics(2, 1, 3, 4.0)mdp.set_dynamics(3, 0, 3, 10.0)mdp.set_dynamics(3, 1, 3, 10.0)mdp.normalize() policy, V = mdp.policy_iteration()print("最优策略:")for s in range(4):    action = np.argmax(policy[s])    print("  状态{} -> 动作{} (V={:.2f})".format(s, action, V[s]))
目的:实现策略迭代算法,交替执行“策略评估”和“贪心策略改进”,在一个人工设定的小型 MDP 上求解最优策略。
  1. def policy_evaluation(self, policy, epochs=100)这一步是“先跑几趟算评估表”:反复按当前策略计算状态值 V,直到收敛。
  2. expected_future = p_next @ V环境会把智能体送到不同的下一状态,这里用矩阵乘法把“未来价值的期望”一次算清。
  3. policy[s, a] * (self.rewards[s, a] + self.gamma * expected_future)这正是贝尔曼方程的代码化:即时奖励加折扣未来价值,再用策略概率加权。
  4. Q_values[a] = self.rewards[s, a] + self.gamma * (p_next @ V)计算动作值 Q(s,a),它是贪心改进的依据。
  5. best_a = np.argmax(Q_values)贪心策略的核心:选中 Q 值最大的动作。
  6. if np.array_equal(new_policy, policy): break当评估与改进不再变化时收敛,退出循环。

常见误区

误区“值函数就是环境的打分,跟策略没关系,直接算出来就能用。”

正解值函数永远依赖某个策略。V_π(s) 的定义中明确写着“按照策略 π 行动”才能得到这个值。换一个策略,同一个状态的 V 值就会变。就像“套餐平均评分”依赖于“顾客怎么点菜”:如果顾客都点最贵的菜,平均分就高;如果都点最便宜的特价菜,平均分就低。脱离策略谈值函数,就像脱离行驶路线谈“这条路的平均速度”——毫无意义。

为何常见:初学者常把“值函数”和“奖励函数”混为一谈,以为它是环境的固有属性。实际上奖励是环境给的,值函数是智能体按当前策略评估出来的。

误区“V 值就是所有动作 Q 值的最大值,反正都是衡量好坏。”

正解V(s) 是按当前策略 π 对所有可能动作的 Q 值做加权平均,权重就是 π(a|s)。只有在贪心策略下(概率 1 选最好的动作),V 才等于最大的 Q。更关键的是,Q(s,a) 是“先指定动作再按策略走”,而 V(s) 是“完全按策略走”——它们描述的行为起点都不同。

为何常见:很多入门材料直接贴出“Q-learning 选最大 Q 值”而不解释 V 和 Q 的区别,导致读者误以为两者可互换。

误区“期望嘛,就是模拟很多次把奖励加起来除以次数。”

正解期望在数学上是概率加权平均,不是简单算术平均。不同状态转移路径出现概率不同,高概率路径对期望贡献更大。而且回报本身是折扣累计奖金不是单步奖励,不能只取平均而忽略 γ 对远期奖励的衰减。就像计算“打车平均费用”要考虑每种路线出现的概率,而不是把五条路线费用直接加起来除以五。

为何常见:中学统计的“平均数”概念先入为主,让人忽略了期望的“概率加权”本质。

误区“贪心选最大 Q 值的策略,肯定就是最优策略。”

正解贪心策略是在某个给定的 Q 函数上选出当前看起来最好的动作。如果这个 Q 函数本身不准(比如还没收敛),贪心策略就是“闭着眼从错误地图上选最快的路”,并不可靠。只有在 Q 函数已接近真实值时,贪心才能逼近最优。这正是为什么 Q 学习需要大量探索来保证 Q 值准确。

为何常见:结尾往往强调“贪心选最大 Q 改进策略”,弱化了前提。忽略了“Q 值需要先准确估计”这个关键环节。

误区“贝尔曼方程就是值函数的定义,背下来就完事了。”

正解值函数的定义是回报的期望 G_t,贝尔曼方程是从定义推导出的递归等式,它并不是定义本身。两者的区别就像“总路程 = 各段路程之和”(定义)与“走到第 n 个路口的剩余路程 = 本段路长 + 下一个路口的剩余路程”(递归关系)。正是因为有了这种递归形式,我们才能写出迭代更新的算法。

为何常见:教材大多以贝尔曼方程为核心展开,容易让初学者以为这就是值函数的全部,忽略了它背后的期望定义。

面试题

Q1. 策略在强化学习中的本质是什么?

单选题 · easy

  • A.评估状态好坏的函数
  • B.状态到动作的映射规则← 正确答案
  • C.环境奖励的设计方案
  • D.神经网络的结构参数

答案:B。策略定义了“在每个状态选什么动作”,是行为规则,如同司机的行车规则。A 是值函数的功能,C 是奖励函数,D 是实现策略的一种参数化方式,而非策略本身。

Q2. 关于状态值函数和动作值函数,哪些说法正确?

多选题 · mid

  • A.V 是 Q 按策略概率的加权平均← 正确答案
  • B.Q 是 V 对动作取最大值的结果
  • C.Q(s,a) 评估“状态+动作”的价值← 正确答案
  • D.V 和 Q 都不依赖具体策略

答案:AC。V_π(s) = Σ π(a|s)Q_π(s,a),A 正确。Q 是在指定动作后按策略走下去的期望回报,C 正确。B 说反了——Q 不是由 V 推出的,V 由 Q 加权而来;D 错误,两者都依赖策略。

Q3. 折扣因子 γ 的作用是什么?

单选题 · easy

  • A.控制智能体的移动速度
  • B.平衡即时奖励与未来奖励← 正确答案
  • C.决定策略是确定还是随机
  • D.消除环境中的随机扰动

答案:B。γ 对远期奖励打折扣,体现“眼下奖励比未来奖励更珍贵”,类似银行利息的倒数。它不影响动作速度、策略类型或随机性,只影响回报计算中的时间偏好。

Q4. 回报 G_t 与状态值函数 V_π(s) 的关系是?

单选题 · mid

  • A.V 等于 G_t 的最大值
  • B.V 是 G_t 按策略的概率期望← 正确答案
  • C.V 是单次 G_t 的观测值
  • D.V 直接等于即时奖励 r

答案:B。V(s) = E_π[G_t | S_t = s],即回报的期望值。单次 G_t 受随机性影响会有波动,V 是多次回报的平均水平——就像“这条路的平均耗时”而非某一次遇堵车的耗时。

Q5. 策略评估的核心输出是什么?

单选题 · hard

  • A.一组新的动作序列
  • B.当前策略的状态值函数← 正确答案
  • C.环境的转移概率矩阵
  • D.最优动作的枚举集合

答案:B。策略评估的任务是计算 V_π(s),即给定策略的值函数,等价于“试跑若干趟算平均耗时”。A 是策略改进的输出,C 是环境模型的输入,D 是决策结果,均不是评估阶段的产物。

Q6. 关于贝尔曼方程,哪些理解正确?

多选题 · mid

  • A.它把无穷级数变成递归方程← 正确答案
  • B.当前值等于即时奖励加折扣未来值← 正确答案
  • C.贝尔曼方程只适用于确定性环境
  • D.它是策略迭代算法的理论基础← 正确答案

答案:ABD。贝尔曼方程通过“即时奖励 + γ × 下一状态值”递归表达价值,A、B 正确。它同样适用于随机环境(内层有转移概率 p(s'|s,a)),C 错误。策略评估正是靠贝尔曼迭代完成的,D 正确。

Q7. 贪心策略改进的数学依据是什么?

单选题 · mid

  • A.大数定律保证 V 收敛到预期值
  • B.策略改进定理保证新策略不劣于旧策略← 正确答案
  • C.贝叶斯公式更新后验概率
  • D.梯度下降找到局部最优

答案:B。当新策略在每个状态的 Q 值不低于旧策略的 V 值时,策略改进定理保证 V_π' ≥ V_π。这就像换了更快的开法后总用时只降不升。A 是统计估计的保障,C 是概率推理,D 是神经网络优化,均与策略改进定理无关。

Q8. 在 Q 学习中,为什么需要“随机探索”(偶尔不选最大 Q 值)?

多选题 · hard

  • A.因为贪心策略不一定全局最优← 正确答案
  • B.因为初始 Q 值估计可能不准确← 正确答案
  • C.因为随机性可以降低计算复杂度
  • D.为了收集数据修正 Q 值估计← 正确答案

答案:ABD。Q 表初始不可靠,贪心会锁定次优动作;探索帮助发现更高奖励的路径,修正 Q 估计,B、D 正确。既然贪心可能陷入次优,探索也间接避免了这个问题,A 正确。随机探索并不降低复杂度,反而需要更多样本,C 错误。

Q9. 强化学习的“评估-改进”循环中,评估阶段做什么?

单选题 · easy

  • A.按当前策略计算状态值函数← 正确答案
  • B.随机更换所有动作选择
  • C.直接学习环境的转移矩阵
  • D.用监督数据训练神经网络

答案:A。评估是“给定策略算值函数”,即检验当前策略到底有多好。B 是纯探索,C 是模型学习,D 是监督学习,都不属于策略评估的范畴。

Q10. 若一个确定性策略 π 使 V_π(s) = max_a Q_π(s,a) 对所有状态成立,则说明什么?

单选题 · hard

  • A.环境已经没有随机性了
  • B.π 已经是该 MDP 的一个最优策略← 正确答案
  • C.Q 值已经全部相等
  • D.折扣因子 γ 必然等于 1

答案:B。对每个状态,V 等于按策略选出的那一个动作的 Q 值,且它等于所有动作的最大 Q 值——说明策略 π 在每个状态都选择了 Q 值最大的动作,满足策略改进定理的收敛条件,达到最优不动点。这与环境随机性(A)无关;Q 值只需最大动作被选中,无需全部相等(C);γ 可以为任意折扣值(D)。