RNN 与卡尔曼滤波器:学习底层动力学?

机器算法验证 循环神经网络 卡尔曼滤波器
2022-02-06 06:24:53

最近对卡尔曼滤波器和循环神经网络感兴趣,在我看来两者密切相关,但我找不到足够相关的文献:

在卡尔曼滤波器中,方程组为:

xk=Axk1+Buk+wk1
zk=Hxk+vk

是状态,z测量值。xz

在 Elman RNN(从这里)中,层之间的关系是:

hk=σh(Uhk1+Wxk+b)
yk=σy(Vhk+c)

输入层,是隐藏层,是输出层,是各层的激活函数。 xhyσ

很明显,这两组方程是相同的,以激活为模。这里的类比似乎如下。输出层对应于测量状态,隐藏层是真实状态,由输入层x

  • 第一个问题:这个类比可行吗?我们如何解释激活?

  • 第二个问题:在卡尔曼滤波器中,矩阵是状态的基础动态矩阵。由于训练 RNN 可以学习矩阵,RNN 是否能够学习底层状态的动态?即,一旦我的 RNN 被训练,我可以查看我的网络的系数来猜测我的数据背后的动态吗?AxW

(我将尝试对人工生成的数据进行实验,看看是否可行,并会在完成后立即更新)

编辑:我希望我可以访问这篇论文

2个回答

是的,它们确实是相关的,因为两者都用于和状态在时间步 n ,即它们都表示函数使得 RNN相对于卡尔曼滤波器的优势在于RNN架构可以任意复杂(层数和神经元数)并且它的参数是学习的,而卡尔曼滤波器的算法(包括它的参数)是固定的。ynsnxnsn1F

F(xn,sn1)=(yn,sn)

循环神经网络比卡尔曼滤波器更通用。人们实际上可以训练 RNN 来模拟卡尔曼滤波器。
神经网络是一种黑盒模型,权重和激活通常是不可解释的(尤其是在更深层)。

最后,神经网络仅被优化以做出最佳预测,而不是具有“可解释”的参数。
如今,如果您处理时间序列,拥有足够的数据并希望获得最佳准确性,RNN 是首选方法。

正如您所说,区别在于激活功能。

卡尔曼滤波器的通常用途是对本质上的线性过程进行建模,其中观测值会受到加性噪声的影响。如果与线性的偏差很慢,您可以使用卡尔曼滤波器,但如果过程是强烈非线性的,则不能。

相比之下,神经网络通过使用非线性激活函数获得额外的能力。(没有它,堆叠额外的层永远不会给出非线性模型。)因此它们适用于对非线性过程进行建模,至少在训练集的凸覆盖范围内。

神经网络的渐近行为由激活函数决定,而不是由训练数据决定。这就是为什么通用逼近定理有条件“......在紧支撑上”。这并不令人惊讶——没有有限的训练集包含关于渐近行为的证据。