news 2026/5/25 19:59:36

深度学习课程学习报告week2_卷积神经网络(CNN)基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习课程学习报告week2_卷积神经网络(CNN)基础

why conv

  • 痛点:在处理高分辨率图像时,传统的多层感知机(MLP)由于缺乏对空间结构的先验假设,全连接层会导致参数量呈爆炸式增长(例如百万像素图像经过千维隐藏层会产生10910^9109级别的参数量)。这使得模型极难训练且容易过拟合。
  • 解法:卷积神经网络(CNN)利用自然图像中普遍存在的结构特征(平移不变性和局部性),通过设定特定的归纳偏置(Inductive Bias),在保持特征提取能力的同时,将网络参数量降低数个数量级。
  1. 平移不变性(Translation Invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。在数学物理层面上,这意味着特征提取器的权重在整个空间维度上是共享的,不再随绝对坐标的变化而改变。
  2. 局部性(Locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。这意味着每次特征提取仅在有限大小的感受野(Receptive Field)内进行计算。

从多层感知机(MLP)到CNN

将 MLP 演化为 CNN,本质上是依次应用上述两大原则对权重张量进行约束的过程。

1. 基础全连接层表示
假设输入图像X\mathbf{X}X和隐藏层特征H\mathbf{H}H均为二维张量。对于隐藏层位置(i,j)(i, j)(i,j)的输出,其全连接形式的加权和可以表示为(其中W\mathsf{W}W为四阶权重张量,U\mathbf{U}U为偏置):
[H]i,j=[U]i,j+∑k∑l[W]i,j,k,l[X]k,l [\mathbf{H}]_{i, j} = [\mathbf{U}]_{i, j} + \sum_k \sum_l[\mathsf{W}]_{i, j, k, l} [\mathbf{X}]_{k, l}[H]i,j=[U]i,j+kl[W]i,j,k,l[X]k,l
为方便推导,重新索引下标令k=i+ak = i+ak=i+al=j+bl = j+bl=j+b,将其转换为中心坐标加偏移量(a,b)(a, b)(a,b)的形式:
[H]i,j=[U]i,j+∑a∑b[V]i,j,a,b[X]i+a,j+b [\mathbf{H}]_{i, j} = [\mathbf{U}]_{i, j} + \sum_a \sum_b [\mathsf{V}]_{i, j, a, b} [\mathbf{X}]_{i+a, j+b}[H]i,j=[U]i,j+ab[V]i,j,a,b[X]i+a,j+b

2. 引入“平移不变性”约束
由于特征提取不依赖于绝对位置(i,j)(i, j)(i,j),权重张量V\mathsf{V}V和偏置U\mathbf{U}U中的iiijjj维度可以被消去。偏置退化为常数uuu,权重退化为二维滤波器矩阵V\mathbf{V}V。此时,全连接层转化为了二维互相关(通常称为卷积)操作:
[H]i,j=u+∑a∑b[V]a,b[X]i+a,j+b [\mathbf{H}]_{i, j} = u + \sum_a\sum_b [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}[H]i,j=u+ab[V]a,b[X]i+a,j+b

3. 引入“局部性”约束
为了只关注局部信息,我们限定偏移量(a,b)(a, b)(a,b)的范围在一个极小的窗口内,即设置阈值Δ\DeltaΔ。当∣a∣>Δ|a| > \Deltaa>Δ∣b∣>Δ|b| > \Deltab>Δ时,权重[V]a,b=0[\mathbf{V}]_{a, b} = 0[V]a,b=0。最终得到卷积层(Convolutional Layer)的严格数学定义:
[H]i,j=u+∑a=−ΔΔ∑b=−ΔΔ[V]a,b[X]i+a,j+b [\mathbf{H}]_{i, j} = u + \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Delta} [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}[H]i,j=u+a=ΔΔb=ΔΔ[V]a,b[X]i+a,j+b

补充:多通道(Channels)扩展
由于真实图像(如RGB)及深层特征图均为三维张量(通道数、高、宽),卷积层需进一步向通道维度扩展。设ccc为输入通道,ddd为输出通道,完整的卷积运算为:
[H]i,j,d=∑a=−ΔΔ∑b=−ΔΔ∑c[V]a,b,c,d[X]i+a,j+b,c [\mathsf{H}]_{i,j,d} = \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Delta} \sum_c [\mathsf{V}]_{a, b, c, d} [\mathsf{X}]_{i+a, j+b, c}[H]i,j,d=a=ΔΔb=ΔΔc[V]a,b,c,d[X]i+a,j+b,c

图像卷积

互相关运算

  • 是什么:严格来说,深度学习中绝大多数“卷积层”执行的其实是互相关运算(cross-correlation),而不是数学上严格意义的卷积运算。
  • 怎么算
    • 过程:设定一个二维的卷积窗口(即卷积核大小,如2×22 \times 22×2)。该窗口从输入张量的左上角开始,依次从左到右、从上到下滑动。
    • 局部计算:在窗口滑动的每一个位置,将窗口内的输入子张量与卷积核张量进行按元素相乘并求和,得到一个单一的标量值,这就是该位置的输出。
    • 输出维度变化:如果没有进行边界填充(Padding),由于卷积核需要完全贴合在输入张量内部滑动,输出的尺寸会略小于输入。具体公式为:(nh−kh+1)×(nw−kw+1)(n_h-k_h+1) \times (n_w-k_w+1)(nhkh+1)×(nwkw+1)

卷积层

卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出。所以,卷积层中的两个被训练的参数是卷积核权重(Weight)和标量偏置(Bias)。

卷积核

  • 如何学习
    • 虽然我们可以通过先验知识手工设计特定的卷积核(例如用[1, -1]的核去检测图像中水平相邻像素的差异,从而检测垂直边缘),但在实际的深层网络中,手动设计是不现实的。
    • 现代深度学习通过反向传播算法自动学习卷积核。过程为:随机初始化卷积核张量→\rightarrow执行前向互相关运算得到预测输出→\rightarrow比较输出与真实目标的平方误差(Loss)→\rightarrow对卷积核权重求导计算梯度→\rightarrow使用梯度下降等优化算法更新权重。最终网络会自行学习到最适合当前任务的特征提取器。

互相关与卷积

  • 如何相互变换:在数学中,要得到严格的“卷积”运算输出,需要将二维卷积核张量进行水平翻转和垂直翻转(相当于旋转180度),然后再对输入张量执行“互相关”运算。
  • 为什么深度学习不区分:由于卷积核本身是从数据中随机初始化并学习得到的,不论网络底层使用的是严格卷积还是互相关,优化算法最终学到的权重本质上是等价的(只是相差一个翻转)。为了术语的统一和计算实现的便捷,深度学习社区通常直接将“互相关运算”称为“卷积”。

特征映射和感受野

  • 特征映射 (Feature Map):卷积层的输出张量通常被称为特征映射,因为它代表了将上一层的输入在空间维度上提取特征后的新表示。
  • 感受野 (Receptive Field):对于某一层特征映射上的任意一个元素xxx,其“感受野”是指:在前向传播中,所有能够影响到xxx计算结果的原始输入区域
  • 维度关系
    • 在单层卷积中,xxx的感受野大小等于卷积核的大小(例如2×22 \times 22×2输出的 1 个像素,来源于输入层的2×22 \times 22×2个像素)。
    • 当网络变得更深(即多个卷积层叠加)时,感受野的维度会快速扩张。深层特征图上的一个像素,其感受野可能覆盖原始图像上一大块极其广阔的区域。这解释了为什么深层网络能够捕捉到更加宏观和全局的图像特征

填充与步幅

填充

为什么需要填充?

  • 防止边缘信息丢失:在互相关运算中,图像内部的像素会被卷积核多次重复扫描参与计算,而边缘像素只会被扫描极少数次(甚至只有一次)。这导致图像边缘的特征在传递过程中逐渐被边缘化甚至丢失。
  • 控制特征图的空间分辨率:在不进行填充的情况下,每次卷积操作都会导致输出尺寸减小(由n×nn \times nn×n变为(n−k+1)×(n−k+1)(n-k+1) \times (n-k+1)(nk+1)×(nk+1))。对于一个极深的网络,如果不加干预,特征图的分辨率会迅速缩减为1×11 \times 11×1,这极大地限制了网络的层数和深度。

怎么填(举例)
填充通常是在输入矩阵的四周添加值为 0 的额外行和列(即零填充)。假设我们在高度上填充php_hph行(上下各ph/2p_h/2ph/2),在宽度上填充pwp_wpw列(左右各pw/2p_w/2pw/2),输出尺寸公式更新为:
Output=(n+p−k+1) \text{Output} = (n + p - k + 1)Output=(n+pk+1)

  • 举例说明
    假设输入X\mathbf{X}X形状为3×33 \times 33×3,卷积核K\mathbf{K}K形状为3×33 \times 33×3
    • 不加填充 (p=0p=0p=0):输出尺寸为(3−3+1)×(3−3+1)=1×1(3 - 3 + 1) \times (3 - 3 + 1) = 1 \times 1(33+1)×(33+1)=1×1
    • 四周各填充 1 行/列 (p=2p=2p=2):输入变相地扩展成了5×55 \times 55×5。此时输出尺寸为(3+2−3+1)×(3+2−3+1)=3×3(3 + 2 - 3 + 1) \times (3 + 2 - 3 + 1) = 3 \times 3(3+23+1)×(3+23+1)=3×3。通过这种方式,我们成功保持了特征图的尺寸与输入完全一致。

当满足以下三个条件时:

  1. 卷积核大小为奇数(设k=2m+1k = 2m + 1k=2m+1);
  2. 所有边填充相同(即上下左右各填充p=mp = mp=m行/列,总填充量为2m2m2m);
  3. 输入与输出尺寸相同(根据公式n+2m−(2m+1)+1=nn + 2m - (2m+1) + 1 = nn+2m(2m+1)+1=n刚好成立)。

这意味着,在进行计算时,卷积核的几何中心在输入矩阵上的坐标移动轨迹,与输出矩阵的索引是完全重合的。因此,输出特征图上的每一个点Y[i,j]Y[i, j]Y[i,j],其对应感受野的绝对中心恰好就是输入图上的X[i,j]X[i, j]X[i,j]。这在语义上提供了极高的空间位置对齐性,对于目标检测中的边界框定位、图像分割以及视觉追踪任务中保持目标的绝对坐标一致性至关重要。

步幅

步幅是指卷积核每次在输入矩阵上滑动的行数和列数。默认步幅为 1。当步幅s>1s > 1s>1时,卷积窗口会跳过中间的像素进行采样。

  • 举例说明
    假设输入尺寸为7×77 \times 77×7,卷积核大小为3×33 \times 33×3,不加填充(p=0p=0p=0)。
    • 步幅s=1s=1s=1:卷积核每次向右移动 1 列。输出大小为7−31+1=5×5\frac{7 - 3}{1} + 1 = 5 \times 5173+1=5×5
    • 步幅s=2s=2s=2:卷积核每次向右直接跳过 1 列(移动 2 列,从第1列直接跳到第3列、第5列)。输出大小为⌊7−32⌋+1=3×3\lfloor\frac{7 - 3}{2}\rfloor + 1 = 3 \times 3273+1=3×3

为什么要用不同的步幅?

  • 成倍降低计算量与内存开销:当处理高分辨率的输入(如百万级像素图像)时,若步幅始终为 1,特征图下降速度极慢,会导致后续层产生海量的特征图和极高的计算负载。增大步幅可以瞬间对特征图进行空间上的稀疏抽样,大幅提高前向与反向传播的效率。
  • 快速扩大感受野(Receptive Field):大步幅意味着底层的神经元能够以更快的速度跳跃扫描,使得更浅的层就能覆盖和捕捉到原始输入中更宏观、更大尺度的全局语义特征,这对于需要兼顾实时响应和全局视野的系统非常高效。
  • 空间降采样(Downsampling):在很多现代网络架构中,大步幅的卷积常用来替代传统的池化层(Pooling),在提取特征的同时实现空间维度的缩减。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 19:59:04

MapInfo Distance Calculator 最小站间距统计教程(附 Python 替代方案)

MapInfo Distance Calculator 最小站间距统计教程(附 Python 替代方案与样例数据) 标签:5G 网络规划 MapInfo GIS 无线通信 系列:5G 网规 GIS 工具箱 第 1 篇 前言 在 5G 无线网规工作中,最小站间距统计是高频操作&a…

作者头像 李华
网站建设 2026/5/25 19:56:29

JMeter实战:把接口返回的token自动存到CSV,再用CSV数据文件设置循环调用(附完整BeanShell脚本)

JMeter自动化测试实战:Token持久化与循环调用全流程解析在性能测试和自动化测试领域,处理接口间的依赖关系是每个测试工程师都会遇到的挑战。想象一下这样的场景:你需要对系统进行压力测试,但每次请求都需要携带有效的身份验证令牌…

作者头像 李华
网站建设 2026/5/25 19:55:47

基于树莓派与Icecast2搭建私有网络电台服务器全攻略

1. 项目概述:打造一台独立的网络电台服务器最近在工作室里折腾音频设备,手头有几台老旧的CD播放器和黑胶唱机,音质其实都还不错,但它们的输出方式仅限于本地音箱。我就琢磨着,能不能让这些模拟音频信号“上网”&#x…

作者头像 李华
网站建设 2026/5/25 19:52:29

对比自行搭建与使用Taotoken聚合服务在运维复杂度上的差异

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比自行搭建与使用Taotoken聚合服务在运维复杂度上的差异 对于需要接入多个大模型服务的开发团队而言,除了业务逻辑开…

作者头像 李华