《Recursive Unsupervised Learning of Finite Mixture Models》(有限混合模型的递归无监督学习)
(一)论文地址:
《Recursive Unsupervised Learning of Finite Mixture Models》
这篇文章并不是针对cv领域的高斯混合模型算法,其提出的算法是一个通用框架,其中opencv使用的cv2.createBackgroundSubtractorMOG2这个背景分割类,就是基于本文的理论。
opencv的应用写在这篇论文中:
《Efficient adaptive density estimation per image pixel for the task of background subtraction》
(二)abstract-提要:
对于现有的混合模型算法,有两个开放性问题有待解决:
- 如何选取混合模型中的模型数量M;
- 如何进行模型参数θ0的初始化;
这篇论文针对这两个问题提出了一种新方法,即在更新方程上对权值引入了一个先验密度分布(文中称为prior)作为偏置,先用较多数量模型做随机初始化,然后在更新模型参数的同时,选取模型数量;
(三)Parameter Estimation-参数估计:
3.1 概率密度:
对于由 M 个模型组成的混合模型,维度为 d 的向量 x ,其概率密度为:
P(x;θ)=∑m=1MπmP(x;θm),且 ∑m=1Mπm=1
其中:
- θ={π1,…,πM,θ1,…,θM} 是混合模型的参数,也写作 θ(M);
- πm 是混合模型中第m的模型的权重;
- θm 在高斯模型中为 {μm,σm};
3.2 最大似然估计:
对于一组样本 X={x(1),…,x(T)},最大似然估计得到的参数估计值为:
θ=argmax(logP(X;θ))
由于使用最大似然估计直接求解过于复杂,我们通常使用EM算法去迭代,使得迭代得到的 θt 趋近于这个解;
3.3 最大期望估计(EM算法):
算法详解参考我的这篇博客【机器学习基础】EM算法详解及其收敛性证明,这里直接使用推理出的结论;
3.3.1 引入隐藏变量:
对于样本中的每一个 x(observed,已知观察量),我们分别引入一个隐藏参数(unobserved,未知参数)y={y1,…,yM}T,用来表示样本 x 所属混合模型中的哪个模型的分布;
这样由条件概率公式,概率密度函数就可以改写为:
P(x,y;θ)
=P(y;π1,…,πM)P(x∣y,θ1,…,θM)
=∏m=1MπmymP(x;θm)ym
其中,y 中的一个 ym 为1,其余为0,由权重参数π1,…,πM决定;
3.3.2 迭代参数估计值:
首先我们给定参数 θ 初始化估计值为 θ^(0),如果我们将所有样本的隐藏变量标记为 Y={y(1),…,y(t)},那么第 k 次迭代得到的参数估计值 θ^(k) 就由上一次的估计值 θ^(k−1) 确定:
3.3.2.1 E-step:
构造 Q 函数:
Q(θ,θ^(k−1))
=EY(logP(X,Y;θ)∣X,θ^(k−1))
=∑YP(Y∣X,θ^(k−1))logP(X,Y∣θ)
3.3.2.2 M-step:
对 Q 进行最大似然估计:
θ^(k)=argmax(Q(θ,θ^(k−1)))
3.3.2.3 存在的问题:
EM算法如果没有适当的初始化,迭代过程中可能落入局部最大值,而难以收敛到期望的参数估计值;
(四)Model Selection-模型选择:
为了使用EM算法,我们需要定义一个合适的模型数量 M;混合模型中,如果 M 过大,容易导致过拟合(over fitting),M 太小容易导致欠拟合(under fitting);
4.1 最大化函数 J:
比较实用的模型数量选择原则是构造如下最大化函数:
J(M,θ(M))=logP(X;θ(M))−P(M)
其中:
- logP(X;θ(M)) 是样本的对数最大似然函数,这一部分可以用EM算法最大化;
- P(M) 是惩罚函数,用以将复杂的方程简化(即如果将M归在参数θ中,方程的求解会变复杂);
(五)Solution Using MAP Estimation:
5.2 估计参数M的基本过程:
选择参数 M 的标准步骤为,对参数 M 的不同的值M−s分别使用 ML(最大似然估计),然后选择能够使得函数 J(M,θ(M)) 最大的 M 值;
5.1 引入先验密度分布(prior):
这里我们引入先验分布,将 J 函数改写为:
J(M,θ(M))=logP(X;θ(M))+logP(θ(M))
如果我们使用Dirichlet先验分布,那么 P(θ(M)) 正比于:
exp∑m=1Mcmlogπm=∏m=1Mπmcm
其中,系数 cm=−N/2 ,N代表混合模型中每个模型的平均参数数目;
那么整个过程就变成了:
- 使用一个较多随机初始化模型( M 较大)组成的混合模型;
- 使用迭代方法(如EM算法)求得 MAP 的解(即参数的估计值);
在迭代过程中,迭代估计值 θ^(k) 不断趋近于参数估计值θ^(即最大似然方程的解),同时 M 也会不断减小至模型稳定;
(六)Recursive(Online)Solution:
6.1 最大似然估计:
对于最大似然估计,我们通过:
δπ^mδlogP(X;θ^)=0
来获取参数的估计值;
如果我们引入拉格朗日乘子 λ,那么就有:
δπ^mδ(logP(X;θ^)+λ(∑m=1Mπ^m−1))=0
t个样本应该满足:
π^m(t)=t1∑i=1tom(t)(x(i))
其中 o(ownerships)定义为:
om(t)(x)=π^m(t)Pm(x;θ^)/P(x;θ^(t))
6.2 MAP 方法:
类似的,对于 MAP 方法,有:
δπ^mδ(logP(X;θ^)+logP(θ)+λ(∑m=1Mπ^m−1))=0
对于t个样本:
π^m(t)=K1(∑i=1tom(t)(x(i))−c)
其中:
K=∑m=1M(∑i=1tom(t)(x(i))−c)=t−Mc,( 注意∑m=1Mom(t)=1)
cm=−c,即 c=N/2
这样的话,就有:
π^m(t)=1−Mc/t∏^m−c/t
其中:
∏^m=t1∑i=1tom(t)(x(i))
6.3 迭代方程:
这样的话,我们就可以通过之前提到的估计方法,利用 om(t+1)(x) 获得 om(t)(x) 的迭代值;
同时,对于权重参数 π,有:
π^m(t+1)=π^m(t)+(1+t)−1(1−McTom(t)(x(t+1))−π^m(t))−(1+t)−11−McTcT
其中,cT=c/T;并且我们需要保证 T 足够大,从而使得 McT<1;
6.4 初始化和迭代:
π^m(0)=1/M ,并且当 π^m(t+1)<0时,舍弃第m个模型;
6.5 高斯混合模型中的表达:
最常用的混合模型之一,就是混合高斯模型(Gaussian Mixture);
对于混合高斯模型,概率密度表示为:
Pm(x;θm)=N(x;μm,Cm),μ为均值,C为协方差矩阵;
那么相应的迭代方程为:
μ^m(t+1)=μ^m(t)+(1+t)−1π^m(t)om(t)(x(t+1))(x(t+1)−μ^m(t))
C^m(t+1)=C^m(t)+(1+t)−1π^m(t)om(t)(x(t+1))((x(t+1)−μ^m(t))(x(t+1)−μ^m(t))T−C^m(t))
(七)A Simple Practical Algorithm:
7.1 config:
- 我们可以将 α=(1+t)−1(称为学习率)简化为 α=1/T;也可以采用固定的 α 值,从而防止 α 过小并加快背景更新;
- cT=αN/2;
- 如果采用带有协方差矩阵的混合高斯模型,那么对于 d 维输入,有 N=d+d(d+1)/2
7.2 输入:
新的样本数据为 x(t+1) ,进入第 t+1 次迭代;
7.3 当前参数:
第 t 次迭代得到的参数估计值为 θ^(t);
7.4 计算 ′ownership′:
om(t)(x(t+1))=π^m(t)Pm(x(t+1);θ^(t))/P(x(t+1);θ^(t))
7.5 更新权重π:
π^m(t+1)=π^m(t)+α(1−McTom(t)(x(t+1))−π^m(t))−α1−McTcT
7.6 取舍模型:
如果有 π^m(t+1)<0,则删掉第 m 个模型,并令 M=M−1;
7.7 更新参数:
7.7.1 更新均值 μ:
μ^m(t+1)=μ^m(t)+ωδ
其中:
ω=απ^m(t)om(t)(x(t+1))
δ=x(t+1)−μ^m(t)
7.7.2 更新协方差矩阵:
C^m(t+1)=C^m(t)+ω(δδT−C^m(t))
tips:可以让ω=min(20α,w)
7.8 获得新参数:
这样就得到了新的参数估计值 θ^(t+1);