深度学习基础(一)起源

目录

 

一、DP的前世

  1.perceptron

   2.NN

   3.DP

二、DP的基础知识

1.convolution

2.padding

3.pooling

4.Flatten

5.fully connected

6.dropout


一、DP的前世

深度学习发展至今经历颇为曲折,上世纪起源,火热起来也是20世纪初的时候,具体时间如下图所示:

                       

  1.perceptron

       深度学习(DP)的基础来源于19世纪50年代,起初是叫perceptron”(翻译为感知机/感知器等),包含有输入层、输出层和一个隐藏层。输入的特征向量通过隐藏层变换到达输出层,由输出层得到分类结果。但早期的单层感知机存在一个严重的问题——它对稍微复杂一些的函数都无能为力(如异或操作)。

 

   2.NN

      19世纪80年代左右为实现复杂函数功能(如异或、非线性可分等问题),提出“multi-layer perceptron”(多层感知机)/neural network(神经网络)来解决相应问题。主要为加入了隐层概念、非线性激活函数(sigmoid/tanh等)、back propagation(反向传播算法)和Optimizer(优化算法,梯度下降、mini-batch等)。

       此时跨入NN时代,但由于神经网络的层数和其实现的功能挂钩:即随着神经网络层数的加深,Optimizer越来越容易陷入局部最优解和梯度消失。(具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。)

   3.DP

       直至2006年由Hition提出了深度学习的概念“解决”上述问题(实际上只是用一些巧妙的手段最大程度的缓解上述问题),迎来深度学习的热潮,其隐藏层增至7层。后来为“解决”梯度消失,加入了ReLU等函数,形成了如今的DNN,如下图所示。

                              

       再后来,由于图像处理等需要局部的信息,这时引入卷积核和max-pooling等操作来解决相应的问题,所以产生了CNN;与此同时,由于要解决时序的问题,产生了RNN,后期的LSTM等都是RNN为解决时间上的梯度消失而生成的网络。

                                                                                        RNN示意图

而在实际应用中,上述网络层都是灵活连接,以便更好的解决实际生成问题。

二、DP的基础知识

DP基础知识较为繁杂,为简单入门说起,就直接由经典的VGG16模型说起。

                                     

                                              VGG16模型示意图

如上图所示,模型包括输入层、convolution、pooling、fully connected和输出层,其中包括padding、Flatten和dropout等操作。

1.convolution

       卷积过程是基于一个小矩阵,也就是kernel(卷积核),在上面所说的每层像素矩阵上不断按stride(步长)扫过去的,扫到数与卷积核对应位置的数相乘,然后求总和,每扫一次,得到一个值,全部扫完则生成一个新的矩阵。类似于滤波过程。

                                                                  convolution示意图

2.padding

       一般使用的都是Zero padding,细心的人就会发现上述convolution过程中若输入是 n X m 的大小,输出应该为 (n-1)X(m-1)的大小才对,但是这样会容易导致边界上的特征丢失以及其他错误,所以常规做法就是在输入Image的边界上加入一圈0,这样输出也为n X m的大小。

       如下图所示,红色的为原来的输入层,在进行convolution前在其边界加一圈0,即灰色格子。

                                                                                          padding示意图

3.pooling

pooling相当于降维采样,我的理解是为了减少计算量以及避免特征重复等问题。pooling有两种,包括maxpooling和meanpooling,常用的是maxpooling。pooling的具体操作就是在一个小矩阵区域内,取该区域的最大值或平均值来代替该区域。

 

                                                                                  pooling操作示意图

4.Flatten

Flatten 是指将多维的矩阵拉开,变成一维向量来表示。

5.fully connected

fully connected,简称FC,即全连接层。其作用表现为“分类层”(个人觉得该描述不是十分准确,但又找不到更合适的描述),将上层数据映射到样本标记空间的作用。其实FC和卷积层类似,只不过是特殊的卷积层,其卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。

6.dropout

dropout其实是为了解决过拟合问题的。其操作过程:在一次循环中先随机选择神经层中的一些单元并将其临时隐藏,然后再进行该次循环中神经网络的训练和优化过程。在下一次循环中,又将隐藏另外一些神经元,如此直至训练结束。

由于dropout较难理解,加入一个生动的例子来进行讲解。

                                                                       dropout示意图

参考文献:

1.https://www.leiphone.com/news/201702/ZwcjmiJ45aW27ULB.html

2.书籍《深度学习之tensorflow》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ANSYS经典界面中梁单元实例全解析

转载链接:http://www.jishulink.com/content/post/361389 文中红色部分为自己添加!!! 转载的文章中提到的梁单元截面是常用的工字形,那么要是不规则的截面形状的话需要自己进行截面形状绘制,具体可以参考…

ant的安装和使用

1.ant的安装 1.1 添加环境变量:ANT_HOMED:\software\ant\apache-ant-1.10.1 在path中添加:%ANT_HOME%\bin 1.2 测试是否安装成功 在cmd中输入ant,如果出现如下提示表示安装成功 2.定义简单的build.xml 2.1 创建HelloWord.java package test; …

Language-Directed Hardware Design for Network Performance Monitoring——Marple

网络监控困难 1、仅仅通过去增加特定的监控功能到交换机是不能满足运营商不断变化的需求的。(交换机需要支持网络性能问题的表达语言)2、他们缺乏对网络深处的性能问题进行本地化的可见性,间接推断网络问题的原因3、当前的交换机监控并没有提…

深度学习基础(四)优化函数(梯度下降函数)

梯度下降函数也就是优化函数,在神经网络训练过程最重要的函数。重要程度类似于调校对于汽车的重要性,搭建模型和参数设置等操作“造好了一辆汽车”,优化函数“调校”。因为汽车最终的操控性和加速性能等指标很大程度取决于调校,调…

js 实现 复制 功能 (zeroclipboard)

#复制功能因访问权限和安全问题, 被浏览器禁了# 我要实现的功能:点击复制按钮,复制浏览器的当前页面地址,加上用户选择的参数(用户查找过滤),直接将该链接发给别人,点击打开就是对应…

深度学习基础(二)激活函数

激活函数(也被称为激励函数)的意义就是加入非线性因素,使得神经网络具有非线性表达的能力。其必要条件是激活函数的输入和输出都是可微的,因为神经网络要求处处可微。(可微是指函数的各个方向可导,可微大于等于可导) …

Please ensure that adb is correctly located at……问题解决方案

启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有adb.exe关闭掉.重启eclipse.但试过不管用.所以在外国网站上找到一种可行的方法:1.先把eclipse关闭.2.在管理器转到你的android SDK 的platfor…

2016.8.23

1 贴吧里看到一个关于因为游戏闹翻的故事,大致情况是这样的:某女初中的时候有个闺蜜。后来此人因为抑郁之类的精神问题被送到医院,这让女主很苦闷且脆弱又孤单,这时候她的闺蜜去医院看望她,然后女主就喜欢上了这位闺蜜…

[Spring]01_环境配置

1.1 Spring jar包下载 (1)进入官网http://repo.spring.io (2)在资源库界面点击Artifacts标签,然后点击libs-release-local,展开后依次点击org -> springframework -> spring。 然后,就可…

深度学习基础(三)loss函数

loss函数,即损失函数,是决定网络学习质量的关键。若网络结构不变的前提下,损失函数选择不当会导致模型精度差等后果。若有错误,敬请指正,Thank you! 目录 一、loss函数定义 二、常见的loss算法种类 1.M…

Shift键关闭大小写

同事说他的大写开了之后无法关闭,我检查了下,的确是,非常奇怪,然后我不小心按了下下面的Shift键,大写指示灯灭了,我立即明白是怎么回事,原来是文字和语言设置里的Key setting改了,如…

深度学习之pytorch(一) 环境安装

快2周没更新博客了,别问为什么!我才不会告诉你忙的飞起!说心里话,个人更喜欢用tensorflow来做深度学习! 一、环境配置 1.win10 64位系统; 2.anaconda3; 3.不管是CPU还是GPU具有(…

CAD——将图形移动到指定点的方法(此处以捕捉坐标系原点为例)

1、在CAD中画一个正方形,没有任何角点在坐标原点上 2、点击修改工具栏的“移动命令”,选择刚刚画好的图形,选择一个点为第一个基点; 3、先输入#号(shift3),再输入0,0,用英文逗号隔开&#xff0c…

容器的综合应用:文本查询程序

需求 程序读取用户指定的任意文本文件,允许用户从该文件中查找单词。查询结果是该单词出现的次数,并列出每次出现所在行,如果某单词在同一行中多次出现,程序将只显示该行一次。行号按升序显示,即第 7 行应该在第 9 行之…

Anaconda 安装操作及遇到的坑

最近刚用Pytorch,编译开源代码的时候发现缺少n个package,原来是之前在Anaconda3 创建的虚拟环境各自是独立的,tensorflow下安装的不能在别的环境下使用,所以要重新安装。然而关键是国内各种屏蔽资源,无法FQ去直接下载安…

IE浏览器历史版本图标大全

上个月IE团队庆祝了IE的15周岁生日, 并晒了晒IE各个历史版本的图标: Internet Explorer 1.0 图标 Internet Explorer 2.0 图标 Internet Explorer 3.0 图标 Internet Explorer 4.0 图标 Internet Explorer 5.0 图标 Internet Explorer 6.0 图标 Internet…

7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

视频地址:http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现。不过这里不说,做关联查询的步骤可以简单的总结为以下的几步:…

ANSYS——查看某一截面的云图分布(也叫做切片图)

1.确定截面的位置 此处以图中红色处截面为例 2.将工作平面经过坐标变化移动到指定截面处(工作平面的XY平面与截面重合) 工作平面坐标系默认是与总体坐标系重合的,这里是先平移再进行旋转

深度学习之keras (一) 初探

之前一段时间里,学习过tensorflow和Pytorch也写了点心得,目前是因为项目原因用了一段时间Keras,觉得很不错啊,至少从入门来说对新手极度友好,由于keras是基于tensoflow的基础,相当于tensorflow的高级API吧&…

swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算。 不同于C语言中的数值计算,Swift的数值计算默…