第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 目标之间的差。:网络预测与 TD 目标之间的差。
- ↡允许探索、计算梯度并更新参数的运行阶段。:允许探索、计算梯度并更新参数的运行阶段。
- ↡冻结探索与参数,只观察策略行为的阶段。:冻结探索与参数,只观察策略行为的阶段。
必须先声明以下假设:
- 输入向量与状态编号存在唯一映射
- 输出节点次序与动作编号和合法动作集合一致
- 目标向量先复制当前输出再替换所选动作
- 评价阶段冻结探索和所有参数更新
实现管线
第4章:深度强化学习
把 Q 表换成网络后,怎样只训练被选动作,又不破坏其他动作当前估计和终止状态边界?
输入与状态合同
状态编号稳定映射为固定长度输入,训练与评价共用同一编码。
必须留下的证据
保存原状态、输入向量和动作输出次序。
target[:] = Q_θ(s,:); target[action] = r + (done ? 0 : γ max Q_θ(next,:))
来源边界:欧姆社公开目录核定范围;购书者示例包未下载、未缓存、未改写;本课程代码与实验独立编写。
核心机制与可复算表达
本页主张: 融合的关键是先复制当前网络输出,再只替换被选动作的 TD 目标;终止时仍必须切断未来价值。
这条主张只在上述四条假设下成立。若网络当前输出为 [0.2, 0.4, 0.1],选择动作一且 TD 目标为 0.7,则训练目标应为 [0.2, 0.7, 0.1],而不是三个位置都写 0.7。 验收时必须保存“状态编码、当前与下一状态输出、合法动作掩码、目标向量差异、梯度更新和评价前后参数哈希。”,否则最终奖励或损失曲线不足以排除索引、初始化、终止和评价模式错误。
正常轨迹与单故障轨迹
逐步重放
正常轨迹与失败轨迹使用同一输入合同
- 01把状态二编码为固定输入向量。
- 02网络输出三个动作的当前 Q 估计。
- 03复制输出并只替换实际动作的 TD 目标。
- 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 目标之间的差。
- 训练模式
- 允许探索、计算梯度并更新参数的运行阶段。
- 评价模式
- 冻结探索与参数,只观察策略行为的阶段。