网站首页 > 技术文章 正文
什么是深度学习
深度学习是机器学习的一个子集,百度百科对深度学习的介绍为:
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,在学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
什么是卷积神经网络
百度百科对卷积神经网络的解释为:
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。
对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络。
CNN具有多层的神经网络,有卷积层(Convolutional Layer)、池化层(Pooling Layer,也称为下采样层(Subsamping))和全连接层(Fully-connected Layer)等,典型的网络结构示意图如图所示:
接下来,将以识别数字来讲解深度学习的整个处理流程。
图像就是矩阵
计算机将图像理解为矩阵,也就是说图像数据可以用矩阵来表示,黑白图像是2D矩阵。为了简单起见,以一张数字8为例的灰度图像,尺寸为28x28。矩阵的每个单元表示从0(表示黑色)到255(表示纯白色像素)的灰度值。
详解卷积、池化、全连接
如图所示,是一张典型的卷积层做卷积计算的描述。左边的第一张图是输入数据,当中的图是卷积核,也称为卷积过滤器(filter)。浅绿色的称为卷积窗口3x3,然后进行互相关运算,(-1x3)+(0x0)+(1x1)+(-2x2)+(0x6)+(2x2)+(-1x2)+(0x4)+(1x1) = -3,那么将这个值填到最右边的图中。那么以步幅为1进行循环往复的并行计算,效果图如下图所示:
下方的蓝色图是输入数据,上方的绿色图是计算后的结果。
矩阵卷积是乘法和加法运算,这样就完成了第一层的卷积计算。一般来说,假设输入形状是n×n,卷积核窗口形状是k×k,那么输出形状将会是(n?k+1)×(n?k+1)。但在实际处理过程中,在卷积层进行计算时,一般都会输入多大,输出就是多大,最外层的一般会进行填充。
池化层的提出是为了缓解卷积层对位置的过度敏感性。同卷积层一样,池化层每次对输入数据的一个固定形状窗口(又称池化窗口)中的元素计算输出。不同于卷积层里计算输入和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值,该运算也分别叫做最大池化或平均池化。
池化层跟卷积层的最大区别是,卷积层是进行乘法和加法运算,而池化层是取池化窗口中输入元素的最大值或者平均值作为输出。
池化层和卷积层的窗口大小和步幅大小,一般都不一致,主要是由于两者的目的不一样。卷积层主要用来识别图像里的空间模式,提取特征,如线条和物体局部,池化层的提出是为了缓解卷积层对位置的过度敏感性。
当池化层的输出传入到全连接层时,全连接层会将小批量中每个样本变平(flatten)。也就是说,全连接层的输入形状将变成二维,其中第一维是小批量中的样本,第二维是每个样本变平后的向量表示,且向量长度为通道、高和宽的乘积。全连接层也会存在多层,会逐层减少输出个数,直到变成图像的类别数10,因为数字识别只有0~9这10个数字。
训练出来的模型,经过简化后的如图所示(仅用于说明问题,实际上远比此图复杂):
最上方的红色形状是提取的特征,每个蓝色数字是最左边栏手写黑色数字对应到小红色形状特征的次数。通过计算具有相同红色形状的匹配数来识别(推断)新的手写数字,以确定哪个数字可能的概率最大:
这里介绍一个早期用来识别手写数字图像的卷积神经网络:LeNet-5。这个名字来源于LeNet论文的第一作者Yann LeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果。这个奠基性的工作第一次将卷积神经网络推上舞台,为世人所知。
这张图介绍了前文所述的卷积层、池化层和全连接层完整的处理流程。
实战:数字3的深度学习全过程
在卷积层中,每个卷积层都使用5×5的窗口,并在输出上使用sigmoid激活函数。一般第一个卷积层输出通道数为6,第二个卷积层输出通道数则增加到16。这是因为第二个卷积层比第一个卷积层的输入的高和宽要小,所以增加输出通道使两个卷积层的参数尺寸类似。卷积层的两个最大池化层的窗口形状均为2×2,且步幅为2。由于池化窗口与步幅形状相同,池化窗口在输入上每次滑动所覆盖的区域互不重叠。
卷积层的输出形状为(批量大小, 通道, 高, 宽)。当卷积层的输出传入全连接层时,全连接层会将小批量中每个样本变平,全连接层块含3个全连接层。它们的输出个数分别是120、84和10,其中10为输出的类别个数。
技术之美不仅来自卷积,也来自网络自身学习和适应的能力。通过误差反向传播算法(Error Back Propagation, BP),网络将使用权重(weight)来减轻和抑制不同层中的一些“神经元”。 如果猜测(输出0,1,2,3,4,5,6,7,8或9)是错误的,看看哪个过滤器“犯了一个错误”,给这个过滤器增加一个weight,这样他们下次不会犯同样的错误。
总结
几乎所有用于图像识别使用相同的原理,只是具有不同数量的层,不同类型的过滤器,不同的核初始化,不同的矩阵大小,不同的技巧,但基本原理保持不变:
- 上一篇: 卷积神经网络-如何计算卷积层中对应参数个数?
- 下一篇: 干货:建筑业工程量计算必备公式(四)
猜你喜欢
- 2024-10-09 智能座舱算法基础之深度学习篇 智能座舱概念设计
- 2024-10-09 干货:建筑业工程量计算必备公式(四)
- 2024-10-09 太顶了?我竟然用3天学会pytorch常用十大算法
- 2024-10-09 卷积神经网络-如何计算卷积层中对应参数个数?
- 2024-10-09 上采样层、下采样层是什么、对应算法都有那些
- 2024-10-09 深度学习深度学习(十七)卷积层的另外一个类型-池化
- 2024-10-09 关于污泥回流的知识点汇总,及计算公式总结
- 2024-10-09 深度学习基础知识点归纳总结 深度学习基础知识点
- 2024-10-09 祺溢通:人工智能入门篇--池化层与全连接层
- 2024-10-09 深入解析卷积神经网络的池化层:优化特征提取与减少计算量
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)