CNN的每一层的含义

举报
林欣 发表于 2025/08/24 22:45:12 2025/08/24
【摘要】 卷积神经网络(CNN)是一种专门用于处理网格化数据(如图像、视频、音频等)的深度学习模型,其核心思想是通过局部感受野、权重共享和层次化特征提取来高效学习数据的空间特征。CNN的每一层都有特定的功能,通常包括卷积层(Convolutional Layer)、激活函数层(Activation Layer)、池化层(Pooling Layer)、**全连接层(Fully Connected Lay...

卷积神经网络(CNN)是一种专门用于处理网格化数据(如图像、视频、音频等)的深度学习模型,其核心思想是通过局部感受野权重共享层次化特征提取来高效学习数据的空间特征。CNN的每一层都有特定的功能,通常包括卷积层(Convolutional Layer)激活函数层(Activation Layer)池化层(Pooling Layer)、**全连接层(Fully Connected Layer)**等。以下是CNN各层的详细解释:


一、输入层(Input Layer)

  • 功能:接收原始数据(如图像、视频帧等)。
  • 特点
    • 输入数据的维度通常为 (高度, 宽度, 通道数)(如RGB图像为 224x224x3)。
    • 不进行任何计算,仅作为数据入口。

二、卷积层(Convolutional Layer)

  • 功能:通过卷积核(Filter/Kernel)提取输入数据的局部特征(如边缘、纹理、颜色等)。
  • 核心操作
    1. 卷积核滑动:卷积核在输入数据上按步长(Stride)滑动,计算局部区域的点积(Dot product)。
    2. 特征图生成:每个卷积核生成一个特征图(Feature Map),表示输入数据中某种特征的响应强度。
  • 关键参数
    • 卷积核大小(Kernel Size):如 3x35x5,决定感受野大小。
    • 步长(Stride):卷积核滑动的步长(如 12),影响输出尺寸。
    • 填充(Padding):在输入边缘补零(如 "same" 保持尺寸,"valid" 不填充缩小尺寸)。
    • 输出通道数(Filters):卷积核的数量(如 643x3 卷积核生成 64 个特征图)。
  • 数学表达
    [
    \text{Output}(i,j) = \sum_{m=0}^{k-1}\sum_{n=0}^{k-1} \text{Input}(i+m, j+n) \cdot \text{Kernel}(m,n) + \text{Bias}
    ]
    其中 k 为卷积核大小。
  • 示例
    • 输入:28x28x1(灰度手写数字图像)。
    • 卷积核:3x3x1(单通道),共 16 个。
    • 输出:26x26x16(假设步长为 1,无填充)。

三、激活函数层(Activation Layer)

  • 功能:引入非线性变换,使CNN能够学习复杂模式(否则仅能拟合线性函数)。
  • 常用激活函数
    • ReLU(Rectified Linear Unit)
      [
      \text{ReLU}(x) = \max(0, x)
      ]
      • 优点:计算高效,缓解梯度消失问题。
      • 缺点:可能导致“神经元死亡”(输出恒为0)。
    • Leaky ReLU
      [
      \text{LeakyReLU}(x) = \begin{cases}
      x & \text{if } x \geq 0 \
      \alpha x & \text{otherwise}
      \end{cases} \quad (\alpha \text{ 为小常数,如 } 0.01)
      ]
    • Sigmoid/Tanh
      • 适用于二分类输出层,但易导致梯度消失(不推荐用于隐藏层)。

四、池化层(Pooling Layer)

  • 功能:对特征图进行下采样(Downsampling),减少参数量和计算量,同时增强模型的平移不变性(如对物体位置的小范围变化不敏感)。
  • 常见类型
    • 最大池化(Max Pooling):取局部区域的最大值。
      [
      \text{MaxPool}® = \max_{i,j \in R} \text{Input}(i,j)
      ]
      • 优点:保留显著特征(如边缘)。
    • 平均池化(Average Pooling):取局部区域的平均值。
      [
      \text{AvgPool}® = \frac{1}{|R|}\sum_{i,j \in R} \text{Input}(i,j)
      ]
      • 优点:平滑特征,但可能丢失关键信息。
  • 关键参数
    • 池化窗口大小(Pool Size):如 2x2
    • 步长(Stride):通常等于窗口大小(如 2),避免重叠。
  • 示例
    • 输入:26x26x16(来自卷积层)。
    • 池化:2x2 最大池化,步长 2
    • 输出:13x13x16

五、全连接层(Fully Connected Layer, FC Layer)

  • 功能:将卷积层提取的分布式特征表示映射到样本的类别空间(如分类任务中的类别概率)。
  • 特点
    • 每个神经元与前一层的所有神经元相连(类似传统神经网络)。
    • 通常位于CNN的末端,用于整合全局信息。
  • 关键参数
    • 神经元数量:如 1024 个神经元对应高维特征表示。
    • 输出维度:等于类别数(如 10 对应MNIST手写数字分类)。
  • 示例
    • 输入:13x13x16 = 2704 维向量(展平后)。
    • 全连接层:2704 → 1024 → 10(输出类别概率)。

六、输出层(Output Layer)

  • 功能:生成最终预测结果(如分类概率、回归值等)。
  • 常见形式
    • 分类任务:使用 Softmax 激活函数,输出类别概率分布。
      [
      \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \quad (K \text{ 为类别数})
      ]
    • 回归任务:直接输出连续值(无激活函数或使用线性激活)。

七、其他组件(可选)

1. 批归一化层(Batch Normalization, BN)

  • 功能:对每批数据的特征进行归一化(均值为0,方差为1),加速训练并缓解梯度消失/爆炸问题。
  • 位置:通常位于卷积层或全连接层之后、激活函数之前。

2. 丢弃层(Dropout Layer)

  • 功能:随机丢弃部分神经元(如概率 p=0.5),防止过拟合。
  • 位置:通常用于全连接层之间。

3. 跳跃连接(Skip Connection)

  • 功能:将浅层特征直接传递到深层(如ResNet中的残差连接),缓解深层网络梯度消失问题。

八、典型CNN架构示例

LeNet-5(手写数字识别)为例:

  1. 输入层32x32x1(灰度图像)。
  2. 卷积层165x5 卷积核,步长 1,输出 28x28x6
  3. 平均池化层12x2 窗口,步长 2,输出 14x14x6
  4. 卷积层2165x5 卷积核,步长 1,输出 10x10x16
  5. 平均池化层22x2 窗口,步长 2,输出 5x5x16
  6. 全连接层15x5x16 = 400 → 120 个神经元。
  7. 全连接层2120 → 84 个神经元。
  8. 输出层84 → 10(Softmax分类)。

九、总结:CNN各层的作用

层类型 核心功能
输入层 接收原始数据(如图像)。
卷积层 提取局部特征(如边缘、纹理)。
激活函数层 引入非线性,增强模型表达能力。
池化层 下采样,减少参数量,增强平移不变性。
全连接层 整合全局特征,映射到类别空间。
输出层 生成最终预测结果(如分类概率)。
批归一化层 加速训练,稳定梯度。
丢弃层 防止过拟合。

通过层次化组合这些层,CNN能够自动学习从低级特征(如边缘)到高级语义(如物体类别)的复杂表示,广泛应用于图像分类、目标检测、语义分割等任务。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。