RNN(循环神经网络)详解
为什么要引入RNN?
我们可以把一个普通的神经网络当成一个能够你和任意函数的黑盒,只要训练的数据足够多,给定特定的x,我们就可得到希望的y。结构如下
该模型可以用于处理单独的一个一个的输入。但是,当我们处理序列信息时,即前面的输入跟后面的输入是有关系的,普通的神经网络模型就无法实现了。
以nlp中的一个词性标注任务来看:将” 我爱学习 “这句话进行词性标注时,学习这个词既可以当名词也可以当动词,单独标注的话很难确定。但是当我们用循环神经网络进行处理时,将 “爱” 处理为动词时,”学习” 这个词在在动词后面,它很大概率被处理为名词。
所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。
; RNN的结构
RNN的结构跟普通的神经网络类似,由输入层、隐藏层、输出层组成。
U是输入层到隐藏层的权重矩阵。
V是隐藏层到输出层的权重矩阵。
与普通的全连接神经网络不同的是,循环神经网络的隐藏层S得知不仅取决于本次的输入X,还取决于上一次隐藏层的值S,W就是上一次隐藏层的值S作为本次输入的权值矩阵。
将上图按照时间线展开
用公式表示如下
BiRNN和DRNN
BiRNN(双向RNN)
虽然RNN达到了传递信息的目的,但是只是将上一时刻的信息传递到了下一时刻,也就是只考虑到了当前节点前的信息,没有考虑到该节点后的信息。具体到NLP中,也就是一句话,不仅要考虑某个词上文的意思,也还要考虑下文的意思,这个时候普通的RNN就做不到了。于是就有了双向RNN(Bidirectional RNN)。
上面是BiRNN的结构图,蓝框和绿框分别代表一个隐藏层,BiRNN在RNN的基础上增加了一层隐藏层,这层隐藏层中同样会进行信息传递,两个隐藏层值地计算方式也完全相同,只不过这次信息不是从前往后传,而是从后往前传,这样不仅能考虑到前文的信息而且能考虑到后文的信息了。
; DRNN
上图是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/
转载文章受原作者版权保护。转载请注明原作者出处!