第8章:卷积网络与迁移学习——从尺寸计算到模型选择
本章目录
把一张图片摊平成长向量后,当然可以交给 MLP。但图像变大时,全连接参数会迅速增加,而且图像中的局部结构与重复模式没有被显式利用。卷积神经网络(convolutional neural network,CNN)通过局部连接和共享卷积核提取特征,再进行分类。本章最重要的计算是三件事:输出有多大、参数有多少、卷积与池化具体算出了什么。[NN4 pp.2–10]
1. 为什么图像不适合只靠大规模全连接
一张 的 RGB 图像有 个输入数值。如果第一隐藏层有 个全连接神经元,则连接权重有 个,再加 个偏置。换成 的图片,第一层就有 个连接权重。课件这组数字只计算连接权重;若题目问“含偏置的可学习参数”,答案应再加 。[NN4 pp.2–4]
CNN 的关键不是把每一个像素都连到每一个神经元,而是用小窗口观察局部区域,并把同一套卷积核权重用于不同位置。一个滤波器(filter / kernel)在每个位置产生一个响应;全部位置的响应组成一张特征图(feature map),多个滤波器形成多个输出通道。这里的通道深度和网络有多少层是不同概念。[NN4 pp.5–11]
2. 卷积计算需要记住的五个量
对本课讨论的普通二维卷积,记输入空间尺寸为 ,输入通道数为 ;卷积核空间尺寸为 ;每一侧对称补零为 ;步幅为 ;滤波器数为 。每个滤波器覆盖全部输入通道,因此单个滤波器尺寸为 。[NN4 pp.8、11–14]
无空洞、按标准有效窗口计算时:
完整输出为 。课件用方形情形写作 ;上式补出向下取整,表示只计算窗口完全落入补零后输入的起始位置。若题目另外规定输出对齐或 padding 方式,应按题目约定计算。[NN4 pp.12–14;向下取整为标准窗口计数的展开]
步幅 stride 控制每次移动多少格;padding 在边缘补零。对于奇数核、步幅 ,取 可以保持空间尺寸。例如 。但不能简单记成“有 padding 就一定尺寸不变”,步幅及补零数量都必须一起检查。[NN4 pp.12–14;保持尺寸条件由公式推出]
含每个输出通道一个偏置时,参数数目为:
参数数目不乘输出位置数量,因为同一滤波器在各位置共享权重;计算量则仍与输出位置数量相关。“参数少”与“计算量小”有关,但不是同一个计数问题。[基于 NN4 pp.8–11 的共享滤波器结构推导]
算例1:尺寸、偏置和共享权重一次算清(教学例)
输入为 ,使用 16 个 滤波器,步幅 、补零 。
第一步,算空间大小:
第二步,输出通道等于滤波器数量,故完整输出为 。
第三步,一个滤波器有 个连接权重,再加一个偏置;16 个滤波器共有 个参数。虽然输出含 个数值,参数仍是 个,不能把两者混淆。[基于 NN4 pp.8–14 的教学例]
若改为不补零、步幅 ,输出空间为 ,完整输出为 ,参数仍为 。改变滑动位置数量不会改变核里的参数数量。[同例变式]
3. 卷积核真正做了什么
在每个位置,把窗口和滤波器对应元素相乘再求和,多通道时还需要对通道求和,最后加偏置。下面采用课件所描述的“滑动点积”约定,即不翻转卷积核;数学上常称互相关(cross-correlation),深度学习中通常也称卷积。若一道信号处理题明确要求数学卷积,则应先检查是否需要翻核,不能默默混用。[NN4 pp.8–11;术语区分为运算约定说明]
算例2:手算一张特征图(教学例)
输入与卷积核如下,步幅 、无补零、偏置 :
输出尺寸为
若随后应用 ReLU,
卷积先产生带正负号的线性响应,ReLU 再把负值置零。二者是不同步骤,不能在点积尚未求和时把各个负乘积提前删掉。[卷积依据 NN4 pp.8–11;ReLU 依据 NN2 p.11;数值为教学例]
4. 池化:压缩空间,不混合通道
池化(pooling)在小窗口内取最大值、平均值或总和,用于下采样。常见最大池化、平均池化本身没有要训练的权重,通常逐通道独立操作,不改变通道数量。窗口可以重叠,也可以不重叠;是否重叠取决于窗口大小和步幅。[NN4 pp.15–16]
算例3:同一输入的 max 与 average pooling
给定一张特征图:
使用
两者都由
5. 串起整张网络,再算参数
flatten 只是把特征图排成向量;全连接层再用矩阵进行映射。如果池化后尺寸为
算例4:一条可完整核对的分类流水线(教学例)
采用以下结构:
| 层 | 配置 | 输出形状 | 含偏置参数 |
|---|---|---|---|
| 输入 | RGB 图像 | 0 | |
| 卷积1 | 1216 | ||
| 池化1 | max, |
0 | |
| 卷积2 | 4640 | ||
| 池化2 | max, |
0 | |
| flatten | 展平 | 0 | |
| 全连接 | 10 个输出 | 20490 |
第二卷积层每个核跨越 16 个输入通道,故参数为
课程还介绍 LeNet、AlexNet、VGG 和 ResNet。复习时应抓住每种结构的代表性思想:LeNet 展示卷积与下采样交替;AlexNet 讨论 ReLU、max pooling 与 dropout;VGG 使用重复的小卷积核;ResNet 引入恒等捷径连接。经典模型有多个版本,参数数目不应脱离课件所指版本来背。[NN4 pp.20–29]
普通 max/average pooling 没有可学习参数,但 NN4 p.21 对历史 LeNet 下采样层的描述包含可训练缩放与偏置;这与本章算例采用的普通 max pooling 不是同一运算。遇到历史架构计参数题,应以题目具体定义为准。[NN4 pp.15–16、21]
6. CNN 仍然用梯度训练
卷积核也是参数,训练仍依赖梯度下降。NN4 以小批量平均梯度、动量和权重衰减说明 CNN 的更新:
这里
例如某个标量权重为
更新后
7. 迁移学习:转移什么,何时转移,怎样转移
迁移学习(transfer learning)把源任务中学到的表示用于目标任务。CNN 的较早层常提取边缘、颜色等较通用特征,较后层往往更贴近源任务类别。固定特征提取(fixed feature extractor)冻结骨干网络,只训练新的分类器;微调(fine-tuning)除了替换分类头,也更新部分或全部预训练层。[NN4 pp.31–36]
课件用目标数据量与源目标相似性组成四种情况:
| 目标数据 | 与源任务关系 | 课内建议的起点 | 核心理由 |
|---|---|---|---|
| 少 | 相似 | 冻结特征网络,训练新分类器 | 特征较相关,控制过拟合 |
| 少 | 差异较大 | 尝试较早层特征,再训练分类器 | 后层可能过于源任务专用 |
| 多 | 相似 | 可微调更多层或全网络 | 数据较充足,允许适应目标任务 |
| 多 | 差异较大 | 比较预训练初始化后微调与从头训练 | 数据支持更大幅度调整 |
这是 NN4 给出的经验起点,不是四条必然最优的定理。是否发生负迁移(negative transfer),应在目标任务的独立评价数据上比较;不能只因“用了预训练模型”就断言效果更好。[NN4 pp.33–39]
一个具体的参数练习:若冻结后的特征向量长度是
8. 与课内练习及考试复习的连接
当前给定的 Tutorial-NN1–3 分别围绕分类概念、阈值网络和感知机训练,没有独立 CNN tutorial。不能把本章自设矩阵误写成原 tutorial 题。本章对应的真实课内计算练习是 NN4 pp.21–23 的 LeNet 尺寸链:
再到 84 和 10 维全连接输出。读者应能逐层解释每次变化。[NN4 pp.21–23;TN1–TN3]
复习时可把题目分成四类能力:手算滑动点积与池化;逐层追踪形状;区分连接权重、偏置、输出元素与可训练参数;根据数据量与任务相似性解释迁移策略。是否为某一年的正式考题,以本系列考试章节对原卷的逐题核对为准;本章不据课件存在就推断“必考”。[依据 NN4 课程内容整理的复习路径]
9. 自测与答案
题1。 输入
答案: 输出
题2。 输入
答案: 输出
题3。 输入通道从3增加到6,卷积核空间尺寸与滤波器数不变,输出通道会加倍吗?
答案: 不会,输出通道仍等于滤波器数;每个核的输入深度加倍,连接权重数加倍,偏置数量不变。
题4。 五分类头接收512维冻结特征,为什么“只训练2565个参数”不等于“整个网络只有2565个参数”?
答案: 冻结骨干的参数仍用于前向计算,只是不在该阶段更新。
本章资料
- NN4:
EE4285-NN4.pdf,CNN 与迁移学习主资料。 - NN2:
EE4285-NN2.pdf,ReLU 定义见 PDF p.11。 - TN1–TN3:
Tutorial-NN1.pdf、Tutorial-NN2.pdf、Tutorial-NN3.pdf,用于界定课内练习范围。
- 感谢你赐予我前进的力量

