什么样的神经网络架构适合变长块状时间序列数据?

人工智能 神经网络 预言 时间序列
2021-11-03 20:05:05

我不确定这种类型的数据叫什么,所以我将举例说明我正在使用的数据类型:

  • 一个城市每小时记录其不同类型车辆的流入和流出。更具体地说,它记录引擎大小。输出将是记录的每小时间隔后 X 小时的污染水平。

值得注意的是,数据由单个车辆发动机大小组成,因此无法汇总。这意味着 2 个输入向量(流入和流出)的长度是可变的(每小时会有不同数量的车辆进入和驶入),我不知道如何处理这个问题。我可以汇总并简单地总结车辆数量,但我想保留数据中的任何模式。例如,可能有几个重型摩托车发动机快速接连出现,表示一个骑自行车的团伙刚刚进入城市并且以肆无忌惮地骑行而闻名,对污染的贡献大于其部分的总和。

任何见解都值得赞赏。

2个回答

(此回复应该是评论,但我还没有评论的声誉)。

如果我正确理解您的问题,您有可变数量的输入,它们有一个订单,只有一个输出?它看起来像是可以使用循环神经网络的任务(最常见的是 LSTM 和 GRU)。

如果您使用循环神经网络,您可以(如果您有数据的时间戳)将每小时间隔缩短为更小的时间步长,以帮助检测模式。

我遇到了同样的问题,但在语言方面。每个输入都是一个句子,因此长度不同。

更简单的解决方案是只找到最长的序列,提取它的长度,并将所有其他值填充为 0 以使它们都具有相同的大小,然后使用任何递归神经网络架构(因为你正在处理时间序列),其中这些填充值充当输入。当填充为 0 时,最好是更少的层具有偏差值,因为您希望所有与 0 的乘法都只给出 0,因为它们代表一个填充,有偏差意味着在权重乘以 0 之后它会增加一个小偏差值,这是不受欢迎的,因为它是不相关的信息,人们总是可以假设反向传播即使存在偏差也会学习 0,但实际上从来没有,它们大多学习极小的值,这也会阻碍结果

要尝试的另一件事是创建一个小型网络,为每个输入创建一个嵌入。填充的输入可以输入到一个小型神经网络,该网络生成一个固定大小的嵌入(特定层的激活在端到端训练时,Backprop 将学习一个体面的表示),这是循环神经架构的输入。- 添加网络来创建嵌入几乎总是有帮助的,只要保持简单。尝试嵌入算法(网络),可以帮助您找到一个理想化的算法,这可以显着提高您的结果。