如何理解循环神经网络RNN?

        说起循环神经网络RNN,不得不说一下这个梗。一天,iPhone99发售了,女朋友给你发微信说,她的手机坏了,想让你给她换一个256g的苹果。你对她说,没有问题,下班就给你买。

                             

 等你憨憨地提着256g苹果来到女朋友面前,你猜女朋友会不会生气?

                   

 虽说这是个小玩笑,但却体现了上下文对于理解的重要性。

            

 今天,就让我们一起来研究循环神经网络。

         简单的神经网络一般如下图所示,输入层x进入到隐藏层神经元s再经过输出,产生最后的结果y,通过调整权重Win和Wout就可以实现学习的效果。

简单的神经网络结构

         通常情况下,深度神经网络都是水平方向延伸的,比如卷积神经网络CNN,隐层数量多了,但是没有考虑单个隐层在时间上、时序上的变化。

卷积神经网络结构

         RNN则不同,你可以理解为它更加细腻温情,它关注隐层的每个神经元在时间维度上的不断成长与进步,体现在图上,如下图所示。

        沿着时间轴,建立时序上的关联,这里的层级扩展并非神经元数量的真实增加,而是表示隐层在不同时刻的状态。

        根据问题的需要,隐层的时间关联既可以是全连接式的,如下图所示。

也可以是自己对自己的,如下图所示。

        假如我们使用Ws来表示层级间的权重矩阵,RNN通常会假定不同的层,其实也就是不同的时刻,共享一个Ws。这样可以有效地减少训练参数。

 在神经元模型中,对隐层而言,如果输出用Si表示,如下图所示。

 将Si写成矩阵的形式,如下图所示。

         对于RNN而言,这个式子就活了起来,多了一项Ws×St-1,这样就建立了隐层在不同时刻,即 t-1 时刻与 t 时刻之间的一种迭代关系,换言之,就是让神经网络有了某种记忆的能力。

         RNN本质上就是用这样一种看似是级联,但实际上却是沿着时序反复迭代的网络结构,从而实现了对序列数据的学习。

给出RNN网络结构的3D动画演示,如下为两个视频链接。

https://live.csdn.net/v/320071icon-default.png?t=N6B9https://live.csdn.net/v/320071

https://live.csdn.net/v/320071icon-default.png?t=N6B9https://live.csdn.net/v/320071

        RNN对时序数据的建模,使它天生就是一个记账小能手,就像你的女朋友或老婆,每次吵架都能把各种陈芝麻烂谷子的事情滔滔不绝地讲出来一样,这种天赋让RNN在自然语言处理NLP领域实现了巨大的飞跃。

RNN网络的输入输出关系

        由于时序上的层级结构,使得RNN在输入输出关系上具备了更大的灵活性,能够解决不同的问题。RNN的输入输出关系则有四种:1 to N、N to 1、N to N、N to M(N≠M),如下图所示。

         第一种 1 to N:比如单入多出的形式,输入可以是一副图片,而输出则是一段话或者music,利用它可以实现看图说话或者是放音乐的功能。

 第二种 N to 1:下面这种是N to 1的情况,输入是序列式的,可以是一段话,而输出是单个的,可以是一种情感类别的判定,或者是一张图片。如下图所示。

 第三种N to N:输入和输出两个序列是等长的,这种RNN网络可以用来生成文章、诗歌、代码。

 第四种N to M(N≠M):输入和输出的序列不等长,如下图所示。

        该模型先将输入数据编码成一个上下文的向量, 然后通过该向量输出预测的序列,这种RNN在机器翻译、文本摘要、阅读理解、对话生成等很多领域都有着极为广泛的应用。

为什么要用循环神经网络

        在前馈神经网络中, 信息的传递是单向的 这种限制虽然使得网络变得更容易学习, 但在一定程度上也减弱了神经网络模型的能力 在生物神经网络中 神经元之间的连接关系要复杂得多. 前馈神经网络可以看作一个复杂的函数 每次输入都是独立的, 即网络的输出只依赖于当前的输入 但是在很多现实任务中 ,网络的输出不仅和当前时刻的输入相关, 也和其过去一段时间的输出相关 比如一个 有限状态自动机 其下一个时刻的状态 输出 不仅仅和当前输入相关 也和当前状态( 上一个时刻的输出 相关 此外 前馈网络难以处理时序数据 比如视频、 语音 文本等 时序数据的长度一般是不固定的 而前馈神经网络要求输入和输出的维数都是固定的, 不能任意改变 因此 当处理这一类和时序数据相关的问题时, 就需要一种能力更强的模型

循环神经网络介绍

        循环神经网络 Recurrent Neural Network RNN 是一类具有 短期记忆 能力的神经网络. 在循环神经网络中 神经元不但可以接受其他神经元的信息 也可以接受自身的信息, 形成具有环路的网络结构 .和前馈神经网络相比, 循环神经网络更加符合生物神经网络的结构.
        循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上 循环神经网络的参数学习可以通过 随时间反向传播 算法 来学习 随时间反向传播算法即按照时间的逆序将错误信息一步步地往前传递. 当输入序列比较长时 会存在梯度爆炸和消失问题 也称为 长程依赖问题 为了解决这个问题, 人们对循环神经网络进行了很多的改进 其中最有效的改进方式引入 门控机制 Gating Mechanism ). 此外, 循环神经网络可以很容易地扩展到两种更广义的记忆网络模型 递归神经网络 图网络
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值