当前位置: 首页 > article >正文

《深度学习》—— 卷积神经网络(CNN)的简单介绍和工作原理

文章目录

  • 一、卷积神经网络的简单介绍
  • 二、工作原理
    • 1.输入层(Input Layer)
    • 2.卷积层(Convolutional Layer)
    • 3.池化层(Pooling Layer)
    • 4.全连接层(Fully Connected Layer)
    • 5.输出层(Output Layer)
    • 6.图片理解
  • 三、卷积神经网络和传统神经网络的关系
    • 1、共同点
    • 2、区别
    • 3、关系总结

一、卷积神经网络的简单介绍

  • 基本概念
    • 定义:卷积神经网络是一种深度学习模型,通常用于图像视频语音等信号数据的分类和识别任务。其核心思想是通过卷积池化等操作来提取特征,将输入数据映射到一个高维特征空间中,再通过全连接层对特征进行分类或回归。
    • 提出者:Yann LeCun、Wei Zhang、Alexander Waibel等。
    • 提出时间:卷积神经网络的研究始于二十世纪80至90年代,最早由日本学者福岛邦彦提出的neocognitron模型启发了卷积神经网络的发展。第一个卷积神经网络是1987年由Alexander Waibel等提出的时间延迟网络(Time Delay Neural Network, TDNN)。
  • 主要特点
    • 权值共享:在卷积层中,同一个卷积核在不同位置上的权值是相同的,这样可以大大减少模型参数,提高模型泛化能力。
    • 局部连接:在卷积层中,每个卷积核只与输入数据的一部分进行卷积运算,而不是与整个输入数据进行卷积运算,这样可以提取出局部特征,增强模型的特征提取能力。
    • 平移不变性:卷积神经网络具有对输入数据平移不变性的特性,即对于输入数据的微小变化,模型能够保持稳定的输出。

二、工作原理

  • 卷积神经网络主要由输入层卷积层池化层全连接层输出层组成。这些层通过特定的运算和连接方式,共同实现了对输入数据的特征提取、降维、分类或回归等任务。

1.输入层(Input Layer)

  • 作用:输入层是CNN的第一层,负责接收输入数据。对于图像数据,输入层通常是一个多维数组(例如,二维数组表示灰度图像,三维数组表示彩色图像,其中第三维代表颜色通道)。
  • 特点:输入层的神经元数量和输入数据的维度相同
    • 例如,对于一个256x256像素的RGB彩色图像,输入层的大小将是256x256x3(宽度x高度x颜色通道数)。

2.卷积层(Convolutional Layer)

  • 作用:卷积层是CNN的核心部分,通过卷积操作提取输入数据的局部特征。
  • 组成:卷积层由多个卷积核(或称为滤波器)组成,每个卷积核负责提取输入数据的一个特定特征。卷积操作通过输入图像与卷积核(Convolution Kernel)的点积计算完成,卷积核在输入图像上滑动,每滑动一次都会计算图像局部区域与卷积核的点积结果,生成一个新的二维矩阵,即特征图(Feature Map)。
  • 参数:
    • 卷积核大小:决定了每个卷积核覆盖的输入数据区域大小。
    • 步长(Stride):卷积核在输入数据上滑动的距离。
    • 填充(Padding):在输入数据边缘添加的零值,以控制输出特征图的大小。
    • 卷积核的大小、步长和填充方式等参数会影响特征图的尺寸和特征提取的效果。卷积核的数量决定了生成特征图的数量,多个卷积核可以并行工作以提取不同类型的特征。
  • 特点:卷积层具有权值共享局部连接的特点,可以大大减少模型参数,提高模型泛化能力。
  • 下面是一个卷积核大小为3*3,步长为1的卷积核对彩色图片的三通道进行卷积的过程
    在这里插入图片描述
    • 卷积核中每个数字与各通道卷积核大小区域中对应的数字相乘再累加得到卷积后的数值,再将每个通道卷积后得到的值相加,得到最后的特征图结果
    • Bias,也称为偏置项,是CNN中每个卷积核(Filter)的可学习参数之一。它是一个标量值,与每个卷积核的输出相加,用于调整输出特征图(Feature Map)的偏移量。Bias的引入可以增加模型的非线性能力,使网络能够表示更复杂的函数,并适应更广泛的数据分布

3.池化层(Pooling Layer)

  • 作用:池化层又称为下采样层,用于在卷积操作后提取特征图中最具代表性的特征,帮助减少不必要的特征,从而减小过拟合的风险和降低数据的维度。
  • 常用操作:
    • 最大池化(Max Pooling):在每个局部区域内选择最大值作为输出。
    • 平均池化(Average Pooling):计算局部区域内的平均值作为输出。
  • 参数:池化窗口大小步长决定了池化操作的力度
    • 与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数
  • 通常来说,CNN的卷积层之间都会周期性地插入池化层
  • 下图是一个窗口大小为2*2,步长为2的最大池化过程
    在这里插入图片描述

4.全连接层(Fully Connected Layer)

  • 作用:全连接层通常位于CNN的末端,负责将前面层提取的特征综合起来,用于分类或回归等任务。
  • 特点:全连接层的每个神经元都与前一层的所有神经元相连,通过加权求和和激活函数等操作,将特征图中的信息整合为更高层次的特征表示。

5.输出层(Output Layer)

  • 输出层是CNN的最后一层,负责输出最终的分类结果或回归值。在分类任务中,输出层通常使用softmax函数将全连接层的输出转换为概率分布,表示输入数据属于各个类别的概率。

6.图片理解

  • 结合下面两张图片对卷积神经网络的整体过程进行理解
    在这里插入图片描述
    在这里插入图片描述

三、卷积神经网络和传统神经网络的关系

1、共同点

  • 基础构成:两者都是由具有可学习的权重和偏置的神经元组成,通过神经元之间的连接形成网络结构。
  • 学习方式:都通过反向传播算法(Backpropagation)来训练网络,调整权重和偏置以最小化误差。

2、区别

  • 1.网络结构
    • 传统神经网络:通常由输入层、若干隐藏层和输出层组成,层与层之间采用全连接(Full Connected)方式,即每个神经元都与前一层的所有神经元相连。
    • 卷积神经网络:除了包含输入层、隐藏层和输出层外,还特别引入了卷积层和池化层。卷积层通过卷积核在输入数据上滑动进行特征提取,池化层则对特征图进行下采样以减小数据维度和复杂度。
  • 2.运算方式
    • 传统神经网络:主要使用矩阵乘法进行运算,输入和权重矩阵相乘后通过激活函数得到输出。
    • 卷积神经网络:在卷积层中,使用卷积运算(Convolution)替代传统的矩阵乘法,通过卷积核在输入数据上滑动并进行点积运算来提取特征。这种局部连接和权值共享的策略大大降低了网络的复杂度和参数量。
  • 3.输入数据维度
    • 传统神经网络:输入通常是一维数据,如向量或数组。
    • 卷积神经网络:输入通常是多维数据,特别是图像数据,如二维的像素网格或三维的RGB图像数据。
  • 4.特征提取能力
    • 传统神经网络:在处理图像等复杂数据时,需要手动设计特征提取器,并将提取的特征作为输入。
    • 卷积神经网络:能够自动从原始数据中学习并提取特征,通过多层卷积和池化操作,逐层抽象出更高层次的特征表示。
  • 5.应用场景
    • 传统神经网络:广泛应用于分类、回归等任务,但在处理图像、视频等具有网格结构的数据时效果有限。
    • 卷积神经网络:特别适用于图像识别、目标检测、图像分割等任务,在视频分析、医学图像处理等领域也取得了显著成果。

3、关系总结

卷积神经网络是在传统神经网络的基础上发展而来的一种特殊类型的神经网络,它继承了传统神经网络的基本框架和学习方式,但针对图像等具有网格结构的数据进行了优化和改进。通过引入卷积层和池化层等结构,卷积神经网络在特征提取、参数共享和计算效率等方面表现出色,成为深度学习领域处理图像数据的重要工具。因此,可以说卷积神经网络是传统神经网络在图像处理领域的一种重要发展和应用


http://www.kler.cn/news/324693.html

相关文章:

  • 【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密
  • 大数据新视界 --大数据大厂之Cassandra 分布式数据库在大数据中的应用与调优
  • ansible实用模块
  • CSS网格布局
  • 【JS】forEach中push为何不会陷入死循环,稀疏数组空元素为何不会被遍历
  • 基于微信开发助手企鹅音乐微信小程序的设计与实现(源码+文档+讲解)
  • 上交所服务器崩溃:金融交易背后的技术隐患暴露杭州BGP高防服务器43.228.71.X
  • 双十一有什么好物推荐?绝对不能错过的五款产品
  • NLP技术在营业选址中的实践与探索
  • 【YashanDB知识库】GBK库,生僻字插入nvarchar2字段后乱码问题
  • 高通平台(2)Camera 效果 Fast tuning
  • Qt 项目优化实践方向
  • LeetCode题练习与总结:为运算表达式设计优先级--241
  • Kafka 的重平衡问题详解及解决方案
  • 【Linux】 tcp | 解除服务器对tcp连接的限制 | 物联网项目配置
  • (十七)、Mac 安装k8s
  • Redis桌面工具:Tiny RDM
  • py-mmcif包解析蛋白质结构的装配信息
  • 【NodeJS】npm、yarn、pnpm当前项目设置国内镜像源
  • 别人做谷歌seo凭什么比你好?
  • lua基础语法
  • 【可测试性实践】C++ 单元测试代码覆盖率统计入门
  • 探索 LangChain: 架构、组件和应用
  • 【CSS in Depth 2 精译_039】6.3 CSS 定位技术之:相对定位(上)
  • WPF一个控件根据另一个控件的某种状态的改变从而改变自身某种状态
  • 机械键盘驱动调光DIY--【DAREU】
  • Makefile编程:4种赋值差异
  • Python爬虫lxml模块安装导入和xpath基本语法
  • 计算机毕业设计 校运会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • ssm模糊知识点整合