有人可以向我解释初始化 keras lstm 层中传递的激活参数和循环激活参数之间的区别吗?
Posted
技术标签:
【中文标题】有人可以向我解释初始化 keras lstm 层中传递的激活参数和循环激活参数之间的区别吗?【英文标题】:Can someone explain to me the difference between activation and recurrent activation arguments passed in initialising keras lstm layer? 【发布时间】:2017-12-10 09:33:22 【问题描述】:有人可以向我解释在初始化 keras lstm 层中传递的激活参数和循环激活参数之间的区别吗?
据我了解,LSTM 有 4 层。如果我没有将任何激活参数传递给 LSTM 构造函数,请解释一下每一层的默认激活函数是什么?
【问题讨论】:
【参考方案1】:根据 Andrew Ng 在这个视频1 中的解释,更新、遗忘和输出门这三个门需要一个 sigmoid 类型的激活函数。因此,keras 文档中的激活是指这些激活值。
更新候选所需的激活和输出是 tanh。所以循环激活对应于 Keras 文档中的这些激活。RA-Recurrent Activation, Act.-Activations
【讨论】:
【参考方案2】:开启code
1932 年的线路
i = self.recurrent_activation(z0)
f = self.recurrent_activation(z1)
c = f * c_tm1 + i * self.activation(z2)
o = self.recurrent_activation(z3)
h = o * self.activation(c)
recurrent_activation 用于激活输入/忘记/输出门。
激活 如果用于单元状态和隐藏状态。
【讨论】:
【参考方案3】:一个 LSTM 单元除了一个候选隐藏状态 (g) 和一个输出隐藏状态 (c) 之外,还有 3 个门,称为输入门、遗忘门和输出门。
LSTMCell 类中的 build 方法包含调用这些激活的实现 (https://github.com/keras-team/keras/blob/master/keras/layers/recurrent.py#L1892)。
recurrent_activation 参数适用于输入、遗忘和输出门。此参数的默认值是硬 S 型函数。 activation 参数适用于候选隐藏状态和输出隐藏状态。此参数的默认值是双曲正切函数。
【讨论】:
【参考方案4】:我验证了您的问题,以下是我的结论: - 激活:tanh; - 循环激活:sigmoid(keras 中默认 hard_sigmoid); 对于一个单元格中的 4 个门: - i、f、o 使用循环激活; - C 和更新 h 使用激活;
【讨论】:
【参考方案5】:所以当调用LSTM
层时,会执行两种操作:
recurrent_activation
(默认值为hard_sigmoid
)。
计算层的最终输出。在这里,您正在应用 activation
函数(默认值为 tanh
)。
Here你可以阅读详细信息。
【讨论】:
我刚刚阅读了您分享的文章。我的理解是一个 LSTM 块中有四层。 1.忘记层,它决定从单元状态中忘记什么。 2.输入门层决定我们将更新单元状态的哪些值 3. tanh 层创建一个新的候选值向量,可以添加到状态中。 4.最后一个sigmoid层决定我们要输出什么。现在请你告诉我这四个中哪些是循环激活,哪些是正常激活。以上是关于有人可以向我解释初始化 keras lstm 层中传递的激活参数和循环激活参数之间的区别吗?的主要内容,如果未能解决你的问题,请参考以下文章
Keras 如何处理单元格和隐藏状态(RNN、LSTM)的初始值以进行推理?