2

给定连续数据的 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 帧的窗口))

4

1 回答 1

1

RNN 和 LSTM 的结构不会让你直接做,这就是为什么 - RNN 的激活函数是:h(t) = Tanh(W * h(t-1) + U * x(t ) + Bias) 请注意,W、U 和 Bias 都是相同的——无论您对 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) 的函数。

于 2020-02-04T22:41:15.327 回答