我正在执行梯度检查我的LSTM,其中有4个时间步骤。LSTM的情况如下:
01 01 01 01
^ ^ ^ ^
LSTM --> LSTM --> LSTM --> LSTM
^ ^ ^ ^
11 11 11 11因此,在每一个时间步骤中,我们都是以向量{1,1}进给,并在输出时期望{0,1}。
假设我扰乱了LSTM内部的权重,然后执行4个前向支持--每个时间步骤一个--我现在如何得到这个单一扰动所导致的成本函数的增量?
是否允许我简单地将所有4个时间步骤中的成本变化相加,将其作为导数估计处理?
此外,我是否应该为LSTM执行以下操作:
或
第二种方法似乎更正确,因为LSTM会有一个隐藏的状态-- ..Is --这是正确的直觉,还是不重要?
发布于 2018-11-22 15:38:17
几个月后(在阅读了@SanjayKrishna的答案后)回答了我自己的问题。
我的“方法1”似乎更正确,但比实际需要的更仓促。
不要忘记,成本是均方误差。在我的具体情况下,它是每个时间步骤中错误的平均值。正是这个MSE让我们看到了“三角洲”。
因此,我们应采取以下行动:
cost_a。它应该只是一个标量值。cost_b,这是另一个标量值。cost_a中减去cost_b来计算增量(只是一个标量值)我实际上使用的是“SoftMaxedCrossEntropy”之类的东西,而不是MSE。但是想法是一样的:在每个时间步骤上总结错误,除以T,这就是我的成本。
发布于 2018-04-29 21:13:31
有趣的问题。
与标准反向传播一样,逆传时间由链规则的重复应用组成。其微妙之处在于,对于递归网络来说,损失函数不仅取决于其对输出层的影响,还取决于其对输出层的影响,也取决于它在下一时间阶段对隐藏层的影响。
看起来这两种方法都有相似的结果,但是在不同的粒度(在不同的级别上添加噪声),这是因为后端并没有真的被这个加法所干扰,因为从上一步到第一步,它仍然被链锁在一起。因此,它归结为为什么您实际上要添加噪音在第一,如在这文件,第IIIC和IV节中提到的。
https://datascience.stackexchange.com/questions/30919
复制相似问题