第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

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

核心机制与可复算表达

本页主张: 反向传播的可靠性来自明确尺寸、更新前权重和数值梯度检查,而不是训练轮数增加后损失下降。

zj=Σiwjixi+bj;δhidden=f(z)Σkwkjδkz_j = Σ_i w_ji x_i + b_j; δ_hidden = f'(z) Σ_k w_kj δ_k

这条主张只在上述四条假设下成立。为二输入、二隐藏单元、一输出的网络固定参数,先手算一个前向值,再对单个权重做中心有限差分;若两种梯度方向相反,立即停止训练。 验收时必须保存“层尺寸表、前向激活、输出和隐藏局部误差、更新前参数、有限差分结果与卷积窗口手算。”,否则最终奖励或损失曲线不足以排除索引、初始化、终止和评价模式错误。

正常轨迹与单故障轨迹

逐步重放

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

  1. 01固定两输入、一个隐藏层和目标输出。
  2. 02保存各层加权和与激活。
  3. 03用更新前权重传播隐藏层误差。
  4. 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 状态变化、制造一个最小反例,并证明“同一输入和参数快照必须产生相同激活与梯度;解析梯度应在容差内匹配有限差分。”在复位后仍然成立。

名词解释

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

加权和
输入乘权重并加偏置得到的激活前值。
激活函数
把加权和映射为神经元输出的非线性函数。
局部误差
损失对某层加权和的偏导。
反向传播
按链式法则从输出层向输入层传播梯度。
梯度检查
用有限差分近似与解析梯度对照。
卷积窗口
在局部输入区域复用同一组核参数的计算区域。

讨论

评论区加载中…