高斯分布(Gaussian Distribution)又叫正态分布(Normal Distribution),是一种常用的概率分布。
对于一组数据,其分布如图,我们可以用高斯模型去拟合这组数据的分布:
服从均值为 μ \mu μ、标准差为 σ \sigma σ的高斯分布在x点的概率密度为:
我们通常使用一个线性变换,将其转换成均值为0、方差为1的标准正态分布:
以二维高斯分布为例,我们现在判断的是一个多维向量(这里是二维)X = (x1, x2),其分布为服从均值为 μ \mu μ1 μ \mu μ2、标准差为 σ \sigma σ1 σ \sigma σ2的高斯分布:
假设我们手中有一个样本集X,X={ x1,x2,……,xN } 共N个样本,我们假设其符合均值为 μ \mu μ、标准差为 σ \sigma σ的高斯分布:
这时我们需要通过一定的方法去估计这个高斯分布的均值 μ \mu μ和标准差 σ \sigma σ,方法之一就是最大似然估计。
由于我们假设这个样本符合高斯分布(均值 μ \mu μ和标准差 σ \sigma σ未知,记为 θ \theta θ),那么X中的某个样本 x i x_{i} xi在参数 θ = { μ , σ } \theta=\lbrace \mu,\sigma \rbrace θ={μ,σ}下取得相应的值的概率为 f ( x i ) f(x_{i}) f(xi),记为 f ( x i ; θ ) f(x_{i} ; \theta) f(xi;θ);
我们构造一个函数 L ( θ ) L(\theta) L(θ),称之为似然函数:
那么使L( θ \theta θ)最大的参数 θ \theta θ(注意xi均已知),就是我们的估计值;
然后对似然函数L( θ \theta θ)取对数,得到对数似然函数:
这里求对数的原因是我们下一步需要求偏导,这里使用对数将乘除转换成加减,便于计算;
然后对对数似然函数求导,并令其为0(注意多个参数时分别求偏导):
对于一维高斯分布:
(注意求得参数 θ \theta θ的时候需要先求 μ \mu μ,因为 σ \sigma σ的估计值中有 μ \mu μ)
但是现实中往往我们得到的数据的分布并不均匀:
如果我们继续使用单个高斯模型去拟合这组数据,得到的结果可能是一个均值 μ \mu μ为所有x的均值、标准差 σ \sigma σ非常大的一个分布:
显然这并不能很好地拟合这组数据的分布,因为对于高斯分布,越往均值处(椭圆中心)数据分布应该越密集,但似乎这组数据有不同的概率中心,即这组数据可能分别属于不同的高斯分布;
这时候就需要混合高斯模型了。
全概率公式为概率论中的重要公式,它将对一复杂事件A(取得x)的概率求解问题转化为了在不同情况下发生的简单事件的概率的求和问题;
复杂的数据往往是多峰的(如上图),这时我们就使用多个高斯分布来描述这样的数据分布,公式满足全概率公式:
其中:
那么p(x)也等价为:
其中:
5. π \pi π k k k 是第k个高斯模型的权重;
6. μ \mu μ k k k 是第k个高斯模型的均值;
7. ε \varepsilon ε k k k 是第k个高斯模型的标准差;
此时K个模型组成的混合高斯模型的参数为:
θ \theta θ = { π \pi π1,……, π \pi πK-1, μ \mu μ1,……, μ \mu μK, ε \varepsilon ε1,……, ε \varepsilon ε K K K }
(注意这里由于 ∑ k = 1 K \sum_{k=1}^K ∑k=1K π \pi πk = 1,故参数 π \pi π的自由度为K-1)
这时我们再尝试用最大似然估计的方法来估计参数 θ \theta θ 的值:
我们可以看到这里的对数似然函数中, l n ( ) ln() ln() 里面包含了求和项:
即使我们已经对似然函数取了对数,但是求出的偏导中各个参数的估计值相互关联,计算非常复杂;
这时我们就需要找一种方法,能够用相对简单的方式去估计或者去迭代趋近这个估计值;这种方法就叫做最大期望算法(Expectation-Maximization algorithm,简称EM算法)。
通过引入隐藏变量构造一个更为简单的函数(记为 Q Q Q函数),对 Q Q Q函数进行最大似然估计计算参数的估计值 θ \theta θ;
如果能够证明每次迭代时通过最大化 Q ( θ t − 1 ) Q(\theta^{t-1}) Q(θt−1)时得到的参数 θ \theta θ的新的估计值 θ t \theta^{t} θt满足:
那么第t次迭代的参数的估计值为:
通过不断迭代,就可以最终得到收敛的参数 θ \theta θ,此时我们认为这个 θ \theta θ就是我们分布模型的参数的估计值。
我们构造如图所示的Q函数:
其中:
注:具体的公式推导会写在收敛性的证明里面;
这时我们明白了EM算法的基本原理,但是当我们开始第一次迭代的时候会发现一个很重要的问题:
这样似乎我们就陷入了一个两难的境地;
但是由于我们知道,每次迭代得到的值 θ t \theta^{t} θt都越来越接近参数 θ \theta θ的估计值,因此我们不如在抽样之前先给每种样本依照经验赋予一个初始分布(即变量 θ 0 \theta^0 θ0),再依照分布求取隐藏变量 Z Z Z的期望,这样再开始不断迭代,就能得到最终的 θ \theta θ;
E-Step 指的是Exception步骤,即求取样本 X X X的隐藏变量 Z Z Z的期望 Z t − 1 Z^{t-1} Zt−1:
如果是第1次运行E-Step,使用初始化的高斯混合分布函数确定样本 X = { x 1 , x 2 , … , x N } X=\lbrace x_{1},x_{2},…,x_{N} \rbrace X={x1,x2,…,xN}属于的概率最大的分类,从而预估隐藏参数 Z 0 Z^{0} Z0;
如果是第 t t t次运行E-Step,则使用经过 t − 1 t-1 t−1次迭代、参数为 θ t − 1 \theta^{t-1} θt−1的高斯混合分布函数确定隐藏参数 Z t − 1 Z^{t-1} Zt−1。
M-step 指的是Maximization步骤,即求取混合模型的参数 θ t \theta^{t} θt:
通过最大化 Q ( θ t − 1 ) Q(\theta^{t-1}) Q(θt−1),得到新的参数估计值 θ t \theta^t θt;
我们的最终目标,是证明EM算法迭代足够多的次数得到的 θ t \theta^t θt,能够近似表示混合高斯模型的参数估计值 θ \theta θ,那就等价于证明每次迭代得到的 θ t \theta^t θt满足:
直观上理解就是,只要我们能够证明每次迭代的参数 θ t \theta^t θt,能够使的对数似然函数 l n L ( θ t ) lnL(\theta^{t}) lnL(θt)比上一次迭代的参数 l n L ( θ t − 1 ) lnL(\theta^{t-1}) lnL(θt−1)更大,那么我们认为经过足够多的次数的迭代,就可以使得 l n L ( θ ) lnL(\theta) lnL(θ)最大化;
此时的 θ t \theta^t θt就认为是参数 θ \theta θ的估计值;
对数似然函数(这里用概率 P P P表示样本 X X X的概率乘积),引入隐含变量 Z Z Z可以表示为:
对上述等式两边在分布 Z Z Z下求其期望,得:
左边由于样本属于不同分布的概率之和 ∑ P ( Z ∣ X , θ t − 1 ) \sum P(Z|X,\theta^{t-1}) ∑P(Z∣X,θt−1)为1,可得:
此时有:
其中 l n P ( X ∣ θ ) lnP(X|\theta) lnP(X∣θ)就是对数似然函数;
由于我们对 Q Q Q函数进行最大似然估计得到的 θ t \theta^t θt满足:
那么在 θ = θ t − 1 \theta=\theta^{t-1} θ=θt−1时:
这样我们只需要证明:
或者:
H ( θ t − 1 , θ t − 1 ) − H ( θ t , θ t − 1 ) ≥ 0 H(\theta^{t-1},\theta^{t-1})-H(\theta^{t},\theta^{t-1})\geq 0 H(θt−1,θt−1)−H(θt,θt−1)≥0
Jenson不等式表述为,如果函数 f f f是一个凸函数(注:有的地方叫凹函数,定义不尽相同,但都满足二次导数 f ′ ′ ≤ 0 f^{''}\leq0 f′′≤0),则满足:
直观上描述为:函数值的期望大于期望的函数值;
当 θ = θ t \theta=\theta^t θ=θt时:
EM算法广泛应用于混合模型特别是混合高斯模型的参数估计,一种应用就是通过对视频中每个像素点进行建模,来实现对视频中的运动目标检测和背景分割;
《Effective Gaussian Mixture Learning for Video Background Subtraction》
可以看我的这篇博客:
【目标追踪】基于高斯混合学习的视频背景减法