【论文阅读笔记】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-提要:

对于现有的混合模型算法,有两个开放性问题有待解决:

  1. 如何选取混合模型中的模型数量M;
  2. 如何进行模型参数 θ 0 \theta^0 的初始化;

这篇论文针对这两个问题提出了一种新方法,即在更新方程上对权值引入了一个先验密度分布(文中称为prior)作为偏置,先用较多数量模型做随机初始化,然后在更新模型参数的同时,选取模型数量;

(三)Parameter Estimation-参数估计:

3.1 概率密度:

对于由 M M 个模型组成的混合模型,维度为 d d 的向量 x \vec x ,其概率密度为:

P ( x ; θ ) = m = 1 M π m P ( x ; θ m ) P(\vec x;\vec \theta)=\sum_{m=1}^M\pi_mP(\vec x;\vec \theta_m) ,且 m = 1 M π m = 1 \sum_{m=1}^M\pi_m=1

其中:

  1. θ = { π 1 , , π M , θ 1 , , θ M } \vec \theta=\lbrace \pi_1,…,\pi_M,\vec \theta_1,…,\vec \theta_M \rbrace 是混合模型的参数,也写作 θ ( M ) \vec \theta(M)
  2. π m \pi_m 是混合模型中第m的模型的权重;
  3. θ m \vec \theta_m 在高斯模型中为 { μ m , σ m } \lbrace \mu_m,\sigma_m \rbrace ;

3.2 最大似然估计:

对于一组样本 X = { x ( 1 ) , , x ( T ) } X=\lbrace \vec x^{(1)},…,\vec x^{(T)} \rbrace ,最大似然估计得到的参数估计值为:

θ = a r g m a x ( l o g P ( X ; θ ) ) \vec \theta=argmax(log P(X;\vec \theta))

由于使用最大似然估计直接求解过于复杂,我们通常使用EM算法去迭代,使得迭代得到的 θ t \vec \theta_t 趋近于这个解;

3.3 最大期望估计(EM算法):

算法详解参考我的这篇博客【机器学习基础】EM算法详解及其收敛性证明,这里直接使用推理出的结论;

3.3.1 引入隐藏变量:

对于样本中的每一个 x \vec x (observed,已知观察量),我们分别引入一个隐藏参数(unobserved,未知参数) y = { y 1 , , y M } T \vec y=\lbrace \vec y_1,…,\vec y_M \rbrace^T ,用来表示样本 x \vec x 所属混合模型中的哪个模型的分布;

这样由条件概率公式,概率密度函数就可以改写为:

P ( x , y ; θ ) P(\vec x,\vec y;\vec \theta)

= P ( y ; π 1 , , π M ) P ( x y , θ 1 , , θ M ) =P(\vec y;\pi_1,…,\pi_M)P(\vec x|\vec y,\vec \theta_1,…,\vec \theta_M)

= m = 1 M π m y m P ( x ; θ m ) y m =\prod_{m=1}^M\pi_m^{y_m}P(\vec x;\vec \theta_m)^{y_m}

其中, y \vec y 中的一个 y m \vec y_m 1 1 ,其余为 0 0 ,由权重参数 π 1 , , π M \pi_1,…,\pi_M决定 ;

3.3.2 迭代参数估计值:

首先我们给定参数 θ \vec \theta 初始化估计值为 θ ^ ( 0 ) \hat{\vec \theta}_{(0)} ,如果我们将所有样本的隐藏变量标记为 Y = { y ( 1 ) , , y ( t ) } \vec Y=\lbrace \vec y^{(1)},…,\vec y^{(t)} \rbrace ,那么第 k k 次迭代得到的参数估计值 θ ^ ( k ) \hat{\vec \theta}_{(k)} 就由上一次的估计值 θ ^ ( k 1 ) \hat{\vec \theta}_{(k-1)} 确定:

3.3.2.1 E-step:

构造 Q Q 函数:

Q ( θ , θ ^ ( k 1 ) ) Q(\vec \theta,\hat{\vec \theta}_{(k-1)})

= E Y ( l o g P ( X , Y ; θ ) X , θ ^ ( k 1 ) ) =E_Y(log P(X,Y;\vec \theta)|X,\hat{\vec \theta}_{(k-1)})

= Y P ( Y X , θ ^ ( k 1 ) ) l o g P ( X , Y θ ) =\sum_YP(Y|X,\hat{\vec \theta}_{(k-1)})logP(X,Y|\vec \theta)

3.3.2.2 M-step:

Q Q 进行最大似然估计:

θ ^ ( k ) = a r g m a x ( Q ( θ , θ ^ ( k 1 ) ) ) \hat{\vec \theta}_{(k)}=argmax(Q(\vec\theta,\hat{\vec \theta}_{(k-1)}))

3.3.2.3 存在的问题:

EM算法如果没有适当的初始化,迭代过程中可能落入局部最大值,而难以收敛到期望的参数估计值;

(四)Model Selection-模型选择:

为了使用EM算法,我们需要定义一个合适的模型数量 M M ;混合模型中,如果 M M 过大,容易导致过拟合(over fitting), M M 太小容易导致欠拟合(under fitting);

4.1 最大化函数 J J

比较实用的模型数量选择原则是构造如下最大化函数:

J ( M , θ ( M ) ) = l o g P ( X ; θ ( M ) ) P ( M ) J(M,\vec \theta(M))=logP(X;\vec \theta(M))-P(M)

其中:

  1. l o g P ( X ; θ ( M ) ) logP(X;\vec \theta(M)) 是样本的对数最大似然函数,这一部分可以用EM算法最大化;
  2. P ( M ) P(M) 是惩罚函数,用以将复杂的方程简化(即如果将 M M 归在参数 θ \theta 中,方程的求解会变复杂);

(五)Solution Using M A P MAP Estimation:

5.2 估计参数 M M 的基本过程:

选择参数 M M 的标准步骤为,对参数 M M 的不同的值 M s M-s 分别使用 M L ML (最大似然估计),然后选择能够使得函数 J ( M , θ ( M ) ) J(M,\vec \theta(M)) 最大的 M M 值;

5.1 引入先验密度分布(prior):

这里我们引入先验分布,将 J J 函数改写为:

J ( M , θ ( M ) ) = l o g P ( X ; θ ( M ) ) + l o g P ( θ ( M ) ) J(M,\vec \theta(M))=logP(X;\vec \theta(M))+logP(\vec \theta(M))

如果我们使用Dirichlet先验分布,那么 P ( θ ( M ) ) P(\vec \theta(M)) 正比于:

e x p m = 1 M c m l o g π m = m = 1 M π m c m exp\sum_{m=1}^Mc_mlog\pi_m=\prod_{m=1}^M\pi_m^{c_m}

其中,系数 c m = N / 2 c_m=-N/2 N N 代表混合模型中每个模型的平均参数数目;

那么整个过程就变成了:

  1. 使用一个较多随机初始化模型( M M 较大)组成的混合模型;
  2. 使用迭代方法(如EM算法)求得 M A P MAP 的解(即参数的估计值);

在迭代过程中,迭代估计值 θ ^ ( k ) \hat{\vec \theta}_{(k)} 不断趋近于参数估计值 θ ^ \hat{\vec \theta} (即最大似然方程的解),同时 M M 也会不断减小至模型稳定;

(六)Recursive(Online)Solution:

6.1 最大似然估计:

对于最大似然估计,我们通过:

δ δ π ^ m l o g P ( X ; θ ^ ) = 0 \frac{\delta}{\delta \hat{\pi}_m}logP(X;\hat{\vec \theta})=0

来获取参数的估计值;

如果我们引入拉格朗日乘子 λ \lambda ,那么就有:

δ δ π ^ m ( l o g P ( X ; θ ^ ) + λ ( m = 1 M π ^ m 1 ) ) = 0 \frac{\delta}{\delta \hat{\pi}_m}(logP(X;\hat{\vec \theta})+\lambda(\sum_{m=1}^M\hat{\pi}_m-1))=0

t个样本应该满足:

π ^ m ( t ) = 1 t i = 1 t o m ( t ) ( x ( i ) ) \hat{\pi}_m^{(t)}=\frac{1}{t}\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})

其中 o ( o w n e r s h i p s ) o(ownerships) 定义为:

o m ( t ) ( x ) = π ^ m ( t ) P m ( x ; θ ^ ) / P ( x ; θ ^ ( t ) ) o_m^{(t)}(\vec x)=\hat{\pi}_m^{(t)}P_m(\vec x;\hat{\vec \theta})/P(\vec x;\hat{\vec\theta}^{(t)})

6.2 M A P MAP 方法:

类似的,对于 M A P MAP 方法,有:

δ δ π ^ m ( l o g P ( X ; θ ^ ) + l o g P ( θ ) + λ ( m = 1 M π ^ m 1 ) ) = 0 \frac{\delta}{\delta \hat{\pi}_m}(logP(X;\hat{\vec \theta})+logP(\vec \theta)+\lambda(\sum_{m=1}^M\hat{\pi}_m-1))=0

对于t个样本:

π ^ m ( t ) = 1 K ( i = 1 t o m ( t ) ( x ( i ) ) c ) \hat{\pi}_m^{(t)}=\frac{1}{K}(\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})-c)

其中:

K = m = 1 M ( i = 1 t o m ( t ) ( x ( i ) ) c ) = t M c K=\sum_{m=1}^M(\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})-c)=t-Mc ,( 注意 m = 1 M o m ( t ) = 1 \sum_{m=1}^Mo_m^{(t)}=1

c m = c c_m = -c ,即 c = N / 2 c=N/2

这样的话,就有:

π ^ m ( t ) = ^ m c / t 1 M c / t \hat{\pi}_m^{(t)}=\frac{\hat{\prod}_m-c/t}{1-Mc/t}

其中:

^ m = 1 t i = 1 t o m ( t ) ( x ( i ) ) \hat{\prod}_m=\frac{1}{t}\sum_{i=1}^to_m^{(t)}(\vec x^{(i)})

6.3 迭代方程:

这样的话,我们就可以通过之前提到的估计方法,利用 o m ( t + 1 ) ( x ) o_m^{(t+1)}(\vec x) 获得 o m ( t ) ( x ) o_m^{(t)}(\vec x) 的迭代值;

同时,对于权重参数 π \pi ,有:

π ^ m ( t + 1 ) = π ^ m ( t ) + ( 1 + t ) 1 ( o m ( t ) ( x ( t + 1 ) ) 1 M c T π ^ m ( t ) ) ( 1 + t ) 1 c T 1 M c T \hat{\pi}_m^{(t+1)}=\hat{\pi}_m^{(t)}+(1+t)^{-1}(\frac{o_m^{(t)}(\vec x^{(t+1)})}{1-Mc_T}-\hat{\pi}_m^{(t)})-(1+t)^{-1}\frac{c_T}{1-Mc_T}

其中, c T = c / T c_T=c/T ;并且我们需要保证 T T 足够大,从而使得 M c T < 1 Mc_T<1 ;

6.4 初始化和迭代:

π ^ m ( 0 ) = 1 / M \hat{\pi}_m^{(0)}=1/M ,并且当 π ^ m ( t + 1 ) < 0 \hat{\pi}_m^{(t+1)}<0 时,舍弃第m个模型;

6.5 高斯混合模型中的表达:

最常用的混合模型之一,就是混合高斯模型(Gaussian Mixture);

对于混合高斯模型,概率密度表示为:

P m ( x ; θ m ) = N ( x ; μ m , C m ) P_m(\vec x;\vec \theta_m)=N(\vec x;\vec \mu_m,C_m) μ \mu 为均值, C C 为协方差矩阵;

那么相应的迭代方程为:

μ ^ m ( t + 1 ) = μ ^ m ( t ) + ( 1 + t ) 1 o m ( t ) ( x ( t + 1 ) ) π ^ m ( t ) ( x ( t + 1 ) μ ^ m ( t ) ) \hat{\vec \mu}_m^{(t+1)}=\hat{\vec \mu}_m^{(t)}+(1+t)^{-1}\frac{o_m^{(t)}(\vec x^{(t+1)})}{\hat{\pi}_m^{(t)}}(\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)})

C ^ m ( t + 1 ) = C ^ m ( t ) + ( 1 + t ) 1 o m ( t ) ( x ( t + 1 ) ) π ^ m ( t ) ( ( x ( t + 1 ) μ ^ m ( t ) ) T + 1 C ^ m ( t ) ) \hat{C}_m^{(t+1)}=\hat{C}_m^{(t)}+(1+t)^{-1}\frac{o_m^{(t)}(\vec x^{(t+1)})}{\hat{\pi}_m^{(t)}}((\vec x^{(t+1)}-\hat{\vec \mu}_m^{(t)})^{T+1}-\hat{C}_m^{(t)})

发布了67 篇原创文章 · 获赞 128 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44936889/article/details/104070951