我正在为我的 LSTM 执行梯度检查,它有 4 个时间步长。LSTM 如下所示:
01 01 01 01
^ ^ ^ ^
LSTM --> LSTM --> LSTM --> LSTM
^ ^ ^ ^
11 11 11 11
因此,在每个时间步,我们都输入向量 {1,1} 并期望输出为 {0,1}。
假设我扰乱了 LSTM 内部的权重,然后执行 4 个前向 props - 每个时间步一个 - 我现在如何获得这个单一扰动引起的成本函数的增量?
我是否可以简单地将所有 4 个时间步的成本变化加起来,将其视为导数估计?
另外,我是否应该为 LSTM 执行如下操作:
- 向上扰动单个权重
- 前向道具 4 个时间步长
- 向下扰动重量
- 前向道具 4 个时间步长
- 获得 4 个增量
- 将 4 个增量相加得到成本的总变化
或者
- 设置 N=0
- 向上扰动重量
- 特定时间步长 N 的正向道具
- 向下扰动重量
- 在特定时间步长 N 的正向道具
- 获取单个增量,将其存储起来
- 增量 N
- 直到 N 不等于 4 返回步骤 2)
- 将 4 个增量相加得到成本的总变化
第二种方法似乎更正确,因为 LSTM 将具有隐藏状态..这是正确的直觉还是无关紧要?