首页 > 其他分享 >卷积神经网络基础

卷积神经网络基础

时间:2024-04-05 16:12:14浏览次数:23  
标签:卷积 基础 特征 神经网络 池化 图像 输入

卷积神经网络基础

卷积神经网络(CNN)
应用领域: 图像识别、自然语言处理、语音识别等。多用与图像识别和计算机视觉领域
与全连接神经网络相比,卷积神经网络进步的地方在于引入了卷积层结构和池化层结构
这两层是 CNN 卷积网络中重要的部分,具有局部连接、权值共享等特点的深层前馈神经网络。
卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求,并被大量应用于计算机视觉、自然语言处理等领域

CNN 的基本特征

(1)局部感知(Local Connectivity)

    卷积层解决这类问题的一种简单方法是对隐含单元和输入单元间的连接加以限制:每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。

(2)参数共享(Parameter Sharing)

    在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,比如边缘检测专用的Sobel滤波器,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,这些所有神经元加起来就好比就是整张图像的特征提取器集合。
    权值共享使得我们能更有效的进行特征抽取,因为它极大的减少了需要学习的自由变量的个数。通过控制模型的规模,卷积网络对视觉问题可以具有很好的泛化能力。

卷积神经网络的基本结构


左为神经网络全连接结构,右为卷积神经网络

一个卷积神经网络主要包含 5 层:输入层、卷积层、池化层、全连接层和输出层。

输入层

输入图像,假设输入图像为[1, 32, 32] 的灰度图,每一个像素值的范围是0~255(由纯黑色到纯白色),表示其颜色强弱程度,当然也可以输入彩色图。灰色图的通道数为 1,彩色的通道数量为 3

卷积层

对输入卷积层的图像或者特征图进行卷积操作, 输出卷积后的特征图。
卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。 其中卷积层的每一层都是一个卷积核,它也是一个二维矩阵,当然这个二维矩阵要比输入图像的二维矩阵要小或相等,卷积核通过在输入图像的二维矩阵上不停的移动,每一次移动都进行一次乘积的求和,作为此位置的值,最后输出一个特征图

每次卷积核移动的时候中间位置都被计算了,而输入图像二维矩阵的边缘却只计算了一次,会不会导致计算的结果不准确呢?
如果每次计算的时候,边缘只被计算一次,而中间被多次计算,那么得到的特征图也会丢失边缘特征,最终会导致特征提取不准确,那为了解决这个问题,我们可以在原始的输入图像的二维矩阵周围再拓展一圈或者几圈,这样每个位置都可以被公平的计算到了,也就不会丢失任何特征,此过程可见下面

卷积层中还有两个重要的参数,分别是偏置和激活(独立层,但一般将激活层和卷积层放在一块)。
激活函数:最常用的激活函数目前有Relu、tanh、sigmoid,着重介绍一下Relu函数(即线性整流层(Rectified Linear Units layer, 简称ReLU layer)),Relu函数是一个线性函数,它对负数取0,正数则为y=x(即输入等于输出),即f(x)=max(0,x),它的特点是收敛快,求梯度简单,但较脆弱。

偏置向量的作用是对卷积后的数据进行简单线性的加法,就是卷积后的数据加上偏置向量中的数据,然后为了增加网络的一个非线性能力,需要对数据进行激活操作,在神经元中,就是将没有的数据率除掉,而有用的数据则可以输入神经元,让人做出反应。这里可能有读者会注意到Bias,其实它就是偏置项,最后计算的结果加上它就可以了
由于经过Relu函数激活后的数据0值一下都变成0,而这部分数据难免有一些我们需要的数据被强制取消,所以为了尽可能的降低损失,我们就在激活层的前面,卷积层的后面加上一个偏置向量,对数据进行一次简单的线性加法,使得数据的值产生一个横向的偏移,避免被激活函数过滤掉更多的信息。

Pooling 层

Pooling层对传入的图像在空间维度上进行下采样操作,能够在宽度和高度方向缩小上一层的矩阵的大小,但是深度并不会比上一层更深,并且池化层能够达到减少网络中参数的目的
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。通常有两种方法
最大池化
顾名思义,最大池化就是每次取正方形中所有值的最大值,这个最大值也就相当于当前位置最具有代表性的特征,这个过程如下所示:

平均池化

平均池化就是取此正方形区域中所有值的平均值,考虑到每个位置的值对于此处特征的影响,平均池化计算也比较简单,整个过程如下图所示:

池化层的具体作用:

  • 平移不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
  • 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
  • 在一定程度上防止过拟合,更方便优化。

全连接层

把所有局部特征结合变成全局特征,用来计算最后每一类的得分。

输出层

输出层有时也被称为分类层,因为在最后输出时,将会计算每一类别的分类预测值

CNN 的训练过程

前向传播阶段:

    选取训练样本(x,y),将x输入网络中。随机初始化权值(一般情况下选取小数),信息从输入层经过一层一层的特征提取和转换,最后到达输出层,得到输出结果。

反向传播阶段:

    输出结果与理想结果对比,计算全局性误差(即Loss)。得到的误差反向传递给不同层的神经元,按照“迭代法”调整权值和偏重,寻找全局性最优的结果。

标签:卷积,基础,特征,神经网络,池化,图像,输入
From: https://www.cnblogs.com/yiermu/p/18115848

相关文章

  • 《前端小白逆袭记:0 基础也能轻松学会》
    随着互联网的快速发展,前端开发成为了一个备受关注的领域。对于零基础的学习者来说,可能会感到无从下手。但不必担心,本文将为你详细介绍0基础如何学习前端。一、学习前端的基础知识HTML(超文本标记语言)是网页的基础,它用于定义网页的结构。CSS(层叠样式表)用于美化网页,实现各......
  • 一文了解PCIe 6.0的基础和测试
    2022年PCI-SIG组织宣布PCIe6.0规范标准v1.0版本正式发布,宣告完工。延续了惯例,带宽速度继续增倍,x16下可达128GB/s(单向),由于PCIe技术允许数据全双工双向流动,因此双向总吞吐量就是256GB/s。• Definitions/MetricstoHelpFrameServerDesignChallenges•Disaggregatio......
  • 数据库基础知识
    数据库基础知识一、数据库基础知识(一)计算机数据管理的发展1.数据与数据处理数据是指存储在某一种媒体上能够识别的物理符号。数据的概念包括两个方面:其一是描述事物特性的数据内容;其二是存储在某一种媒体上的数据形式,数据形式可以是多种多样的。信息:一种已经被加工为特......
  • three.js基础
    记录下three.js的学习历程。three.js基本概念包括画布Canvas、渲染器Renderer、场景Scene、相机Camera、光源Light、几何体Geometry、材质Material、颜色纹理、点模型、线模型、网格模型、阴影、外部三维模型、动画等 基础<canvasid="basic"></canvas><scripttype="impo......
  • MATLAB | 基础知识
    专题一:MATLAB数值数据1.数值数据类型的分类(1)整型: 无符号整数:无符号8位整数,无符号16位整数,无符号32位整数,无符号64位整数 带符号整数:带符号8位整数,带符号16位整数,带符号32位整数,带符号64位整数无符号8位整数数据范围:00000000~11111111(0~2^8-1)带符号8位整数数据范......
  • 代码随想录算法训练营第二十四天 二十五 | 回溯的理论基础,77. 组合 216. 组合总和 II
    77.组合https://leetcode.cn/problems/combinations/description/List<List<Integer>>res=newArrayList<>();List<Integer>path=newArrayList<>();publicList<List<Integer>>combine(intn,intk){......
  • Python企业面试题2 —— 基础篇
    1.re的match和search区别?re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。re.search扫描整个字符串并返回第一个匹配成功的值。2.什么是正则的贪婪匹配?匹配一个字符串没有节制,能匹配多少就去匹配多少,直到没有匹配的为止。......
  • Java基础_运算符和分支结构
    今天的内容1.运算符2.分支结构if-else1.运算符1.算术运算符2.关系运算符3.逻辑运算符1.1算术运算符自增和自减​目的:让变量自身加一或者减一语法格式:变量++;先执行当前的操作,然后自身再加1++变量;变量--;--变量;packagecom.qf.a_test;public......
  • Linux基础
    1.请写出配置网卡信息的命令(2个) nmtui[root@yq~]#vi/etc/sysconfig/network-scripts/ifcfg-ens33 2./boot分区:存放系统启动文件500M~1024Mswap分区:虚拟内存分区真实内存的1-2倍,封顶8G/分区:存储系统和用户数据剩下的都给/ 3.请在虚拟机中创建一个名字为oldbo......
  • C语言数据结构专题--顺序表(1基础)
    前言我们在对C语言有一定的了解之后,我们就可以开始数据结构的学习了,数据结构多用指针、结构体、动态内存开辟等知识,若对这些知识还不太了解的朋友,就需要加深其理解了,那么废话不多说,我们正式开始本节的学习什么是数据结构数据结构是由"数据"和"结构"两个词相组合得到的......