普通神经网络MLP与RNN不得不说的秘密

描述

 

记录一下RNN为什么可以记录以前历史信息,如何从公式中体现出?

那么首先介绍一下为什么普通的神经网络不能记忆以前的历史信息,然后引出RNN的相应能力,因为如果普通的神经网络能够记录以前的历史信息的话,那么也就不会有RNN思想的诞生了。

1普通神经网络(MLP)

首先我们有一个任务,就是进行词性标注,下面有两个训练数据。

他向我表白我觉得他的表白不够真诚

正确的词性是:

rnn

那么将这些训练数据送给神经网络进行训练,比如第一个数据 “他/r”,神经网络学习 “他->r”的一个映射,第二个数据 “向/p”,神经网络学习一个 “向->p”的映射,这样一直将训练数据学习完,更新到最后的参数,从而学习到model,但是问题来了。

学习示例图如下:

rnn

在上面的训练数据中,有些词语的词性并不是唯一的,比如“表白”一词,在“他向我表白”这句话中作为动词v,在“我觉得他的表白不够真诚”这句话中作为名词n,所以对于神经网络来说,它是会学乱的。

一下子神经网络要学习“表白”是动词,一下子又要学习“表白”是名词,神经网络也很无辜呀,它没有能力来处理什么情况下应该将“表白”判别为名词,什么情况下降“表白”判断为动词,因为神经网络学习不到周围的语境。喂给神经网络的数据和之前的数据并没有联系。

所以我们这个时候就需要一个能够记忆以前历史信息的网络出现,比如在第一句话中,碰到表达一词的时候,我知道他前面的词是“我”/代词,那么代词后面的表白作为动词的概率就远大于名词的表白,当然RNN还能够看到他前面好几个词语,理论上rnn可以记忆当前词语前面的任何词。

同理在第二句话的时候,碰到“表白”一词的时候,我们的网络能够知道他前面的词是“的”/助词,那么助词后面的“表白”作为名词的概率就远大于动词的”表白“。

所以我们希望能够有一个网络在预测当前任务的时候,能够记忆以前的知识帮助当前的任务完成,这样RNN就闪亮登场了,可能有些小伙伴会说,它存在很多问题,比如不能长期记忆,但是这篇文章不介绍,但是无论如何,RNN提供了这种问题解决的可能。

2循环神经网络记录历史信息RNN

首先来介绍一下RNN

首先看一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:

rnn

不知道初学的同学能够理解这个图吗,反正我刚开始学习的时候是懵逼的,每个结点到底代表的是一个值的输入,还是说一层的向量结点集合,如何隐藏层又可以连接到自己,等等这些疑惑~这个图是一个比较抽象的图。

我们现在这样来理解,如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈);s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同);

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • rnn

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分