双向 LSTM(Bidirectional LSTM)与普通 LSTM 有类似的公式过程,但有一些细微的差别。LSTM 是一种循环神经网络(RNN),用于处理序列数据。它具有一个门控机制,可以捕捉长期依赖关系。

双向 LSTM 结构中有两个 LSTM 层,一个从前向后处理序列,另一个从后向前处理序列。这样,模型可以同时利用前面和后面的上下文信息。在处理序列时,每个时间步的输入会被分别传递给两个 LSTM 层,然后它们的输出会被合并。

具体而言,双向 LSTM 的公式过程如下:

前向 LSTM:

输入门(input gate):it=σ(Wixxt+Wihht−1+bi)i_t = \sigma(W_{ix}x_t + W_{ih}h_{t-1} + b_i)it​=σ(Wix​xt​+Wih​ht−1​+bi​)遗忘门(forget gate):ft=σ(Wfxxt+Wfhht−1+bf)f_t = \sigma(W_{fx}x_t + W_{fh}h_{t-1} + b_f)ft​=σ(Wfx​xt​+Wfh​ht−1​+bf​)细胞状态(cell state)更新:C~t=tanh(Wcxxt+Wchht−1+bc)\tilde{C}_t = \text{tanh}(W_{cx}x_t + W_{ch}h_{t-1} + b_c)C~t​=tanh(Wcx​xt​+Wch​ht−1​+bc​)细胞状态(cell state):Ct=ft⊙Ct−1+it⊙C~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_tCt​=ft​⊙Ct−1​+it​⊙C~t​输出门(output gate):ot=σ(Woxxt+Wohht−1+bo)o_t = \sigma(W_{ox}x_t + W_{oh}h_{t-1} + b_o)ot​=σ(Wox​xt​+Woh​ht−1​+bo​)隐状态(hidden state):ht=ot⊙tanh(Ct)h_t = o_t \odot \text{tanh}(C_t)ht​=ot​⊙tanh(Ct​)

后向 LSTM:

输入门(input gate):it′=σ(Wix′xt+Wih′ht+1′+bi′)i'_t = \sigma(W'_{ix}x_t + W'_{ih}h'_{t+1} + b'_i)it′​=σ(Wix′​xt​+Wih′​ht+1′​+bi′​)遗忘门(forget gate):ft′=σ(Wfx′xt+Wfh′ht+1′+bf′)f'_t = \sigma(W'_{fx}x_t + W'_{fh}h'_{t+1} + b'_f)ft′​=σ(Wfx′​xt​+Wfh′​ht+1′​+bf′​)细胞状态(cell state)更新:C~t′=tanh(Wcx′xt+Wch′ht+1′+bc′)\tilde{C}'_t = \text{tanh}(W'_{cx}x_t + W'_{ch}h'_{t+1} + b'_c)C~t′​=tanh(Wcx′​xt​+Wch′​ht+1′​+bc′​)细胞状态(cell state):Ct′=ft′⊙Ct+1′+it′⊙C~t′C'_t = f'_t \odot C'_{t+1} + i'_t \odot \tilde{C}'_tCt′​=ft′​⊙Ct+1′​+it′​⊙C~t′​输出门(output gate):ot′=σ(Wox′xt+Woh′ht+1′+bo′)o'_t = \sigma(W'_{ox}x_t + W'_{oh}h'_{t+1} + b'_o)ot′​=σ(Wox′​xt​+Woh′​ht+1′​+bo′​)隐状态(hidden state):ht′=ot′⊙tanh(Ct′)h'_t = o'_t \odot \text{tanh}(C'_t)ht′​=ot′​⊙tanh(Ct′​)

其中,xtx_txt​ 是输入序列的第 ttt 个时间步的向量表示,hth_tht​ 是前向 LSTM 在第 ttt 个时间步的隐状态,ht+1′h'_{t+1}ht+1′​ 是后向 LSTM 在第 ttt 个时间步的隐状态,CtC_tCt​ 是前向 LSTM 在第 ttt 个时间步的细胞状态,Ct+1′C'_{t+1}Ct+1′​ 是后向 LSTM 在第 ttt 个时间步的细胞状态。WWW 和 bbb 是模型的参数,σ\sigmaσ 是 sigmoid 函数,⊙\odot⊙ 表示逐元素相乘。

通过双向 LSTM,我们可以获得更全面的序列信息,有助于提高模型在序列任务中的性能。