卷积神经网络全面解析
1. 早期卷积神经网络 LeNet - 5
LeNet - 5 是最早的卷积神经网络之一,在字符识别领域得到了广泛应用,许多银行使用它来读取支票。
1.1 网络结构
它有详细和简洁两种架构表示方式:
-
详细架构表示
:包含输入层(灰度像素特征图,大小为 32×32)、卷积层(C1、C3、C5)、下采样层(S2、S4)、全连接层(F6)和输出层(O)。卷积层进行卷积操作,下采样层进行下采样操作。
-
简洁架构表示
:将下采样/最大池化隐式表示为“SS”或“MP”。
1.2 输出层原理
最终层的单元将每个单元的原型与输入向量进行比较,并输出它们之间的欧几里得距离的平方。这等同于使用该径向基函数(RBF)单元所代表的高斯分布的负对数似然。RBF 单元的参数向量是手动选择的,对应于相应字符类别的 7×12 位图图像,将其展平为 84 维表示。倒数第二层的大小恰好为 84,以便计算该层对应的向量与 RBF 单元的参数向量之间的欧几里得距离。最终层的十个输出提供类别的得分,十个单元中得分最小的提供预测结果。不过,在现代卷积网络设计中,这种使用 RBF 单元的方式已过时,通常使用具有对数似然损失的 softmax 单元处理多项式标签输出。
2. 局部响应归一化
局部响应归一化是一种技巧,总是在 ReLU 层之后立即使用,有助于提高模型的泛化能力。其基本思想源于生物学原理,旨在在不同滤波器之间创建竞争。
2.1 归一化公式
-
使用所有滤波器的公式
:假设一层包含 N 个滤波器,这些 N 个滤波器在特定空间位置 (x, y) 的激活值为 a1 … aN,则每个 ai 通过以下公式转换为归一化值 bi:
[b_i = \frac{a_i}{(k + \alpha \sum_{j} a_j^2)^{\beta}}]
其中,k = 2,α = 10⁻⁴,β = 0.75。 -
使用相邻滤波器子集的公式
:实际中,并不对所有 N 个滤波器进行归一化,而是先任意对滤波器排序以定义“相邻性”,然后对每组 n 个“相邻”滤波器进行归一化(n = 5)。公式为:
[b_i = \frac{a_i}{(k + \alpha \sum_{j = i - \lfloor n/2 \rfloor}^{i + \lfloor n/2 \rfloor} a_j^2)^{\beta}}]
当 i - n/2 小于 0 时,设为 0;当 i + n/2 大于 N 时,设为 N。这种归一化方式现已过时。
3. 分层特征工程
不同层的滤波器激活情况反映了卷积神经网络的分层特征学习能力。
3.1 不同层特征特点
- 早期层 :滤波器的激活是低级特征,如边缘。因为图像颜色在边缘处发生变化,相邻像素值的差异仅在边缘处不为零,通过选择相应低级滤波器中的适当权重可以检测边缘。例如,检测水平边缘的滤波器与检测垂直边缘的滤波器不同,这与 Hubel 和 Weisel 的实验结果一致,即猫的视觉皮层中的不同神经元被不同边缘激活。
- 后期层 :将这些低级特征组合在一起。例如,中级特征可能将边缘组合成六边形,高级特征可能将中级六边形组合成蜂窝状。
3.2 特征学习的重要性
卷积神经网络的强大之处在于能够逐层将这些原始形状组合成更复杂的形状。第一层卷积层无法学习大于 F1×F1 像素的特征(F1 通常为 3 或 5 等较小数字),但后续卷积层可以将许多这些小块组合在一起,从更大的图像区域创建特征。早期层学习的原始特征以语义连贯的方式组合,以学习越来越复杂和可解释的视觉特征。学习特征的选择受反向传播如何使特征适应手头损失函数需求的影响。例如,在训练图像分类为汽车的应用中,可能学习将弧线组合成圆形,然后将圆形与其他形状组合成汽车轮子。
3.3 网络深度与特征学习
最近的 ImageNet 竞赛表明,图像识别的大部分能力在于增加网络的深度。层数不足会有效阻止网络学习图像中的分层规律,这些规律组合形成其语义相关组件。此外,学习的特征的性质对特定数据集敏感,例如识别卡车学习的特征与识别胡萝卜学习的特征不同。但像 ImageNet 这样的多样化数据集,在其上训练学习的特征在许多应用中具有通用意义。
4. 训练卷积网络
卷积神经网络的训练过程使用反向传播算法,主要涉及卷积层、ReLU 层和最大池化层。
4.1 ReLU 层和最大池化层的反向传播
- ReLU 层 :反向传播相对简单,与传统神经网络无异。
-
最大池化层
:
- 无重叠池化 :只需确定池中哪个单元是最大值(平局时可任意打破或按比例分配),损失相对于池化状态的偏导数流回具有最大值的单元,网格中除最大值条目外的所有条目都将被赋值为 0。
- 重叠池化 :设单元 h 参与的池为 P1 … Pr,下一层对应的激活值为 h1 … hr。如果 h 是池 Pi 中的最大值(即 hi = h),则损失相对于 hi 的梯度流回 h(平局时可任意打破或按比例分配)。不同重叠池(来自下一层的 h1 … hr)的贡献相加,以计算相对于单元 h 的梯度。
4.2 卷积层的反向传播
4.2.1 简单元素级方法
假设已计算出第 (i + 1) 层单元格的损失梯度。第 (i + 1) 层单元格的损失导数定义为损失函数相对于该单元格中隐藏变量的偏导数。卷积将第 i 层的激活值与滤波器元素相乘,以创建下一层的元素。因此,第 (i + 1) 层的一个单元格接收来自前一层滤波器大小为 Fi × Fi × di 的三维元素体积的聚合贡献。同时,第 i 层的单元格 c 对第 (i + 1) 层的多个元素(用集合 Sc 表示)有贡献,其贡献的元素数量取决于下一层的深度和步长。确定这个“前向集合”是反向传播的关键。单元格 c 在将其激活值与滤波器元素相乘后,以累加的方式对 Sc 中的每个元素做出贡献。因此,反向传播只需将 Sc 中每个元素的损失导数乘以相应的滤波器元素,并在 c 处反向聚合。对于第 i 层中的任何特定单元格 c,可以使用以下伪代码将第 (i + 1) 层中现有的导数反向传播到第 i 层的单元格 c:
Identify all cells Sc in layer (i + 1) to which cell c in layer i contributes;
For each cell r ∈ Sc, let δr be its (already backpropagated) loss - derivative with respect to cell r;
For each cell r ∈ Sc, let wr be weight of filter element used for contributing from cell c to r;
δc = Σr∈Sc δr · wr;
计算出损失梯度后,将这些值与第 (i - 1) 层的隐藏单元值相乘,以获得相对于第 (i - 1) 层和第 i 层之间权重的梯度。需要注意的是,滤波器中的权重在整个层的空间范围内是共享的,因此必须小心处理共享权重,将共享权重的所有副本的偏导数相加。
4.2.2 反向传播作为使用反转/转置滤波器的卷积
在传统神经网络中,反向传播操作是通过将第 (q + 1) 层的梯度向量与第 q 层和第 (q + 1) 层之间的转置权重矩阵相乘来执行的,以获得第 q 层的梯度向量。在卷积神经网络中,反向传播的导数也与层中的空间位置相关。可以通过对一层中反向传播导数的空间足迹应用类似的卷积来获得前一层的导数。
-
输入层和输出层深度都为 1 且步长为 1 的情况
:卷积滤波器在反向传播时水平和垂直反转。例如,卷积时的滤波器为 (\begin{bmatrix} c & f & a \ b & d & e \ g & h & i \end{bmatrix}),反向传播时的滤波器为 (\begin{bmatrix} g & d & i \ h & f & e \ c & b & a \end{bmatrix})。这是因为滤波器在输入体积的空间区域“移动”以执行点积,而反向传播的导数相对于输入体积,其相对于滤波器的相对运动与卷积期间滤波器的运动相反。第 (q + 1) 层的反向传播导数集与这个反转的滤波器进行卷积,以获得第 q 层的反向传播导数集。对于步长为 1 的情况,前向传播和反向传播期间的填充之和为 Fq - 1,其中 Fq 是第 q 层滤波器的边长。
-
输入层和输出层深度为任意值的情况
:需要进行额外的张量转置。第 q 层第 p 个滤波器的 (i, j, k) 位置的权重为 (W = [w_{(p,q)ijk}]),设从第 q + 1 层到第 q 层的反向传播滤波器对应的 5 维张量为 (U = [u_{(p,q + 1)ijk}]),则其条目为 (u_{(k,q + 1)rsp} = w_{(p,q)ijk}),其中 (r = Fq - i + 1),(s = Fq - j + 1)。这里,滤波器标识符的索引 p 和滤波器内的深度 k 在 W 和 U 之间进行了交换,这是一种以张量为中心的转置。
4.2.3 卷积/反向传播作为矩阵乘法
将卷积视为矩阵乘法有助于定义各种相关概念,如转置卷积、反卷积和分数卷积,不仅有助于理解反向传播,还对开发卷积自动编码器所需的机制有帮助。
- 简单情况(第 q 层和滤波器深度都为 1,步长为 1,零填充) :输入维度为 Lq × Bq × 1,输出维度为 (Lq - Fq + 1) × (Bq - Fq + 1) × 1。在空间维度为正方形(即 Lq = Bq)的常见设置中,输入的空间维度 AI = Lq × Lq,输出的空间维度 AO = (Lq - Fq + 1) × (Lq - Fq + 1)。将输入区域 AI 展平为一个 AI 维列向量 f,定义一个稀疏矩阵 C 代替滤波器,其大小为 AO × AI,每行对应 AO 个卷积位置之一的卷积。行中的每个条目对应输入矩阵中的一个 AI 位置,如果该输入位置不参与该行的卷积,则该值为 0,否则设置为用于乘法的滤波器的相应值。行中条目的顺序基于与将输入矩阵展平为 AI 维向量相同的对输入矩阵位置的空间敏感排序。由于滤波器大小通常远小于输入大小,矩阵 C 中的大多数条目为 0,滤波器的每个条目在 C 中重复 AO 次。将 C 与 f 相乘得到一个 AO 维向量,根据 C 的每行关联的空间位置,将该向量重塑为空间矩阵。
- 深度大于 1 的情况 :对每个 2 维切片应用相同的方法,并将结果相加,即聚合 (\sum_{p} C_pf_p),然后将结果重塑为 2 维矩阵。这实际上是一种张量乘法,是矩阵乘法的直接推广。在一般情况下,有多个滤波器对应多个输出映射,第 k 个滤波器将转换为稀疏矩阵 Cp,k,输出体积的第 k 个特征映射将为 (\sum_{p} C_{p,k}f_p)。
以下是卷积作为矩阵乘法的 mermaid 流程图:
graph LR
A[输入图像] --> B[展平为向量 f]
C[滤波器] --> D[转换为稀疏矩阵 C]
B --> E[矩阵相乘 C * f]
E --> F[得到向量]
F --> G[重塑为空间输出]
综上所述,卷积神经网络在图像识别等领域具有强大的能力,其结构和训练方法都有独特之处。通过理解和掌握这些知识,可以更好地应用和优化卷积神经网络。
5. 卷积神经网络的应用与优势总结
5.1 应用领域
卷积神经网络在众多领域展现出了卓越的性能,以下是一些主要的应用场景:
-
图像识别
:在 ImageNet 竞赛等相关任务中,卷积神经网络凭借其分层特征学习能力,能够准确识别图像中的各种物体。例如,可以将图像分类为汽车、卡车、胡萝卜等不同类别,通过学习不同层次的特征,从低级的边缘特征到高级的复杂形状特征,实现高精度的识别。
-
字符识别
:早期的 LeNet - 5 网络在字符识别方面得到了广泛应用,许多银行利用它来读取支票上的字符,展现了卷积神经网络在处理字符图像方面的有效性。
5.2 优势分析
卷积神经网络相较于传统的神经网络,具有以下显著优势:
|优势|说明|
| ---- | ---- |
|参数共享|滤波器的权重在整个层的空间范围内共享,大大减少了模型的参数数量,降低了计算复杂度和过拟合的风险。例如,在卷积层中,一个滤波器可以在图像的不同位置检测相同的特征。|
|局部连接|每个神经元只与输入的局部区域相连,能够捕捉图像中的局部特征,如边缘、纹理等。这种局部连接方式符合图像的局部相关性特点,提高了模型对图像特征的提取能力。|
|分层特征学习|通过不同层的滤波器激活,能够学习到从低级到高级的分层特征,逐步将原始形状组合成更复杂的形状,从而实现对图像语义信息的有效理解。|
5.3 未来发展趋势
随着技术的不断发展,卷积神经网络有望在以下方面取得进一步的突破:
-
网络深度优化
:继续探索增加网络深度的方法,以学习更复杂的图像特征,但同时需要解决梯度消失、训练时间长等问题。
-
跨领域应用拓展
:将卷积神经网络应用到更多的领域,如医学图像分析、自动驾驶、自然语言处理等,为这些领域带来新的解决方案。
-
模型轻量化
:研究如何在不损失太多性能的前提下,减少模型的参数数量和计算量,使卷积神经网络能够在资源受限的设备上运行,如移动设备、嵌入式系统等。
6. 实际操作中的注意事项
6.1 训练数据的选择
在训练卷积神经网络时,选择合适的训练数据至关重要。以下是一些选择训练数据的要点:
-
数据多样性
:确保训练数据包含各种不同的样本,以提高模型的泛化能力。例如,在图像识别任务中,训练数据应包含不同角度、光照条件、背景的图像。
-
数据标注准确性
:对于有监督学习任务,数据标注的准确性直接影响模型的训练效果。应确保标注人员具备专业知识和认真负责的态度。
-
数据规模
:一般来说,数据规模越大,模型的性能越好。但同时也要考虑计算资源和训练时间的限制,合理选择数据规模。
6.2 超参数的调整
卷积神经网络中有许多超参数需要调整,如学习率、批量大小、滤波器数量等。以下是一些调整超参数的建议:
-
学习率
:学习率决定了模型参数更新的步长。如果学习率过大,模型可能会跳过最优解;如果学习率过小,模型的训练速度会很慢。可以采用学习率衰减的方法,在训练初期使用较大的学习率,后期逐渐减小。
-
批量大小
:批量大小影响模型的训练稳定性和计算效率。较大的批量大小可以提高训练的稳定性,但会增加内存需求;较小的批量大小可以使模型更快地收敛,但可能会导致训练不稳定。
-
滤波器数量
:滤波器数量决定了模型能够学习到的特征数量。增加滤波器数量可以提高模型的表达能力,但也会增加模型的复杂度和计算量。
6.3 模型评估与优化
在训练完成后,需要对模型进行评估和优化,以确保模型的性能达到预期。以下是一些评估和优化的步骤:
1.
选择评估指标
:根据具体的任务选择合适的评估指标,如准确率、召回率、F1 值等。
2.
交叉验证
:使用交叉验证的方法,将训练数据划分为多个子集,轮流作为训练集和验证集,以评估模型的泛化能力。
3.
模型优化
:根据评估结果,对模型进行优化。可以调整超参数、增加训练数据、改进模型结构等。
以下是模型训练和优化的 mermaid 流程图:
graph LR
A[选择训练数据] --> B[划分训练集和验证集]
B --> C[初始化模型]
C --> D[设置超参数]
D --> E[训练模型]
E --> F[评估模型]
F --> G{是否满足要求}
G -- 是 --> H[使用模型进行预测]
G -- 否 --> I[调整超参数/改进模型结构]
I --> E
7. 总结与展望
卷积神经网络作为深度学习领域的重要分支,在图像识别等领域取得了巨大的成功。通过分层特征学习、参数共享和局部连接等特性,卷积神经网络能够有效地提取图像中的特征,实现高精度的识别任务。
在训练过程中,反向传播算法是核心,通过对卷积层、ReLU 层和最大池化层的反向传播,不断调整模型的参数,使模型能够适应不同的任务需求。同时,局部响应归一化等技巧可以提高模型的泛化能力。
未来,随着技术的不断进步,卷积神经网络有望在更多领域得到应用,并且在网络结构、训练方法等方面不断创新和优化。我们可以期待卷积神经网络为人工智能领域带来更多的突破和发展。
在实际应用中,我们需要根据具体的任务需求,合理选择训练数据、调整超参数,并对模型进行评估和优化,以充分发挥卷积神经网络的优势,实现更好的性能。通过不断的学习和实践,我们能够更好地掌握卷积神经网络的原理和应用,为解决实际问题提供有力的支持。
超级会员免费看
1511

被折叠的 条评论
为什么被折叠?



