递归神经网络/ LSTM结构:c_t + 1 = i_t * k_t + c_t * f_t

时间:2019-04-07 18:12:08

标签: keras lstm recurrent-neural-network

来自LSTM的资料来源:https://medium.com/@jon.froiland/recurrent-neural-networks-part-6-d585c7af8923

output_t = activation(dot(state_t, Uo) + dot(input_t, Wo) + dot(C_t, Vo) + bo)
i_t = activation(dot(state_t, Ui) + dot(input_t, Wi) + bi)
f_t = activation(dot(state_t, Uf) + dot(input_t, Wf) + bf)
k_t = activation(dot(state_t, Uk) + dot(input_t, Wk) + bk)

通过组合i_t,f_t和

获得新的进位状态(下一个c_t)
c_t+1 = i_t * k_t + c_t * f_t

我了解对f_t和i_t或k_t的需求,但是,我不直观地理解为什么同时需要i_t和k_t的原因。每个都包含相同的输入数据(state_t和input_t)。是否出于实现目的帮助在矩阵维数方面与c_t * f_t对齐?对此有任何想法!

1 个答案:

答案 0 :(得分:0)

在经典LSTM中,这两个具有不同的激活功能。 i_t被称为具有S形激活函数的输入门,k_t也被称为具有tanh激活函数的“候选值”。我还阅读了术语输入,“输入”和“输入调制”(例如Gal & Ghahramani)。引用克里斯托弗·奥拉(Christopher Olah)关于LSTM的精彩blog post

  

[忘记门层之后]的下一步是决定要在单元状态下存储哪些新信息。这包括两个部分。首先,称为“输入门层”的S形层决定了我们将更新哪些值。接下来,tanh层创建一个新候选值C〜t的向量,可以将其添加到状态中。在下一步中,我们将两者结合起来以创建对该州的更新。

他所指的输入门控层是您的i_t,候选值是k_t。基本上,

  

sigmoid层告诉我们要更新哪个(或什么比例)值,tanh层告诉我们如何更新状态。

(在博客文章讨论中引用Jann Krynauw)。请务必查看该文章,我发现了解LSTM很有帮助!