思考卷积神经网络(CNN)中各种意义

原文:https://blog.youkuaiyun.com/aimreant/article/details/53145063

思考卷积神经网络(CNN)中各种意义

只是知道CNN是不够,我们需要对其进行解剖,继而分析不同部件存在的意义

CNN的目的

简单来说,CNN的目的是以一定的模型对事物进行特征提取,而后根据特征对该事物进行分类、识别、预测或决策等。在这个过程里,最重要的步骤在于特征提取,即如何提取到能最大程度区分事物的特征。如果提取的特征无法将不同的事物进行划分,那么该特征提取步骤将毫无意义。而实现这个伟大的模型的,是对CNN进行迭代训练。

特征

在图像中(举个例子),目标事物的特征主要体现在像素与像素之间的关系。比如说,我们能区分一张图片中有一条直线,是因为直线上的像素与直线外邻像素的区别足够大(或直线两边的像素区别足够大),以至于这“直线”能被识别出来:

直线上的像素与直线外邻像素的区别足够大

直线两边的像素区别足够大

除了直线外,其他特征也同理。在CNN中,大部分特征提取依赖于卷积运算。

卷积与特征提取

卷积在此其实就是内积,步骤很简单,就是根据多个一定的权重(即卷积核),对一个块的像素进行内积运算,其输出就是提取的特征之一:

选用卷积的原因

局部感知

简单来说,卷积核的大小一般小于输入图像的大小(如果等于则是全连接),因此卷积提取出的特征会更多地关注局部 —— 这很符合日常我们接触到的图像处理。而每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。

参数共享

参数共享最大的作用莫过于很大限度地减少运算量了。

多核

一般我们都不会只用一个卷积核对输入图像进行过滤,因为一个核的参数是固定的,其提取的特征也会单一化。这就有点像是我们平时如何客观看待事物,必须要从多个角度分析事物,这样才能尽可能地避免对该事物产生偏见。我们也需要多个卷积核对输入图像进行卷积。

Down-Pooling

卷积后再接上一个池化层(Pooling)简直就是绝配,能很好的聚合特征、降维来减少运算量。

多层卷积

层数越高,提取到的特征就越全局化。

池化

池化,即对一块数据进行抽样或聚合,例如选择该区域的最大值(或平均值)取代该区域:

上图的池化例子,将10 * 10的区域池化层1 * 1的区域,这样使数据的敏感度大大降低,同时也在保留数据信息的基础上降低了数据的计算复杂度。

激活函数的意义

在数学上,激活函数的作用就是将输入数据映射到0到1上(tanh是映射-1到+1上)。至于映射的原因,除了对数据进行正则化外,大概是控制数据,使其只在一定的范围内。当然也有另外细节作用,例如Sigmoid(tanh)中,能在激活的时候,更关注数据在零(或中心点)前后的细小变化,而忽略数据在极端时的变化,例如ReLU还有避免梯度消失的作用。通常,Sigmoid(tanh)多用于全连接层,而ReLU多用于卷积层。

或者我们换一个卷积核(换一种角度)来看待这个激活函数,如果我们把每一次激活动作当成一次分类,即对输入数据分成两类(0或1),那么激活函数得到的输出是在0到1的值,它可以代表着这次“分类”的归属度。如果我们把0规定为未激活,1表示激活,那么输出0.44就表示激活了44%。

而激活函数的使用却有可能带来一定的负面影响(对于训练的负面影响),激活函数可能会使我们得输入数据都激活了大半,对此我们有另外的对策 —— LRN。

LRN的催化与抑制

LRN,局部响应归一化。在神经学科中,有一个叫横向抑制(lateral inhibition)的概念,这种抑制的作用就是阻止兴奋神经元向邻近神经元传播其动作趋势,从而减少兴奋神经元的邻近神经元的激活程度。借鉴了这一生物现象(其实我们全部东西都是借鉴生物的,不是?),我们使用LRN层来对激活函数的输出数据进行横向抑制,在为激活函数收拾残局的同时,LRN还凸显了该区域的一个峰值 —— 这个峰值特征就是我们想要的特征。

特别是ReLU,它无限制的激活使得我们更需要LRN来到数据进行归一化。在大规模的数据中,我们大多情况下更看重被凸显的高频特征。因此,用LRN对数据的峰值进行催化而对其周围进行抑制,何乐不为。

IP层

BP神经网络中d的全连接层

在许多CNN的后部分,都存在着一个IP(Inner Product)层/内积层/fc(full connect)层/全连接层。这个全连接网络的代表性层级,其存在于CNN的意义我不得而知。在许多论文中,它替代了softmax来特征负责最终的提取,而有人也指出CNN最后可以不用IP层。

Dropout的舍弃

舍弃一直是一个伟大的哲学,生物的进化上例子比比皆是。Dropout的任务就是在训练时,通过设置阈值并与某些隐含层节点的权重对比,让特定的权重不工作 —— 在该层舍弃这些权重。Dropout的作用也很明显,除了加速运算外,就是防止过拟合了。

转载于:https://www.cnblogs.com/Ph-one/p/9074431.html

### 基于卷积神经网络的手写数字识别课设参考文献 以下内容为关于卷积神经网络CNN)在手写数字识别中的应用及其相关参考文献的详细说明。 #### 1. 深度学习与卷积神经网络的背景 深度学习通过构建多层神经网络来自动学习特征表示,其中卷积神经网络CNNs)在图像处理领域取得了巨大成功。CNNs能够通过卷积、池化等操作从原始图像中提取出具有层次结构和局部响应性的特征,如纹理、边缘、形状等,从而显著提高了图像分类、目标检测和人脸识别等任务的性能[^1]。 #### 2. 卷积神经网络在手写数字识别中的应用 手写数字识别是深度学习领域中的经典任务之一,通常使用 MNIST 数据集进行训练和测试。基于 CNN 的手写数字识别系统能够实现低成本、快速高效的图像识别效果,具有重要的现实意义和研究价值[^2]。 #### 3. MATLAB 神经网络工具箱的功能与应用 MATLAB 神经网络工具箱提供了丰富的功能用于构建、训练和模拟神经网络。它支持多种类型的神经网络结构,如前向神经网络、反向传播神经网络等,并包含多种训练算法,如标准反向传播算法和 Levenberg-Marquardt 算法,这些工具可以帮助用户优化神经网络模型[^3]。 #### 4. 教学设计与实践 在《深度学习》课程中,卷积神经网络的原理与实践教学设计方案通常采用小组合作学习的方式,让学生通过团队协作完成任务。例如,在手写数字识别的实际应用场景中,引导学生思考如何解决传统神经网络在处理图像数据时存在的问题,如参数过多、难以提取局部特征等,从而引出 CNN 的概念[^4]。 #### 5. 数据预处理与可视化 在实际项目中,数据预处理和可视化是非常重要的步骤。例如,在处理汉字或数字的 GNT 格式数据时,可以使用 Python 编写脚本来读取并解析文件,同时生成可视化结果以便更好地理解数据特性[^5]。 ```python import numpy as np import struct import os def read_gnt_dir(gnt_dir): def one_file(f): header_size = 10 while True: header = np.fromfile(f, dtype='uint8', count=header_size) if not header.size: break sample_size = header[0] + (header[1] << 8) + (header[2] << 16) + (header[3] << 24) tagcode = header[5] + (header[4] << 8) width = header[6] + (header[7] << 8) height = header[8] + (header[9] << 8) try: image = np.fromfile(f, dtype='uint8', count=width * height).reshape((height, width)) except: print(struct.pack('>H', tagcode).decode('gb2312')) yield image, tagcode for file_name in os.listdir(gnt_dir): if file_name.endswith('.gnt'): file_path = os.path.join(gnt_dir, file_name) with open(file_path, 'rb') as f: for image, tagcode in one_file(f): yield image, tagcode ``` #### 参考文献示例 以下是可用于课设的参考文献格式: 1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). *Deep Learning*. MIT Press. 2. LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. *Proceedings of the IEEE*. 3. Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. *Advances in Neural Information Processing Systems*.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值