LSTM - 使用 deltaTime 作为功能?如何处理不规则的时间戳?

LSTM - Use deltaTime as a feature? How to handle irregular timestamps?

我正在尝试创建一个 LSTM 来对数据序列进行分类。

我将使用的每个训练输入的数据结构是:

[[
[deltaX,deltaY,deltaTime],
[deltaX,deltaY,deltaTime],...
],class]

其中deltaX和deltaY反映了给定时间deltaTime内X和Y的变化。
deltaTime 每次都不一样,它可以从 40 毫秒到 50 毫秒到有时 1000 毫秒不等。最后的'class'是二分类,可以是0也可以是1。

问题 1(常规 LSTM):如果我要使用基本 LSTM (Keras LSTM),是否应该将 deltaTime 作为特征输入?


我知道 LSTM 有时间戳,但它们固定为一个给定的长度。我仔细研究了 phasedLSTM,但它们似乎更适合移动的 2 个周期性时间框架。


我遇到的唯一适合的是时间感知 LSTM。

问题 2(时间感知 LSTM):你会推荐他们解决我的问题吗?如果是这样:是否有 keras 实现,因为我之前没有使用过 tensorflow。

如果我理解正确的话,deltaTime 是数据集中两个连续元素之间经过的时间间隔,不同元素的增量是不同的。

  1. 一般来说,LSTM 会期望顺序元素之间的持续时间具有某种规律性。 所以回答你的第一个问题:你可能应该并且因为它不是实时序列你也可以尝试其他 NN 类型。 "Probably" 因为在使用和不使用此功能的情况下检查测试集的精度时,您将得到真正的答案。

  2. T-LSTM 是一个模型(实际上是一个代码,可以修改您的训练集并以不同方式训练 reqular LSTM),它是为与您的情况完全一样的情况而提出的。它已经两年没有更新了,可能需要进行一些修改才能支持 TF2。 Keras 本身是高端 API 和 运行s 在包括 TensorFlow 在内的多个框架之上。您可以通过它使用它和 运行 任何 TF 功能,尽管我建议使用 tf.keras

作为旁注,对于您的问题,我建议您查看时间延迟神经网络。 TDNN 在 TensorFlow、PyTorch 和可能许多其他框架中实现。

鉴于您的输出只是一个二进制变量,我不确定是否值得投入那么多技术手段来解决这个问题

几个备选方案:

  1. 将数据转换为一组定期采样的 x,y 坐标。只需选择一组 "good" 时间并适当地插入位置变化(delta 函数是最简单的,或者你可以做线性的,或者更针对你的问题的东西)。然后,您可以将此工程特征用于更多种类的模型,例如简单的 CNN

  2. 高斯过程回归可以直接处理这类数据,但它是与 NN

  3. 截然不同的模型