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

关于卷积神经网络(CNN)的入门学习报告

关于卷积神经网络(CNN)的入门学习报告

在观看了B站上关于卷积神经网络的系列教学视频后,我对CNN的基本原理和核心组件有了初步的认识。
一、 核心动机:解决全连接网络处理图像时的困境
首先,为什么要用CNN?传统的全连接神经网络在处理图像时几乎是不可行的。一张100x100x3(RGB三通道)的图片,展平后输入层就有3万个节点。如果下一层有1000个神经元,仅这一层就需要3000万个权重参数。这会导致:

  1. 参数爆炸:计算量巨大,难以训练。
  2. 过拟合:模型过于复杂,容易记住训练集噪声,而非学习本质规律。
  3. 无视空间结构:将图片展平破坏了像素间的空间关系(相邻像素、局部图案等)。

CNN的提出,正是为了有效地、有针对性地解决上述问题。

二、 核心组件与工作原理**

1. 卷积层 - 特征提取的核心

卷积层是CNN的灵魂,其核心操作是卷积运算

  • 卷积核:本质上是一个小的权重矩阵(例如3x3, 5x5)。你可以把它理解为一个特征探测器。不同的卷积核用于检测不同的低级特征(如边缘、角点)或高级特征(如纹理、图案)。
  • 局部感知:卷积核不是在整张图像上操作,而是在一个局部感受野(即卷积核大小的区域)上进行滑动。这符合图像的先验知识:重要的信息往往存在于局部区域(如边缘是由相邻像素的差异构成的)。
  • 权值共享:同一个卷积核在图像的所有区域上共享相同的权重参数。这意味着,无论这个检测“竖直边缘”的卷积核滑动到图像的左上角还是右下角,它都用同样的方式去检测竖直边缘。这极大地减少了参数数量。一个3x3的卷积核只有9个参数(加上偏置共10个),无论图像多大。
  • 滑动与特征图:卷积核以一定的步长在输入数据上从左至右、从上至下滑动。在每一个位置,进行点乘求和并加上偏置,生成特征图上的一个点。特征图记录了原始输入中该卷积核所探测特征的响应强度分布。

2. 激活函数 - 引入非线性

在卷积运算之后,通常会立即应用一个激活函数,如ReLU。这是为了给网络引入非线性变换。如果没有激活函数,无论多少层网络,其整体仍然是一个线性模型,无法拟合复杂的真实世界数据。ReLU简单高效,其公式为 f(x) = max(0, x),它将所有负值置零,正值保留。

3. 池化层 - 降维与保持平移不变性

池化层通常紧跟在卷积+激活层之后,其主要作用是下采样

  • 操作:在一个局部区域(如2x2窗口)内,选取一个代表值。最常用的是最大池化,即取该窗口内的最大值。
  • 作用
    1. 降低维度:减少特征图的大小,从而显著减少后续层的计算量和参数数量。
    2. 防止过拟合:通过降低维度,间接减少了参数,增强了模型的泛化能力。
    3. 保持平移不变性:即使目标在图像中发生微小平移,由于池化选取的是局部区域的最大值,只要该特征还在池化窗口内,输出就不会改变。这使得网络对目标位置的变化不那么敏感。

4. 全连接层 - 分类决策

在经过多次“卷积-激活-池化”的堆叠后,网络最终会将学习到的高级特征图展平,送入一个或多个全连接层

  • 作用:全连接层的作用是整合从前面层级中提取到的分布式特征,并映射到最终的样本标签空间。
  • 输出层:最后一个全连接层通常使用 Softmax 激活函数,将其输出转化为每个类别的概率分布。例如,对于一个10分类问题,Softmax层会输出10个概率值,总和为1,概率最高的类别即为模型的预测结果。

三、 一个简化的流程总结

以图像分类为例,一个典型的CNN流程可以概括为:

输入图片 -> [卷积 -> ReLU -> 池化] x N -> 展平 -> 全连接层 -> Softmax -> 输出类别概率

其中,[卷积 -> ReLU -> 池化] 模块可以重复多次,层数越深,提取的特征越抽象、越全局。

我的学习心得与疑问

通过这次学习,我认识到CNN并非一个神秘的黑箱,其设计思想(局部感知、权值共享、层次化特征提取)具有极强的工程美感,是专门为处理图像这类网格化数据而量身定制的。

目前我理解上的主要难点和下一步需要弄懂的地方在于:

  1. 反向传播是如何在卷积层和池化层中具体实现的? 权重和偏置是如何被更新的?
  2. 除了最大池化,平均池化等其他池化方式有何优劣?
  3. 现代经典网络结构(如ResNet, VGG)是如何通过堆叠这些基础模块来实现卓越性能的?

总而言之,这次入门学习为我打开了计算机视觉领域的一扇大门,让我对深度学习的威力有了更具体、更深刻的认识。接下来,我计划通过动手实践,用代码(如PyTorch或TensorFlow)搭建一个简单的CNN模型,来进一步巩固这些理论知识。

http://www.jsqmd.com/news/14985/

相关文章:

  • 【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南
  • 10月16日日记
  • mongoDB体验
  • 云服务器上部署 EasyTier中转服务器
  • 问世界
  • 为 .NET 10 GC(DATAS)做准备
  • 实用指南:Kotlin协程 vs Java虚拟线程:从Continuation挂起到ForkJoin调度,解锁现代并发新范式
  • LLM学习记录DAY3
  • 你的程序为何卡顿?从LINUX I/O三大模式寻找答案
  • 黄景行电脑软件
  • 开源许可协议 gpl vs mit?
  • 二进制警报器
  • 题解:P8019 [ONTAK2015] OR-XOR
  • DP 思维好题(转载)
  • 万字长文详述单据引擎原理、流程、单据管理 - 智慧园区
  • 常见问题处理 --- win卡任务栏 设置无法打开 桌面重启
  • python sse的是什么?
  • idea代码阿里格式化
  • windows 链接共享打印机出现错误0x00000709?打印机0x0000011b错误?0x0000bcd、0x00000709、0x00000011b
  • 解码Linux文件IO目录检索与文件属性
  • p66实验题
  • 20251016
  • C# - 串口助手
  • 虚拟线程的pinned问题终于被jdk25完美解决了
  • 077_尚硅谷_单分支基本使用
  • 【比赛记录】2025NOIP 冲刺模拟赛合集I
  • 12 继承--instanceof和类型转换
  • C0214 拔树游戏 题解
  • CSDN Markdown 编辑器快捷键大全 - 实践
  • 使用SpringBoot+MyBatisPlus实现增删改查