\[ \begin{align}\begin{aligned}\newcommand{\ba}{\boldsymbol{a}}
\newcommand{\bb}{\boldsymbol{b}}
\newcommand{\be}{\boldsymbol{e}}
\newcommand{\bw}{\boldsymbol{w}}
\newcommand{\bx}{\boldsymbol{x}}
\newcommand{\by}{\boldsymbol{y}}
\newcommand{\bz}{\boldsymbol{z}}
\newcommand{\bd}{\boldsymbol{d}}
\newcommand{\bv}{\boldsymbol{v}}
\newcommand{\bs}{\boldsymbol{s}}\\\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\md}{\mbox{d}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bone}{\boldsymbol{1}}
\newcommand{\trans}{^{\rm\scriptsize T}}
\newcommand{\var}{\mathrm{var}}\\\newcommand{\bA}{\boldsymbol{A}}
\newcommand{\bB}{\boldsymbol{B}}
\newcommand{\bC}{\boldsymbol{C}}
\newcommand{\bD}{\boldsymbol{D}}
\newcommand{\bG}{\boldsymbol{G}}
\newcommand{\bI}{\boldsymbol{I}}
\newcommand{\bM}{\boldsymbol{M}}
\newcommand{\bP}{\boldsymbol{P}}
\newcommand{\bS}{\boldsymbol{S}}
\newcommand{\bU}{\boldsymbol{U}}
\newcommand{\bW}{\boldsymbol{W}}
\newcommand{\bX}{\boldsymbol{X}}
\newcommand{\bY}{\boldsymbol{Y}}
\newcommand{\bZ}{\boldsymbol{Z}}
\newcommand{\cotp}{\textcolor[RGB]{48,209,88}{TP}}
\newcommand{\cotn}{\textcolor[RGB]{100,210,255}{TN}}
\newcommand{\cofp}{\textcolor[RGB]{94,92,230}{FP}}
\newcommand{\cofn}{\textcolor[RGB]{191,90,242}{FN}}\\\newcommand{\numcotp}{\textcolor[RGB]{48,209,88}{50}}
\newcommand{\numcotn}{\textcolor[RGB]{100,210,255}{30}}
\newcommand{\numcofp}{\textcolor[RGB]{94,92,230}{10}}
\newcommand{\numcofn}{\textcolor[RGB]{191,90,242}{10}}
\DeclareMathOperator*{\argmin}{arg\,min}\end{aligned}\end{align} \]
卷积神经网络
学习目标与记号
图像等规则网格数据具有局部相关性,而普通全连接层既不显式利用空间邻近关系,也会随输入分辨率迅速增加参数量。卷积神经网络以局部连接和权重共享编码这一结构先验;本章将学习卷积、池化、感受野、后向传播及代表性网络,目标是能够推导输出维度和参数量,解释平移等变性的适用边界,并用 Python 验证典型 CNN。
准确解释局部连接、权重共享与平移等变;
根据公式和张量维度分析感受野,并识别常见实现错误;
用 Python 实现或验证典型 CNN;在其他条件相同的情况下,只改变一个需要研究的因素进行比较,并根据实验结果分析该因素可能带来的影响。
本章沿用统一记号:普通小写字母表示标量,粗体小写字母表示向量,粗体大写字母表示矩阵或高阶张量;层编号写作上标 \([l]\),样本编号写作下标。对第 \(l\) 层,\(d_C^{[l]}\)、\(d_H^{[l]}\) 和 \(d_W^{[l]}\) 分别表示特征的通道数、高和宽;\(f_1^{[l]}\times f_2^{[l]}\)、\(p_1^{[l]}\times p_2^{[l]}\)、\(s_1^{[l]}\times s_2^{[l]}\) 和 \(r_1^{[l]}\times r_2^{[l]}\) 分别表示卷积核大小、填充大小、步幅和空洞率。当两个空间方向采用相同设置时,分别简写为 \(f^{[l]}\)、\(p^{[l]}\)、\(s^{[l]}\) 和 \(r^{[l]}\)。
对包含 \(n\) 张图像的批量,正文把第 \(l\) 层激活写成 \(\bA^{[l]}\in\mathbb{R}^{n\times d_C^{[l]}\times d_H^{[l]}\times d_W^{[l]}}\)。程序采用 NCHW 排列,即四个轴依次表示图像数、通道数、高和宽。第 \(l\) 层卷积核与偏置分别记为 \(\bW^{[l]}\) 和 \(\bb^{[l]}\)。本章各节的程序均应同时检查数值结果和数组维度。
核心推导与实现核验
核心关系
\[\bZ_q^{[l]}
=b_q^{[l]}+\sum_{c=1}^{d_C^{[l-1]}}
\bA_c^{[l-1]}\ast\bW_{q,c}^{[l]},\]
其中 \(q=1,\ldots,d_C^{[l]}\),符号 \(\ast\) 表示本章采用的互相关运算。每个输出通道对所有输入通道分别做互相关并求和,再加该输出通道的偏置;同一核参数在所有空间位置复用。
关键条件
忽略边界并取步幅 1 时,输入平移一个像素会使输出特征图同向平移一个像素,因此卷积近似平移等变;分类不变性还需汇聚或其他机制。
数据规模
第 \(l\) 层卷积核的维度为 \(d_C^{[l]}\times d_C^{[l-1]}\times f_1^{[l]}\times f_2^{[l]}\)。每个输出通道再配一个偏置后,该层参数总数为 \(d_C^{[l]}\bigl(d_C^{[l-1]}f_1^{[l]}f_2^{[l]}+1\bigr)\),与输入图像的高和宽无关。
常见误区
把平移等变误写成平移不变、忽略填充边界效应,或混淆数学卷积与框架互相关都会造成错误解释。
动手检查
用一批人为构造的输入记录各层 NCHW 维度、参数量以及一次后向传播得到的梯度;残差块还要检查两条分支的维度完全相同,并检查残差分支输出为 0 时的恒等映射。
数值稳定性与规模
训练损失直接接收输出层的线性运算结果;BatchNorm 统计量保持足够精度。混合精度下使用损失缩放,并对每层输出、梯度和学习率做有限性检查。
本章小结
卷积的核心是局部连接与空间位置间权重共享。
等变性不等同于分类不变性。
每一层都应核对张量维度、参数量和感受野。