本文主要是介绍Mxnet (23): 双向循环神经网络(Bi-RNN),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
到目前为止,我们假定我们的目标是给定到目前为止所看到的内容,例如在时间序列的上下文中或在语言模型的上下文中,对下一个单词进行建模。但是会有填写空白的情况:
I am _____
I am _____ very hungry.
I am _____ very hungry, I could eat half a pig.
根据可用的信息量,我们可能用非常不同的词(例如“高兴”,“不满意”和“非常”)来填充空白。显然,短语的结尾传达了有关选择哪个单词的重要信息。无法利用此功能的序列模型将无法在相关任务上执行。
1 双向模型
我们希望RNN中有一种机制可以提供与HMM中类似的预见能力,那么我们需要修改循环网络设计。从概念上讲这很容易:我们不仅仅从第一个符号开始运行RNN,并且从最后一个符号其从后到前运行另一个RNN。双向循环神经网络添加了一个隐藏层,该隐藏层在反向传递信息以更灵活地处理此类信息。
2 定义
对于给定的时间步 t t t, 小批量输入为 X t ∈ R n × d \mathbf{X}_t \in \mathbb{R}^{n \times d} Xt∈Rn×d (样本数: n n n, 输入数: d d d) 隐藏激活功能为 ϕ \phi ϕ. 在双向体系结构中, 我们假设当前时间步的向前和向后的隐藏状态分别为 H → t ∈ R n × h \overrightarrow{\mathbf{H}}_t \in \mathbb{R}^{n \times h} Ht∈Rn×h 和 H ← t ∈ R n × h \overleftarrow{\mathbf{H}}_t \in \mathbb{R}^{n \times h} Ht∈Rn×h 。 h h h 指隐藏单位数。计算向前和向后的隐藏状态更新为:
H → t = ϕ ( X t W x h ( f ) + H → t − 1 W h h ( f ) + b h ( f ) ) , H ← t =
这篇关于Mxnet (23): 双向循环神经网络(Bi-RNN)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!