《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
={y
1,…,y
M}T,用来表示样本
x
所属混合模型中的哪个模型的分布;
这样由条件概率公式,概率密度函数就可以改写为:
P(x
,y
;θ
)
=P(y
;π1,…,πM)P(x
∣y
,θ
1,…,θ
M)
=∏m=1MπmymP(x
;θ
m)ym
其中,
y
中的一个
y
m 为
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))T+1−C^m(t))