Value-based Methods
学习 V 或 Q,并由价值比较导出策略。
学习目标
- 理解“先估值再选动作”的流程,以及离散最大化和连续优化的差别。
- 独立复核“一次价值更新如何改变贪心动作”的输入、计算和解释。
- 策略通过价值排序间接改变。
为什么重要
理解“先估值再选动作”的流程,以及离散最大化和连续优化的差别。
学习前需要掌握
背景与问题
在有限棋盘上,每一步只有少量合法动作,可以给每个动作估一个分数再取最大。若动作是任意实数的机械臂力矩,价值网络虽能评分,却不能简单遍历所有候选;动作空间结构决定实现难度。
概念定义
价值方法以状态价值或动作价值为主要学习对象,再通过贪心、ε-greedy 或模型备份导出策略。Q-learning 与 DQN 是典型动作价值控制方法;动态规划也能通过状态价值和已知模型改进策略。
直观理解
先建立路段总成本表,再按成本表选路线,类似价值方法。评分表会随新经验变化,因此“选当下最高分”依赖这张表有没有充分数据支撑。
核心原理
学习目标一般结合即时奖励与下一状态价值。控制算法的目标可能使用最大动作价值,而策略评价则使用当前策略期望;两者不能因为都写 Q 就混在一起。
贪心动作不一定是收集数据时唯一动作。ε-greedy 等探索机制会故意尝试其他行动,Q-learning 可以从这些数据学习贪心目标;SARSA 则把实际行为策略纳入备份。
函数近似下的最大化会偏好偶然高估值;双估计、目标网络和 replay 分别针对不同问题。它们是稳定化措施,不是任意神经网络设置下的收敛保证。
数学表达
由动作价值导出贪心动作
最大化只能遍历合法动作;并列最优需要约定打破平局的方式。
变量含义
Q(s,a)当前动作价值估计A(s)状态 s 下的合法动作集合
计算步骤
- 1动作 0 更新为 1+0.5×(2−1)=1.5。
- 2动作 1 仍为 1.2。
- 3更新前贪心动作是 1,更新后变成 0。
代码对应位置
示例 1一次价值更新如何改变贪心动作:价值更新改变动作排序:贪心选择从动作 1 切换到动作 0。
变量解释
| 变量 | 含义 |
|---|---|
Q(s,a) | 当前动作价值估计 |
A(s) | 状态 s 下的合法动作集合 |
完整数值示例
一次价值更新如何改变贪心动作
已知条件
- 当前两个动作 Q 值为 1 与 1.2。
- 动作 0 的目标为 2,学习率 0.5;动作 1 本次不更新。
计算步骤
- 动作 0 更新为 1+0.5×(2−1)=1.5。
- 动作 1 仍为 1.2。
- 更新前贪心动作是 1,更新后变成 0。
计算结果
价值更新改变动作排序:贪心选择从动作 1 切换到动作 0。
处理前后对比
- 策略通过价值排序间接改变。
- 一次排序翻转不代表真实最优动作已被识别。
计算与实现步骤
- 收集 transition
- 构造 TD 目标
- 更新价值
- 从价值导出行为
代码实现
示例 1
一次价值更新如何改变贪心动作
example_01.py用途:价值更新改变动作排序:贪心选择从动作 1 切换到动作 0。
q = [1.0, 1.2]
before = max(range(2), key=q.__getitem__)
q[0] += 0.5 * (2.0 - q[0])
after = max(range(2), key=q.__getitem__)
print(f"before={before}, after={after}, updated_Q0={q[0]:.2f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
价值更新改变动作排序:贪心选择从动作 1 切换到动作 0。
Step 1 · 1–5 行
按学习率和梯度更新参数。步长过小会缓慢,过大会越过最低点并震荡或发散。
q = [1.0, 1.2]
before = max(range(2), key=q.__getitem__)
q[0] += 0.5 * (2.0 - q[0])
after = max(range(2), key=q.__getitem__)
print(f"before={before}, after={after}, updated_Q0={q[0]:.2f}")预期输出或运行结果
before=1, after=0, updated_Q0=1.50
常见错误 · 3 条
- 以为学到 Q 就不再需要探索。
- 对连续动作直接调用数组 argmax 而未定义候选集合。
- 把表格收敛条件直接套用到非线性函数逼近。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 以为学到 Q 就不再需要探索。
- 对连续动作直接调用数组 argmax 而未定义候选集合。
- 把表格收敛条件直接套用到非线性函数逼近。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Sutton 与 Barto《Reinforcement Learning: An Introduction》(第 4、6 章)。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 以为学到 Q 就不再需要探索。
- 对连续动作直接调用数组 argmax 而未定义候选集合。
- 把表格收敛条件直接套用到非线性函数逼近。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
价值方法是否都只能用离散动作?
不是,但连续动作需要处理最大化问题,可能借助解析结构、候选搜索或 actor;普通 DQN 的有限输出枚举形式主要面向离散动作。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。