0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

卷积神经网络CNN的简单理论介绍

自然语言处理爱好者 来源:科皮子菊 作者:菊子皮 2020-11-27 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

好久不见各位亲们,从上半年毕业到现在各方面开始步入正常轨迹,也开始有时间写点文章了,后续开始陆续更新关于自然语言处理相关技术、论文等,感谢各位老铁这么长时间的关注和支持,我会再接再厉认真写文以飨读者,也感谢各位提出的建议,共同交流,不吝赐教,fighting!

前言

众所周知,卷积神经网络(Convolutional Neural Network, CNN)通常是被用在图像识别领域的,其实还可以应用于语音识别,文本分类等多个领域。写这篇文章主要是为了介绍TextCnn文本分类模型,当然也会详细介绍CNN的具体内容,并辅以相关的案例。当然,这里默认读者对神经网络有一定的了解和认识,如果有疑问可留言,本文也不介绍太多关于数学的内容,以便于读者理解,如有需要后期更新相关数学推导。

1 卷积神经网络简介

通常有:

数据输入层/ Input layer

卷积计算层/ CONV layer

池化层 / Pooling layer

全连接层 / FullConnect layer

输出层 / Output layer

当然也还包括神经网络常用的激活层,正则化层等。

模型训练完毕后,对图像分类的主要过程如下:

CNN处理流程

当然,我们的主要工作还是构建CNN模型以及使用相关数据进行模型训练,以使得模型能够提取数据特征进行更好的分类。下面就对各个层以及神经网络的核心模块进行介绍。

2 卷积层

卷积层是卷积神经网络的核心层,核心的处理方式就是卷积(Convolution)计算。卷积其实也就可以看成一个函数或者一种算法。这个函数则需要输入数据和卷积核,按照卷积要求进行计算。我们可以通过下面的图形简单理解一下,假设我们有一个5x5的矩阵和一个3x3的卷积核(进行卷积计算所需要的两个参数),如下:

输入矩阵和卷积核

卷积核就是从输入矩阵从左到右,从上到下进行计算,计算过程如下:

卷积计算过程

输入矩阵对应的虚线框体大小就是卷积核形状的大小,然后虚线框对应元素与卷积核中的对应元素相乘求和就得出结果4。然后虚线框向右移一个单位(后面还会用到)计算第二个值,然后再移动一个单位计算第三个值,那么第一行就计算完毕了。需要注意的是,虚线框的大小要与卷积核形状大小保持一致。同理可计算第二行,如下:

卷积计算过程2

一次类推计算出所有结果。经过卷积计算的结果就是一个3x3的矩阵。总结一句话就是移动窗口,对应值计算相加即可。

可以看出,卷积层其实是提取图像特征的过程。另外深思一下:摆在我们面前的问题有:卷积核如何确定?卷积核为啥只移动一个单位?移动过程超出边界不可以吗?

2.1 卷积核

卷积核在图像识别中也称过滤器。比较简单的过滤器有:Horizontalfilter、Verticalfilter、Sobel Filter等。这些过滤器能够检测图像的水平边缘、垂直边缘、增强图像区域权重等,这里不做细致探究。其实,过滤器的作用类似于标准(例如全连接层)的权重矩阵W,需要通过梯度下降算法反复迭代求得。而卷积神经网络的主要目的就是计算出这些卷积核。

2.2 步幅

在前面的计算中可以看出,通过向右,向下移动一个单位的卷积核大小的窗口计算得到卷积结果。其实这个卷积核大小的窗口向右,向下移动的格数(单位)成为步幅(strides),上面每次移动一格,那么对应的strides就为1。在图像处理中就是跳过像素的个数了。这个步幅也不是固定不变就是1,可结合实际场景改变。并且在移动的过程中,卷积核中的值不变是共享的。这也就大大降低了参数的数量。

2.3 填充

从上面的计算结果可以看出,输入是一个5x5的矩阵,经过卷积核计算后,输出就变成了3x3的结果。如果你想再次输入大小为5x5的矩阵怎么办?这时我们就需要对原始输入的5x5大小的矩阵做一下处理——填充(padding),在扩展区域补0。根据之前计算过程,只要向右向下各多移动两次即可得到5x5的计算结果,那么对输入矩阵补齐得到如下结果:

填充

现在结合输入矩阵大小n、卷积核大小f、padding(补0圈数)计算输出矩阵大小p、步幅大小为s,公式如下:

当然这里默认输入的数据长宽一致,如果长宽不同,则需根据具体情况具体分析。

拓展:实际中的图片是三通道的,即:RGB通道,而对于视频又会多个帧数通道。其实多通道时,每个通道对应一个卷积核即可。

2.4 激活函数

为了保证对数据非线性处理,也需要激活函数,也就是激活层的处理。其处理方式是,为卷积核的每个元素添加一个bias(偏移值),然后送入诸如relu、leakyRelu、tanh等非线性激活函数即可。

3 池化层

在经过卷积层之后,其实就可以通过全连接层后接softmax进行分类输出图片类别了,但是这个时候,数据量依然是特别大的,也就面临着巨大的计算量挑战。池化(Pooling)又称下采样,可以进一步降低网络训练参数和模型过拟合的程度。

常用的池化处理有一下几种:

最大池化(Max Pooling):选择Pooling窗口中的最大值作为采样值

均值池化(Mean Pooling):将Pooling窗口中的所有值加起来取平均,使用平均值作为采样值

全局最大(或均值)池化:取整个特征图的最大值或均值

假如我们有如下提取特征的结果值:

以及假定池化的窗口大小为2x2,步幅为1,那么几种池化过程如下:

简单池化

池化层在cnn中可用来较小尺寸,提高运算速度及减小噪声影响,让各特征更具健壮性。

4 全连接层和输出层

这部分主要连接最后池化后的结果,将池化后的数据展平构成全连接层的输入。然后就是根据类别数构建的一个分类层,也就是输出层,对于分类任务输出层则添加一个sigmoid层计算需要分类的图片各个类别的概率。对于训练任务,则使用损失函数开始反向传播更新模型中的卷积核。

总结

卷积神经网络的大致流程如此,实际中则需要灵活多变。卷积神经网络发展非常迅速,相关技术比较成熟,应用也比较广泛。比较有代表性性的模型有:

LeNet-5

AlexNet

VGG

GoogleNet

ResNet

胶囊网络

对此感兴趣的可以深入了解。下面一篇文章将结合Pytorch以及CIFAR-10数据集做一个利用卷积神经网络分类的任务,以夯实对卷积神经网络的理解以及Pytorch的熟练使用。

原文标题:【深度学习】卷积神经网络-CNN简单理论介绍

文章出处:【微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4829

    浏览量

    106832
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123926
  • cnn
    cnn
    +关注

    关注

    3

    文章

    355

    浏览量

    23251

原文标题:【深度学习】卷积神经网络-CNN简单理论介绍

文章出处:【微信号:NLP_lover,微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自动驾驶中常提的卷积神经网络是个啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是一种专门用来处理网格状数据(比如图像)的深度学习模型。
    的头像 发表于 11-19 18:15 1855次阅读
    自动驾驶中常提的<b class='flag-5'>卷积</b><b class='flag-5'>神经网络</b>是个啥?

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    CNN算法简介 我们硬件加速器的模型为Lenet-5的变型,网络粗略分共有7层,细分共有13层。包括卷积,最大池化层,激活层,扁平层,全连接层。下面是各层作用介绍
    发表于 10-29 07:49

    NMSIS神经网络库使用介绍

    (q7_t) 和 16 位整数 (q15_t)。 卷积神经网络示例: 本示例中使用的 CNN 基于来自 Caffe 的 CIFAR-10 示例。神经网络由 3 个
    发表于 10-29 06:08

    构建CNN网络模型并优化的一般化建议

    整个模型非常巨大。所以要想实现轻量级的CNN神经网络模型,首先应该避免尝试单层神经网络。 2)减少卷积核的大小:CNN
    发表于 10-28 08:02

    卷积运算分析

    的数据,故设计了ConvUnit模块实现单个感受域规模的卷积运算. 卷积运算:不同于数学当中提及到的卷积概念,CNN神经网络中的
    发表于 10-28 07:31

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    模型。 我们使用MNIST数据集,训练一个卷积神经网络CNN)模型,用于手写数字识别。一旦模型被训练并保存,就可以用于对新图像进行推理和预测。要使用生成的模型进行推理,可以按照以下步骤进行操作: 1.
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    读取。接下来需要使用扩展指令,完成神经网络的部署,此处仅对第一层卷积+池化的部署进行说明,其余层与之类似。 1.使用 Custom_Dtrans 指令,将权重数据、输入数据导入硬件加速器内。对于权重
    发表于 10-20 08:00

    卷积神经网络如何监测皮带堵料情况 #人工智能

    卷积神经网络
    jf_60804796
    发布于 :2025年07月01日 17:08:42

    自动驾驶感知系统中卷积神经网络原理的疑点分析

    背景 卷积神经网络(Convolutional Neural Networks, CNN)的核心技术主要包括以下几个方面:局部连接、权值共享、多卷积核以及池化。这些技术共同作用,使得
    的头像 发表于 04-07 09:15 659次阅读
    自动驾驶感知系统中<b class='flag-5'>卷积</b><b class='flag-5'>神经网络</b>原理的疑点分析

    BP神经网络卷积神经网络的比较

    多层。 每一层都由若干个神经元构成,神经元之间通过权重连接。信号在神经网络中是前向传播的,而误差是反向传播的。 卷积神经网络
    的头像 发表于 02-12 15:53 1347次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算
    的头像 发表于 02-12 15:18 1301次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Ba
    的头像 发表于 02-12 15:15 1364次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单神经网络神经网络由多个神经元组成,
    的头像 发表于 01-23 13:52 857次阅读

    神经网络理论研究的物理学思想介绍

    本文主要介绍神经网络理论研究的物理学思想 神经网络在当今人工智能研究和应用中发挥着不可替代的作用。它是人类在理解自我(大脑)的过程中产生的副产品,以此副产品,人类希望建造一个机器智能来实现机器文明
    的头像 发表于 01-16 11:16 1322次阅读
    <b class='flag-5'>神经网络理论</b>研究的物理学思想<b class='flag-5'>介绍</b>

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工
    的头像 发表于 01-09 10:24 2275次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法