双向长短时记忆循环神经网络详解(Bi-directional LSTM RNN)
副标题[/!--empirenews.page--]
1. Recurrent Neural Network (RNN)尽管从多层感知器(MLP)到循环神经网络(RNN)的扩展看起来微不足道,但是这对于序列的学习具有深远的意义。循环神经网络(RNN)的使用是用来处理序列数据的。在传统的神经网络中模型中,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题是无能为力的。比如,预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。循环神经网络(RNN)指的是一个序列当前的输出与之前的输出也有关。具体的表现形式为网络会对前面的信息进行记忆,保存在网络的内部状态中,并应用于当前输出的计算中,即隐含层之间的节点不再无连接而是有链接的,并且隐含层的输入不仅包含输入层的输出还包含上一时刻隐含层的输出。理论上,循环神经网络能够对任何长度的序列数据进行处理,但是在实践中,为了减低复杂性往往假设当前的状态只与前面的几个状态相关。 下图展示的是一个典型的循环神经网络(RNN)结构。 将循环神经网络(RNN)可视化的一种有效方法是考虑将其在时间上进行展开,得到如图2结构。 图中展示的是一个在时间上展开的循环神经网络(RNN),其包含输入单元(Input Units),输入集标记为{
在循环神经网络中(RNN),有一条单向流动的信息流是从输入单元到达隐含单元的,与此同时,另一条单向流动的信息流从隐含单元到达输出单元。在某些情况下,循环神经网络(RNN)会打破后者的限制,引导信息从输出单元返回隐含单元,这些被称为“Back projections”,并且隐含层的输入还包括上一层隐含层的输出,即隐含层内的节点是可以自连也可以互连的。 对于图2网络的计算过程如下: 1)
2)
3)
需要注意的是: 隐含层状态
在传统神经网络中,每一个网络层的参数是不共享的。而在循环神经网络(RNN)中,每输入一步,每一层各自都共享参数U,V,W,其反映着循环神经网络(RNN)中的每一步都在做相同的事,只是输入不同。因此,这大大降低了网络中需要学习的参数。具体的说是,将循环神经网络(RNN)进行展开,这样变成了多层的网络,如果这是一个多层的传统神经网络,那么
图中每一步都会有输出,但是每一步都要有输出并不是必须的。比如,我们需要预测一条语句所表达的情绪,我们仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的。循环神经网络(RNN)的关键之处在于隐含层,隐含层能够捕捉序列的信息。 最后,对于整个循环神经网络(RNN)的计算过程如下: 向前推算(Forward pass): 对于一个长度为T的输入x,网络有I个输入单元,H个隐含单元,K个输出单元。定义
与此同时,对于网络的输出单元也可以通过如下公式计算出: 向后推算(Forward pass): 如同标准的反向传播(Backpropagation),通过时间的反向传播(BPTT)包含对链规则的重复应用。具体的说是,对于循环网络,目标函数依赖于隐含层的激活函数(不仅通过其对输出层的影响,以及其对下一个时步隐含层的影响),也就是: 对于全部的序列
2. Bi-directional Recurrent Neural Network (BRNN)如果能像访问过去的上下文信息一样,访问未来的上下文,这样对于许多序列标注任务是非常有益的。例如,在最特殊字符分类的时候,如果能像知道这个字母之前的字母一样,知道将要来的字母,这将非常有帮助。同样,对于句子中的音素分类也是如此。 然而,由于标准的循环神经网络(RNN)在时序上处理序列,他们往往忽略了未来的上下文信息。一种很显而易见的解决办法是在输入和目标之间添加延迟,进而可以给网络一些时步来加入未来的上下文信息,也就是加入M时间帧的未来信息来一起预测输出。理论上,M可以非常大来捕获所有未来的可用信息,但事实上发现如果M过大,预测结果将会变差。这是因为网路把精力都集中记忆大量的输入信息,而导致将不同输入向量的预测知识联合的建模能力下降。因此,M的大小需要手动来调节。 双向循环神经网络(BRNN)的基本思想是提出每一个训练序列向前和向后分别是两个循环神经网络(RNN),而且这两个都连接着一个输出层。这个结构提供给输出层输入序列中每一个点的完整的过去和未来的上下文信息。下图展示的是一个沿着时间展开的双向循环神经网络。六个独特的权值在每一个时步被重复的利用,六个权值分别对应:输入到向前和向后隐含层(w1,w3),隐含层到隐含层自己(w2,w5),向前和向后隐含层到输出层(w4,w6)。值得注意的是:向前和向后隐含层之间没有信息流,这保证了展开图是非循环的。 对于整个双向循环神经网络(BRNN)的计算过程如下: 向前推算(Forward pass): (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |