单一高斯分布情况
在一维条件下使用MLE对未知参数
μ
\mu
μ和
σ
2
\sigma^2
σ2 进行估计,首先写出
p
(
x
)
=
∏
n
=
1
N
N
(
x
n
∣
μ
,
σ
)
=
1
(
2
π
σ
2
)
N
2
e
x
p
[
−
1
2
σ
2
∑
n
=
1
N
(
x
n
−
μ
)
2
]
,
p(x)=\prod_{n=1}^{N}N(x_n|\mu,\sigma)=\frac{1}{(2\pi\sigma^2)^\frac{N}{2}}exp[-\frac{1}{2\sigma^2}\sum_{n=1}^{N}(x_n-\mu)^2],
p(x)=n=1∏NN(xn∣μ,σ)=(2πσ2)2N1exp[−2σ21n=1∑N(xn−μ)2],
取ln后得到:
l
n
p
(
x
)
=
−
N
2
l
n
(
2
π
)
−
N
2
l
n
(
σ
2
)
−
1
2
σ
2
∑
n
=
1
N
(
x
n
−
μ
)
2
,
lnp(x)=-\frac{N}{2}ln(2\pi)-\frac{N}{2}ln(\sigma^2)-\frac{1}{2\sigma^2}\sum_{n=1}^{N}(x_n-\mu)^2,
lnp(x)=−2Nln(2π)−2Nln(σ2)−2σ21n=1∑N(xn−μ)2,
分别对
μ
\mu
μ和
σ
2
\sigma^2
σ2求偏导并令导数为0即可得到估计值。
例如对
μ
\mu
μ求导得到:
∂
l
n
p
(
x
)
∂
μ
=
1
σ
2
∑
n
=
1
N
(
x
n
−
μ
)
=
0
μ
^
=
1
N
∑
n
=
1
N
x
n
\frac{\partial lnp(x)}{\partial \mu}=\frac{1}{\sigma^2}\sum_{n=1}^{N}(x_n-\mu)=0 \\ \hat \mu = \frac{1}{N}\sum_{n=1}^{N}x_n
∂μ∂lnp(x)=σ21n=1∑N(xn−μ)=0μ^=N1n=1∑Nxn
只与观测值有关。
混合高斯情况
在一维情况下假设存在两个高斯分布,假设方差相同,参数分别是
μ
1
,
μ
2
,
σ
\mu_1,\mu_2,\sigma
μ1,μ2,σ。假设概率分别为p和1-p,可以写出
p
(
x
)
p(x)
p(x)为:
p
(
x
)
=
p
N
(
x
∣
μ
1
,
σ
)
+
(
1
−
p
)
N
(
x
∣
μ
2
,
σ
)
p(x)=pN(x|\mu_1,\sigma)+(1-p)N(x|\mu_2,\sigma)
p(x)=pN(x∣μ1,σ)+(1−p)N(x∣μ2,σ)
对其取对数后并对
μ
1
\mu_1
μ1求偏导得到:
∂
l
n
p
(
x
)
∂
μ
1
=
∑
n
=
1
N
p
N
(
x
n
∣
μ
1
,
σ
)
x
n
−
μ
1
σ
2
p
N
(
x
∣
μ
1
,
σ
)
+
(
1
−
p
)
N
(
x
∣
μ
2
,
σ
)
\frac{\partial lnp(x)}{\partial \mu_1}=\sum_{n=1}^{N} \frac{pN(x_n|\mu_1,\sigma)\frac{x_n-\mu_1}{\sigma^2}}{pN(x|\mu_1,\sigma)+(1-p)N(x|\mu_2,\sigma)}
∂μ1∂lnp(x)=n=1∑NpN(x∣μ1,σ)+(1−p)N(x∣μ2,σ)pN(xn∣μ1,σ)σ2xn−μ1
令其为0得到:
μ
^
1
=
∑
n
=
1
N
p
N
(
x
n
∣
μ
1
,
σ
)
x
n
p
N
(
x
∣
μ
1
,
σ
)
+
(
1
−
p
)
N
(
x
∣
μ
2
,
σ
)
∑
n
=
1
N
p
N
(
x
n
∣
μ
1
,
σ
)
p
N
(
x
∣
μ
1
,
σ
)
+
(
1
−
p
)
N
(
x
∣
μ
2
,
σ
)
\hat \mu_1 = \frac{\sum_{n=1}^{N} \frac{pN(x_n|\mu_1,\sigma)x_n}{pN(x|\mu_1,\sigma)+(1-p)N(x|\mu_2,\sigma)}}{\sum_{n=1}^{N} \frac{pN(x_n|\mu_1,\sigma)}{pN(x|\mu_1,\sigma)+(1-p)N(x|\mu_2,\sigma)}}
μ^1=∑n=1NpN(x∣μ1,σ)+(1−p)N(x∣μ2,σ)pN(xn∣μ1,σ)∑n=1NpN(x∣μ1,σ)+(1−p)N(x∣μ2,σ)pN(xn∣μ1,σ)xn
可见估计值是与带估计值有关的,这使得MLE不能得到解析解。
EM方法来源
如果在上式估计中我们已知 ∑ n = 1 N p N ( x n ∣ μ 1 , σ ) p N ( x ∣ μ 1 , σ ) + ( 1 − p ) N ( x ∣ μ 2 , σ ) \sum_{n=1}^{N} \frac{pN(x_n|\mu_1,\sigma)}{pN(x|\mu_1,\sigma)+(1-p)N(x|\mu_2,\sigma)} ∑n=1NpN(x∣μ1,σ)+(1−p)N(x∣μ2,σ)pN(xn∣μ1,σ),由贝叶斯定理可以知道这其实就是在观测到 x x x时候对应其属于第1类的后验概率 p ( z 1 ∣ x ) p(z_1|x) p(z1∣x)。
更通用的混合模型表达形式为
l
n
p
(
x
∣
θ
)
lnp(x|\theta)
lnp(x∣θ),其中
θ
\theta
θ为待估计参数,利用全概率公式可以写为:
l
n
p
(
x
∣
θ
)
=
l
n
∑
z
p
(
x
,
z
∣
θ
)
=
l
n
∑
z
q
(
z
)
p
(
x
,
z
∣
θ
)
q
(
z
)
=
l
n
E
z
∼
q
[
p
(
x
,
z
∣
θ
)
q
(
z
)
]
\begin{aligned} lnp(x|\theta)&=ln\sum_{z}p(x,z|\theta) \\ &=ln\sum_{z}q(z)\frac{p(x,z|\theta)}{q(z)} \\ &=lnE_{z\sim q}[\frac{p(x,z|\theta)}{q(z)}] \end{aligned}
lnp(x∣θ)=lnz∑p(x,z∣θ)=lnz∑q(z)q(z)p(x,z∣θ)=lnEz∼q[q(z)p(x,z∣θ)]
由于上式中包含了log-sum形式不利于求导,利用Jensen不等式可以得到:
l
n
E
z
∼
q
[
p
(
x
,
z
∣
θ
)
q
(
z
)
]
≥
E
z
∼
q
[
l
n
p
(
x
,
z
∣
θ
)
q
(
z
)
]
=
∑
z
q
(
z
)
l
n
p
(
x
,
z
∣
θ
)
q
(
z
)
lnE_{z\sim q}[\frac{p(x,z|\theta)}{q(z)}]\geq E_{z\sim q}[ln\frac{p(x,z|\theta)}{q(z)}]=\sum_{z}q(z)ln\frac{p(x,z|\theta)}{q(z)}
lnEz∼q[q(z)p(x,z∣θ)]≥Ez∼q[lnq(z)p(x,z∣θ)]=z∑q(z)lnq(z)p(x,z∣θ)
可以将log-sum形式去除掉,同时最大化
E
z
∼
q
[
l
n
p
(
x
,
z
∣
θ
)
q
(
z
)
]
E_{z\sim q}[ln\frac{p(x,z|\theta)}{q(z)}]
Ez∼q[lnq(z)p(x,z∣θ)]可以保证
l
n
E
z
∼
q
[
p
(
x
,
z
∣
θ
)
q
(
z
)
]
lnE_{z\sim q}[\frac{p(x,z|\theta)}{q(z)}]
lnEz∼q[q(z)p(x,z∣θ)]也在增大,具体形式如下图所示:
由Jensen不等式知在等号成立时候,
X
=
E
[
X
]
X=E[X]
X=E[X],此时可以得到:
q
(
z
)
=
p
(
z
∣
x
,
θ
)
q(z)=p(z|x,\theta)
q(z)=p(z∣x,θ)
即后验概率。
用EM方法求解GMM
假设存在K种高斯分布混合在一起得到一组观测值
x
x
x,每类高斯分布的均值和方差分别为
μ
k
\mu_k
μk和
Σ
k
\Sigma_k
Σk
p
(
x
)
=
∏
n
=
1
N
p
(
x
n
∣
θ
)
,
p(x)=\prod_{n=1}^{N}p(x_n|\theta),
p(x)=n=1∏Np(xn∣θ),
其中
θ
\theta
θ表示观测值
x
n
x_n
xn的均值和方差,但是这样任然不能得到正确的分布形式,不知道每一个观测值
x
n
x_n
xn对应的均值和方差,此时数据为incomplete-data。因此需要引入一个参数
z
z
z来表示其属性,得到complete-data。
在概率中,我们观测到的x都是有一个属性的,也就是它的label,完整形式应该是
p
(
x
n
,
z
k
)
p(x_n,z_k)
p(xn,zk)。于是可以改写为:
p
(
x
)
=
∑
j
=
1
K
p
(
x
,
z
j
)
=
∏
n
=
1
N
∑
j
=
1
K
p
(
x
n
,
z
j
)
=
∏
n
=
1
N
∑
j
=
1
K
p
(
z
j
)
p
(
x
n
∣
z
j
)
=
∏
n
=
1
N
∑
j
=
1
K
p
(
z
j
)
N
(
x
n
∣
μ
j
,
Σ
j
)
,
\begin{align} p(x)&=\sum_{j=1}^{K}p(x,z_j)\nonumber \\&=\prod_{n=1}^{N}\sum_{j=1}^{K}p(x_n,z_j)\nonumber \\&=\prod_{n=1}^{N}\sum_{j=1}^{K}p(z_j)p(x_n|z_j)\nonumber \\&=\prod_{n=1}^{N}\sum_{j=1}^{K}p(z_j)N(x_n|\mu_j,\Sigma_j),\nonumber \end{align} \
p(x)=j=1∑Kp(x,zj)=n=1∏Nj=1∑Kp(xn,zj)=n=1∏Nj=1∑Kp(zj)p(xn∣zj)=n=1∏Nj=1∑Kp(zj)N(xn∣μj,Σj),
其中
p
(
z
k
)
p(z_k)
p(zk)就表示第k类高斯分布出现的概率,而
p
(
x
n
∣
z
k
)
=
N
(
x
n
∣
μ
k
,
Σ
k
)
p(x_n|z_k)=N(x_n|\mu_k,\Sigma_k)
p(xn∣zk)=N(xn∣μk,Σk),我们就可以写出具体的表达式了:
N
(
x
n
∣
μ
k
,
Σ
k
)
=
1
(
2
π
)
D
d
e
t
(
Σ
)
e
x
p
[
−
1
2
(
x
n
−
μ
k
)
T
Σ
−
1
(
x
n
−
μ
k
)
]
.
N(x_n|\mu_k,\Sigma_k)=\frac{1}{\sqrt{(2\pi)^Ddet(\Sigma)}}exp[-\frac{1}{2}(x_n-\mu_k)^T\Sigma^{-1}(x_n-\mu_k)].
N(xn∣μk,Σk)=(2π)Ddet(Σ)1exp[−21(xn−μk)TΣ−1(xn−μk)].
再对其取ln后得到:
l
n
p
(
x
)
=
∑
n
=
1
N
l
n
∑
j
=
1
K
π
k
N
(
x
n
∣
μ
k
,
Σ
k
)
lnp(x)=\sum_{n=1}^{N}ln\sum_{j=1}^{K}\pi_kN(x_n|\mu_k,\Sigma_k)
lnp(x)=n=1∑Nlnj=1∑KπkN(xn∣μk,Σk)
接下来我们不需要使用Jensen不等式,Jensen不等式在GMM问题中仅仅提供了隐函数的概念,并给出具体的求法。
EM(Expectation Maximum)最大期望法,包含E步和M步,分别是求出后验概率(期望),然后通过期望来优化参数。其中E步和MLE一样需要对似然函数求偏导并令其为0,需要用到很多矩阵求导方法,可以在这个网站https://www.matrixcalculus.org/上得到结果。
E步
对
μ
k
\mu_k
μk求偏导并令其为0得到:
∂
l
n
p
(
x
)
∂
μ
k
=
∑
n
=
1
N
π
k
N
(
x
n
∣
μ
k
,
Σ
k
)
(
−
Σ
k
−
1
)
(
μ
k
−
x
n
)
∑
j
=
1
K
π
j
N
(
x
n
∣
μ
j
,
Σ
j
)
\frac{\partial lnp(x)}{\partial \mu_k}=\sum_{n=1}^{N}\frac{\pi_kN(x_n|\mu_k,\Sigma_k)(-\Sigma_k^{-1})(\mu_k-x_n)}{\sum_{j=1}^{K}\pi_jN(x_n|\mu_j,\Sigma_j)}
∂μk∂lnp(x)=n=1∑N∑j=1KπjN(xn∣μj,Σj)πkN(xn∣μk,Σk)(−Σk−1)(μk−xn)
∑
n
=
1
N
γ
(
z
n
k
)
(
μ
k
−
x
n
)
=
0
\sum_{n=1}^{N}\gamma(z_{nk})(\mu_k-x_n)=0
n=1∑Nγ(znk)(μk−xn)=0
μ
^
k
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
x
n
\hat \mu_k=\frac{1}{N_k}\sum_{n=1}^{N}\gamma(z_{n k})x_n
μ^k=Nk1n=1∑Nγ(znk)xn
其中
p
(
z
k
∣
x
n
)
=
γ
(
z
n
k
)
=
π
k
N
(
x
n
∣
μ
k
,
Σ
k
)
∑
j
=
1
K
π
k
N
(
x
n
∣
μ
j
,
Σ
j
)
p(z_k|x_n)=\gamma(z_{nk})=\frac{\pi_k N(x_n|\mu_k,\Sigma_k)}{\sum_{j=1}^{K}\pi_kN(x_n|\mu_j,\Sigma_j)}
p(zk∣xn)=γ(znk)=∑j=1KπkN(xn∣μj,Σj)πkN(xn∣μk,Σk)表示观测到
x
n
x_n
xn属于为
z
k
z_k
zk类的后验概率,也可以叫作responsibility,
N
k
=
∑
n
=
1
N
γ
(
z
n
k
)
N_k=\sum_{n=1}^{N}\gamma(z_{nk})
Nk=∑n=1Nγ(znk)表示k类的个数。因此每一个观测到的
x
n
x_n
xn乘上权重其属于
z
k
z_k
zk类的概率权重
γ
(
z
n
k
)
\gamma(z_{nk})
γ(znk)之后再除以k类的总数
N
k
N_k
Nk,就得到了第k类的均值
μ
k
\mu_k
μk。
对
Σ
k
\Sigma_k
Σk求导并令其为0得到:
∂
l
n
p
(
x
)
∂
Σ
k
=
∑
n
=
1
N
γ
(
z
n
k
)
(
−
1
2
)
(
Σ
−
1
μ
k
−
x
n
)
(
μ
k
−
x
n
)
T
Σ
−
1
)
\frac{\partial lnp(x)}{\partial \Sigma_k}=\sum_{n=1}^{N}\gamma(z_{nk})(-\frac{1}{2})(\Sigma^{-1}\mu_k-x_n)(\mu_k-x_n)^T\Sigma^{-1})
∂Σk∂lnp(x)=n=1∑Nγ(znk)(−21)(Σ−1μk−xn)(μk−xn)TΣ−1)
Σ
^
k
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
(
μ
k
−
x
n
)
(
μ
k
−
x
n
)
T
.
\hat \Sigma_k=\frac{1}{N_k}\sum_{n=1}^{N}\gamma(z_{nk})(\mu_k-x_n)(\mu_k-x_n)^T.
Σ^k=Nk1n=1∑Nγ(znk)(μk−xn)(μk−xn)T.
该公式也是符合协方差定义
Σ
=
E
[
x
x
T
]
\Sigma=E[xx^T]
Σ=E[xxT],并在此基础上进行加权从而得到k类的协方差。
求
π
\pi
π时因为有一个约束,因此我们需要用拉格朗日法引入约束得到目标函数:
l
n
p
(
x
)
+
λ
(
∑
j
=
1
K
π
j
−
1
)
,
lnp(x)+\lambda(\sum_{j=1}^{K}\pi_j-1),
lnp(x)+λ(j=1∑Kπj−1),
在此基础上对
π
k
\pi_k
πk求导,并令其为0得到:
∂
[
l
n
p
(
x
)
+
λ
(
∑
j
=
1
K
π
j
−
1
)
]
∂
Σ
k
=
∑
n
=
1
N
N
(
x
n
∣
μ
k
,
Σ
k
)
∑
j
=
1
K
π
j
N
(
x
n
∣
μ
j
,
Σ
j
)
+
λ
\frac{\partial [lnp(x)+\lambda(\sum_{j=1}^{K}\pi_j-1)]}{\partial \Sigma_k}=\sum_{n=1}^{N}\frac{N(x_n|\mu_k,\Sigma_k)}{\sum_{j=1}^{K}\pi_jN(x_n|\mu_j,\Sigma_j)}+\lambda
∂Σk∂[lnp(x)+λ(∑j=1Kπj−1)]=n=1∑N∑j=1KπjN(xn∣μj,Σj)N(xn∣μk,Σk)+λ
两边同时乘上
π
j
\pi_j
πj并对
π
\pi
π进行累加或者将
λ
\lambda
λ代入约束可以得到:
∑
j
=
1
K
π
j
∑
n
=
1
N
N
(
x
n
∣
μ
k
,
Σ
k
)
∑
j
=
1
K
π
j
N
(
x
n
∣
μ
j
,
Σ
j
)
+
∑
j
=
1
K
λ
π
j
=
0
\sum_{j=1}^{K}\pi_j\sum_{n=1}^{N}\frac{N(x_n|\mu_k,\Sigma_k)}{\sum_{j=1}^{K}\pi_jN(x_n|\mu_j,\Sigma_j)}+\sum_{j=1}^{K}\lambda\pi_j=0
j=1∑Kπjn=1∑N∑j=1KπjN(xn∣μj,Σj)N(xn∣μk,Σk)+j=1∑Kλπj=0
λ
=
−
N
\lambda=-N
λ=−N
代入
λ
\lambda
λ后得到:
π
k
=
N
k
N
,
\pi_k=\frac{N_k}{N},
πk=NNk,
显然这个公式的物理意义是和先前定义
π
k
\pi_k
πk的物理意义一致的。
可以看出每一个参数都与 γ ( z n k ) = p ( z k ∣ x n ) \gamma(z_{nk})=p(z_k|x_n) γ(znk)=p(zk∣xn)相关的,因此只要在E步求出最新的这个值,就可以在M步中更新三个参数了。
M步
在E布我们得到了以下三个参数的迭代方式:
μ
^
k
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
x
n
\hat \mu_k=\frac{1}{N_k}\sum_{n=1}^{N}\gamma(z_{n k})x_n
μ^k=Nk1n=1∑Nγ(znk)xn
Σ
^
k
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
(
μ
k
−
x
n
)
(
μ
k
−
x
n
)
T
\hat \Sigma_k=\frac{1}{N_k}\sum_{n=1}^{N}\gamma(z_{nk})(\mu_k-x_n)(\mu_k-x_n)^T
Σ^k=Nk1n=1∑Nγ(znk)(μk−xn)(μk−xn)T
π
k
=
N
k
N
\pi_k=\frac{N_k}{N}
πk=NNk
后就可以根据迭代法来更新参数,最终收敛时得到估计值。
以下是来自参考书的步骤:
Matlab代码
待完善
参考资料
《Pattern Recognition and Machine Learning》—— Christopher M. Bishop
【机器学习】EM——期望最大(非常详细)
Gaussian mixture models and the EM algorithm —— Ramesh Sridharan