CNN、RNN、DNN区别

CNN、RNN、DNN区别神经网络的来源 nbsp nbsp nbsp nbsp nbsp 神经网络技术起源于上世纪五 六十年代 当时叫感知机 perceptron 包含有输入层 输出层和一个隐藏层 输入的特征向量通过隐藏层变换到达输出层 由输出层得到分类结果 但早期的单层感知机存在一个严重的问题 它对稍微复杂一些的函数都无能为力 如异或操作 直到上世纪八十年代才被 Hition Rumelhart 等人发明的多层感知机克服 就是具有多层隐藏层的感知机

神经网络的来源

      神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),包含有输入层、输出层和一个隐藏层。输入的特征向量通过隐藏层变换到达输出层,由输出层得到分类结果。但早期的单层感知机存在一个严重的问题——它对稍微复杂一些的函数都无能为力(如异或操作)。直到上世纪八十年代才被Hition、Rumelhart等人发明的多层感知机克服,就是具有多层隐藏层的感知机。

      多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。这就是现在所说的神经网络NN。

      神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数。但问题出现了——随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,“梯度消失”现象更加严重。(具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。)

      2006年,Hition提出了深度学习的概念,引发了深度学习的热潮。具体是利用预训练的方式缓解了局部最优解的问题,将隐藏层增加到了7层,实现了真正意义上的“深度”。

DNN形成

    为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今DNN的基本形式。结构跟多层感知机一样,如下图所示:

CNN、RNN、DNN区别

       我们看到全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,从而导致参数数量膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优。

CNN形成

      由于图像中存在固有的局部模式(如人脸中的眼睛、鼻子、嘴巴等),所以将图像处理和神将网络结合引出卷积神经网络CNN。CNN是通过卷积核将上下层进行链接,同一个卷积核在所有图像中是共享的,图像通过卷积操作后仍然保留原先的位置关系。

CNN、RNN、DNN区别CNN、RNN、DNN区别

       通过一个例子简单说明卷积神经网络的结构。假设我们需要识别一幅彩色图像,这幅图像具有四个通道ARGB(透明度和红绿蓝,对应了四幅相同大小的图像),假设卷积核大小为100*100,共使用100个卷积核w1到w100(从直觉来看,每个卷积核应该学习到不同的结构特征)。

       用w1在ARGB图像上进行卷积操作,可以得到隐含层的第一幅图像;这幅隐含层图像左上角第一个像素是四幅输入图像左上角100*100区域内像素的加权求和,以此类推。

同理,算上其他卷积核,隐含层对应100幅“图像”。每幅图像对是对原始图像中不同特征的响应。按照这样的结构继续传递下去。CNN中还有max-pooling等操作进一步提高鲁棒性。

CNN、RNN、DNN区别

      注意到最后一层实际上是一个全连接层,在这个例子里,我们注意到输入层到隐藏层的参数瞬间降低到了100*100*100=10^6个!这使得我们能够用已有的训练数据得到良好的模型。题主所说的适用于图像识别,正是由于CNN模型限制参数了个数并挖掘了局部结构的这个特点。顺着同样的思路,利用语音语谱结构中的局部信息,CNN照样能应用在语音识别中。

RNN形成

      DNN无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。为了适应这种需求,就出现了大家所说的另一种神经网络结构——循环神经网络RNN。雷锋网

      在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。而在RNN中,神经元的输出可以在下一个时间段直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出!表示成图就是这样的:

CNN、RNN、DNN区别

为方便分析,按照时间段展开如下图所示:

CNN、RNN、DNN区别

(t+1)时刻网络的最终结果O(t+1)是该时刻输入和所有历史共同作用的结果!这就达到了对时间序列建模的目的。RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度!正如我们上面所说,“梯度消失”现象又要出现了,只不过这次发生在时间轴上

       所以RNN存在无法解决长时依赖的问题。为解决上述问题,提出了LSTM(长短时记忆单元),通过cell门开关实现时间上的记忆功能,并防止梯度消失,LSTM单元结构如下图所示:

CNN、RNN、DNN区别

      除了DNN、CNN、RNN、ResNet(深度残差)、LSTM之外,还有很多其他结构的神经网络。如因为在序列信号分析中,如果我能预知未来,对识别一定也是有所帮助的。因此就有了双向RNN、双向LSTM,同时利用历史和未来的信息

      事实上,不论是哪种网络,他们在实际应用中常常都混合着使用,比如CNN和RNN在上层输出之前往往会接上全连接层,很难说某个网络到底属于哪个类别。不难想象随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将被发展出来。

参考链接:https://www.leiphone.com/news/201702/ZwcjmiJ45aW27ULB.html

简单总结如下:

CNN、RNN、DNN区别



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175996.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:55
下一篇 2026年3月26日 下午10:55


相关推荐

  • css样式表

    css样式表一、css初识1、概念:css(cascadingstylesheets),通常称为css样式表或层叠样式表(级联样式表)。2、作用:①主要用于设置HTML页面中的文本内容(字体、大小、对齐方

    2022年7月1日
    27
  • linux无限刷屏代码,linux下如何实现简单刷屏

    linux无限刷屏代码,linux下如何实现简单刷屏今天为了测试我的LCD有没有坏点写了一个简单的刷屏程序,效果还不错,分析给大家。代码如下:#include#include#include#include#include#include#include#includeintmain(intargc,char*argv[]){intfbfd=0;structfb_var_screeninfovinfo;struct…

    2022年5月4日
    158
  • 永久激活密钥:GH6J3-69GF1-D89WP-A6K9J-83ZVD

    永久激活密钥:GH6J3-69GF1-D89WP-A6K9J-83ZVD

    2026年3月13日
    1
  • 大疆网上测评题库_大疆在线测评 – 逻辑题「建议收藏」

    大疆网上测评题库_大疆在线测评 – 逻辑题「建议收藏」收到大疆测评的邮件,在知乎百度搜了一圈也没搜到题目,只好直接去测评了。我的测评是90道题,其中逻辑题挺烧脑,出现了6道逻辑题,幸好之前看过逻辑学三段论,都能答对。2-7是我测评中出现的题,一模一样,今后是否一样就不能确保了,仅供参考。1.所有的老虎会动;一些动物是老虎;因此,一些动物会动。参考解:True2.所有的宗教狂热分子都偏执;所有偏执的人都是种族主义者;因此,所有的种族主义者都是宗教狂…

    2022年6月29日
    103
  • python win32api教程_解放双手——python win32api 入门「建议收藏」

    python win32api教程_解放双手——python win32api 入门「建议收藏」#_*_coding:UTF-8_*_”’本文在原程序的基础上做了修改补充,更加清晰易懂。get_mouse_point():返回当前鼠标的值(x,y)mouse_move(x,y):移动鼠标mouse_click(x,y):单击mouse_dclick(x,y):双击put(str=”,flag=0):flag默认为0,则表示输入的字符串,为1:字符要表示的是快捷组合按键,快捷键要用空…

    2022年10月11日
    4
  • SqlSessionFactory介绍[通俗易懂]

    SqlSessionFactory介绍[通俗易懂]SqlSessionFactory是MyBatis的关键对象,它是单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得,而SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。每一个MyB…

    2022年5月2日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号