卷积神经网络学习笔记(一)

本文介绍了卷积神经网络(CNNs)的基本原理和技术细节,包括反向传播算法、局部感受野、权值共享、卷积层与下采样层等概念,并详细解释了CNNs在网络结构方面的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CNNs学习笔记

一 基本原理

1) 反向传导算法
在机器学习中,给定了测试数据集后经过一个模型后得到的一个实际输出数据集,为了刻画实际值与理想值之间的关系,我们定义了一个代价函数,有时也叫损失函数:
这里写图片描述

下图为神经网络的一般模型:
这里写图片描述

前向传导即根据每个神经元的权值来推导出下一个神经元的权值。对于一个神经网络,给出输入(x,y)后我们首先要进行“前向传导”运算,计算出网络中所有的激活函数值,包括最终的输出值。
最终的结果应该是求取得到的权重参数和偏置参数而使代价函数最小。传统的神经网络一般采用“反向传导法”来求解,采用迭代的算法来训练整个网络,随机设定参数初值,计算当前网络的输出,然后根据当前输出与标准值之间的差,即代价函数,去改变前面各层的参数,直到代价函数的值达到最小。可以选择多种优化方法比如梯度下降法,每一次迭代都会对权重参数和偏置参数得到更新。这种由后向前求导的过程即为“反向传导”之意。
这里写图片描述

2) 卷积神经网络
卷积神经网络与一般的神经网络相比,具有结构简单、训练参数少喝适应性强等特点。其优点在输入是多维图像时表现更明显,使图像可以直接作为系统的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。
这里写图片描述

下面具体了解卷积神经网络。

二 卷积神经网络

1) 网络结构
网络中包含一些简单元和复杂元,分别记为S-元和C-元。S-元聚合在一起组成S-面,S-面聚合在一起组成S-层,用US表示,C元有类似的结构。一般的,US为特征提取层,每个神经元的输入与前一层的局部感受野相连,输入图像通过和滤波器进行卷积后,提取该局部的特征,一旦该局部特征被提取出来后,它与其他特征的位置关系也随之确定了下来。每一个特征提取层都紧跟着一个用来求局部平均与二次提取的计算层Uc,也是特征映射层,网络的每个计算层由多个特征映射平面组成,平面上所有神经元的权值相等。由于一个映射面上的神经元共享权值,因而减少了网路自由参数的个数,从而降低了网络参数选择的复杂度。
下图是一个7层结构的CNN。
这里写图片描述

由图可知道通过卷积层得到C层即特征提取层,;再通过下采样得到S层即特征映射层。

2) 局部感受野与权值共享
卷积神经网络核心的思想就是局部感受野local receptive fields、权值共享shared weights以及池化pooling,以达到简化网络参数并使网络具有一定程度的位移、尺度、形状不变性。
由于图像的空间联系时局部的,每一个神经元不需要对全部图像做感受,而只需感受局部图像,然后在更高层将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样我们可以减少连接的数目。而不同神经元之间的参数共享可以减少需要求解的参数。使用多种滤波器去卷积图像就会得到多种特征映射,称之为Feature Maps。

3) 卷积层与下采样层
为什么要有卷积层呢,因为通过卷积运算我们可以提取出图像的特征。
为什么要有下采样层呢,因为对图像进行子抽样,可以减少数据处理量同时保留有用信息。

这里写图片描述

卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。
所以,从一个平面到下一个平面的映射可以看作是做卷积运算,S-层可以看作是模糊滤波器,起到二次特征提取的作用。

### 卷积神经网络学习笔记及相关问题 #### 关于卷积神经网络的基础概念 卷积神经网络(Convolutional Neural Network, CNN)是种专门用于处理具有网格状拓扑的数据的深度学习模型,尤其适用于图像识别领域。CNN 的核心在于通过卷积操作提取输入数据的空间层次特征[^5]。 在卷积层中,卷积核(kernel 或 filter)通过对局部区域进行加权求和来提取特定类型的特征。这些滤波器可以检测边缘、纹理或其他模式,并生成 feature map(特征映射)。多个滤波器的组合使得 CNN 能够捕捉复杂的视觉信息[^5]。 #### 常见问题及其解决方案 1. **梯度消失或爆炸问题** 当网络变得非常深时,反向传播过程中的梯度可能会迅速缩小至接近零(即梯度消失),或者无限增大(即梯度爆炸)。这直接影响了深层网络的有效训练。 解决方案包括引入 Batch Normalization 技术以稳定中间激活值分布[^2],并采用合适的初始化方法(如 Xavier 初始化或 He 初始化)减少初始阶段的数值不稳定现象[^3]。此外,ReLU 类激活函数因其非饱和特性也常被推荐作为缓解梯度消失的种手段[^2]。 2. **退化问题** 实验表明,随着网络层数增加,即使不存在过拟合情况,也可能观察到准确率下降的现象,这种现象被称为“退化”。传统观点认为这是由于优化困难造成的,但实际上更深层次的原因可能涉及信号传递路径受阻等问题。 提出残差学习框架 (ResNet) 是应对这挑战的重要进展之。通过构建恒等短路连接(identity shortcut connection),允许较浅层直接访问来自更深位置的信息流,从而促进整个架构更加高效地收敛。 3. **参数冗余与计算成本高企** 如果设计不当的话,庞大的参数规模不仅增加了存储需求还延长了推理耗时。特别是对于那些拥有巨大尺寸的感受野却仅利用少量像素点参与运算的情况而言尤为突出。 使用较小尺度但数量众多的不同种类卷积核代替单较大范围扫描窗口能够显著削减所需调整系数数目同时保持甚至增强表现力[^4]。例如,在某些实现里采用了 1x1 卷积来进行降维操作后再接续常规大小的二维变换步骤形成瓶颈结构(bottleneck structure)步压缩内存占用量级。 4. **过拟合风险控制** 尽管 dropout 方法曾度流行用作随机失活单元防止记忆样本特性的策略,但在最新研究趋势下发现其可能导致部分重要关联丢失进而影响最终性能指标得分。因此现在更多倾向于依靠正则项约束权重范数等方式达成相同目的而不牺牲太多表达能力[^2]。 #### 示例代码片段展示如何定义简单 CNN 架构 以下是基于 PyTorch 平台搭建的个基本版本卷积神经网络实例: ```python import torch.nn as nn import torch.nn.functional as F class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() # 定义两组卷积池化序列 self.conv_layer1 = nn.Sequential( nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, padding=1), nn.BatchNorm2d(64), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2) ) self.conv_layer2 = nn.Sequential( nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1), nn.BatchNorm2d(128), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2) ) # 全连接层配置 self.fc_layers = nn.Linear(128 * 8 * 8, num_classes) def forward(self, x): out = self.conv_layer1(x) out = self.conv_layer2(out) out = out.view(out.size(0), -1) out = self.fc_layers(out) return out ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值