高斯混合模型
概述
为了解决高斯模型的单峰性的问题,我们引入多个高斯模型的加权平均来拟合多峰数据:
p(x)=k=1∑KαkN(μk,Σk)
引入隐变量 z,这个变量表示对应的样本 x 属于哪一个高斯分布,这个变量是一个离散的随机变量:
p(z=i)=pi,i=1∑kp(z=i)=1
作为一个生成式模型,高斯混合模型通过隐变量 z 的分布来生成样本。用概率图来表示:
graph LR;
z((z))-->x((x))
其中,节点 z 就是上面的概率,x 就是生成的高斯分布。于是对 p(x):
p(x)=z∑p(x,z)=k=1∑Kp(x,z=k)=k=1∑Kp(z=k)p(x∣z=k)
因此:
p(x)=k=1∑KpkN(x∣μk,Σk)
极大似然估计
样本为 X=(x1,x2,⋯,xN), (X,Z) 为完全参数,参数为 θ={p1,p2,⋯,pK,μ1,μ2,⋯,μKΣ1,Σ2,⋯,ΣK}。我们通过极大似然估计得到 θ 的值:
θMLE=θargmaxlogp(X)=θargmaxi=1∑Nlogp(xi)=θargmaxi=1∑Nlogk=1∑KpkN(xi∣μk,Σk)
这个表达式直接通过求导,由于连加号的存在,无法得到解析解。因此需要使用 EM 算法。
EM 求解 GMM
EM 算法的基本表达式为:θt+1=θargmaxEz∣x,θt[p(x,z∣θ)]。套用 GMM 的表达式,对数据集来说:
Q(θ,θt)=z∑[logi=1∏Np(xi,zi∣θ)]i=1∏Np(zi∣xi,θt)=z∑[i=1∑Nlogp(xi,zi∣θ)]i=1∏Np(zi∣xi,θt)
对于中间的那个求和号,展开,第一项为:
z∑logp(x1,z1∣θ)i=1∏Np(zi∣xi,θt)=z∑logp(x1,z1∣θ)p(z1∣x1,θt)i=2∏Np(zi∣xi,θt)=z1∑logp(x1,z1∣θ)p(z1∣x1,θt)z2,⋯,zK∑i=2∏Np(zi∣xi,θt)=z1∑logp(x1,z1∣θ)p(z1∣x1,θt)
类似地,Q 可以写为:
Q(θ,θt)=i=1∑Nzi∑logp(xi,zi∣θ)p(zi∣xi,θt)
对于 p(x,z∣θ):
p(x,z∣θ)=p(z∣θ)p(x∣z,θ)=pzN(x∣μz,Σz)
对 p(z∣x,θt):
p(z∣x,θt)=p(x∣θt)p(x,z∣θt)=k∑pktN(x∣μkt,Σkt)pztN(x∣μzt,Σzt)
代入 Q:
Q=i=1∑Nzi∑logpziN(xi∣μzi,Σzi)k∑pktN(xi∣μkt,Σkt)pzitN(xi∣μzit,Σzit)
下面需要对 Q 值求最大值:
Q=k=1∑Ki=1∑N[logpk+logN(xi∣μk,Σk)]p(zi=k∣xi,θt)
-
pkt+1:
pkt+1=pkargmaxk=1∑Ki=1∑N[logpk+logN(xi∣μk,Σk)]p(zi=k∣xi,θt) s.t. k=1∑Kpk=1
即:
pkt+1=pkargmaxk=1∑Ki=1∑Nlogpkp(zi=k∣xi,θt) s.t. k=1∑Kpk=1
引入 Lagrange 乘子:L(pk,λ)=k=1∑Ki=1∑Nlogpkp(zi=k∣xi,θt)−λ(1−k=1∑Kpk)。所以:
∂pk∂L=i=1∑Npk1p(zi=k∣xi,θt)+λ=0⇒k∑i=1∑Npk1p(zi=k∣xi,θt)+λk∑pk=0⇒λ=−N
于是有:
pkt+1=N1i=1∑Np(zi=k∣xi,θt)
-
μk,Σk,这两个参数是无约束的,直接求导即可。