本篇博文将详细总结机器学习里面一个非常重要的算法-EM算法。
复习Jensen不等式
若f是凸函数
凸函数即割线在函数线的上方。
基本Jensen不等式:
f
(
θ
x
+
(
1
−
θ
)
y
)
<
=
θ
f
(
x
)
+
(
1
−
θ
)
f
(
y
)
f(\theta x + (1-\theta)y) <= \theta f(x) + (1-\theta)f(y)
f(θx+(1−θ)y)<=θf(x)+(1−θ)f(y)
若
θ
1
,
θ
2
,
θ
3
,
.
.
.
.
,
θ
k
>
=
0
,
θ
1
+
θ
2
+
.
.
.
.
+
θ
k
=
1
\theta_1, \theta_2, \theta_3,....,\theta_k >= 0,\theta_1+\theta_2+....+\theta_k = 1
θ1,θ2,θ3,....,θk>=0,θ1+θ2+....+θk=1 , 则有
f
(
θ
1
x
1
+
.
.
.
.
+
θ
k
x
x
)
<
θ
1
f
(
x
1
)
+
.
.
.
.
+
θ
k
f
(
x
k
)
f(\theta_1 x_1+....+\theta_k x_x) < \theta_1 f(x_1) +....+\theta_k f(x_k)
f(θ1x1+....+θkxx)<θ1f(x1)+....+θkf(xk)
上面是针对离散情况,若对于连续情况可以推得:若有
p
(
x
)
>
=
0
o
n
s
∈
d
o
m
∫
s
p
(
x
)
d
x
=
1
p(x) >= 0 \ on \ s \in dom \int_s p(x) dx = 1
p(x)>=0 on s∈dom∫sp(x)dx=1
, 则可得:
f
(
∫
s
p
(
x
)
x
d
x
)
<
=
∫
s
f
(
x
)
p
(
x
)
d
x
f \left ( \int_sp(x)xdx \right ) <= \int_s f(x)p(x) dx
f(∫sp(x)xdx)<=∫sf(x)p(x)dx
即有
f
(
E
x
)
<
=
E
f
(
x
)
f(Ex) <= E f(x)
f(Ex)<=Ef(x)
其中E f(x) 表示f(x)在p(x)这样一个分布下的期望。
EM算法
EM用于含有隐变量(Hidden variable)的概率模型参数的最大似然估计。
假定有训练集
包含m个独立样本,希望从中找到该组数据 的模型p(x,z)的参数。
通过最大似然估计建立目标函数:
z是隐随机变量,不方便直接找到参数估计。 策略:计算l(θ)下界,求该下界的最大值; 重复该过程,直到收敛到 局部最大值。
上图中有两条曲线,上方的曲线为对数似然函数l(θ),我们的任务就是找出一个θ能使对数似然取最大值,一开始先验性的给出一个初值 θ 0 \theta_0 θ0,在这一点处构造出一个比较简单的函数 r ( x ∣ θ ) r(x|θ) r(x∣θ),这个函数 r r r 保证除了在 θ 0 \theta_0 θ0 点以外,其他的点都小于对数似然函数,即 r < l r<l r<l,如果这个简单的 r r r 函数比较容易求极值,可以利用任何一种办法求函数r的极值,假定在 θ 1 \theta_1 θ1 点处, r r r 求得极大值。那么 A > 0 > B A>0>B A>0>B,然后又在 θ 1 \theta_1 θ1 点处构造一个简单的r函数,重复以上操作,这样就可以找到对数似然函数的 局部极大值,并且找到对应的 θ ∗ \theta_* θ∗。
上面的操作可以归结为两个步骤,并且不断的重复这两个步骤
初始化:先验性的给出一个
θ
\theta
θ,然后给出一个简单的下界函数,该下界函数只在θ处与对数似然函数相等,其他点处均小于对数似然函数。
-
求下界函数 r ( x ∣ θ ) r(x|θ) r(x∣θ) 的极大值对应的 θ \theta θ。
-
由第一步得到更新后的 θ \theta θ,构造出对数似然函数l(θ)新的下界函数 r ( x ∣ θ ) r(x|θ) r(x∣θ),并且这个 r r r 函数只在 θ \theta θ 点处与对数似然函数相等,其他点处均小于 l ( θ ) l(θ) l(θ) 。
显然问题的关键在于如何给出下界函数r(x|θ),这是最难的部分。
Jensen不等式
令 Q i Q_i Qi 是 z z z 的某一个分布, Q i ≥ 0 Q_i≥0 Qi≥0 ,有:
把
p
(
x
i
,
z
i
;
θ
)
Q
i
(
z
i
)
\frac{p(x^i,z^i;\theta)}{Q_i(z^i)}
Qi(zi)p(xi,zi;θ)看作一个整体
X
X
X,那么
∑
z
i
Q
i
(
z
i
)
p
(
x
i
,
z
i
;
θ
)
Q
i
(
z
i
)
\sum_{z^i}Q_i(z^i) \frac{p(x^i,z^i;\theta)}{Q_i(z^i)}
zi∑Qi(zi)Qi(zi)p(xi,zi;θ)
表示对
X
X
X在
Q
i
(
z
i
)
Q_i(z^i)
Qi(zi)这样一个分布上的期望。
下式中的f函数为凸函数,满足Jensen不等式中的
而log函数是凹函数,故大于等于号改为小于等于,可得:
那么等号在什么情况下成立呢?我们还是从凸函数的性质说起,在凸函数中,割线始终在函数线的上方,只有在x是某一个定常数时,即割线为函数线上一个定点时,割线上的函数值才与函数线函数值相等。
为了使等号成立:
那么分子分母呈正相关关系:
又因为Q为Z的分布,即加和为1,即要使得:
那么可以令:
这样可满足:
故当
Q
i
(
z
i
)
=
p
(
z
i
∣
x
i
;
θ
)
Q_i(z^i) = p(z^i|x^i;\theta)
Qi(zi)=p(zi∣xi;θ)时,下界函数与对数似然函数在
θ
\theta
θ 处相等。
EM算法整体框架
其中E步更新 Q Q Q,使得下界函数与对数似然函数在 θ \theta θ点处相等;而M步是在求下界函数的极大值,并且更新 θ \theta θ。这两步不断的循环重复。最终使得M步下界函数的最大值与对数似然函数的局部极大值相等。
坐标上升
EM算法可以看作一个关于Q,θ的函数 J(Q,θ):
从上面的推导,我们知道 J(Q,θ)<=l(θ),其中J(Q,θ)可以看作是***坐标上升***,在M步求得最大化时对应的θ,然后固定θ,在E步求得该θ对应的Q。不断的重复以上操作。
利用EM算法推导GMM
随机变量X是有K个高斯分布混合而成,取各个高斯分布的概率为,第i个高斯分布的均值为μi,方差为Σi。若观测到随机变量X的一系列样本x1,x2,…,xn,试估计参数
,μ,Σ。
E-step
表示第i个样本属于第 j 个高斯分布的概率,k 为混合高斯分布中各种高斯分布的种数,则有
。
M-step
在E步得出更新后的Q(z)的分布。
将多项分布和高斯分布的参数带入:
其中已确定了属于第j个高斯分布,故其只与μ,Σ有关;而
表示第i个样本属于第j个高斯分布的概率,只与其对应的先验概率
有关,并且等于
。其中
服从
的多元高斯分布。
由此上式可推得:
在M步中需要对对数似然函数求最大值,并且找出其对应的参数 ,μ,Σ,故对各参数求导数,其导数为0时对应的参数即为所估计的参数。
对均值求导:
对于矩阵A,则有,若A为对称阵,则结果为2Ax。有关矩阵求导请看机器学习–>矩阵和线性代数
而上式中的为协方差矩阵,对称矩阵,故
为对称矩阵。那么上式可推得:
令上式等于0,与i无关可以约去,则解的均值:
同理对方差Σ求偏导,使其导为0可得:
还需要对求偏导,做法和上面略有不一样。
考察M-step的目标函数,对于 ,删除常数项
得新的目标函数:
上面过程相当于简化了目标函数,删除的部分在求导以后肯定也会去掉。
那么直接对 求偏导吗?不是,因为
是一个概率分布,即有约束条件
。所以应该利用拉格朗日乘子法得:
可能有人会问不是还有不等式约束吗?,注意目标函数里面有一项
,这就说明在可行域上已经确定了
。在该目标函数求出来的
一定大于0。
于是求偏导,等于0 :
GMM调参
这里假设有三个高斯分布组成的高斯混合模型的数据样本,假设样本是三维的,那么对于每个类来说,服从 ( u i , σ i ) ({u}_{i},{\sigma}_{i}) (ui,σi),其中 u , σ u,\sigma u,σ 都是三维的,现在只考虑 3 ∗ 3 3*3 3∗3 的协方差矩阵,有四种情况:
- f u l l : full: full:每一个类都有自己一般的协方差矩阵。
- t i e d : tied: tied:所有类共享相同的协方差矩阵。
- d i a g : diag: diag:每一个类都有自己的对角协方差矩阵。
- s p h e r i c a l : spherical: spherical:每一个类的样本的协方差矩阵的对角值都相等。
通常选择 $diag $, $ tied$可以用来防止过拟合。
那么应该选择上面四种协方差呢?
记:
L
L
L 为某模型下样本的似然函数值,
k
k
k 为模型中未知参数的个数(维度),
n
n
n 为样本个数,下面有两个评判准则:
A
I
C
=
−
2
l
n
L
+
2
k
AIC =-2ln L+2k
AIC=−2lnL+2k
B
I
C
=
−
2
I
n
L
+
(
L
n
n
)
k
BIC=-2In L+(Ln n)k
BIC=−2InL+(Lnn)k
其实就相当于在损失函数后面加上一个正则项而已。
总结
其中m表示样本个数, 表示第i个样本属于第 j 个高斯分布的概率,可利用EM算法求出混合高斯模型中第j个高斯分布的先验概率
,第j个高斯分布的期望(多元时为向量)
,第j个高斯分布的方差(多元时为协方差)
。
E-steps:
M-steps: