如何更改输出到另一个 LSTM 层的 LSTM 层的反向传递?

人工智能 神经网络 机器学习 循环神经网络 反向传播 长短期记忆
2021-11-02 13:12:54

我目前正在尝试理解 Ger 的论文Long Short-Term Memory in Recurrent Neural Networks 中的数学。到目前为止,我发现该文档清晰易读。

在第 页。pdf 的第 21 页(论文的第 13 页),他推导出了输出门的后向传递方程。他写

yk(t)youtjek(t)=h(scjv(t))wkcjvδk(t)
.

如果我们更换δk(t),表达式变为

yk(t)youtjek(t)=h(scjv(t))wkcjvf(netk(t))ek(t)
.

他指出偏导数的结果yk(t)youtj来自对输出单元的前向传递方程进行微分。

从那和从包含ek(t),论文暗示只有一个隐藏的 LSTM 层。如果有多个隐藏的 LSTM 层,那就没有意义了。

因为如果k是当前单元输出到的 LSTM 单元的索引,则ek(t)将不存在,因为单元输出未与网络的目标输出进行比较。而如果k是输出神经元的索引,那么wkcjv不会存在,因为记忆细胞没有直接连接到输出神经元。k不能意味着不同的东西,因为这两个组件都放在一个总和之下k. 因此,只有在论文假设单个 LSTM 层时才有意义。

那么,如何修改输出到另一个 LSTM 层的 LSTM 层的反向传递推导步骤?

1个回答

我的理解是您p. 19在论文中发布了最后一个方程式(如果我错了,请纠正我)。

推导确实是针对单个 LSTM 层的,因为e k (t)是输出的误差(假设的网络拓扑结构也在论文下面提到Eq. (2.8)):

最后,假设分层网络拓扑具有标准输入层、由内存块组成的隐藏层和标准输出层 [...]

现在让我们假设有两个堆叠的 LSTM 层。在这种情况下,论文中的推导适用于最后一个隐藏的 LSTM 层(输出层下方的那个),其中Eqs. (3.10) -- (3.12)为您提供该层中每个单元的每个门的权重的偏导数。要导出下面隐藏 LSTM 层的增量,您必须计算与输出对应的net c v j (t)net in j (t)net f j (t)的部分的偏导数前面的隐藏 LSTM 层,然后以与您使用e相同的方式使用它们当前 LSTM 层的k (t)在所有这些不吸引人的符号下面是通常的多层反向传播规则(嗯,带有截断的 RTRL 扭曲)。如果您堆叠更多 LSTM 层,只需继续通过各自的门将错误进一步向下传播,直到到达输入层。

为了更直观的解释,如果你看一下Fig. 2.1论文,你可以假设在多层 LSTMIN中实际上包括OUT前面的 LSTM 层。

编辑

这里有一个很好的偏导数流程图(另见后续幻灯片)。

在此示例中,所有x t项表示在时间步t对该层的外部输入在多层 LSTM 中,这包括来自当前层之下的 LSTM 层的输入。要将误差传播到下面的层,请对与x t对应的所有门权重进行导数并应用链式法则。

输出门权重的推导不同的原因是门控是在单元状态更新之后应用的,而单元、输入和遗忘门是在此之前应用的。这在计算梯度时很重要。