对于时变参数的回归,SGD 或卡尔曼滤波器?

机器算法验证 回归 时间序列 梯度下降 卡尔曼滤波器 随机梯度下降
2022-03-17 05:35:43

卡尔曼滤波器作为在线更新机制而不是随机梯度下降的优势是什么?

4个回答

这两件事都可以在线使用,但它们以不同的方式进行。所以他们不是竞争对手。

卡尔曼滤波器有两个目的。首先,对于一批数据,假设您正在估计线性高斯状态空间模型,它将产生所有观察数据的对数似然。假设您观察到的数据是已知的,对数似然是参数的函数。其次,对于在线数据,如果您知道参数,它将递归计算您的隐藏状态的分布。当以在线方式使用时,它递归地计算状态的统计分布,假设参数是已知的。

SGD 是一种将对数似然函数作为输入的算法。它不关心您使用的是什么模型,只要您可以计算损失的梯度(损失是对数似然的负数)。这是一个找到最大化(或最小化)这个函数的参数的过程。当以在线方式使用时,它会在看到新数据时调整参数。“随机”一词是指它不使用所有数据来计算可能性的事实,而不是它递归计算统计分布的事实。

所以两者都可以在线使用。但是这里 KF 计算给定参数的隐藏状态的分布,而 SGD 调整参数以变得更合适。

卡尔曼滤波器是一种基于模型的优化算法,它假设线性动力学和高斯噪声。如果这些假设成立,则可以保证收敛到最优值,应该使用它来代替 SGD。

SGD 是一种无模型启发式算法,它(希望)收敛到局部最优值。它适用于非线性动力学,并且通常在动力学甚至没有明确表示时使用。由于它是无模型的并且依赖于梯度的噪声测量,因此它往往很慢。Vanilla SGD 的速度不是很快——最近的变体如 Adam 和 RMSProp 往往效果更好,因为它们结合了动量,这可以被认为是平滑梯度估计。

对于时变参数,只能使用卡尔曼滤波器。(除非您找到使用 SGD 的创新方法)。

让我们看一下两种算法都有意义的情况:线性回归的长度Y=βX+ϵnX

SGD(对于 MLE)假设一个固定的并且会找到它。这是一种在线方法,但根本不处理时间依赖性。首先,您必须多次检查数据集,以随机顺序最有效,这打破了时间依赖性。而且你不能指望它会以一种你可以轻松控制的方式“忘记”过去台词的影响。β

卡尔曼滤波器假设随时间变化的被称为“状态”而不是参数。这里的“参数”是的方差,以及可能如何随时间变化:如果它是高斯随机游走或布朗运动,通常是步骤的方差。卡尔曼滤波器在每个时间计算的估计值和该估计值的协方差矩阵。它仅以有序的时间方式遍历数据集一次,而且重要的是。β(t)ϵβ(t)βt

固定时,卡尔曼滤波器基本上是无用的,因为它只会找到的通常MLE估计,这可以通过矩阵求逆很容易找到。有人可能会争辩说,卡尔曼滤波器具有作为在线方法的优势,但由于您需要存储一个矩阵......在通常需要在线方法的情况下使用大无论如何,对矩阵的操作都是昂贵的。ββn×nn

总结一下:

  • 时变:卡尔曼滤波器。不可行。β(t)n
  • :新元。随时间变化的参数是不可行的。n

卡尔曼滤波器也用于 NN 的高级学习,但我不太关心它。人们正在研究混合这两种算法的方法,但目前似乎还不是很成熟。(我所知道的)。正在研究的卡尔曼滤波器,采用先进的贝叶斯方法进行天气预报n

随机梯度下降是一种优化算法。它是梯度下降的一种变体。它用于查找函数的最小值或最大值。SGD 和普通梯度下降之间的区别在于,SGD 作用于目标函数的样本,而普通梯度下降作用于精确的目标函数。例如,在统计学习中,您希望找到一个使数据的似然函数最大化的参数向量。假定参数是静态的。

卡尔曼滤波器是一种在线贝叶斯学习。它可用于学习以非平稳或平稳方式随时间变化的状态。为此,卡尔曼滤波器假设了一个描述状态随时间动态变化的模型。状态可以是您想要的任何变量,包括统计模型的时变参数。在动态线性回归模型中,您必须假设线性回归的参数如何随时间变化的模型。一个非常简单的模型是假设参数随随机游走而变化。

在任何时候,先验概率分布都会综合有关状态的知识(在您的情况下,是模型的参数)。通过观察数据,您可以使用贝叶斯规则更新到后验分布。在卡尔曼滤波器中,先验和后验都是高斯。卡尔曼滤波器已被证明是最优的,因为它可以最小化真实未观察状态及其预测的均方误差。一个密切相关的方法是递归最小二乘法,这是卡尔曼滤波器的一个特例。

综上所述,卡尔曼滤波器是一种在线算法,SGD可以在线使用。卡尔曼滤波器假设参数的动态模型,而 SGD 假设参数不随时间变化。SGD 在动态设置中不会是最优的,特别是因为它依赖于 stepsize 参数,该参数必须由建模者设置,并且必须遵循一些理论条件才能收敛。卡尔曼滤波器也有一个等效的步长参数,称为“卡尔曼增益”,它会自动适应数据。