我不太清楚什么是训练 RNN 的正确方法。假设我们正在使用一个普通的 RNN,并给出了一些分类序列长度:
为了拟合参数,计算交叉熵损失如下。首先,我在所有时间步计算网络输出:
每个输出都经过一个softmax得到一个分布向量在分类输出空间上。我用损失
对于一些玩具模型,即小T,通过在整个时间序列上展开RNN并做SGD来训练这个模型效果很好。我相信这就是所谓的随时间反向传播(BPTT)。
现在,对于大我想使用截断,即基本上只考虑过去的某个点, 说. 我尝试了两种变体,但没有看到明显的赢家:
- 第一种方法是拆分我的序列成不相交的长度子序列然后对这些子序列中的每一个进行下降步骤
- 其次,我尝试了滑动窗口的方法,其中窗口大小为,从而处理所有长度子序列
此外,可以想象中间方法,其中滑动窗口重叠的量更大。
有没有人有这方面的经验或知道一些关于这方面的教程或评论?
谢谢!