本文为转载博文,原博文位置:http://blog.csdn.net/eddy_zheng/article/details/50763648

1、相关知识

  从广义上来说,NN(或是更美的DNN)确实可以认为包含了CNN、RNN这些具体的变种形式。有很多人认为,它们并没有可比性,或是根本没必要放在一起比较。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构,包括convolution layer 或是 LSTM 单元。其实,如果我们顺着神经网络技术发展的脉络,就很容易弄清这几种网络结构发明的初衷,和他们之间本质的区别。

2、神经网络发展

2.1 感知机

  神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,对于计算稍微复杂的函数其计算力显得无能为力。

2.2 多层感知机的出现

  随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人发明的多层感知机(multilayer perceptron)克服。多层感知机,顾名思义,就是有多个隐含层的感知机。我们看一下多层感知机的结构:

图1 :多层感知机(神经网络)

  多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。对,这就是我们现在所说的神经网络(NN)!多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。多层感知机给我们带来的启示是,神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数。

即便大牛们早就预料到神经网络需要变得更深,但是有一个梦魇总是萦绕左右。随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,“梯度消失”现象更加严重。具体来说,我们常常使用 sigmoid 作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。

2.3 (DNN)神经网络“具有深度”

  2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层(参考论文:Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.),神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今 DNN 的基本形式。单从结构上来说,全连接的DNN和上图的多层感知机是没有任何区别的。值得一提的是,今年出现的高速公路网络(highway network)和深度残差学习(deep residual learning)进一步避免了梯度弥散问题,网络层数达到了前所未有的一百多层(深度残差学习:152层,具体去看何恺明大神的paper)!

2.4 CNN(卷积神经网络)的出现

  如图1所示,我们看到全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,带来的潜在问题是参数数量的膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优。另外,图像中有固有的局部模式(比如轮廓、边界,人的眼睛、鼻子、嘴等)可以利用,显然应该将图像处理中的概念和神经网络技术相结合。此时我们可以祭出题主所说的卷积神经网络CNN。对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。卷积层之间的卷积传输的示意图如下:


图2:LeNet-5

  通过一个例子简单说明卷积神经网络的结构。假设我们需要识别一幅彩色图像,这幅图像具有四个通道 ARGB (透明度和红绿蓝,对应了四幅相同大小的图像),假设卷积核大小为 3∗3 共使用100个卷积核w1到w100(从直觉来看,每个卷积核应该学习到不同的结构特征)。用w1在ARGB图像上进行卷积操作,可以得到隐含层的第一幅图像;这幅隐含层图像左上角第一个像素是四幅输入图像左上角 3∗3 区域内像素的加权求和,以此类推。同理,算上其他卷积核,隐含层对应100幅“图像”。每幅图像对是对原始图像中不同特征的响应。按照这样的结构继续传递下去。CNN中还有max-pooling 等操作进一步提高鲁棒性。

  我们注意到,对于图像,如果没有卷积操作,学习的参数量是灾难级的。CNN之所以用于图像识别,正是由于CNN模型限制了参数的个数并挖掘了局部结构的这个特点。顺着同样的思路,利用语音语谱结构中的局部信息,CNN照样能应用在语音识别中。在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。

2.5 RNN(循环神经网络)的出现

  全连接的DNN还存在着另一个问题——无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,就出现了另一种神经网络结构——循环神经网络RNN。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i−1)层神经元在该时刻的输出外,还包括其自身在(m−1)时刻的输出。

  RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度!正如我们上面所说,“梯度消失”现象又要出现了,只不过这次发生在时间轴上。对于t时刻来说,它产生的梯度在时间轴上向历史传播几层之后就消失了,根本就无法影响太遥远的过去。因此,之前说“所有历史”共同作用只是理想的情况,在实际中,这种影响也就只能维持若干个时间戳。为了解决时间上的梯度消失,机器学习领域发展出了长短时记忆单元 LSTM,通过门的开关实现时间上记忆功能,并防止梯度消失

3 结束语

  事实上,不论是那种网络,他们在实际应用中常常都混合着使用,比如CNN和RNN在上层输出之前往往会接上全连接层,很难说某个网络到底属于哪个类别。不难想象随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将被发展出来。尽管看起来千变万化,但研究者们的出发点肯定都是为了解决特定的问题。对于想进行这方面的研究的朋友,不妨仔细分析一下这些结构各自的特点以及它们达成目标的手段。入门的话可以参考: 
ufldl 教程:http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B

分类: 深度学习

【转载】 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解相关推荐

  1. 【预测模型】基于DNN深度神经网络实现minist数据集预测matlab源码

    一.DNN深度神经网络介绍 神经网络简史 神经网络技术起源于上世纪五.六十年代,当时叫感知机(perceptron),拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换达到输出层,在输出层得 ...

  2. DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略

    DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介.应用.经典案例之详细攻略 相关文章 DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类 ...

  3. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?...

    2019独角兽企业重金招聘Python工程师标准>>> 科言君 每周六提供一份高质量回答. 首先,我感觉不必像 @李Shawn 同学一样认为DNN.CNN.RNN完全不能相提并论.从 ...

  4. 深度学习——神经网络(NN)、深度神经网络(DNN)、卷积神经网络(CNN)等概念介绍

    刚接触深度学习时,我们经常会看到神经网络.深度神经网络.卷积神经网络这些词.初看可能一头雾水,没关系,下面我们就来了解一下这些词背后的意义吧. 图1 神经元的结构 神经元(Neuron): 从生物上来 ...

  5. DNN(深度神经网络)

    深度神经网络(Deep Neural Networks, 以下简称DNN) 神经网络发展 第一代神经网络又称为感知器,由科学家Frank Rosenblatt发明于1950至1960年代,它的算法只有 ...

  6. 卷积神经网络图片滤镜_使用深度神经网络创建艺术性的实时视频滤镜

    卷积神经网络图片滤镜 将CoreML用于iPhone的复杂视频滤镜和效果 (Using CoreML for complex video filters and effects for iPhone) ...

  7. 吴恩达卷积神经网络 笔记,吴恩达 深度神经网络

    如何评价吴恩达的学术地位 吴恩达(AndrewNg),斯坦福计算机系的副教授,师从机器学习的大师级人物MichaelI.Jordan. 同门师兄弟包括ZoubinGhahramani,TommiJaa ...

  8. 深度神经网络课程总结_了解深度神经网络如何工作(完整课程)

    深度神经网络课程总结 Even if you are completely new to neural networks, this course from Brandon Rohrer will g ...

  9. 神经网络的三种训练方法,深度神经网络训练方法

    深度神经网络是如何训练的? Coursera的Ng机器学习,UFLDL都看过.没记错的话Ng的机器学习里是直接给出公式了,虽然你可能知道如何求解,但是即使不知道完成作业也不是问题,只要照着公式写就行. ...

  10. 神经网络算法的具体流程,深度神经网络简单介绍

    深度神经网络具体的工作流程是什么样的? 第一,深度神经网络不是黑盒,个人电脑开机直到神经网络运行在内存中的每一比特的变化都是可以很细微的观察的.没有任何神秘力量,没有超出科学解释的现象发生. 第二,深 ...

最新文章

  1. Python 语法小知识
  2. js数据类型间的互相转换
  3. LeetCode Linked List Cycle
  4. java星际小战_首届中国星际战队联赛:TSG夺冠,小hero刘建宏大战惊天地泣鬼神...
  5. java gb13000_浅谈 GB13000
  6. 【HTML/CSS】定位方式及区别
  7. 用php 用拼出一个菱形_这可是我没来过的杭州呀!远在开封的他,用一种特殊的方式,拼出一个彩色杭州...
  8. java如何引用类_java – 如何引用当前类的类?
  9. vice versa VS the other way around
  10. ISO 17799 /27001标准简介
  11. React Native踩坑新建的RN0.64项目无法在xcode 12.5上打开
  12. 大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目
  13. JavaScript 编写Date 格式化方法『Python风格』
  14. 用Python制作二维码
  15. 电脑快速复制粘贴大文件
  16. java统计英文单词_java单词统计
  17. hadoop大数据工程师、数据开发工程师、数据仓库工程师 面试题目分享
  18. 谷歌浏览器F12抓包如何过滤只显示接口请求不显示图片、js那些请求
  19. python kivy kv模板调用_Python-Kivy:使用另一个类中的函数更改和保留kv文件值
  20. 优质计算机教案,信息技术优质课教案.docx

热门文章

  1. MongoDB CookBook读书笔记之备份与恢复
  2. Download SQL Server Management Studio (SSMS)下载地址
  3. OObjective-c UIView 蒙层
  4. CSS布局:图片在DIV中上下左右居中(水平和垂直都居中)
  5. configparser读取含有中文的配置(Windows)
  6. Range的学习笔记
  7. linux 安装phpMyAdmin
  8. 分析一个文本文件中各个单词出现的频率,把频率最高的10个词打印出来
  9. DS4300电池即将过期,磁阵目前读写缓慢解决过程.txt
  10. Windows2003 Server下尝试360安全卫士6.0