递归地更新 MLE 作为新的观察流

机器算法验证 最大似然 在线算法
2022-01-19 03:48:57

一般问题

假设我们有 iid 数据x1,x2, ...f(x|θ)流入。我们想要递归地计算的最大似然估计。也就是说,计算了 我们观察到一个新的x_n,并希望以某种方式逐步更新我们的估计 \hat{\boldsymbol{\theta}} _{n-1},\,x_n \to \hat{\boldsymbol{\theta}}_{n} 无需从头开始。有没有通用的算法呢?θ

θ^n1=argmaxθRpi=1n1f(xi|θ),
xn
θ^n1,xnθ^n

玩具示例

如果x1 , x2 , ... N(x|μ,1),则

μ^n1=1n1i=1n1xiandμ^n=1ni=1nxi,
所以
μ^n=1n[(n1)μ^n1+xn].

2个回答

请参阅充分性的概念,特别是最小充分统计量在许多情况下,您需要整个样本来计算给定样本大小的估计值,而没有简单的方法可以从较小的样本进行更新(即没有方便的一般结果)。

如果分布是指数族(除此之外,在其他一些情况下;制服是一个很好的例子),有一个很好的足够统计数据,在许多情况下可以按照您寻求的方式进行更新(即,使用许多常用分布会有快速更新)。

一个我不知道计算或更新的直接方法是对柯西分布位置的估计(例如,使用单位尺度,使问题成为简单的单参数问题)。然而,可能会有一个更快的更新,但我根本没有注意到——我不能说我真的做了更多的事情来考虑更新案例。

另一方面,对于通过数值优化方法获得的 MLE,之前的估计在许多情况下将是一个很好的起点,因为通常之前的估计会非常接近更新的估计;至少在这个意义上,快速更新通常是可能的。不过,即使这不是一般情况——使用多模态似然函数(再次参见 Cauchy 的例子),新的观察可能导致最高模态与前一个模态有一定距离(即使每个模态的位置最大的几个模式没有太大变化,哪个最高的模式很可能会改变)。

在机器学习中,这被称为在线学习

正如@Glen_b 指出的那样,在某些特殊情况下,可以更新 MLE 而无需访问所有以前的数据。正如他还指出的那样,我不相信找到 MLE 的通用解决方案。

寻找近似解的一种相当通用的方法是使用随机梯度下降之类的方法。在这种情况下,随着每个观测值的出现,我们计算关于这个单独观测值的梯度,并在这个方向上移动非常小的参数值。在某些条件下,我们可以证明这会以高概率收敛到 MLE 的一个邻域;随着我们减小步长,邻域越来越紧,但收敛需要更多数据。然而,这些随机方法通常比封闭形式更新需要更多的操作才能获得良好的性能。