第4章:深度强化学习

把 Q 学习的 TD 目标接入多输出神经网络,区分状态编码、动作输出、目标向量和冻结评价。

学习目标

  • 能用“把 Q 表换成网络后,怎样只训练被选动作,又不破坏其他动作当前估计和终止状态边界?”解释本页问题,并把结论限制在官方 2017 年版目录范围内
  • 能逐项重建“融合的关键是先复制当前网络输出,再只替换被选动作的 TD 目标;终止时仍必须切断未来价值。”的输入、状态、公式与中间证据
  • 能对“若网络当前输出为 [0.2, 0.4, 0.1],选择动作一且 TD 目标为 0.7,则训练目标应为 [0.2, 0.7, 0.1],而不是三个位置都写 0.7。”完成一次手算或逐步重放,而不是只观察最终奖励
  • 能注入“用一个 TD 目标覆盖全部动作输出”,定位首个分岔并用重置回到相同初值

为什么从这个问题开始

把 Q 表换成网络后,怎样只训练被选动作,又不破坏其他动作当前估计和终止状态边界? 融合的关键是先复制当前网络输出,再只替换被选动作的 TD 目标;终止时仍必须切断未来价值。 “第4章:深度强化学习”的学习目标不是复述原书目录,而是把目录约束转成可以计算、运行、失败和复位的教学合同。为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。

先写预测:在同一初值下,如果故障“用一个 TD 目标覆盖全部动作输出”被启用,最先变化的是输入、转移、TD 目标、激活、梯度还是评价哈希?运行后若观察不一致,应缩小结论并检查第一处差异,不能用更长训练覆盖它。

来源、版次与版权边界

欧姆社官方书页确认小高知宏著、2017 年 10 月 14 日出版、208 页、ISBN 978-4-274-22114-9,并公开四章详细目录。官方页同时声明配套压缩包仅供购书者使用;本课程没有下载、缓存或改写该压缩包,只用公开目录核定范围。

技术事实另以《Reinforcement Learning: An Introduction》作者页面《Deep Learning》作者开放页面交叉核对。第4章:深度强化学习的中文解释、C 片段、交互、数值、反例、练习与答案均为独立教学重写;现代 DQN、经验回放、目标网络或策略梯度若出现,只能明确标成边界,不能倒填为 2017 年原书内容。

术语、对象与前提

  • :把环境状态转换为网络输入向量的确定规则。
  • :网络为每个合法动作给出的独立价值估计。
  • :保留未选动作预测、只替换所选动作目标的训练标签。
  • :网络预测与 TD 目标之间的差。
  • :允许探索、计算梯度并更新参数的运行阶段。
  • :冻结探索与参数,只观察策略行为的阶段。

必须先声明以下假设:

  • 输入向量与状态编号存在唯一映射
  • 输出节点次序与动作编号和合法动作集合一致
  • 目标向量先复制当前输出再替换所选动作
  • 评价阶段冻结探索和所有参数更新

实现管线

第4章:深度强化学习

把 Q 表换成网络后,怎样只训练被选动作,又不破坏其他动作当前估计和终止状态边界?

输入与状态合同

状态编号稳定映射为固定长度输入,训练与评价共用同一编码。

必须留下的证据

保存原状态、输入向量和动作输出次序。

target[:] = Q_θ(s,:); target[action] = r + (done ? 0 : γ max Q_θ(next,:))

来源边界:欧姆社公开目录核定范围;购书者示例包未下载、未缓存、未改写;本课程代码与实验独立编写。

核心机制与可复算表达

本页主张: 融合的关键是先复制当前网络输出,再只替换被选动作的 TD 目标;终止时仍必须切断未来价值。

target[:]=Qθ(s,:);target[action]=r+(done?0:γmaxQθ(next,:))target[:] = Q_θ(s,:); target[action] = r + (done ? 0 : γ max Q_θ(next,:))

这条主张只在上述四条假设下成立。若网络当前输出为 [0.2, 0.4, 0.1],选择动作一且 TD 目标为 0.7,则训练目标应为 [0.2, 0.7, 0.1],而不是三个位置都写 0.7。 验收时必须保存“状态编码、当前与下一状态输出、合法动作掩码、目标向量差异、梯度更新和评价前后参数哈希。”,否则最终奖励或损失曲线不足以排除索引、初始化、终止和评价模式错误。

正常轨迹与单故障轨迹

逐步重放

正常轨迹与失败轨迹使用同一输入合同

  1. 01把状态二编码为固定输入向量。
  2. 02网络输出三个动作的当前 Q 估计。
  3. 03复制输出并只替换实际动作的 TD 目标。
  4. 04训练一次后冻结参数,从固定初态评价。

不变量:单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。

正常轨迹要求同一输入和随机序列得到同一中间状态。故障轨迹只删除一个前提:“用一个 TD 目标覆盖全部动作输出”。两条轨迹共用其余条件,才能把首个分岔归因到该故障,而不是换了任务、模型或初值。

独立 C 实现片段

void make_target(const double prediction[], double target[],
                 int actions, int chosen, double td_target) {
    for (int a = 0; a < actions; ++a) {
        target[a] = prediction[a];
    }
    target[chosen] = td_target;
}

这段代码由本课程独立编写,只展示“第4章:深度强化学习”的最小接口,不复制官方购书者压缩包。编译时应启用告警、地址检测和未定义行为检测;运行记录包含输入尺寸、索引、旧值、新值和终止标记。

反例、适用边界与复位

反例与证据

删除一个前提,定位首个错误状态

基线可继续:单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。

复位不是只把按钮切回默认值。它必须恢复与“第4章:深度强化学习”有关的环境、随机数、表格、参数、轨迹和模式开关,并再次确认“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”。

正式目录逐项深读

第4章 深度强化学习

目录映射 1/7。 第4章 深度强化学习在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.1 融合强化学习与深度学习

目录映射 2/7。 4.1 融合强化学习与深度学习在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.1.1 把神经网络用于 Q 学习

目录映射 3/7。 4.1.1 把神经网络用于 Q 学习在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.1.2 Q 学习与神经网络的融合

目录映射 4/7。 4.1.2 Q 学习与神经网络的融合在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.2 深度强化学习的实现

目录映射 5/7。 4.2 深度强化学习的实现在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.2.1 分支迷宫深度强化学习程序 q21dl.c

目录映射 6/7。 4.2.1 分支迷宫深度强化学习程序 q21dl.c在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

4.2.2 寻找目标的深度学习程序 q22dl.c

目录映射 7/7。 4.2.2 寻找目标的深度学习程序 q22dl.c在“第4章:深度强化学习”中承担为 q21dl.c 与 q22dl.c 类程序定义网络输入、动作输出、TD 目标向量和训练评价分离。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”核对结果;不能把目录标题本身当作技术结论。

最小可重放记录

unit: 04-deep-reinforcement-learning/rlc-04-deep-reinforcement-learning
question: "把 Q 表换成网络后,怎样只训练被选动作,又不破坏其他动作当前估计和终止状态边界?"
initial_state: fixed_and_hashed
normal_trace: saved
fault: "用一个 TD 目标覆盖全部动作输出"
first_divergence: required
invariant: "单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。"
artifact: "状态编码、当前与下一状态输出、合法动作掩码、目标向量差异、梯度更新和评价前后参数哈希。"
reset: restore_environment_rng_tables_weights_trace_and_mode

这份记录把“第4章:深度强化学习”的目录坐标、输入、故障和证据绑在一起。复核者应先盲跑正常轨迹,再注入故障,最后执行恢复与复位;任何依赖隐藏操作者或上一轮状态的运行都不合格。

练习与答案

练习

问题 1: 当前输出为 [0.2, 0.4, 0.1],动作一的 TD 目标是 0.7,目标向量是什么?

问题 2: 为什么评价要比较参数哈希?

问题 3: 哪些结论不能从本章小迷宫直接推出?

本页回顾

融合的关键是先复制当前网络输出,再只替换被选动作的 TD 目标;终止时仍必须切断未来价值。 掌握“第4章:深度强化学习”的标准是:能声明假设、手算关键值、逐步解释 C 状态变化、制造一个最小反例,并证明“单次转移的目标向量只有所选动作位置允许变化,评价前后参数必须逐字节一致。”在复位后仍然成立。

名词解释

本章出现的专业名词,用大白话再讲一遍。

状态编码
把环境状态转换为网络输入向量的确定规则。
动作输出
网络为每个合法动作给出的独立价值估计。
目标向量
保留未选动作预测、只替换所选动作目标的训练标签。
函数近似误差
网络预测与 TD 目标之间的差。
训练模式
允许探索、计算梯度并更新参数的运行阶段。
评价模式
冻结探索与参数,只观察策略行为的阶段。

讨论

评论区加载中…