我正在尝试实现 RNN 和 LSTM 多对多架构。我自己推理为什么 BPTT 在 RNN 中是必要的,而且这是有道理的。
但对我来说没有意义的是,我在网上浏览的大多数 LSTM back prop 资源(如附件)和这个:https://www.youtube.com/watch?v=8rQPJnyGLlY
似乎在当前时间戳本身上做了更多的反向传播,但不是通过 time ,保留变量约定,类似于 RNN ,我会假设在计算 DL w.r.t Wf 时,因为当前时间步长和先前的隐藏状态都已完成Wf 的上限,两者都需要加在一起,但我发现的大多数推导都没有这样做。
具体来说,采用课程者的符号,前向道具:
ft = sigmoid( Wf.(at-1, xt) + bf )
it = sigmoid(Wi.(at-1, xt) + bi )
ctil = Tanh(Wc.(at-1, xt) + bc )
ct = ft * ct-1 + it*ctil
ot = sigmoid(Wo.(at-1, xt) + bo )
at = ot * Tanh(ct)
yhat_t = Softmax(Wy.at + by )
由于 at-1 和 ot 的方程中都有 Wo,我假设 dWo 的推导如下:
dWo = dat * (1-T(ct)**2 ) * ot* (1-ot )*(at-1,xt)-dot part + dotat-1 * dat-1ot-1 * dot-1Wo
以上推导包含dot + dot-1。但是coursera给出的推导,只包含dot,不包含dot-1。
在更新门和忘记门的推导中,加号后面的内容不应该是 t-1 而不是 t 吗?
所以,我假设 LSTM 反向传播不涉及 BPTT ,有人可以告诉我这一点吗?
我正在专门寻找 LSTM 中 BP 的正确理论推导,以及它们在理论上是否涉及 BPTT。
非常感谢任何帮助。
谢谢!
LSTM 中不存在“正确的”理论反向传播。它们确实随着时间的推移而发展和变化。我发现这篇论文对于理解 LSTM 非常有用。
根据那里的引用(显然在论文中您还会找到那里引用的来源。
LSTM 的历史: LSTM 块的初始版本 [14, 15] 包括(可能是多个)单元、输入和输出门,但没有 忘记门和没有窥视孔连接。输出门,单位偏置, 或输入激活函数在某些实验中被省略。 训练是使用实时循环学习的混合来完成的 (RTRL) [23, 24] 和随时间反向传播 (BPTT) [24, 25]。
只有细胞的梯度随时间传播回来,并且 其他循环连接的梯度被截断。因此, 该研究没有使用精确的梯度进行训练。其他 该版本的特点是使用全门循环, 意味着所有门都收到了来自所有门的循环输入 除了来自的循环输入之外的前一个时间步 块输出。这个功能在后来的任何论文中都没有出现。
希望这有帮助。否则我还建议在另一个社区寻求帮助。或者将您的问题改写为编码问题。