RNN详解

RNN(循环神经网络)详解

为什么要引入RNN?

​ 我们可以把一个普通的神经网络当成一个能够你和任意函数的黑盒,只要训练的数据足够多,给定特定的x,我们就可得到希望的y。结构如下

RNN详解

​ 该模型可以用于处理单独的一个一个的输入。但是,当我们处理序列信息时,即前面的输入跟后面的输入是有关系的,普通的神经网络模型就无法实现了。

​ 以nlp中的一个词性标注任务来看:将” 我爱学习 “这句话进行词性标注时,学习这个词既可以当名词也可以当动词,单独标注的话很难确定。但是当我们用循环神经网络进行处理时,将 “爱” 处理为动词时,”学习” 这个词在在动词后面,它很大概率被处理为名词。

​ 所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。

; RNN的结构

​ RNN的结构跟普通的神经网络类似,由输入层、隐藏层、输出层组成。

RNN详解

​ U是输入层到隐藏层的权重矩阵。

​ V是隐藏层到输出层的权重矩阵。

​ 与普通的全连接神经网络不同的是,循环神经网络的隐藏层S得知不仅取决于本次的输入X,还取决于上一次隐藏层的值S,W就是上一次隐藏层的值S作为本次输入的权值矩阵。

​ 将上图按照时间线展开

RNN详解

​ 用公式表示如下

RNN详解

BiRNN和DRNN

BiRNN(双向RNN)

​ 虽然RNN达到了传递信息的目的,但是只是将上一时刻的信息传递到了下一时刻,也就是只考虑到了当前节点前的信息,没有考虑到该节点后的信息。具体到NLP中,也就是一句话,不仅要考虑某个词上文的意思,也还要考虑下文的意思,这个时候普通的RNN就做不到了。于是就有了双向RNN(Bidirectional RNN)。

RNN详解

​ 上面是BiRNN的结构图,蓝框和绿框分别代表一个隐藏层,BiRNN在RNN的基础上增加了一层隐藏层,这层隐藏层中同样会进行信息传递,两个隐藏层值地计算方式也完全相同,只不过这次信息不是从前往后传,而是从后往前传,这样不仅能考虑到前文的信息而且能考虑到后文的信息了。

; DRNN

RNN详解

​ 上图是DRNN的结构图,很简单,每一个红框里面都是一个BiRNN,然后一层BiRNN的输出值再作为另一个BiRNN的输入。多个BiRNN堆叠起来就成了DRNN。

Original: https://blog.csdn.net/qq_19830591/article/details/125951598
Author: 侯一鸣Supermonkey
Title: RNN详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/530674/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球