深度学习—1.认识深度学习

深度学习—1.认识深度学习

一、人工智能、机器学习、深度学习的关系

在这里插入图片描述
通过一张图像来解释人工智能、机器学习。深度学习三者关系。假设让机器模拟人脑,分辨羊,猪,牛三种动物:
(1)人工智能就是为机器赋予人的智能,模拟人脑分辨过程;
(2)机器学习通过手动特征提取图像特征、设计算法区别特征,最后进行分类,给数据让机器自己学习去进行分辨,但在手动特征提取过程中工程庞大,逻辑复杂非常耗时,依恋经验
(3)深度学习是一种高效的机器学习算法,将特征提取与算法融合到一起让机器学习进行分辨。
三者关系如下图所示:
在这里插入图片描述
在这里插入图片描述
如上图所示 ,深度学习和机器学习的区别在于特征提取和算法的过程,机器学习依靠人工提取,提取过程与算法是分开的;而深度学习特征提取与算法是在一起的,深度学习是机器学习领域的一个新的方向。
那么我们来定义一下深度学习:
深度:多层的人工神经网络结构,可以只有一层,也可以有很多层
在这里插入图片描述
学习:通过大量的数据进行学习,正向传播到最终到达输出层,通过误差的反向传播进行模型网络的不断修正。
在这里插入图片描述

二、 深度学习入门

2.1 生物神经网络

生物神经网络(Biological Neural Networks)一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。

2.2 人工神经网络(ANN)

人工神经网络简称神经网络(NN),是受到生物神经网络的启发,模仿生物神经网络结构和功能的计算模型。最小的人工神经网络为感知机,其模型如下图所示:
在这里插入图片描述
其中x1,x2,…,xr为输入值,w1,w2,w3为权值,对加权的结果进行求和,之后与损失函数b进行计算,通过判读,最后输出。下面以具体数值举例。
在这里插入图片描述
假定输入三个数值,分别为1、5、3,对假定权值分别为0.2、0.6、0.2,损失函数为-3,判断条件为是否>0,大于0则输出1,小于0则输出0。
计算过程:1×0.2+5×0.6+3×0.2-3=0.8>0,最终输出结果为1

2.3 深度神经网络

深度神经网络由许多感知机组成,并在深度和广度上进行各种组合。主要包含三个层次的神经网络,其结构如下图,分别为输入层(含有一个或多个神经元)、输出层(含有一个或多个神经元)、隐藏层(含有一个或多个隐藏层,主要是线性变换和非线性变换)。
图中:
1、每一个圆圈代表一个神经元,每一根线,即每个连接都有权重,但输入层没有权重
2、同一层神经元之间没有连接
3、每个神经元都和下一层所以的神经元相连,该层为全连接层
4、深度神经网络输入层,输出层,隐藏层有多重形式,输入层不止一个神经元,隐藏层可以只要一层,输出层也可为多个神经元

在这里插入图片描述
以32×32大小图像为例,共计1024(32×32)个像素,输入层个数为1024,每个输层需要全部连接隐藏层的神经元(上图粉丝圈),一个输入层就需要权值(参数)1024个,共计需要权值(参数)1048576个(1024×1024)。这就暴露出深度神经网络的问题,参数量和计算量大,若是200×200大小图像,输入层个数为40000个,那么需要多少参数,所以简单堆叠的神经网络容易引发,计算量呈指数倍增长,这也称做维度灾难

2.4 卷积神经网络

2.4.1 卷积

为了解决深度神经网络的问题,卷积神经网络被提出,首先,了解一下什么叫做卷积,如下图:
在这里插入图片描述
卷积主要有两部分组成,
卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘积在相加;
卷积核:又称为滤波器,过滤器,可认为某种形式,某种特征。
我们以上图为例对比一下深度神经网络与卷积神经网络的参数量与计算量的差别:
深度神经网络参数量:
每个输入层都需要连接隐藏层,都需要参数,所以参数为36(6×6)×16(4×4)=576个。
深度神经网络计算量:
每个输入层连接隐藏层,都需要计算一次,所以计算量为36(6×6)×16(4×4)=576个。
卷积神经网络参数量:
主要通过卷积核移动来进行计算,所以参数个数为卷积核大小3×3=9
卷积神经网络计算量:
通过卷积核的移动来得到结果,结果为4×4大小,只移动16次就可以得到全部结果,每次移动进行一次卷积核运算,所以计算量为16(4×4)×9(3×3)=144

6×6到4×4 深度神经网络 卷积神经网络
参数量 576 9
计算量 576 144

卷积神经网络特点:
1、局部连接简单的说就是每次进行卷积运算时,不需要全部信息像素进行参数,只通过局部像素与卷积核相连,卷积神经网络提出每个神经元不需要感知图像中的全部像素,只对图像的局部像素进行感知,然后在更高层将这些局部的信息进行合并,从而得到图像的全部表征信息。不同层的神经单元采用局部连接的方式,即每一层的神经单元只与前一层部分神经单元相连。每个神经单元只响应感受野内的区域,完全不关心感受野之外的区域。这样的局部连接模式保证了学习到的卷积核对输入的空间局部模式具有最强的响应。
2、参数共享:类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。而且卷积神经网络采用原始图像作为输入,可以有效的从大量样本中学习到相应地特征,避免了复杂的特征提取过程。
相关概念
特征图(feature map):二维卷积层输出的二维数组可以看作输入在空间维度(宽和高)上某一级的表征,神经网络处理中间的每一次的结果都可以称作特征图。
感受野(Receptive Field):卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域

2.4.2 卷积神经网络的基本单元

(1)输入层(input)

输入层(Input Layer)是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅利叶变换的维波形数据, 甚至是自然语言处理中一维表示的句子向量。
以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为H和W组成的3维像素值矩阵,表示为H×W×3,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为N,则输入层的输出数据N×H×W×3

(2)卷积层(conv)

卷积层是使用卷积核(过滤器)在图像数据上,从左到右,从上到下以一定的平滑移动。

1. 卷积层的特点

(1)又进行了一次特征提取,所以能减小下一层数据的处理量。
(2)能够获得更为抽象的信息,从而防止过拟合,也就是提高了一定的泛化性。
(3)由于这种抽象性,所以能对输入的微小变化产生更大的容忍,也就是保持了它的不变性,这里的容忍包括图像的少量平移、旋转缩放等操作变换,本质就是数学运算。
(4)卷积核的数量必须与上一次特征图数量一致。

2. 卷积的三种方式

vaild:卷积核完全在信号内,一维vaild卷积过程如下图所示,卷积核从左到右滑动,滑动范围全部在待卷积信号中。
在这里插入图片描述

same:卷积核中心完全在信号内,一维same卷积过程如下图所示,卷积核从左到右滑动,卷积核中心滑动范围全部在待卷积信号中。待卷积需要进行补边。
在这里插入图片描述

full:卷积核边缘在信号内,一维full卷积过程如下图所示,卷积核从左到右滑动,卷积核边缘在待卷积信号中,待卷积需要进行补边。
在这里插入图片描述
二维卷积
卷积方式同样是中,与一维一样,**补边(padding)**存在一点差异,如果补一个像素对于一维左右各部一个像素,对于二维就是上下左右各部一个像素,具体请参考下图。下图是5×5大小图像(蓝色),进行卷积的过程,卷积核大小为3×3(滑动部分),步长是卷积核待在卷积信号每次挪动的幅度,以下图为例,步长为1,特征图为5×5(绿色部分)。
在这里插入图片描述

三维卷积
与一维、二维同样,主要是考虑彩色图像三通道的状态进行卷积,过程如下。
在这里插入图片描述

3. 卷积的计算

对于卷积的参数其实并不是随便设置的,需要满足一定公式,如下所示:
输入图片大小为W×W
卷积核大小为F×F;步长为S;补边为P
输出图像大小为N×N
公式为:
N=(W-F+2P)/S+1

根据上述公式,已知其他条件,我们就可算出任意一个参数值。
案例:输入图像大小32×32×3,卷积核为10个,大小为5×5,步长为1,补边为2,就散卷积之后输出结果。
答:因为卷积核有10个,每个卷积核都会产生一个结果,所以层数为10
根据公式N=(W-F+2P)/S+1带入得:[(32-5+2×2)/1]+1=32
所以最终结果为32×32×10

(3)池化层(pool)

池化层又称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。池化层没有需要设置的参数量
池化过程图如下,按操作通常分为:最大池化(max pooling),平均池化(Average Pooling),求和池化(Sum Pooling) ,它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。
在这里插入图片描述

(4)全连接层(fc)

全连接层(FullConnectedLayer)即当前层每个神经元都和下一层所有的神经元相连。负贵对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低位常常对应任务目标,参数量当前层的神经元×上一次神经元个数

(5)输出层(output)
(6)激活函数(AL)
1. 激活层

激活层(ActivationLayer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系,激活函数本质是一个数学函数

2. 激活函数的作用

1.使输出具有非线性,将模型用于更多非线性场景,
2.加快训练

3. 常用激活函数

(1)sigmoid:它可以将一个实数映射到(0,1) 区间。
优点是在特征相差不是特别大时效果比较好,常常用来做二分类。
缺点是激活函数计算量大,容易出现梯度消失问题
(2)tanh:映射范围为[-1,1],输出以0 为中心可以认为是 一个放大版的sigmoid函数,
优点是实际中 tanh比sigmoid更常用,循环神经网络中常用,用于解决二分类问题
缺点是梯度消失,在曲线几乎水平的区 域学习非常的慢
(3)relu:大于0 的部分输出数据为数据本身,小于0的部分输出为0。
优点是Relu对于梯度收敛有巨大的加速作用只需要一个阙值就可以得到激活值,节省计算量深层神经网络中的隐层常用
缺点是过于生猛,一言不合就直接使小于0的数据变为0,从此节点后相关信息全部丢失
(4)特殊激活函数
(5)softmax:当有多 个输入的时候能够计算出概率,通过概率求得哪个输入能够胜出,计算出的概率,一般不用于卷积之后,用在输出之前。
优点是用于多分类神经网络输出
缺点是基本只用于多分类问题

在这里插入图片描述

三、经典入门级网络LeNet5

由LeCun提出的一种用于识别手写数字和机器印刷字符的卷积神经网络(Convolutional Neural Network ,CNN),共7层结构,2个卷积层,2个池化层(下采样),3个全连接层。
在这里插入图片描述

(1)输入层—C1

输入层input为1×32×32,经过卷积层得到C1为6×28×28,因为卷积核个数需要特征图保持一致,可以推断,卷积核个数为6×1。
根据N=(W-F+2P)/S+1
得到28=(32-F+2P)/S+1,经代数测试卷积核5×5,步长为1,补边为0

(1)C1—S2

C1为6×28×28,S2为6×14×14,且为池化层,28/14=2,感受野大小为2×2。

(3)S2—C3

S2为6×14×14,且为卷积层,C3为16×10×10,因为卷积核个数需要特征图保持一致,可以推断,卷积核个数为16×6。
根据N=(W-F+2P)/S+1
得到10=(14-F+2P)/S+1,经代数测试卷积核5×5,步长为1,补边为0。

(4)C3—S4

C3为16×10×10,S4为16×5×5,且为池化层,10/5=2,感受野大小为2×2。

(5)S4—C5、C5—F6、F6—OUTPUT

为全连接层,通过参数数组将全部连接到下一层。

四、深度学习过程

在这里插入图片描述

参考文献

https://blog.csdn.net/qq_32793701/article/details/82192957
https://blog.csdn.net/program_developer/article/details/80958716

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114476.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 手机怎么模拟125k卡_手把手教你用手机NFC秒变门禁卡,这个方法多种手机都可以适用…

    手机怎么模拟125k卡_手把手教你用手机NFC秒变门禁卡,这个方法多种手机都可以适用…现在只要手机支持NFC功能,手机秒变公交卡、移动支付、数据传输、门禁卡等功能,之前在评论看多好多人说不知道怎么复制门禁卡,今天就来和大家讲解下如何复制门禁卡。我们以华为手机,前提是手机支持NFC功能的。第一步:门禁卡功能在钱包里面,所以首先找到华为钱包并打开,登录你的华为账号,在主页找到【门钥匙】。第二步:点击进入【门钥匙】后,点击【添加】,开始【模拟】门卡第三步:根据提示,将门卡放到手机背面NF…

  • 字符数组初始化问题解法_字符数组和字符串的区别

    字符数组初始化问题解法_字符数组和字符串的区别在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式:(1)chara[10]=””; (2)chara[10]={‘\0′}; (3)chara[10];str[0]=’\0’;第1,2种方式是将a数组的所有元素都初始化为’\0’,而第3种方式是只将str数组的第一个元素初始化为’\0’。如果数组的size非常大,那么前两种方式…

  • 现场总线及其应用「建议收藏」

    现场总线及其应用「建议收藏」现场总线是应用在生产现场、在微机化测量控制设备之间实现双向串行多节点数字通信的系统,也被称为开放式、数字化、多点通信的底层控制网络。现场总线技术形成了真正分散在现场的完整控制系统,提高了控制系统运行的可靠性,丰富了控制设备的信息内容。为控制信息进入公用数据网络创造了条件,沟通了现场控制设备之间及其与更高控制管理层网络之间的联系,便于实现管控一体化,同时控制网络与数据网络的结合,便于实现信号的远程传…

  • 出行的好帮手 – Google地图

    出行的好帮手 – Google地图

  • JetBrains IntelliJ IDEA 优化教程[通俗易懂]

    IntelliJIDEA最佳配置IntelliJIDEA分为两个版本:旗舰版(Ultimate)和社区版(Community)。旗舰版收费(30天免费使用时间,功能齐全);社区版(永久免费,功能简陋)。1.安装目录结构解释[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QkuuRlpv-1599207123456)(IntelliJ%20IDEA%E6%9C%80%E4%BD%B3%E9%85%8D%E7%BD%AE.assets/image-20200904150

  • ubuntu20.04内核降级_ubuntu20更新内核

    ubuntu20.04内核降级_ubuntu20更新内核Ubuntu20.04如何降低内核版本?如题,在不小心安装新内核之后,发现没办法降级(网上的各种方法最后结合信息摸索出了解决方案:首先,查看自己的grub版本:grub-install–version记住(GRUB)之后的大版本是2.00以后还是2.00以前查看自己现有的内核版本(完全版)grep’menuentry’/boot/grub/grub.cfg找到自己想换回的内核例如,这里我想要更换为5.8.0-50,就找到对应的选项,有menuentry’U

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号