CNN综述

本文介绍了卷积神经网络(CNN)的基本原理及其在训练过程中的关键步骤,包括向前传播与向后传播。此外,还详细描述了CNN的主要组成部分如卷积层、激活函数、池化层和全连接层等。最后,文章列举了几种经典的CNN模型,如LeNet、AlexNet、ZF-Net、GoogleNet、VGGNet和ResNet。

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

卷积神经网络(CNN:Convolutional Neural Network)

    卷积神经网络是一种特殊的多层神经网络,像其它的神经网络一样,卷积神经网络也使用一种反向传播算法来进行训练,不同之处在于网络的结构。卷积神经网络的网络连接具有局部连接、参数共享的特点。局部连接是相对于普通神经网络的全连接而言的,是指这一层的某个节点只与上一层的部分节点相连。参数共享是指一层中多个节点的连接共享相同的一组参数。局部连接、参数共享的使用使得需要训练的参数减少,计算量也相继减少,并且CNN通过增加网络层数,保全了全局的特征。

    如下图所示,传统的神经网络基本都是全连接层,节点与上一层的所有节点都相连,这就会产生大量的参数训练,也会导致过拟合的出现。而CNN通过局部相连的特性,节点只与上一层的部分节点相连,减少了参数的数量,并在一定程度上抑制了过拟合的出现。

 

 CNN的训练算法与传统的BP算法差不多。主要包括4步,这4步被分为两个阶段:

    第一阶段,向前传播阶段:

    (1)、从样本集中取一个样本,输入网络;

    (2)、计算相应的实际输出;在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常执行时执行的过程。

    第二阶段,向后传播阶段:

    (1)计算实际输出与相应的理想输出的差;

    (2)按极小化误差的方法调整权矩阵。

         这两个阶段的工作一般应受到精度要求的控制。

         网络的训练过程如下:

         1)选定训练组,从样本集中分别随机地寻求N个样本作为训练组;

         2)将各权值、阈值,置成小的接近于0的随机值,并初始化精度控制参数和学习率;

         3)从训练组中取一个输入模式加到网络,并给出它的目标输出向量;

         4)计算出中间层输出向量,计算出网络的实际输出向量;

         5)将输出向量中的元素与目标向量中的元素进行比较,计算出输出误差;对于中间层的隐单元也需要计算出误差;

         6)依次计算出各权值的调整量和阈值的调整量;

         7)调整权值和调整阈值;

         8)当经历M后,判断指标是否满足精度要求,如果不满足,则返回(3),继续迭代;如果满足就进入下一步;

        9)训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达到稳定,分类器已经形成。再一次进行训练,直接从文件导出权值和阈值进行训练,不需要进行初始化。

 

CNN主要由输入层(INPUT)、卷积层(CONV)、激活函数(RELU)、池化层(POOL)和全连接层(FC)组成。

    输入层:对输入的数据进行预处理,从而得到模型统一的格式,常用的操作有去均值、归一化、PCA/白化等。

    卷积层:卷积是对图像和滤波矩阵做内积的操作,即为加权叠加,卷积层用来进行特征提取。

    激活函数:激活函数可以帮助我们引入非线性因素,使得我们的神经网络能够更好的解决较为复杂的问题,常见的激活函数有sigmod函数、tanh函数、ReLU函数、ELU函数、PReLU函数等。

    池化层:对输入的特征图像进行压缩,使得特征图像变小,简化网络的计算复杂度,并对图像进行特征压缩,提取主要特征信息。即对输入的图像做降采样,常用的池化方法为求最大值、平均值、中位数等。

    全连接层:链接所有的特征,经输出值送给分类器(如softmax分类器)。

 

经典的CNN:

    LeNet(1998年):最早用于数字识别的CNN。这个网络是大量神经网络架构的起点,给这个领域带来了很多灵感。

 

    AlexNet(2012年):它可以算是LeNet的一种更深更宽的版本,包含了几个比较新的技术点,首次在CNN中成功应用了ReLU、Dropout和LRN等Trick,同时AlexNet也使用了GPU进行运算加速。AlexNet可以说是神经网络在低谷期后的第一次发声,确立了深度学习(深度卷积网络)在计算机视觉的统治地位,同时也推动了深度学习在语音识别、自然语言处理、强化学习等领域的拓展。

    ZF-Net(2013年):相对于AlexNet进行了微调,使用了ReLU激活函数、交叉熵代价函数,使用较小的filter以保留更多的原始像素信息。

    GoogleNet(2014年):VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3*3)和最大池化尺寸(2*2)。VGGNet的拓展性很强,迁移到其他图片数据上的泛化性非常好,到目前为止,VGGNet依然经常被用来提取图像特征。

    VGGNet(2014年):

    ResNet(2015年):。ResNet 有着简单的思路:供给两个连续卷积层的输出,并分流(bypassing)输入进入下一层。

                     

           真正需要的,不是一场说走就走的旅行,而是回归自我的修行;

             真正需要的,不是一个叫西藏的涤荡灵魂的地方,而是心中的信仰。

### 关于卷积神经网络(CNN)的综述性论文 卷积神经网络(CNN)作为深度学习领域的重要组成部分,已经在多个应用中取得了显著成果。对于希望深入了解 CNN 的研究者来说,阅读高质量的综述性论文是非常重要的。以下是几个推荐的方向以及相关内容: #### 综述性论文推荐 1. **LeCun et al., 2015**: Yann LeCun 和他的团队发表的一篇经典文章《Deep Learning》提供了对深度学习的整体概述,其中包括了 CNN 的发展历程及其在计算机视觉中的广泛应用[^2]。这篇论文不仅涵盖了 CNN 的基本原理,还讨论了其与其他深度学习架构的关系。 2. **Goodfellow et al., 2016**: Ian Goodfellow 等人在他们的著作《Deep Learning Book》中专门有一章介绍了卷积神经网络的设计原则、优化技巧以及实际应用场景[^3]。这本书被认为是理解深度学习理论和技术的基础读物之一。 3. **Krizhevsky et al., 2012**: 虽然这不是一篇严格意义上的综述文章,但 AlexNet 论文展示了如何利用 GPU 加速大规模 CNN 模型训练,并开启了现代 CNN 架构的研究热潮[^4]。它为后续的工作奠定了基础。 4. **Szegedy et al., 2015 & He et al., 2016**: 这两篇文章分别描述了 Inception v3 和 ResNet 结构,代表了当时最先进的 CNN 设计理念。它们强调通过增加网络深度和宽度来提升性能的同时保持计算效率[^5]。 5. **Chollet, 2017**: François Chollet 提出了 Keras 库背后的思想,并在其书《Deep Learning with Python》里讲解了许多有关构建高效 CNN 实践案例的知识点[^6]。这对于初学者理解和动手实践非常友好。 #### 技术细节补充说明 - 卷积操作允许模型自动提取空间层次特征而不需手动定义规则; - 权重共享机制减少了参数数量从而防止过拟合现象发生; - 使用池化层可以帮助降低维度大小进而减少内存消耗并提高泛化能力; - 非线性激活函数如ReLU能够加速梯度下降过程达到更快收敛效果。 以上提到的内容均来源于权威资料或知名科研项目成果总结而成。 ```python import tensorflow as tf from tensorflow.keras import layers model = tf.keras.Sequential([ layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), layers.MaxPooling2D((2, 2)), layers.Flatten(), layers.Dense(10) ]) ``` 上述代码片段展示了一个简单的 CNN 构建流程,适用于 MNIST 数据集分类任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值