深度学习原理介绍

深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。深度学习是一个框架,包含多个重要算法:

▲ConvolutionalNeuralNetworks(CNN)卷积神经网络

▲AutoEncoder自动编码器

▲SparseCoding稀疏编码

▲RestrictedBoltzmannMachine(RBM)限制波尔兹曼机

▲DeepBeliefNetworks(DBN)深信度网络

▲RecurrentneuralNetwork(RNN)多层反馈循环神经网络神经网络

对于不同问题(图像,语音,文本),需要选用不同网络模型才能达到更好效果。

此外,最近几年增强学习(ReinforcementLearning)与深度学习的结合也创造了许多了不起的成果,AlphaGo就是其中之一。

人类视觉原理

深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。

1981年的诺贝尔医学奖,颁发给了DavidHubel(出生于加拿大的美国神经生物学家)和TorstenWiesel,以及RogerSperry。前两位的主要贡献,是“发现了视觉系统的信息处理”,可视皮层是分级的。

人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:

对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

卷积网络介绍

这是一个最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

降低参数量级

为什么要降低参数量级?从下面的例子就可以很容易理解了。如果我们使用传统神经网络方式,对一张图片进行分类,那么,我们把图片的每个像素都连接到隐藏层节点上,那么对于一张1000x1000像素的图片,如果我们有1M隐藏层单元,那么一共有10^12个参数,这显然是不能接受的。(如下图所示)

但是我们在CNN里,可以大大减少参数个数,我们基于以下两个假设:

1)最底层特征都是局部性的,也就是说,我们用10x10这样大小的过滤器就能表示边缘等底层特征

2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,我们能用同样的一组分类器来描述各种各样不同的图像

基于以上两个,假设,我们就能把第一层网络结构简化如下:

我们用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

卷积(Convolution)

卷积运算的定义如下图所示:

如图所示,我们有一个5x5的图像,我们用一个3x3的卷积核:

101

010

来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。

这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。

在实际训练过程中,卷积核的值是在学习过程中学到的。

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像。以下就是24种不同的卷积核的示例:

池化(Pooling)

池化听起来很高深,其实简单的说就是下采样。池化的过程如下图所示:

上图中,我们可以看到,原始图片是20x20的,我们对其进行下采样,采样窗口为10x10,最终将其下采样成为一个2x2大小的特征图。

之所以这么做的原因,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。

之所以能这么做,是因为即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。

在实际应用中,池化根据下采样的方法,分为最大值下采样(Max-Pooling)与平均值下采样(Mean-Pooling)。

LeNet介绍

下面再回到LeNet网络结构:

这回我们就比较好理解了,原始图像进来以后,先进入一个卷积层C1,由6个5x5的卷积核组成,卷积出28x28的图像,然后下采样到14x14(S2)。

接下来,再进一个卷积层C3,由16个5x5的卷积核组成,之后再下采样到5x5(S4)。

注意,这里S2与C3的连接方式并不是全连接,而是部分连接,如下图所示:

其中行代表S2层的某个节点,列代表C3层的某个节点。

我们可以看出,C3-0跟S2-0,1,2连接,C3-1跟S2-1,2,3连接,后面依次类推,仔细观察可以发现,其实就是排列组合:

000111

001110

011100

111111

我们可以领悟作者的意图,即用不同特征的底层组合,可以得到进一步的高级特征,例如:/+\=^(比较抽象O(∩_∩)O~),再比如好多个斜线段连成一个圆等等。

最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。

最后说一点个人的想法哈,我认为第一个卷积层选6个卷积核是有原因的,大概也许可能是因为0~9其实能用以下6个边缘来代表:

是不是有点道理呢,哈哈

然后C3层的数量选择上面也说了,是从选3个开始的排列组合,所以也是可以理解的。

其实这些都是针对特定问题的trick,现在更加通用的网络的结构都会复杂得多,至于这些网络的参数如何选择,那就需要我们好好学习了。

首页|关于我们|案例中心|技术资讯|联系我们|

业务热线:+8618901557263

地址:苏州市吴江区长安路1188号

E-mail:huanghaisheng@suzhouzhisheng.com

主营产品:机器视觉软件视觉定位视觉测量视觉缺陷检测软件定制开发运动控制

THE END
1.了解深度学习的概念在计算了所有数据批次的聚合损失后,深度学习框架使用优化器来确定应如何调整模型中的权重和偏差来减少总体损失。 然后,这些调整将反向传播到神经网络模型中的层,接着再次通过网络传递数据,并重新计算损失。 此过程将重复多次(每次迭代称为一个 epoch),直到损失最小化,并且模型已“学习”正确的权重和偏差,能够准确预测https://learn.microsoft.com/zh-cn/training/modules/deep-learning-azure-databricks/2-deep-learning
2.本期课程深入探讨神经网络的核心结构与工作来自与非网本期课程深入探讨神经网络的核心结构与工作原理。从前馈神经网络的构建讲起,介绍反向传播算法和自动梯度计算技术,这些是训练深度学习模型的关键。课程还将讨论神经网络参数优化过程中的主要问题,为理解深度学习模型的高效训练提供必要的知识。 L与非网的微博视频 小窗口 ?收藏 转发 评论 ?1https://weibo.com/1768387552/5112254494933678
3.原理及循环神经网络简述深度神经网络的基本原理这里用两层来代表多层的神经网络举例:第一层的输出是第二层的输入,其中MM的W*X矩阵乘法,ADD是向量加法即加上偏置,如果每一层都只有线性变换,那么最终无论多少层都可以化简成一层(见上图左边的公式),这样多层数就没有意义了,所以要在每一层都加上非线性函数即激活函数,才能保证每一层都有它独特的作用。 https://blog.csdn.net/weixin_61725823/article/details/130568173
4.深度学习算法原理——神经网络的基本原理腾讯云开发者社区深度学习算法原理——神经网络的基本原理 一、神经网络 1、神经元概述 神经网络是由一个个的被称为“神经元”的基本单元构成,单个神经元的结构如下图所示: Sigmoid函数的区间为[0,1],而tanh函数的区间为[?1,1]。 若是使用sigmoid作为神经元的激活函数,则当神经元的输出为1时表示该神经元被激活,否则称为https://cloud.tencent.com/developer/article/1066395
5.神经网络的基本工作原理51CTO博客从本文开始,我们试图用一系列博客,讲解现代神经网络的基本知识,使大家能够从真正的“零”开始,对神经网络、深度学习有基本的了解,并能动手实践。这是本系列的第一篇,我们先从神经网络的基本工作原理开始讲解。 神经元细胞的数学计算模型 神经网络由基本的神经元组成,下图就是一个神经元的数学/计算模型,便于我们用程https://blog.51cto.com/u_15127597/4666503
6.ResNet深度学习神经网络原理及其在图像分类中的应用Python代码此外,本文还介绍了与卷积层紧密相关的激活函数、池化层以及ResNet深度神经网络的概念与应用,并通过实验验证了ResNet在复杂数据集上的高效分类性能。本文将通过视频讲解,展示ResNet原理,并结合如何用 Python中VGG模型、自定义ResNet模型、Capsule Network模型分析MNIST数据集实例的代码数据,为读者提供一套完整的实践数据分析https://t.10jqka.com.cn/pid_373202406.shtml
7.深度神经网络总结深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络,又被称为深度前馈网络(DFN),多层感知机(Multi-Layer perceptron,MLP)。 1 前向传播算法 1.1 从感知机到神经网络 感知机的模型是一个有若干输入和一个输出的模型,如下图: 输出和输入之间学习到一个线性关系,得到中间输出结果: http://www.360doc.com/content/24/0120/11/18005502_1111679528.shtml
8.焦李成院士:下一代深度学习的思考与若干问题由于神经网络是一个动力学的过程,如何实现长时间内对动态过程的建模,是需要克服的。而用神经网络学习拉格朗日量,在学习的动态的上,诱导一个强大的物理先验,就把两者有机的结合起来,这就是拉格朗日神经网络构造的基本思想和原理。其实神经网络的基本原理或者神经计算的基本原理就是能量最小化的一个过程。https://ipiu.xidian.edu.cn/info/1097/2576.htm
9.深度神经网络(DNN)模型与前向传播算法刘建平Pinard深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结。 1. 从感知机到神经网络 在感知机原理小结中,我们介绍过感知机的模型,它是一个有若干输入和一个输出的模型,如下图: https://www.cnblogs.com/pinard/p/6418668.html
10.基于卷积神经网络的手写数字识别【嵌牛导读】在深度学习领域,手写数字识别是一个较为基础的案例,笔者通过深度学习框架pytorch,使用卷积神经网络设计了一个基本的网络结构,使用MINST数据集作为实验数据集,训练了40个轮次,识别率(在训练集上的)达到了99.95%,最终识别率(在测试集上的)达到了99.13%,取得了比较良好的识别效果。 https://www.jianshu.com/p/849ad35db8b7
11.基于深度学习的烟雾识别研究AET本文通过预处理的烟雾图像数据集对卷积神经网络训练提取烟雾特征,并结合Inception Resnet v2[7]网络模型进行烟雾检测,在基于TensorFlow[8]的多GPU支持下本文对烟雾特征的提取训练时间大大缩短。 3.1 基本卷积神经网络原理 卷积神经网络是一个利用反向传播算法进行特征训练的多层神经网络,卷积核就是其核心,当前在各领域被http://www.chinaaet.com/article/3000092836
12.深度学习cnn卷积神经网络原理(图文详解)受Hubel和Wiesel对猫视觉皮层电生理研究启发,有人提出卷积神经网络(CNN),Yann Lecun 最早将CNN用于手写数字识别并一直保持了其在该问题的霸主地位。近年来卷积神经网络在多个方向持续发力,在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。本文将会深度详解cnn卷积神经网络原理,对https://www.sumaarts.com/share/620.html