Machine learning 使用RNNs/LSTMs检测速度变化(给定当前xy位置)

Machine learning 使用RNNs/LSTMs检测速度变化(给定当前xy位置),machine-learning,lstm,recurrent-neural-network,anomaly-detection,lstm-stateful,Machine Learning,Lstm,Recurrent Neural Network,Anomaly Detection,Lstm Stateful,在给定连续数据的x、y坐标的情况下,我如何使用RNN/LSTM学习速度变化?(我必须使用一个循环层,因为这是一个更大的端到端模型的子问题,它也做其他事情) 培训数据示例: x,y,speed_changed 0,0,0 0,0.1,0 0,0.2,0 0,0.3,0 0,0.5,1 0,0.6,0 0,0.7,0 ... 到目前为止,我构建了有状态的LSTM,并对它进行每批一项的训练。之后,每次速度发生变化时,我都会重置LSTM的状态,因此我了解到一个段具有相同的速度(段可以具

在给定连续数据的x、y坐标的情况下,我如何使用RNN/LSTM学习速度变化?(我必须使用一个循环层,因为这是一个更大的端到端模型的子问题,它也做其他事情)

培训数据示例:

x,y,speed_changed

0,0,0

0,0.1,0

0,0.2,0

0,0.3,0

0,0.5,1

0,0.6,0

0,0.7,0

...
到目前为止,我构建了有状态的LSTM,并对它进行每批一项的训练。之后,每次速度发生变化时,我都会重置LSTM的状态,因此我了解到一个段具有相同的速度(段可以具有不同的长度)

既然分段的长度不同,我如何在生产中使用这种模型


或者有没有更好的方法来训练这些数据的经常性网络?也许是异常检测?(我希望避免使用固定的批量大小(例如,3帧的窗口))

RNN和LSTM的结构不允许您直接执行此操作,这就是原因-RNN的激活功能是: h(t)=Tanh(W*h(t-1)+U*x(t)+偏压) 请注意,W、U和偏差都是相同的-无论您对RNN使用多少时间帧。给定一些X向量,输出将是p1*X1+p2*X2的函数,以此类推,其中X1在示例中是X,X2是Y

但是,要检测速度的变化,需要进行不同的计算。速度的变化表明在时间帧1和2之间以及时间帧2和3之间行驶了不同的距离。 行驶距离为SQRT((X1(t)-X1(t-1))^2+(X2(t)-X2(t-1))^2)。 这意味着您需要一个以某种方式考虑X1*X1的激活函数,而这在RNN或LSTM中是不可能的

但是,您可以通过使用一个自定义激活函数来间接实现所需的功能,该函数计算在最新时间范围内经过的距离。看一看。通过使用自定义激活函数,可以插入X1(t)、X2(t)、X1(t-1)、X2(t-1)的向量并计算距离D。在t=1时,可以使用0作为X1(t=0)和X2(t=0)


自定义激活函数应类似于D=(X1(t)-X1(t-1))^2+(X2(t)-X2(t-1))^2。这样-如果时间帧之间的速度相同,您将向RNN提供恒定的D值,因此您希望RNN获得模拟D(t)-D(t-1)函数的权重。

这是一个简单的方法,根本不需要任何NN。您是否有特别想使用RNN的原因?这是一个真正的问题,还是一个学习练习?LSTM通常在需要回忆时间上遥远的信息时使用,所以我个人认为在这里使用它们没有什么意义。即使你想使用NN(有效地学习毕达哥拉斯定理…),如果你能使用衍生特征,比如x和yAlso的平方,学习速度也会大大加快,为什么你不想使用固定窗口呢?它似乎非常适合这个问题,因为您正在寻找瞬时值的变化speed@goncalopp该特征应该是多标签模型的一部分,每个标签聚焦于时态数据的不同部分,并进行分类或预测。速度变化是商业项目的一项要求。我知道如何在网络之外完成这项工作,但这个项目都是关于端到端的learning@BorisMocialov,如果你知道如何在网络之外做这件事,为什么不简单地将这个额外的计算列添加到你的数据集中,并使用这个列作为模型其他部分的输入?正如goncalopp所写,学习可以直接计算的值没有多大意义,除非它是一个示例或练习。@isp zax它必须在网络中的原因是端到端学习