卷积神经网络CNNs的理解与体会

本文介绍了卷积神经网络(CNNs)的基本结构和原理,包括输入层、隐层(卷积、ReLU和池化操作)、输出层的详细解析,并探讨了ReLU激活函数的优势。此外,还讨论了CNNs在图像识别和NLP领域的应用,以及通过局部感知野和权值共享降低模型复杂度的方法。最后,提到了CNNs的可视化和参考资源。

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

孔子说过,温故而知新,时隔俩月再重看CNNs,当时不太了解的地方,又有了新的理解与体会,特此记录下来。文章图片及部分素材均来自网络,侵权请告知。

卷积神经网络(Convolutinal Neural Networks)是非常强大的一种深度神经网络,它在图片的识别分类、NLP句子分类等方面已经获得了巨大的成功,也被广泛使用于工业界,例如谷歌将它用于图片搜索、亚马逊将它用于商品推荐等。

首先给出几个CNNs应用的两个例子如下:


这里写图片描述
(1)、手写体数字识别


对象识别
(2)、对象识别 [1]


句子分类

可以看到CNNs可以被用来做许多图像与NLP的事情,且效果都很不错。那么CNNs的工作框架是什么样子呢?

这里写图片描述

由上可以看到,CNNs的输入层为原始图片,当然,在计算机中图片就是用构成像素点的多维矩阵来表示了。然后中间层包括若干层的卷积+ReLU+池化,和若干层的全连接层,这一部分是CNNs的核心,是用来对特征进行学习和组合的,最终会学到一些强特征,具体是如何学习到的会在下面给出。最后会利用中间层学到的强特征做为输入通过softmax函数来得到输出标记。

下面就针对上面给出的CNNs框架一层层进行解析。

1、输入层

输入层没有什么可讲的,就是将图片解析成由像素值表示的多维矩阵即可,如下:


图片的像素表示

通道为1也就是厚度为1的图称为灰度图,也即上图。若是由RGB表示的图片则是一个三维矩阵表示的形式,其中第三维长度为3,包含了RGB每个通道下的信息。

2、隐层

CNNs隐层与ANN相比,不仅增加了隐层的层数,而且在结构上增加了convolution卷积、ReLU线性修正单元和pooling池化的操作。其中,卷积的作用是用来过滤特征,ReLu作为CNNs中的激活函数,作用稍后再说,pooling的作用是用来降低维度并提高模型的容错性,如保证原图片的轻微扭曲旋转并不会对模型产生影响。
由于CNNs与ANN相比,模型中包含的参数多了很多,若是直接使用基于全连接的神经网络来处理,会因为参数太多而根本无法训练出来。那有没有一些方法降低模型的参数数目呢?答案就是局部感知野和权值共享,中间层的操作也就是利用这些trick来实现降低参数数目的目的。

首先解释一下什么是局部感知野 [2] :一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。

举个例子来讲就是,一个32

### 关于BP神经网络语音分类实验的心得体会 #### 实验过程概述 在BP神经网络语音分类实验中,需按照既定流程逐步推进。首先,理论准备阶段应深入研究BP神经网络的核心概念,包括但不限于激活函数的选择、优化算法的设计以及防止过拟合的技术应用[^1]。其次,在编程实践中,代码实现应当注重逻辑性和可读性,通过详尽的注释帮助他人理解程序结构和功能[^1]。 对于语音数据而言,其预处理尤为重要。通常情况下,原始音频信号会经过一系列转换操作,例如傅里叶变换提取频谱特征或者梅尔频率倒谱系数(MFCC)[^3]。随后进入特征提取环节,此步旨在减少冗余信息的同时保留关键属性用于后续分类任务。最后构建基于BP算法神经网络模型来进行训练测试评估工作流。 #### 结果分析 完成整个实验周期后,应对所得成果进行全面剖析。这不仅涉及准确率、召回率等量化指标的表现情况说明;还应该探讨影响最终成绩的各种因素——如不同参数设置下产生的差异效果对比试验结果解读等等[^1]。此外还需思考是否存在其他潜在改进空间来进一步提升系统效能。 值得注意的是,尽管BP神经网络能够有效解决某些特定类型的模式识别问题,并且随着技术进步衍生出了诸如卷积神经网络(CNNs),循环神经网络(RNNs)甚至是更先进的变体形式(例如长短时记忆单元LSTM),它们各自针对不同类型的数据有着独特优势表现[^4]。然而就传统意义上来讲,标准版BP架构仍然存在一些固有局限性值得我们关注反思。 #### 算法优缺点总结 优点方面,BP神经网络具备强大的非线性映射能力,可以逼近任意复杂的函数关系从而适用于广泛的实际应用场景之中。同时它具有较强的泛化性能,在面对未知样本时也能给出相对合理的预测输出值范围内的估计误差较小的情况较为常见。 但是也有明显的不足之处:首先是容易陷入局部极小值而导致全局最优解难以获得的风险较高;其次是收敛速度较慢尤其当网络规模较大时这个问题更加突出;再者由于缺乏透明度常被形容成“黑箱”模型使得内部运作机制不够直观明了不利于调试维护等工作开展效率低下等问题屡见不鲜[^2]。另外一点不可忽视的就是对高质量大规模标注好资料库需求量极大否则很难达到理想预期目标水平线上去竞争对抗那些专门定制设计出来的高效专用解决方案可能会处于劣势地位当中无法脱颖而出成为首选工具选项之一。 ```python import numpy as np from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense, Dropout def preprocess_data(data): """ 对语音数据进行预处理 """ processed_data = ... # 预处理逻辑 return processed_data def build_model(input_dim): model = Sequential() model.add(Dense(128, activation='relu', input_shape=(input_dim,))) model.add(Dropout(0.5)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(num_classes, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) return model X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = build_model(input_dim=X_train.shape[1]) history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test)) test_loss, test_acc = model.evaluate(X_test, y_test) print(f'Test accuracy: {test_acc}') ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值