目录
双向循环神经网络(Bidirectional RNN)
双向RNN模型(BRNN),可以在序列的某点处不但获取之前的信息,同时还可以获取这个序列点之后的信息,说的炫酷点就是get information from the future。
而标准的RNN blocks、GRU units、LSTM units都只是前向的(单向)。
标准的RNN blocks:
双向连接是增加了反向循环层,
(左箭头代表反向连接)
先是从左到右的前向传播计算紫色框内的 ,然后再从右到左的前向传播计算绿色框内的 ,然后计算完所有的**值后再预测结果 。(注意这里的绿色框计算不是反向传播)。
例如y<3>可以理解为由前面3个紫色框+最后1个绿色框决定,这样所有的x<t>的信息都考虑在内了。
这就是双向循环神经网络,并且这些基本单元不仅仅是标准RNN单元,也可以是GRU单元或者LSTM单元。
双向RNN的缺点是需要完整的数据的序列,才能预测任意位置。比如说你要用双向RNN模型构建一个语音识别系统,你需要等待这个人说完,然后获取整个语音表达才能处理这段语音,并进一步做语音识别。
深层循环神经网络(Deep RNNs)
为了学习非常复杂的函数,通常会把RNN的多个层堆叠在一起构建更深的模型。
中 <l>表示层数 <t>表示时间步数
以三层的RNN网络为例,GRU和LSTM一样可以堆叠成多层网络。(CNN有100多层很常见,但是RNN一般只有个位数的层数,因为x<t>非常长)
,
另外一种加深网络的方式,开头用循环网络,后面加深普通网络如下图蓝色:
话说复杂模型可以构造为 深层双向的LSTM网络。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:双向循环神经网络和深层循环神经网络 (吴恩达老师_学习笔记) - Python技术站