我有一些数据以非常高的速率采样(大约每秒数百次)。对于任何给定的实例,这导致平均序列长度很大(~90,000个样本)。整个序列都有一个标签。我正在尝试使用LSTM神经网络将新序列分类为这些标签之一(多类分类)。
但是,使用序列长度如此之大的LSTM会导致网络非常大。
有效“块化”这些序列的方法是什么,这样我可以减少神经网络的序列长度,但仍然保留在整个实例中捕获的信息?
答案 0 :(得分:5)
当你有很长的序列时,RNN可能会遇到消失梯度和爆炸渐变的问题。
有方法。您需要了解的第一件事是我们需要尝试上述方法吗?这是因为由于上述问题,通过时间的反向传播会变得非常困难。
是的,LSTM的介绍已经大大减少了这一点,但是当它持续这么长时间时你可能会面临这样的问题。
因此,一种方法是剪切渐变。这意味着您将上限设置为渐变。请参阅此stackoverflow question
然后你问这个问题
有效的' chunk'有哪些方法?这些序列?
一种方法是截断后向传播。有许多方法可以实现此截断的BPTT 。简单的想法是
2.获取完整序列,并且仅从所选时间块的某些给定时间步长反向传播梯度。这是一个持续的方式
这是我发现的最好的文章,它解释了这些trunacated BPTT方法。很容易。请参阅此Styles of Truncated Backpropagation
答案 1 :(得分:3)
这篇文章是前一段时间的,但我想我会在这儿报时。对于您正在处理的这个特定问题(具有局部性,成分性和平稳性的一维连续值信号),我强烈建议使用CNN卷积神经网络方法,而不是使用LSTM。
答案 2 :(得分:-1)