序列建模之循环和递归网络 - 双向RNN篇

102 篇文章 1 订阅
62 篇文章 0 订阅

序言

在序列建模的广阔领域中,循环神经网络( RNN \text{RNN} RNN)以其独特的循环结构,在处理序列数据方面展现出了强大的能力。然而,传统的单向 RNN \text{RNN} RNN在处理某些复杂任务时,如自然语言处理中的文本理解,往往受限于其仅能利用过去信息的局限性。为了克服这一挑战,双向 RNN \text{RNN} RNN应运而生。双向 RNN \text{RNN} RNN通过结合两个独立且方向相反的 RNN \text{RNN} RNN,能够同时捕获输入序列中的前向和后向信息,从而在预测或分类时能够利用更全面的上下文信息。

双向 RNN \text{RNN} RNN

  • 目前为止我们考虑的所有循环神经网络有一个 ‘‘因果’’ 结构,意味着在时刻 t t t 的状态只能从过去的序列 x ( 1 ) , … , x ( t − 1 ) \boldsymbol{x}^{(1)},\dots,\boldsymbol{x}^{(t-1)} x(1),,x(t1) 以及当前的输入 x ( t ) \boldsymbol{x}^{(t)} x(t) 捕获信息。我们还讨论了某些在 y \boldsymbol{y} y 可用时,允许过去的 y \boldsymbol{y} y 值信息影响当前状态的模型。
  • 然而,在许多应用中,我们要输出的 y ( t ) \boldsymbol{y}^{(t)} y(t) 的预测可能依赖于整个输入序列。
    • 例如,在语音识别中,由于协同发音,当前声音作为音素的正确解释可能取决于未来几个音素,甚至潜在的可能取决于未来的几个词,因为词与附近的词之间的存在语义依赖:如果当前的词有两种声学上合理的解释,我们可能要在更远的未来(和过去)寻找信息区分它们。
    • 这在手写识别和许多其他序列到序列学习的任务中也是如此,将会在后续篇章:基于编码/解码的序列到序列架构中描述。
  • 双向循环神经网络(或双向 RNN \text{RNN} RNN)为满足这种需要而被发明( Schuster and Paliwal, 1997 \text{Schuster and Paliwal, 1997} Schuster and Paliwal, 1997)。他们在需要双向信息的应用中非常成功 ( Graves, 2012 \text{Graves, 2012} Graves, 2012),如:
    • 手写识别( Graves et al., 2008; Graves and Schmidhuber, 2009 \text{Graves et al., 2008; Graves and Schmidhuber, 2009} Graves et al., 2008; Graves and Schmidhuber, 2009),
    • 语音识别 ( Graves and Schmidhuber, 2005; Graves et al., 2013 \text{Graves and Schmidhuber, 2005; Graves et al., 2013} Graves and Schmidhuber, 2005; Graves et al., 2013),
    • 以及生物信息学 ( Baldi et al., 1999 \text{Baldi et al., 1999} Baldi et al., 1999)。
  • 顾名思义,双向 RNN \text{RNN} RNN结合时间上从序列起点开始移动的 RNN \text{RNN} RNN和另一个时间上从序列末尾开始移动的 RNN \text{RNN} RNN
    • 图例1展示了典型的双向 RNN \text{RNN} RNN,其中 h ( t ) \boldsymbol{h}^{(t)} h(t) 代表通过时间向前移动的子 RNN \text{RNN} RNN的状态, g ( t ) \boldsymbol{g}^{(t)} g(t) 代表通过时间向后移动的子 RNN \text{RNN} RNN的状态。
    • 这允许输出单元 ο ( t ) \boldsymbol{\omicron}^{(t)} ο(t) 能够计算同时依赖于过去和未来且对时刻 t t t 的输入值最敏感的表示,而不必指定 t t t 周围固定大小的窗口(这是前馈网络、 卷积网络或具有固定大小的先行缓存器的 RNN \text{RNN} RNN必须要做的)。
    • 这个想法可以自然扩展到 2 2 2 维输入,如图像,由四个 RNN \text{RNN} RNN组成,每一个沿着四个方向中的一个计算:上、下、左、右。
    • 如果 RNN \text{RNN} RNN能够学习到承载长期信息,那在 2 2 2维网格每个点 ( i , j ) (i,j) (i,j) 的输出 O i , j \Omicron_{i,j} Oi,j 就能计算一个能捕捉到大多局部信息并且依赖于长期输入的表示。
    • 相比卷积网络,应用于图像的 RNN \text{RNN} RNN通常更昂贵,但允许同一特征图的特征之间存在长期横向的相互作用 ( Visin et al., 2015; Kalchbrenner et al., 2015 \text{Visin et al., 2015; Kalchbrenner et al., 2015} Visin et al., 2015; Kalchbrenner et al., 2015)。
    • 实际上,对于这样的 RNN \text{RNN} RNN, 前向传播公式可以写成表示使用卷积的形式,计算自底向上到每一层的输入(在整合横向相互作用的特征图的循环传播之前)。

总结

双向 RNN \text{RNN} RNN作为一种创新的序列建模方法,显著提升了模型在处理复杂序列数据时的性能。通过前向 RNN \text{RNN} RNN捕捉过去的信息,后向 RNN \text{RNN} RNN捕捉未来的信息,并将两者的输出进行融合,双向 RNN \text{RNN} RNN能够生成更为丰富和准确的特征表示。这种特性使得双向 RNN \text{RNN} RNN在诸多领域,如机器翻译、语音识别、情感分析等,都取得了显著的应用效果。同时,双向 RNN \text{RNN} RNN也为后续的序列建模研究提供了新的思路和方法,推动了该领域的持续进步和发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绎岚科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值