CSCI3230 L07 · Part 2/4 CNN for classification
课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2025T1 本讲:L07,第 2 部分 / 共 4 部分 · 原件 L07-Convolutional-Neural-Networks-2025T1.pdf(本地课件) p.48–63 定位:从堆叠小卷积到易于学习恒等映射的残差块。 前后:上一份 Basic concepts · 下一份 Tricks for CNN training
本文依据 2025T1 旧版材料重写,供基础学习与预习;不是 2026T1 新增要求或考试范围。补充数值例均另行标注。
架构为何这样演变
模型名与AlexNet结构(p.48–50)
基础篇回答“一个卷积怎样算”,这里回答“很多层为什么这样组织”。暂时只带着三个已有概念:卷积生成特征,池化减少空间位置,全连接生成分类得分。p.48 是分隔页,p.49 列模型名;没在后文展开的名字不需要靠猜测补全结构。
p.50 的 AlexNet 图分成五个卷积层和三个全连接层。前部不断把图像转成局部特征组合,后部把这些组合汇总成类别证据。图里双路连线来自原架构的分组设计,不能按“每层所有通道全互连”的简化版本计算原模型所有参数。
读架构图时从输入向输出做两张小表:一张记高宽通道,另一张记卷积核与偏置。只记“八层”不足以判断网络能否相接,也不能估计内存。
p.49还列GoogLeNet、SENet、Wide ResNet、ResNeXt、DenseNet、MobileNet、NASNet、EfficientNet作为后续架构名称,不要求从本页推导它们内部结构。
p.50 AlexNet原图分成两条GPU路线,五层卷积每条路线的输出通道为48、128、192、192、128;合计为96、256、384、384、256,卷积核依次11、5、3、3、3,第一层stride 4,在第1、2、5卷积后池化,最终全连接为4096→4096→1000(图的每条路线画2048)。图标输入224,而后页计算用227:这是课件两种尺寸标注的差异;不能把224在无padding、11核、stride 4下直接算成55。做计算题应先明确该题实际输入与padding。
参数规模与历史表格(p.51–52)
p.51 给输入 227×227×3、约 65 万神经元、6000 万参数、6.3 亿连接以及 4096 维末端特征。先分清三个词:激活位置是计算结果;参数是独立可学习数;连接表示某次输入到输出的依赖。同一卷积参数在不同位置重复使用,所以连接次数可以远多于参数数量。
补充自取小例:一张 5×5 单通道图,用一个3×3核无填充输出3×3。九个输出每个读九个输入,共81次权重乘法,但核只有9个权重与1个偏置。计算量与储存参数量不能混为一谈。
读 p.52 表时先固定年份、验证/测试、单网/集成、Top-1/Top-5。把多个网络的预测结合叫集成,不能把集成成绩当成单个网络的成绩。下面保留原表记录:
p.52左表ILSVRC2010测试:Sparse coding Top-1/Top-5错误47.1/28.2%,SIFT+FVs45.7/25.7%,CNN37.5/17.0%。右表2012列依次Top-1验证、Top-5验证、Top-5测试:
| 模型 | Top-1 val | Top-5 val | Top-5 test |
|---|---|---|---|
| SIFT+FVs | — | — | 26.2% |
| 1 CNN | 40.7% | 18.2% | — |
| 5 CNNs | 38.1% | 16.4% | 16.4% |
| 1 CNN* | 39.0% | 16.6% | — |
| 7 CNNs* | 36.7% | 15.4% | 15.3% |
星号表示额外ImageNet2011预训练。比较要固定数据、指标与是否集成;Top-5错误允许前五猜中一个,因此通常低于Top-1错误。
VGG的小核堆叠(p.53–55)
VGG 问的是:能否反复用简单的小核,把感受范围逐渐扩大?p.53 提出深度问题,p.54 使用3×3核、填充保尺寸、2×2步长2池化,并逐步增加通道。
先沿一条轴想:第一层一个输出看原图连续3格;第二层一个输出读第一层连续3格,这三格各自又看原图3格,合起来覆盖连续5格。二维同理,两层步长1的3×3卷积有5×5的有效感受野。中间加ReLU后,它并不等价于单个线性5×5卷积,因为多了一次非线性处理。
补充自取计算:假设输入、中间、输出通道都为 ,忽略偏置,两层小核参数为 ;一个5×5核层为 。取 ,分别是288与400。前者在这个条件下参数更少;若中间通道改得很宽,结论就不能直接照搬。
padding1使每个3×3卷积不缩小高宽,池化再专门负责减半。把“提取特征”和“降低分辨率”分开,尺寸更好追踪。更多层与更多通道都可能增加成本,也不能保证训练更好。
p.55 历史错误率完整记录如下(%);OverFeat单网Top-1验证为 35.7,旧笔记34.7据原图纠正。破折号表示该表未报告,不是0。
| 模型 | Top-1 val | Top-5 val | Top-5 test |
|---|---|---|---|
| VGG 2 nets | 23.7 | 6.8 | 6.8 |
| VGG 1 net | 24.4 | 7.1 | 7.0 |
| VGG submission 7 nets | 24.7 | 7.5 | 7.3 |
| GoogLeNet 1 net | — | — | 7.9 |
| GoogLeNet 7 nets | — | — | 6.7 |
| MSRA 11 nets | — | — | 8.1 |
| MSRA 1 net | 27.9 | 9.1 | 9.1 |
| Clarifai multiple nets | — | — | 11.7 |
| Clarifai 1 net | — | — | 12.5 |
| Zeiler & Fergus 6 nets | 36.0 | 14.7 | 14.8 |
| Zeiler & Fergus 1 net | 37.5 | 16.0 | 16.1 |
| OverFeat 7 nets | 34.0 | 13.2 | 13.6 |
| OverFeat 1 net | 35.7 | 14.2 | — |
| Krizhevsky 5 nets | 38.1 | 16.4 | 16.4 |
| Krizhevsky 1 net | 40.7 | 18.2 | — |
p.54两种VGG结构的差别可逐块复原:五块通道数均为64、128、256、512、512;VGG16每块卷积层数为2、2、3、3、3,VGG19为2、2、4、4、4。各卷积为3×3并接ReLU,各块后池化,最后是4096→4096→1000的全连接和softmax。16/19计的是有参数层,并不把每个池化或激活另算一层。p.55结果表限定不使用外部训练数据,原文另讨论多裁剪与密集评估;比较时这些测试条件也是结果的一部分。
补充:感受野要连同步长一起递推
自编一维尺寸推演,二维的高宽分别照做。记 为一个输出覆盖的原输入范围长度, 为相邻输出中心在原输入上的间距。初始 。经过核宽 、步长 、dilation=1的层,新的范围为 ,间距为 。理由是该层用到 个旧位置,它们的最远中心相隔 ,再加上一个旧位置本来覆盖的长度。
先经过3宽、步长1卷积:;再经过2宽、步长2池化:;再经过3宽、步长1卷积:。最后一层核宽只有3,却对应原输入8个位置的理论范围。若只把核宽简单相加,就会漏掉池化造成的间距变化。
这里算理论感受野,不保证范围内每个像素对具体输出都有同样强的影响;ReLU门、权重数值、边界padding都会影响实际贡献。padding还会移动中心位置并引入非真实像素,输出尺寸、中心位置、理论感受野是有关联但不同的三笔账。
更深却训练更差:优化退化(p.56–58)【新】
现在出现反直觉现象:p.56 深的普通网络连训练集错误率也更高。过拟合通常指训练很好、未见数据较差;这里训练本身就更难,所以不能一句“过拟合”解释。
p.57 的思想实验是:把已经不错的浅网复制进深网,额外层若只原样传递信息,至少可以保留浅网结果。因此“深网有能力表示那个解”和“优化器能轻松找到那个解”不是一回事。
p.58 改变需要学习的任务。设输入向量 有 个分量,想得到同维输出 。普通支路要直接学 ;残差支路只学变化量 ,再把输入加回来:
不是误差标签,也不是 loss;它是网络分支算出的修正量。补充自取 ,目标变化为 ,则输出为 。如果此处无需改变表示,让 就能传回 ,不必让复杂支路重新学习复制全部输入。
再看一维反向传播(补充推导):,损失为 。由加法求导、链式法则,
括号的1来自直接跳接。这给梯度一条直接路径,但不是“永不消失”的保证,例如两项也可能抵消。向量时对应单位矩阵加分支雅可比;不熟悉雅可比只需先掌握一维解释。
相加要求两支形状一致。若输入宽度或通道变了,需投影或其他匹配方法;拼接则会增加通道,与这里相加不是同一操作。p.58 图还在相加后接ReLU,严格读图时不要把该激活漏掉。
p.57明确说这一退化现象不大可能仅由梯度消失解释:初始化与归一化已经让这些深网络能开始收敛,但更深普通网络仍有较高训练误差。残差连接针对的是恒等映射更容易表达这一优化问题,不是证明所有训练故障都由同一因素造成。
残差网络图与实验曲线(p.59–61)
图(p.59):plain net与ResNet并列。 元素:右图有跨越若干层的弧线,在后端汇合;左图只能逐层往下走。 看什么:跳接允许原输入与支路输出逐元素相加;弧线不是新增一份分类结果投票。
p.60 是特定图像识别基准的历史柱状图,错误率依次28.2、25.8、16.4、11.7、7.3、6.7、3.6%。图中“超过人类5.1%”只在引用的基准与评测约定内成立,不等于机器在所有视觉任务上超过所有人。
p.61 左右都用CIFAR10,普通深网训练较困难,而残差深网在该实验里训练与测试错误更低。读曲线先查横轴训练步数、纵轴错误率和实虚线含义,再比较同一类曲线。它支持“该结构帮助该设置的优化”,不是任意增加深度都必然提升的定理。
补充 · 残差通路怎样影响梯度,也有什么不能保证(通识讲解;演示数据不属于原题)。
残差块写作 ,其中两个分支必须形状相同。对输入求导时,两条路径相加:。单位矩阵 来自直接传递输入的那条路,它给梯度提供一个不必完全穿过复杂子层的项。
演示标量 ,块的导数为1.1;若没有直连而只用 ,导数为0.1。连续多层的乘积行为会很不同,因此直连有助于优化。但若 ,两路导数相加反而为0。这说明残差连接不是“梯度永不消失”的数学保证;它提供有用的结构与优化条件,最终行为仍取决于权重、激活及训练。
p.59的ResNet-34从7×7、64通道、stride 2卷积和池化开始,四阶段通道为64、128、256、512,分别含3、4、6、3个两卷积残差块。阶段切换时空间下采样,末尾平均池化→1000类全连接。实线捷径表示尺寸一致,虚线表示需要处理尺寸/通道变化,不能不加处理地把不同形状张量相加。
p.60历史ImageNet图的数值如下(误差越低越好,属于该版课件历史比较):
| 年份与模型 | 图中错误率 | 图中深度 |
|---|---|---|
| 2010 Lin | 28.2% | 浅层 |
| 2011 Sánchez与Perronnin | 25.8% | 浅层 |
| 2012 AlexNet | 16.4% | 8 |
| 2013 ZF | 11.7% | 8 |
| 2014 VGG | 7.3% | 19 |
| 2014 GoogLeNet | 6.7% | 22 |
| 2015 ResNet | 3.6% | 152 |
旁边面板列MSRA在2015年的五项第一名,并将ImageNet检测、定位及COCO检测、分割相对第二名的改善标为16%、27%、11%、12%。这些保留原图的“相对改善”表述,不应改写成错误率下降相同的百分点。
p.61 CIFAR图用实线表示test error、虚线表示train error,横轴迭代次数以 为单位;普通网络比较20、32、44、56层,残差网络还包括110层。普通网络加深后变差、残差网络加深后改善才是要读出的对照关系。
精度也有计算成本(p.62–63)
p.62 用ImageNet继续比较18/34层,p.63 把准确率与资源放在一起。右图横轴运算量、纵轴准确率、圆大小参数规模。向上通常更准,向右计算更重,圆更大表示存储参数更多。没有一条轴能替其他轴做决定。
补充自取决策例:若A准确率90%、每图10毫秒,B准确率91%、每图100毫秒,给手机实时处理的选择可能与离线科研不同。这里数字只说明权衡,不是本课模型实测。还有峰值激活内存、输入尺寸、硬件等因素,所以参数少也不自动等于时延短。
小检查:训练误差也随加深而变高,应优先只讨论泛化,还是检查优化?
参考答案
先检查优化问题。训练数据本身没拟合好,不能只用“在未见数据上过拟合”解释。残差连接的动机之一就是让额外深度更容易学习可用映射。
历年问答与作业CNN实验见附录 A1。
p.62 ImageNet实验对照18层与34层:普通34层的训练误差比18层高,而残差34层优于残差18层。p.63成本图的横轴计算量约0–40 Gops,纵轴top-1准确率约50%–80%,圆面积表示参数规模,图例从约5M到155M;标出AlexNet、BN-AlexNet、BN-NIN、ENet、GoogLeNet、VGG16/19、ResNet18/34/50/101/152及Inception v3/v4。因而同样高的准确率仍需比较计算与存储,不能只按圆心高度选择。图没有列出每个圆的精确原始数据,以上范围用于读图而非代替测量。
本讲核心考点
- CNN局部连接、共享参数适合图像结构(p.50–54,A 级:2023/2024 卷CNN优势问答)。
- 残差相加、恒等路径与优化退化(p.56–59,A 级:2023 卷 Part II Q5、2024 卷 Part II Q1)。
附录
A1 作业/往年题演练(非讲义内容):概念解释与实验题
题面(ESTR-Final-Exam-2023T1.pdf · Part II Q5 · p.5;2024T1 Part II Q1 p.6 同题)
p.5 5. Why CNNs can obtain higher accuracy than traditional methods for image recognition? What is the network architecture design as shown in the illustration? Describe why it can benefit the training of very deep neural networks. (5%)
图(题面,p.5):残差块。 元素:输入 一路经过 weight layer、ReLU、weight layer 得 ;另一路 identity 跳接到加法点,再经过 ReLU。 看什么:两路径在激活前相加,输出是 经激活,而不是拼接特征。2024 的图与此结构一致。
2023卷 p.5 Part II Q5、2024卷 p.6 Part II Q1,A 级。题面: 解释CNN相比普通网络处理图像的优势,并说明ResNet的残差块为什么有用。回答先落到局部连接保留空间邻域、跨位置共享核减少独立参数并复用模式;再写y=F(x)+x,使新增层可通过F≈0保留已有表示,直接路径帮助梯度传播,缓解plain深网的优化退化。不能只说“更深准确率更高”,课件恰以更深plain训练更差引入问题。
题面(HW03-2025T1-题目.pdf · Q3 · p.3–4)
p.3 3. Consider a Convolutional Neural Network (CNN) for binary classification as the following: The goal of this task is to build a CNN that can accurately classify images of cats and dogs. The model need to learn about how to differentiate between the two categories based on the visual features present in the images. Dataset You are provided with a dataset organized into two folders for both training and testing datasets (download from link: https://drive.google.com/file/d/181sBYBP_J9Z3S7PDvaIXQiFC-xKmOUhE/view?usp=sharing): cat/: Contains images of cats, named as "1.jpg", "2.jpg", etc. dog/: Contains images of dogs, named similarly.
We have prepared the q3_code.py to help you to build the model and complete the training. You are required to write the following code (Finish the q3_code.py. You can change any hyper-parameters and parameters to improve performance.):
(1) Model Architecture: (For [Task 1] in q3_code.py) Implement a CNN with the following architecture: Convolutional layers followed by ReLU activations and max pooling. Fully connected layers with a final output layer using a Sigmoid activation function for binary classification. (2) Training: (For [Task 2] in q3_code.py) Train the model using binary cross-entropy loss and the Adam optimizer. Monitor the training loss and adjust hyper-parameters as needed. (3) Evaluation: (For [Task 3] in q3_code.py) Evaluation on test set for each epoch.
Once you have completed the above code, you should provide the following results. (30%) (1) First, plot how the training loss changes during training stage. Explain how you design your training strategies, including key hyper-parameters. Training loss should not fluctuate drastically and should show a downward trend. (hint: In order to plot the loss, you should record the loss during the training, and provide the graph.) (10%)
(2) Plot the test accuracy for each epoch and report the final accuracy. Try to achieve a testing accuracy greater than 75%. (10%)
(3) Finally, do the following things: 1. Try to analyse your training result (Possible angles: is it a good or bad result? why? how to improve? failure case? influence of the hyper-parameters? overfitting?) 2. Then, try at least 1 more method to further improve the performance and report (e.g., change the learning rate, add suitable data augmentation). (You can choose multiple angles to answer the question, as long as one viewpoint is reasonable, you will receive full marks. If your attempts to improve the final performance fail, you can still receive full marks as long as you give a reasonable explanation for this). (10%)
下面解释可在缺少绑定数据与教师模板时完成的模型、训练和评价推理;链接是原题内容,本次未访问或下载。
HW03-2025T1-题目.pdf p.3 Q3,A 级。题面要求: 对猫狗图像构建CNN,按题目加载/预处理数据,设计卷积与池化及分类头,使用binary cross-entropy与Adam训练,评价测试表现并争取75%准确率。可核验的解题流程是固定数据分割,训练集增强,验证/测试集使用确定性预处理;逐层算尺寸,最后单logit配BCEWithLogits类损失(或sigmoid后BCE,不能重复sigmoid);每批清梯度、前向、loss、反传、更新,验证不更新权重,统计总正确数/总样本数。题面数据未在本次实际运行,不伪造训练曲线或75%结果。网络结构可不同,但输出、损失和标签必须一致。
来源与证据
- 原件:L07-Convolutional-Neural-Networks-2025T1.pdf(本地课件),p.48–63;均为当前 PDF 页号。
- 本次重写核对本篇所列讲义页码;旧版作业/试题题面如保留,属于历史练习,不代表 2026T1 考核要求。未以未公开试题推断考试内容。
- 往年卷仅证明相应年份考过;2024 卷及 2025 节选未公开的选择题不作推断。