作者:开心小笨笨猪 | 来源:互联网 | 2023-02-01 16:06
我有一些数据以非常高的速率采样(每秒数百次)。对于任何给定的实例,这平均会导致序列长度很大(〜90,000个样本)。整个序列只有一个标签。我正在尝试使用LSTM神经网络将新序列分类为这些标签之一(多类分类)。
但是,使用具有如此大序列长度的LSTM会导致网络很大。
有什么方法可以有效地“整理”这些序列,以使我可以减少神经网络的序列长度,但仍保持整个实例中捕获的信息?
1> Shamane Siri..:
当序列很长时,RNN可能会遇到梯度消失和梯度爆炸的问题。
有方法。您需要了解的第一件事是为什么我们需要尝试上述方法?这是因为由于上述问题,长时间的反向传播会变得非常困难。
是的,LSTM的引入已在很大程度上减少了这种情况,但是仍然很长,您仍然会遇到此类问题。
因此,一种方法是剪切渐变。这意味着您设置渐变的上限。请参阅此stackoverflow问题
那你问这个问题
有哪些方法可以有效地“整理”这些序列?
一种方法是截断时间的反向传播。有很多方法可以实现此截断的BPTT。简单的想法是
仅计算给定时间步长的梯度这意味着,如果您的序列是200个时间步长,而您只给出10个时间步长,则它将仅计算10个时间步长的梯度,然后将在该10个时间步长中存储的存储值传递给下一个序列(作为初始单元状态)。张量流使用此方法来计算截断的BPTT。
2.采取完整的序列,并且仅从选定的时间块开始反向传播特定时间步长的梯度。这是一种连续的方式
这是我发现的最好的文章,它解释了这些截断的BPTT方法。很容易。请参阅这种截断的反向传播样式