昨天听室友问起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)问题

DNN、CNN、RNN、LSTM的区别相关推荐

  1. 从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

    从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录 1. 神经网络数据预处理 1.1 常规预测情景 1.2 文本预测场景 2.全连接神经网络 ...

  2. DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等)、各种网络结构对比、案例应用对比之详细攻略

    DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等).各种网络结构对比.案例应用对比之详细攻略 目录 神经网络所有模型的简介(概览) DNN.CNN.RNN结构对比 相关文章 DL ...

  3. 一文读懂 CNN、DNN、RNN 内部网络结构区别

    http://network.51cto.com/art/201610/519446.htm 从广义上来说,NN(或是更美的DNN)确实可以认为包含了CNN.RNN这些具体的变种形式.在实际应用中,所 ...

  4. CNN、DNN、RNN 内部网络结构区别

    转自:https://www.zhihu.com/question/34681168 从广义上来说,NN(或是更美的DNN)确实可以认为包含了CNN.RNN这些具体的变种形式.在实际应用中,所谓的深度 ...

  5. 深度学习机器学习面试题——自然语言处理NLP,transformer,BERT,RNN,LSTM

    深度学习机器学习面试题--自然语言处理NLP,transformer,BERT,RNN,LSTM 提示:互联网大厂常考的深度学习基础知识 LSTM与Transformer的区别 讲一下Bert原理,B ...

  6. 多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)

    多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU 1.CNN模型 1.1 代码 1.2 运行结果 2.RNN模型 2 ...

  7. CNN、DNN、RNN的区别与联系

    元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017 ...

  8. DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词

    DNN.RNN.CNN.-..一文带你读懂这些绕晕人的名词 https://mp.weixin.qq.com/s/-A9UVk0O0oDMavywRGIKyQ 「撞脸」一直都是娱乐圈一大笑梗. 要是买 ...

  9. Tensorflow使用CNN卷积神经网络以及RNN(Lstm、Gru)循环神经网络进行中文文本分类

    Tensorflow使用CNN卷积神经网络以及RNN(Lstm.Gru)循环神经网络进行中文文本分类 本案例采用清华大学NLP组提供的THUCNews新闻文本分类数据集的一个子集进行训练和测试http ...

  10. 快速串联 RNN / LSTM / Attention / transformer / BERT / GPT

    参考: 李宏毅2021/2022春机器学习课程 王树森 RNN & Transformer 教程 Transformer 详解 文章目录 0. 背景:序列数据及相关任务 1. 早期序列模型 1 ...

最新文章

  1. 微软批量授权版WINDOWS 10资料(截至到2015年11月,此处无下载地址)
  2. vim中权限不足时不用退出而强制保存
  3. AJPFX关于collection总结
  4. 2008r装mysql_RMySQL安装及操作(详细版)
  5. 【C语言】统计数字字符的个数(字符组)
  6. solo什么意思中文,solo是什么意思,了解一下什么是solo
  7. ASP.NET状态管理之五(Cookie)
  8. Android6.0之前版本(AwesomePlayer)OMXCodec执行流程细节
  9. C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区
  10. 7.Linux/Unix 系统编程手册(上) -- 内存分配
  11. android.mk 编译选项,Android.mk中加入选项,编译生成可以直接安装的apk包
  12. QCC300x学习笔记:自定义一个GATT client
  13. bootdo框架介绍使用
  14. mysql odbc 卸载_Linux卸载MySQL
  15. League of Legends 通过 游戏ID查询玩家QQ号码。
  16. linux 从设备 spi,在Linux 4.9设备树中添加SPI slave设备rapbery pi
  17. 信息安全等级测评内容
  18. 3D模型欣赏:美杜莎女妖 角色设计完整 造型独特
  19. 选购家用安防摄像头,考虑室内还是室外,无线还是有线
  20. 00x: Django models.Model详解

热门文章

  1. java23中设计模式——结构模式——Flyweight(享元)
  2. GBin1分享的10个吸引眼球的jQuery插件
  3. python打包安卓的方法_30个你想打包带走的Python技巧(下)
  4. sqlserver和mysql运营_SQLServer和MySql的区别总结
  5. 吸尘器电机拆解图解_老少皆宜居家清理更轻松?吉米A6上手把无线吸尘器体验...
  6. linux7安装EMC的多路径,Oracle Linux 7.8 多路径(Multipath)+Udev绑定磁盘
  7. 阿里妈妈流量反作弊算法实践
  8. redis的那种目录结构能新建么_Serverless 解惑——函数计算如何访问 Redis 数据库...
  9. oracle自带调优,oracle 参数调优
  10. cfiledialog指定位置和大小_GDamp;T | 位置度公差的理解过程