第3章:深度学习技术
从单神经元、分层网络、反向传播到卷积,逐项保存张量尺寸、激活、局部误差和参数更新证据。
学习目标
- 能用“没有自动微分和张量框架时,怎样证明 C 数组中的每个前向值与反向梯度都对应正确的节点?”解释本页问题,并把结论限制在官方 2017 年版目录范围内
- 能逐项重建“反向传播的可靠性来自明确尺寸、更新前权重和数值梯度检查,而不是训练轮数增加后损失下降。”的输入、状态、公式与中间证据
- 能对“为二输入、二隐藏单元、一输出的网络固定参数,先手算一个前向值,再对单个权重做中心有限差分;若两种梯度方向相反,立即停止训练。”完成一次手算或逐步重放,而不是只观察最终奖励
- 能注入“用已经更新的输出层权重传播隐藏层误差”,定位首个分岔并用重置回到相同初值
为什么从这个问题开始
没有自动微分和张量框架时,怎样证明 C 数组中的每个前向值与反向梯度都对应正确的节点? 反向传播的可靠性来自明确尺寸、更新前权重和数值梯度检查,而不是训练轮数增加后损失下降。 “第3章:深度学习技术”的学习目标不是复述原书目录,而是把目录约束转成可以计算、运行、失败和复位的教学合同。为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。
先写预测:在同一初值下,如果故障“用已经更新的输出层权重传播隐藏层误差”被启用,最先变化的是输入、转移、TD 目标、激活、梯度还是评价哈希?运行后若观察不一致,应缩小结论并检查第一处差异,不能用更长训练覆盖它。
来源、版次与版权边界
欧姆社官方书页确认小高知宏著、2017 年 10 月 14 日出版、208 页、ISBN 978-4-274-22114-9,并公开四章详细目录。官方页同时声明配套压缩包仅供购书者使用;本课程没有下载、缓存或改写该压缩包,只用公开目录核定范围。
技术事实另以《Reinforcement Learning: An Introduction》作者页面和《Deep Learning》作者开放页面交叉核对。第3章:深度学习技术的中文解释、C 片段、交互、数值、反例、练习与答案均为独立教学重写;现代 DQN、经验回放、目标网络或策略梯度若出现,只能明确标成边界,不能倒填为 2017 年原书内容。
术语、对象与前提
- ↡输入乘权重并加偏置得到的激活前值。:输入乘权重并加偏置得到的激活前值。
- ↡把加权和映射为神经元输出的非线性函数。:把加权和映射为神经元输出的非线性函数。
- ↡损失对某层加权和的偏导。:损失对某层加权和的偏导。
- ↡按链式法则从输出层向输入层传播梯度。:按链式法则从输出层向输入层传播梯度。
- ↡用有限差分近似与解析梯度对照。:用有限差分近似与解析梯度对照。
- ↡在局部输入区域复用同一组核参数的计算区域。:在局部输入区域复用同一组核参数的计算区域。
必须先声明以下假设:
- 每层输入输出长度和内存布局明确
- 偏置在每个输出神经元上只加一次
- 隐藏层误差使用更新前的下一层权重
- 卷积声明步幅、边界和输出尺寸约定
实现管线
第3章:深度学习技术
没有自动微分和张量框架时,怎样证明 C 数组中的每个前向值与反向梯度都对应正确的节点?
输入与状态合同
逐层计算加权和与激活,索引顺序和层尺寸固定。
必须留下的证据
保存一个样本的每层 z、激活值和输出。
z_j = Σ_i w_ji x_i + b_j; δ_hidden = f'(z) Σ_k w_kj δ_k
来源边界:欧姆社公开目录核定范围;购书者示例包未下载、未缓存、未改写;本课程代码与实验独立编写。
核心机制与可复算表达
本页主张: 反向传播的可靠性来自明确尺寸、更新前权重和数值梯度检查,而不是训练轮数增加后损失下降。
这条主张只在上述四条假设下成立。为二输入、二隐藏单元、一输出的网络固定参数,先手算一个前向值,再对单个权重做中心有限差分;若两种梯度方向相反,立即停止训练。 验收时必须保存“层尺寸表、前向激活、输出和隐藏局部误差、更新前参数、有限差分结果与卷积窗口手算。”,否则最终奖励或损失曲线不足以排除索引、初始化、终止和评价模式错误。
正常轨迹与单故障轨迹
逐步重放
正常轨迹与失败轨迹使用同一输入合同
- 01固定两输入、一个隐藏层和目标输出。
- 02保存各层加权和与激活。
- 03用更新前权重传播隐藏层误差。
- 04统一更新参数并执行有限差分检查。
不变量:同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。
正常轨迹要求同一输入和随机序列得到同一中间状态。故障轨迹只删除一个前提:“用已经更新的输出层权重传播隐藏层误差”。两条轨迹共用其余条件,才能把首个分岔归因到该故障,而不是换了任务、模型或初值。
独立 C 实现片段
double neuron(const double input[], const double weight[],
int length, double bias) {
double sum = bias;
for (int i = 0; i < length; ++i) {
sum += input[i] * weight[i];
}
return sum > 0.0 ? sum : 0.0;
}这段代码由本课程独立编写,只展示“第3章:深度学习技术”的最小接口,不复制官方购书者压缩包。编译时应启用告警、地址检测和未定义行为检测;运行记录包含输入尺寸、索引、旧值、新值和终止标记。
反例、适用边界与复位
反例与证据
删除一个前提,定位首个错误状态
复位不是只把按钮切回默认值。它必须恢复与“第3章:深度学习技术”有关的环境、随机数、表格、参数、轨迹和模式开关,并再次确认“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”。
正式目录逐项深读
第3章 深度学习技术
目录映射 1/10。 第3章 深度学习技术在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1 实现深度学习的技术
目录映射 2/10。 3.1 实现深度学习的技术在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1.1 神经元的作用与分层神经网络
目录映射 3/10。 3.1.1 神经元的作用与分层神经网络在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1.2 分层神经网络的学习
目录映射 4/10。 3.1.2 分层神经网络的学习在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1.3 分层网络学习程序一:单神经元程序 nn1.c
目录映射 5/10。 3.1.3 分层网络学习程序一:单神经元程序 nn1.c在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1.4 分层网络学习程序二:反向传播程序 nn2.c
目录映射 6/10。 3.1.4 分层网络学习程序二:反向传播程序 nn2.c在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.1.5 分层网络学习程序三:多输出程序 nn3.c
目录映射 7/10。 3.1.5 分层网络学习程序三:多输出程序 nn3.c在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.2 使用卷积神经网络学习
目录映射 8/10。 3.2 使用卷积神经网络学习在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.2.1 卷积神经网络算法
目录映射 9/10。 3.2.1 卷积神经网络算法在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
3.2.2 卷积神经网络的实现
目录映射 10/10。 3.2.2 卷积神经网络的实现在“第3章:深度学习技术”中承担为 nn1.c、nn2.c、nn3.c 与卷积小程序建立层尺寸、索引和更新顺序的可重放合同。的一个明确节点。复核时先指出它读取的输入和允许改变的状态,再用“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”核对结果;不能把目录标题本身当作技术结论。
最小可重放记录
unit: 03-deep-learning-techniques/rlc-03-deep-learning-techniques
question: "没有自动微分和张量框架时,怎样证明 C 数组中的每个前向值与反向梯度都对应正确的节点?"
initial_state: fixed_and_hashed
normal_trace: saved
fault: "用已经更新的输出层权重传播隐藏层误差"
first_divergence: required
invariant: "同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。"
artifact: "层尺寸表、前向激活、输出和隐藏局部误差、更新前参数、有限差分结果与卷积窗口手算。"
reset: restore_environment_rng_tables_weights_trace_and_mode这份记录把“第3章:深度学习技术”的目录坐标、输入、故障和证据绑在一起。复核者应先盲跑正常轨迹,再注入故障,最后执行恢复与复位;任何依赖隐藏操作者或上一轮状态的运行都不合格。
练习与答案
练习
问题 1: 为什么隐藏层误差必须使用更新前权重?
问题 2: 中心有限差分怎样检查一个权重?
问题 3: 卷积输出尺寸必须声明哪些约定?
本页回顾
反向传播的可靠性来自明确尺寸、更新前权重和数值梯度检查,而不是训练轮数增加后损失下降。 掌握“第3章:深度学习技术”的标准是:能声明假设、手算关键值、逐步解释 C 状态变化、制造一个最小反例,并证明“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”在复位后仍然成立。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 加权和
- 输入乘权重并加偏置得到的激活前值。
- 激活函数
- 把加权和映射为神经元输出的非线性函数。
- 局部误差
- 损失对某层加权和的偏导。
- 反向传播
- 按链式法则从输出层向输入层传播梯度。
- 梯度检查
- 用有限差分近似与解析梯度对照。
- 卷积窗口
- 在局部输入区域复用同一组核参数的计算区域。