DNN、CNN、RNN、LSTM的区别

昨天听室友问起DNN与CNN的区别,感觉自己不太了解,所在在网上搜了一些资料,这篇博客主要是根据知乎上的回答,加上自己的理解整理出来的。

广义上来说,NN(或是DNN)确实可以认为包含了CNN、RNN这些具体的变种形式。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构,包括卷积层或是LSTM单元。但是从狭义上来说,单独的DNN、CNN、RNN及LSTM也可以对比。

DNN(深度神经网络)

神经网络是基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN其实也是指的一个东西,DNN有时也叫做多层感知机(Multi-Layer perceptron,MLP)。

DNN存在的局限:

  • 参数数量膨胀。由于DNN采用的是全连接的形式,结构中的连接带来了数量级的权值参数,这不仅容易导致过拟合,也容易造成陷入局部最优。

  • 局部最优。随着神经网络的加深,优化函数更容易陷入局部最优,且偏离真正的全局最优,对于有限的训练数据,性能甚至不如浅层网络。

  • 梯度消失。使用sigmoid激活函数(传递函数),在BP反向传播梯度时,梯度会衰减,随着神经网络层数的增加,衰减累积下,到底层时梯度基本为0。

  • 无法对时间序列上的变化进行建模。对于样本的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。

DNN的基本介绍可参考:

  1. 深度神经网络(DNN)模型与前向传播算法
  2. 神经网络入门:深层学习为何要“Deep”(上)
  3. 前馈神经网络引入的先验知识:并行、迭代;深层学习为何要“Deep”(下)较难懂,建议先看完公开课再看该篇文章。

CNN(卷积神经网络)

主要针对DNN存在的参数数量膨胀问题,对于CNN,并不是所有的上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在多有图像内是共享的,图像通过卷积操作仍能保留原先的位置关系。

CNN之所以适合图像识别,正式因为CNN模型限制参数个数并挖掘局部结构的这个特点。

CNN相关知识可参考:

  1. CNN相关知识总结
  2. YJango的卷积神经网络——介绍

RNN(循环神经网络)

针对CNN中无法对时间序列上的变化进行建模的局限,为了适应对时序数据的处理,出现了RNN。

在普通的全连接网络或者CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立(这种就是前馈神经网络)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身。

(t+1)时刻网络的最终结果O(t+1)是该时刻输入和所有历史共同作用的结果,这就达到了对时间序列建模的目的。

存在的问题:RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度,而梯度消失的现象出现时间轴上。

RNN相关知识可参考:

  1. 循环神经网络(RNN)模型与前向反向传播算法
  2. YJango的循环神经网络——介绍

LSTM(长短时记忆单元)

为了解决RNN中时间上的梯度消失,机器学习领域发展出了长短时记忆单元LSTM,通过门的开关实现时间上记忆功能,并防止梯度消失。

参考:

  1. [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络
  2. 探索LSTM:基本概念到内部结构

扩展

深度神经网络中的梯度不稳定性,前面层中的梯度或会消失,或会爆炸。前面层上的梯度是来自于后面层上梯度的乘乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景,如梯度消失和梯度爆炸。

  • 梯度爆炸(exploding gradient):梯度爆炸就是由于初始化权值过大,前面层会比后面层变化的更快,就会导致权值越来越大,梯度爆炸的现象就发生了。

    在深层网络或循环神经网络中,误差梯度可在更新中累积,变成非常大的梯度,然后导致网络权重的大幅更新,并因此使网络变得不稳定。在极端情况下,权重的值变得非常大,以至于溢出,导致 NaN 值。

    网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸。

    解决梯度爆炸的方法参考:详解梯度爆炸和梯度消失

  • 梯度消失(vanishing gradient):前面的层比后面的层梯度变化更小,故变化更慢,从而引起了梯度消失问题。

    因为通常神经网络所用的激活函数是sigmoid函数,这个函数有个特点,就是能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是f′(x)=f(x)(1−f(x))。因此两个0到1之间的数相乘,得到的结果就会变得很小了。神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新,这就是梯度消失。

因为sigmoid导数最大为1/4,故只有当abs(w)>4时梯度爆炸才可能出现。深度学习中最普遍发生的是梯度消失问题。

解决方法:使用ReLU,maxout等替代sigmoid。

ReLU与sigmoid的区别:(1)sigmoid函数值在[0,1],ReLU函数值在[0,+无穷],所以sigmoid函数可以描述概率,ReLU适合用来描述实数;(2)sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。


参考:

  1. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)…
  2. 机器学习总结(九):梯度消失(vanishing gradient)与梯度爆炸(exploding gradient)问题

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

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

相关文章

创建QT工程

创建QT工程 Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图…

职业相关课程学习笔记

记学校就业指导课程,主要记录上课中提到的一些核心知识,在此留下学习的痕迹。 职业生涯规划课程笔记名人名言 《礼记大学》:“修身 齐家 治国 平天下”——善待自己,善待家人,善待他人。孟子:“生于忧患&am…

笔记本扩展之后,插上耳机就会没有声音的解决方式

笔记本扩展之后,插上耳机就会没有声音的解决方式 首先右击小喇叭,打开声音设置 选择声音控制面板 选择扬声器,设置为默认值。问题就解决了

京东白条要上征信了!你用还是不用

京东白条要上征信了!你用还是不用?这个消息估计会让很多白条的粉丝心都凉了一半!一、为什么白条突然要上征信呢?用了4年的白条,就这样要上征信了?给我一个注销的理由!其实接入征信系统并不是京东…

similarsites的使用

similarsites的使用 similarsites的网址 similarsites是一个可以帮你找到类似网址的站。 使用非常简单,就是在搜索中输入网址就行。 例如:输入baidu.com 一大堆和百度类似的网站就出现了。根据相似度排序。

农行发布年报,日赚5.3亿,人均薪酬23万!

2017年3月26日晚间,农业银行发布了2017年的年报。数据显示,2017年农业银行实现营业收入5428.98亿元,同比增长6.42%,净利润1929.62亿元,同比增长4.9%,截至2017年末,农业银行总资产21.05万亿元&am…

中国目前最具竞争力的二线城市有哪些?

目前最具竞争力的二线城市有五个,分别是成都,杭州,武汉,南京,还有重庆。目前能称为二线城市有30个,其中二线发达城市有八个,二线中等发达城市有15个,二线发展较弱城市七个&#xff0…

我以为信用卡多就是好事,谁知道……

每一次去大商场“买买买”的时候,门口总会有些银行的信用卡卡管员问我们有没有他们家的信用卡。“没有就办一张吧,现在有活动,办了就送XXX。”办信用卡这种事,一开始我是拒绝的,你不能叫我办我就办,我要先问…

C#工控上位机——框架

C#工控上位机 第一部分:UI模块 先点击一下Panel,在点击一下屏幕。 先选中Panel,在进行属性设置。 图标连接 嵌入式窗体 设置按键的事件 using System; using System.Collections.Generic; using System.ComponentModel; using…

数据管理 - 每天5分钟玩转 Docker 容器技术(147)

本章将讨论 Kubernetes 如何管理存储资源。 首先我们会学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储;然后我们会实践几种常用的 Volume 类型并理解它们各自的应用场景;最后,我们会讨论 Kubernetes 如何通…

C#上位机——倒计时计时器

C#工控上位机——倒计时计时器 第一步:找出需要的工具 第二步:对工具进行布局 第三步:修改各个工具的属性 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using…

小白信用卡提额攻略,2年轻松提额20万!

说到小白申请信用卡,很多人都会很迷茫,不要说信用卡提额20万,就算第一次申请能批个5000就已经很不错了,再说了就算你有100万额度的信用卡,有什么用呢?有个2万左右的信用卡额度就差不多够用了嘛!…

索罗斯等华尔街金融大鳄,为什么名声那么臭?

首先,索罗斯等金融大鳄本身玩的是金融,利用金融规则去赚钱,这本身并没有什么错,因为人家没有抢,没有偷,而是光明正大的搞。但是索罗斯等金融大鳄确实给很多国家带来过灾难,所以从道德上讲&#…

C#上位机——串口发送

C#上位机——串口发送 第一步:搭建框架 第二步:设置属性 第三步:编写代码,实现各个模块之间的联系和功能。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System…

阿里当初50亿美元收购UC,现在看来是不是亏大了?

近段阿里收购UC的陈年旧事又被大家翻出来讨论了,很多网友说当初阿里花50亿美金收购UC明显是巨亏了!但事实果真如此吗?以一个6年UC老用户的角度来说,我认为阿里50亿美金收购UC赢了一大半,输了一小半。看到众多网友一个个…

C#上位机——串口助手初级

C#上位机——串口助手 第一步:布局 第二步:设置属性 第三步:编写逻辑 初始化文本 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; us…

贷款,别相信这些人!

演唱会门票、电影票、火车票等等,本应该是按实际需求购买。奈何黄牛党的出现,把票价抬高倒卖,扰乱票价市场,让我们多给了不该给的钱,不仅如此,还严重影响了整个市场,可恨至极!相比之…

hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)

hostPath Volume 的作用是将 Docker Host 文件系统中已经存在的目录 mount 给 Pod 的容器。大部分应用都不会使用 hostPath Volume,因为这实际上增加了 Pod 与节点的耦合,限制了 Pod 的使用。不过那些需要访问 Kubernetes 或 Docker 内部数据&#xff08…

使用Python实现发送Email电子邮件【第19篇—python发邮件】

文章目录 👽使用Python实现发送Email电子邮件🎶实现原理🏃Python实现发送Email电子邮件-基础版👫实现源码🙆源码解析 💇Python实现发送Email电子邮件-完善版👫实现源码🙆源码解析&am…