序言
在序列建模的广阔领域中,循环神经网络( 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(t−1) 以及当前的输入 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, 前向传播公式可以写成表示使用卷积的形式,计算自底向上到每一层的输入(在整合横向相互作用的特征图的循环传播之前)。
- 图例1:典型的双向循环神经网络中的计算,意图学习将输入序列
x
\boldsymbol{x}
x 映射到目标序列
x
\boldsymbol{x}
x(在每个步骤
t
t
t 具有损失
L
(
t
)
L^{(t)}
L(t))。
-
典型的双向循环神经网络中的计算,意图学习将输入序列 x \boldsymbol{x} x 映射到目标序列 x \boldsymbol{x} x(在每个步骤 t t t 具有损失 L ( t ) L^{(t)} L(t))。
-
说明:
- 循环性 h \boldsymbol{h} h 在时间上向前传播信息(向右),而循环性 g \boldsymbol{g} g 在时间上向后传播信息(向左)。
- 因此在每个点 t t t,输出单元 ο ( t ) \boldsymbol{\omicron}^{(t)} ο(t) 可以受益于输入 h ( t ) \boldsymbol{h}^{(t)} h(t) 中关于过去的相关概要以及输入 g ( t ) \boldsymbol{g}^{(t)} g(t) 中关于未来的相关概要。
-
总结
双向 RNN \text{RNN} RNN作为一种创新的序列建模方法,显著提升了模型在处理复杂序列数据时的性能。通过前向 RNN \text{RNN} RNN捕捉过去的信息,后向 RNN \text{RNN} RNN捕捉未来的信息,并将两者的输出进行融合,双向 RNN \text{RNN} RNN能够生成更为丰富和准确的特征表示。这种特性使得双向 RNN \text{RNN} RNN在诸多领域,如机器翻译、语音识别、情感分析等,都取得了显著的应用效果。同时,双向 RNN \text{RNN} RNN也为后续的序列建模研究提供了新的思路和方法,推动了该领域的持续进步和发展。
标签:Graves,RNN,递归,text,boldsymbol,建模,al,et From: https://blog.csdn.net/benny_zhou2004/article/details/141143788