当前位置: 首页 > news >正文

深度学习与神经网络学习笔记 —— 卷积神经网络(CNN)基础

课程内容:卷积神经网络基础、卷积与池化、PyTorch、LeNet、AlexNet、VGG、ResNet


一、卷积神经网络的提出背景与基本思想

传统全连接神经网络在处理图像时存在一个非常严重的问题:参数数量过于庞大。课程中提到,如果输入是一张 (1000 \times 1000) 的图像,而隐藏层拥有100万个神经元,那么参数规模将达到:

10^6 \times 10^6 = 10^{12}

即万亿级参数。

如此庞大的参数量会导致:

  • 计算复杂度极高

  • 模型训练速度缓慢

  • 内存消耗巨大

  • 极易出现过拟合

因此,传统神经网络并不适合直接处理高维图像数据。

课程中指出,人类视觉系统在观察物体时,并不是一次性理解整个图像,而是通过“局部到整体”的方式逐层提取特征。

卷积神经网络(CNN)正是借鉴了这种思想,其核心包括:

  • 局部连接

  • 权值共享

  • 多层特征提取

其中“局部连接”意味着神经元只关注图像中的局部区域,而不是整张图像;“权值共享”则表示同一个卷积核在整张图像中重复使用,从而大幅减少参数数量。

CNN 的整体结构通常如下:

Input ↓ Conv ↓ Pooling ↓ Conv ↓ Pooling ↓ FC ↓ Softmax ↓ Output

随着网络不断加深,通常会呈现一种规律:

  • 图像宽高逐渐减小

  • 特征通道数量逐渐增加

课程中也专门总结了这一特征变化规律。


二、卷积运算、Padding 与 Pooling 的核心原理

卷积(Convolution)是 CNN 中最重要的操作,其本质是:

使用卷积核在图像上滑动并提取局部特征。

卷积层前向传播公式为:

a^l(x,y)=f\left(\sum_{u=0}^{p}\sum_{v=0}^{q}a^{l-1}(x+u,y+v)w^{l,k}(u,v)+b\right)

其中:

  • (a^{l-1}):上一层输入特征图

  • (w):卷积核参数

  • (b):偏置项

  • (f):激活函数

卷积运算实际上是:

  1. 对应元素相乘

  2. 对结果求和

  3. 经过激活函数输出

卷积层输出尺寸通常满足:

n_{out}=\frac{n+2p-f}{s}+1

其中:

  • (n):输入尺寸

  • (p):Padding

  • (f):卷积核大小

  • (s):Stride

Padding(填充)的作用是避免图像尺寸过快缩小。课程中提到了零填充等方式。

Stride(步长)则决定卷积核每次滑动距离。

步长越大:

  • 输出尺寸越小

  • 计算量越低

  • 特征损失越明显

此外,CNN 还会使用池化(Pooling)进行降采样。课程中将其定义为:

使用局部统计特征解决特征过多问题。

常见池化包括:

最大池化(Max Pooling)

y=\max(x_1,x_2,\dots,x_n)

其特点是保留最显著特征。

平均池化(Average Pooling)

y=\frac{1}{n}\sum_{i=1}^{n}x_i

其特点是让特征更加平滑。

池化层能够:

  • 减少参数数量

  • 降低计算复杂度

  • 提高鲁棒性

  • 抑制过拟合


三、CNN 的误差反向传播与激活函数

卷积神经网络除了前向传播外,还需要通过 BP(反向传播)更新参数。

课程中给出了 CNN 的 BP 推导过程。

输出层误差可表示为:

\delta_i^L=f'(z_i^L)e_i

对于卷积层,误差传播公式为:

\delta^{l,k}(x,y)=\sum_{j=1}^{c^{l+1}}w^{l+1,kj}\ast\delta^{l+1,j}(x,y)\cdot f'(z^{l,k}(x,y))

权值更新公式:

\Delta w=\alpha\sum_x\sum_y\delta(x,y)a(x+u,y+v)

其中:

  • (\delta):误差项

  • (\alpha):学习率

  • (a):输入特征图

这些公式说明 CNN 本质上仍然属于神经网络,只是其连接方式更加适合图像处理。

激活函数则负责引入非线性能力。

早期网络(如 LeNet)大量使用:

  • Sigmoid

  • tanh

Sigmoid 函数:

\sigma(x)=\frac{1}{1+e^{-x}}

tanh 函数:

tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

但这两种函数在深层网络中容易产生梯度消失问题。

因此 AlexNet 开始大量使用 ReLU:

f(x)=\max(0,x)

ReLU 的优势包括:

  • 收敛速度快

  • 计算简单

  • 梯度传播稳定

因此成为现代 CNN 中最常用的激活函数。


四、经典 CNN 网络结构分析

LeNet-5 是 CNN 历史上最经典的网络之一。课程中详细介绍了其结构。

LeNet-5 的结构如下:

Input ↓ C1 ↓ S2 ↓ C3 ↓ S4 ↓ C5 ↓ F6 ↓ Output

其特点包括:

  • 使用平均池化

  • 使用 Sigmoid/tanh

  • 网络层数较浅

  • 参数量约为6万

LeNet 的成功奠定了整个 CNN 发展的基础。

2012 年,AlexNet 在 ImageNet 比赛中取得突破性成绩,标志着深度学习时代正式到来。课程中总结了 AlexNet 的主要改进:

  • 使用 ReLU 激活函数

  • 使用 Max Pooling

  • 使用 Dropout

  • 使用数据增强

  • 使用 GPU 并行训练

其中 Dropout 的思想是:

训练过程中随机关闭部分神经元。

数学表达为:

y=r\cdot x,\quad r\sim Bernoulli(p)

这可以有效防止神经元之间过度依赖,从而减轻过拟合。

随后提出的 VGG-16 网络进一步加深了网络层数。课程中指出:

  • VGG 参数量约1.38亿

  • 结构非常规整

  • 大量采用 (3\times3) 卷积核

两个 (3\times3) 卷积可以获得接近 (5\times5) 的感受野:

3+3-1=5

但参数量明显更少,因此网络表达能力更强。


五、ResNet 与深层网络的发展

随着网络不断加深,一个核心问题逐渐显现:

梯度消失(Vanishing Gradient)

课程中分析了普通深层网络存在的问题。

在 BP 过程中,梯度会不断连乘:

\frac{\partial L}{\partial x}=\frac{\partial L}{\partial y_n}\prod_{i=1}^{n}\frac{\partial y_i}{\partial y_{i-1}}

如果每层梯度都小于1,那么随着层数增加,梯度会迅速趋近于0。

为了解决这一问题,ResNet 引入了残差结构。课程中给出的核心思想为:

H(x)=F(x)+x

即:

  • (x):原始输入

  • (F(x)):卷积学习结果

  • (H(x)):最终输出

这种“跳跃连接”可以让浅层信息直接传递到深层。

反向传播时:

\frac{\partial H}{\partial x}=\frac{\partial F}{\partial x}+1

即使 (\frac{\partial F}{\partial x}) 很小,也仍然存在恒等项1,从而避免梯度完全消失。

课程最后总结指出:

传统 CNN:

“卷积层 + 池化层”不断堆叠。

而残差网络:

通过跨层连接解决深层网络训练困难问题。

ResNet 的提出,使得:

  • 50层

  • 101层

  • 152层

甚至更深网络的训练成为可能,也推动了现代深度学习的发展。

http://www.cnnetsun.cn/news/2552340.html

相关文章:

  • GHelper终极指南:华硕笔记本轻量控制工具的专业使用教程
  • Unity+鸿蒙构建汽车工厂数字孪生实时监控系统
  • OllyDbg 1.10 动态调试实战:从零掌握Windows底层执行原理
  • Seraphine:英雄联盟玩家的智能游戏助手完整指南
  • Lipschitz常数与傅里叶级数在自动驾驶中的应用
  • LabVIEW 系统化入门学习路径
  • 小白带你揭秘“盒子模型”前端开发者必知的布局基石
  • Week 1:机器学习入门与核心框架
  • 《道德经》第二十章
  • 告别黑屏!手把手教你为OpenEuler 22.03 LTS安装轻量级xfce桌面(附背景图设置)
  • 机器学习记忆化:平衡隐私、鲁棒性与公平性的核心技术挑战
  • AI爬虫流量治理:从请求体语义识别AI工作流
  • 基于伊辛机与机器学习的无线网络TDMA调度优化实践
  • ReMedy框架:基于偏好学习的机器翻译评估新范式
  • RL-ARM CAN迁移至CMSIS-RTOS的实践指南
  • Windows句柄定位实战:5步精准获取HWND与跨进程控件操作
  • Seraphine:英雄联盟玩家的智能数据助手
  • Linux服务器报错libgcc_s.so.1找不到?别慌,这份应急恢复指南帮你搞定
  • 量子机器学习安全威胁全景:从硬件噪声到模型窃取
  • 基于物理信息神经网络与覆盖控制的自适应传感器布局优化
  • 机器学习校准黑洞微扰理论波形:高效生成高精度引力波模板
  • 量子机器学习对称性权衡:Twirlator工具如何量化电路开销与表达能力
  • 2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题3:文末附答案和解析)
  • 基因组分词器:用NLP思想统一基因组区间数据,赋能机器学习分析
  • 给设计师和策划的UE5数字孪生入门:不用写C++,用可视化交互快速搭建智慧城市原型
  • 量子纠缠度量与SWAP测试:从可浓缩纠缠到传感器应用
  • UE5.3 C++开发必配VS2022深度配置指南
  • Keil开发工具链更新获取与管理指南
  • 用Godot 4.2的ShapePoints库,5分钟搞定游戏UI里的进度条、血条和技能图标
  • 机器学习在糖尿病并发症预测中的应用:逻辑回归、SVM与随机森林对比实践