趋近智
标准循环神经网络,例如LSTM和GRU,以单向方式处理序列,通常按时间顺序从开始到结束。在任意给定时间步t,隐藏状态ht概括了来自过去的输入x1,x2,...,xt的信息。尽管这反映了我们经常感受时间相关现象的方式,但对于某些任务而言可能存在局限。
考虑理解句子中一个词的含义。有时,正确解释一个词所需的上下文会在该词 之后 出现。例如,在句子“他与棒球队一起吃了一个蝙蝠”中,知道“棒球队”这些词有助于消除“bat”的歧义(更可能是运动器材,而不是动物)。一个从左到右处理的标准RNN,在看到澄清上下文之前就已经处理了“bat”。
在这里,双向循环神经网络(BiRNN)提供了优势。其主要思想简单明了:同时使用两个独立的循环层,以两个方向处理序列。
这两个层独立运行,每个都维护自己的一组权重和隐藏状态。它们可以由简单的RNN、LSTM或GRU单元组成。
在每个时间步t,BiRNN会产生一个输出,其中包含来自前向和后向处理的信息。将两个层的信息组合起来的最常见方法是在该时间步连接它们各自的隐藏状态。
The overall hidden state or output representation yt at time step t can be formed as:
yt=g([ht;ht])这里,[ht;ht]表示前向隐藏状态ht与后向隐藏状态ht的连接。函数g可以是一个恒等函数(直接使用连接后的状态),或者它可能涉及进一步的处理,例如将连接后的向量通过一个全连接层,具体取决于模型架构和任务。其他组合方法,如求和或平均,也存在,但不如连接方法常见。
下图展示了这种结构:
一个双向RNN使用两个独立的循环层处理输入序列x1,...,xT。前向层根据过去信息计算隐藏状态ht,而后向层根据未来信息计算ht。每一步的最终输出yt结合了ht和ht,通常通过连接操作。
BiRNN的主要优点是它们能够整合来自两个方向的上下文。这通常会提高在那些元素理解依赖于其周围上下文的任务上的表现。例子包括:
然而,BiRNN也伴随着一些考量:
在以下情况选择双向架构:
对于需要真正的在线处理或预测,且在预测时无法获得未来输入的任务,应避免使用双向架构。在此类情况下,标准的单向RNN是合适的选择。
在理解了双向处理的思想和用途之后,我们现在将探讨如何使用流行的深度学习框架实现标准和双向的LSTM和GRU层。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造