为什么可以缓解梯度爆炸呢,这里不是非常懂
这里的vocab_size指的是词向量的维度吧?
1 Like
对第4问没懂。“ 那么为什么隐状态需要再次使用tanhtanh函数来确保输出值范围在(−1,1)(−1,1)之间呢?”,这里隐状态有用tanh函数吗?隐状态H的计算公式里不是只用了一次tanh作用在C_t上吗?
1 Like
候选记忆元用tildeC表示,记忆元用C表示。
- 首先来回答您关于隐状态是否使用了 tanh()函数的疑问。
Ht = Hadamard(Ot,tanh(Ct)),(Hadamard就是逐元素的乘积)
在这里,隐状态表示为了Ot和tanh(Ct)的Hadamard积,这里所说的“隐状态再次使用了 tanh() 函数”其实指的就是这里的记忆元使用了tanh()函数,因为记忆元Ct使用了 tanh()函数,且其和Ot的Hadamard积的最终表示结果就是Ht,故可以理解为Ht使用了 tanh() 函数。 - 关于这一个问题的具体解答,是这样的:
虽然候选记忆元 tildeC 使用了tanh()函数,但是求Ct的方式是这样的
Ct = Hadamard(Ft, Ct-1) + Hadamard(It, tildeCt)
可以很容易看出,例如当Ft和It均取1,且Ct-1和tildeCt也均取1时,结果为2,超出了(-1, 1)范围。故最后还需使用tanh()函数在求Ht的过程中使其回到(-1, 1)。
2 Likes
想知道如何从lstm 进化到gru的?从目前来看使用reset, update gates基本上已经达到类似效果
为什么要限制在(-1,1)?有什么好处呢?。。。。
练习第2题生成合适单词该怎么处理呢?predict_ch8返回的是vocab.idx_to_token[i], 如何优化以返回合适单词呢?
我猜测是因为两者效果上类似,但是gru比lstm简单(删减掉了记忆元部分)?
这应该是防止爆炸吧,绝对值小于1的数相乘,得到的绝对值肯定小于自身呀
我觉得可能是加入遗忘门的缘故,遗忘门保留了过去的记忆元,使之不会产生梯度爆炸