Vince Jiang

CSCI3230 / 课程伴读 · 本站更新

CSCI3230 L06 · Part 4/5 Summary

课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2025T1 本讲:L06,第 4 部分 / 共 5 部分 · 原件 L06-Neural-Network-Basics-2025T1.pdf(本地课件) p.71–73 定位:旧版预习材料,尚非已取得的 2026T1 L06;把表达、求导、训练三个层次接起来。 前后:上一份 Network training and validation · 下一份 ESTR: Transfer learning

结构与学习的关系

小结与阅读入口(p.71–73)

p.71 是分节页;p.72 回顾本讲结构、激活、前向、函数构造、反传、损失、学习率及 softmax;p.73 列出 CS231n、CS229 阅读入口。这一页把三篇内容连起来。它仍来自 2025T1 旧讲义,是预习路线,不代表本学期已讲进度。

第一次学习最容易把五个问题混成“神经网络自己学习”。现在逐个拆开:

问题 对应对象 你要能说出的具体含义
可以表达哪些函数? 架构与激活 几层、每层几单元、如何连接、在哪里非线性
现在表达的是哪个函数? 参数 每条边的权重和每个单元的偏置
预测好不好? 损失 比较预测与真实目标,产生一个标量
怎么改变会有帮助? 梯度与反传 每个参数微变时,损失的局部变化率
实际改变多少? 优化器与学习率 把求出的梯度转换成具体参数更新

反向传播不会自动增加隐藏单元,学习率也不是模型对某个输入的权重。 这些对象都影响训练,却做不同事情。

用同一个小网络走完整闭环

以下是补充自取,延续 反传篇 的单元。输入为 x=2x=2,目标为 y=3y=3;架构是一次乘加后接 ReLU,预测 a=ReLU(wx+b)a=\mathrm{ReLU}(wx+b)。损失选 L=12(a−y)2L=\frac12(a-y)^2,旧参数 w=1,b=0w=1,b=0,学习率 0.1。

  1. 前向算什么:z=1×2+0=2z=1\times2+0=2,ReLU 输出 2。它没有根据目标擅自把输出变成 3。
  2. 损失算什么:预测少了 1,半平方损失为 0.5。损失只评价当前结果,还没有修改参数。
  3. 反传算什么:损失对输出的导数为 −1;ReLU 在 2 的导数为 1;乘回输入 x=2,权重梯度是 −2,偏置梯度是 −1。
  4. 更新做什么:wnew=1−0.1(−2)=1.2w_{\mathrm{new}}=1-0.1(-2)=1.2,bnew=0−0.1(−1)=0.1b_{\mathrm{new}}=0-0.1(-1)=0.1。
  5. 下一次前向:预测为 1.2×2+0.1=2.51.2\times2+0.1=2.5,损失为 0.125。参数改了,计算规则仍是原来的架构。

这一次变好了,仍未学出对所有新输入都可靠的函数。单个样本不足以告诉我们真实关系;更不能因为训练时用到目标,就在测试时也把正确答案喂进前向过程。

遇到卡点,退回到具体一步

算不出前向:回到网络结构篇,先在箭头上写权重,给每个结点分清“乘加前后”。矩阵尺寸如果对不上,先查行/列向量约定,不要继续套大公式。

能前向却不会求导:回到反传篇只含加法与乘法的图。把“本地导数”与“损失传来的上游梯度”分两列;从输出往前填,每经过一段乘一次导数,分叉回合处把贡献加起来。

梯度会算但 loss 不降:回到训练篇的二次函数学习率例。先核对符号、损失是否多了 1/2 或取平均、权重是否同时更新,再考虑学习率过大、非光滑折点、模型能力等原因。不能见到 loss 上升就认定链式法则错了。

训练好、验证不好:这不是多做一次前向就能诊断。先比较数据分布、划分与标签,再考虑正则化、容量及更多有代表性的训练数据。验证 loss 高而训练 loss 未知时,不足以直接区分欠拟合与过拟合。

一页符号回忆

符号 是什么 不是哪个东西
x 输入特征向量 不是目标标签
W、b 权重与偏置 不是学习率
z 单元或层的预激活 还没经过该层激活
a、h 激活后的中间表示 不自动有类别概率含义
p 合法分类概率 不是任意原始 logit
L 按约定定义的损失标量 不是正确率本身
梯度 损失对各参数的变化率 不是参数的新值
学习率 每次更新的步幅系数 不是保证泛化的指标

各篇具体公式会说明标量或向量尺寸;这张表只帮助找回角色,不替代维度核对。

小检查:解释一处错误比背五个名词更有用

一位同学说:“我把隐藏层全部改成线性,层数增加十倍,表达能力就一定大得多;再把学习率加十倍,就能更快到最好解。”指出两个推断各缺什么。

参考答案

连续线性或仿射层可以合并成一层仿射映射,缺少非线性就不会仅凭堆层获得一般非线性表达。学习率大使步子大,也可能越过低谷而震荡或发散;训练目标通常也不保证全局最优。层数与步长都不是越大越好。

如果现在只能完整重算一个小网络,已经有清楚的起点。下一步是换一组数字重算,而不是立刻跳到巨大网络。p.74 后的迁移学习属于 ESTR 扩展,当前基础没有稳固时可以先不读。

补充 · 先让一条小样本跑通,再解释大曲线(通识讲解;演示数据不属于原题)。

排查网络训练时,可先选一条或极小一批数据,固定随机因素,记录输入形状、每层输出、标量损失、关键梯度和一次更新前后参数。若参数完全没变,先查是否有梯度、是否交给优化器、是否执行更新;若参数变了但损失方向异常,再查符号、学习率和损失缩放。

让足够灵活的模型在极小数据上拟合好,是检查实现链路的常用诊断,不能代替泛化实验;某些受限架构也未必能把这批数据完全拟合。这个诊断的价值在于把“数据太难”和“训练步骤根本没有正确执行”暂时分开。修正实现后,再恢复完整训练/验证划分,不能把调试样本的表现当最终结果。

原页p.73给出的继续阅读地址为Stanford CS231n(Convolutional Neural Networks for Visual Recognition):http://cs231n.stanford.edu/ ,以及CS229(Machine Learning):http://cs229.stanford.edu/ 。它们是该版课件的资源入口,本篇没有把访问外部课程作为完成上述计算的前提,也没有据旧链接推断当年的新安排。

补充:一次有限差分能查什么,不能查什么

自编标量计算图 E(w)=(2w−1)2/2E(w)=(2w-1)^2/2。在 w=1w=1,解析导数为 2(2w−1)=22(2w-1)=2。取小扰动 ε=0.001\varepsilon=0.001,E(1.001)=0.502002E(1.001)=0.502002,E(0.999)=0.498002E(0.999)=0.498002;中心差分为 (0.502002−0.498002)/(0.002)=2(0.502002-0.498002)/(0.002)=2,与反传相符。对有多个参数的网络,应每次只扰动一个参数,其他全部固定,比较对应梯度分量。

差分太大时测到的是较长区间的平均斜率,太小时又容易被浮点相减误差淹没;不是把扰动无限缩小就一定更准确。随机dropout、随机数据增强等若每次变化,两次损失差还混入了随机性,需要固定随机因素。ReLU折点附近不可微,也不适合据一次中心差分裁定某个约定导数错误。

这个检查能帮助发现负号、转置和漏加分支,却不能证明模型结构适合任务、数据划分正确或一般梯度公式已被证明。梯度核验、训练收敛、测试泛化是三层不同检查,不能用其中一层替代其他层。

本讲核心考点

  • 将架构、参数、预测、损失、梯度和更新分别解释(p.72)。
  • 会用一组小数据完整走前向、反向、同时更新和重新评估(补充练习)。
  • 训练目标下降不等于新样本表现好,验证用于选择,测试用于独立评估(基础概念补充)。

附录

先完成正文的小检查;无需借助额外考试题才能理解本节。

来源与证据

  • 原件:L06-Neural-Network-Basics-2025T1.pdf(本地课件);对应页区间见文件头及各节标题。本页是 2025T1 旧材料预习,不代表 2026T1 已讲进度。页码按当前 91 页 PDF,不能直接用仍标到 103 的旧页脚号。p.74 起为 ESTR3108 扩展。
  • 数字演示凡非课件原例均明确标为“补充自取”;这些例子用于理解,不是教师布置的作业。
  • 附录中的历史题面保留其文件名、年份和题号,与当前作业区分;它们不能证明本学期考试范围。正文的学习检查是通识练习,不作出题预测。