双向 LSTM(Bidirectional LSTM)与普通 LSTM 公式过程

LSTM是一种递归神经网络(RNN)的变体,它通过引入“门”(gates)来记忆序列信息。这些门包括输入门、遗忘门和输出门。

双向LSTM(Bidirectional LSTM)与普通LSTM的主要区别在于它同时处理输入序列的前后信息。双向LSTM模型对于一个词,不仅会根据当前词和前一个词来预测下一个词,还会根据当前词和后一个词来预测下一个词。因此,它可以捕捉到更复杂的语言模式。

以下是双向LSTM的公式过程:

初始化:

输入向量:x_t
隐藏状态:h_t 和 c_t
输出:y_t

前向传播:

根据当前输入和前一个隐藏状态计算当前输入门、遗忘门和输出门:
输入门: i_t = sigmoid(W_xi * x_t + W_hi * h_{t-1} + b_i)
遗忘门: f_t = sigmoid(W_xf * x_t + W_hf * h_{t-1} + b_f)
输出门: o_t = sigmoid(W_xo * x_t + W_ho * h_{t-1} + b_o)
根据输入门和当前输入计算新的候选内存细胞状态: 候选c_t = tanh(W_xc * x_t + W_hc * h_{t-1} + b_c)
更新当前记忆细胞状态: c_t = f_t * c_{t-1} + i_t * 候选c_t
更新当前隐藏状态: h_t = o_t * tanh(c_t)

后向传播:

与前向传播类似,但是需要考虑反向的时间顺序。例如,在时刻t,我们需要使用在时刻T-1的隐藏状态h_{T-1}。

预测下一个词:

对于每个时间步,将正向和反向的隐藏状态连接在一起: combined_h_t = [h_t; rev(h_{T-1})]
用softmax函数计算每个词的概率分布: y_t = softmax(W * combined_h_t + b)

以上就是双向LSTM的公式过程。

与普通LSTM相比,双向LSTM的优点是可以捕捉到输入序列中的前后信息,因此对于一些需要理解上下文的任务,如翻译、摘要、情感分析等,双向LSTM通常会比普通LSTM表现更好。

双向LSTM的缺点是它需要更多的计算资源和内存,因为它需要同时处理整个序列,而不仅仅是前一个词。此外,由于它同时考虑了前后信息,因此它对于输入序列的依赖更加紧密,对于输入序列的微小改动可能会影响到预测结果。

尽管存在这些缺点,但双向LSTM在许多自然语言处理任务中取得了显著的成功,成为了许多模型的基础架构。

猜你喜欢

转载自blog.csdn.net/xifenglie123321/article/details/132666978