机器学习(V)--无监督学习(三)EM算法

EM算法

极大似然估计

极大似然估计:(maximum likelihood estimate, MLE) 是一种常用的模型参数估计方法。它假设观测样本出现的概率最大,也即样本联合概率(也称似然函数)取得最大值。

为求解方便,对样本联合概率取对数似然函数
log ⁡ L ( θ ) = log ⁡ P ( X ∣ θ ) = ∑ i = 1 N log ⁡ P ( x i ∣ θ ) \log L(\theta) =\log\mathbb P(X|\theta)=\sum_{i=1}^N\log \mathbb P(\mathbf x_i|\theta) logL(θ)=logP(X∣θ)=i=1∑N​logP(xi​∣θ)
优化目标是最大化对数似然函数
θ ^ = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ P ( x i ∣ θ ) \hat\theta=\arg\max_{\theta}\sum_{i=1}^N\log \mathbb P(\mathbf x_i|\theta) θ^=argθmax​i=1∑N​logP(xi​∣θ)

假设瓜田里有两种类型的西瓜🍉,瓜农随机抽取了10个西瓜,来了解西瓜的重量分布 p ( x ∣ θ ) p(x|\theta) p(x∣θ),记录结果如下:

变量样本
西瓜重量 x x x5.3 , 5.7, 4.7, 4.3, 3.2, 4.9, 4.1, 3.5, 3.8, 1.7
西瓜品种 z z z1, 1, 1, 1, 2, 2, 2, 2, 2, 2

其中,西瓜的品种 z z z 是离散分布 P ( z = k ) = π k \mathbb P(z=k)=\pi_k P(z=k)=πk​,一般假设两种类型的西瓜服从均值和方差不同的高斯分布 N ( μ 1 , σ 1 2 ) N(\mu_1,\sigma^2_1) N(μ1​,σ12​)和 N ( μ 2 , σ 2 2 ) N(\mu_2,\sigma^2_2) N(μ2​,σ22​)。由全概率公式,西瓜重量的概率密度模型
p ( x ; θ ) = π 1 N ( x ; μ 1 , σ 1 2 ) + π 2 N ( x ; μ 2 , σ 2 2 ) p(x;\theta)=\pi_1\mathcal N(x;\mu_1,\sigma^2_1)+\pi_2\mathcal N(x;\mu_2,\sigma^2_2) p(x;θ)=π1​N(x;μ1​,σ12​)+π2​N(x;μ2​,σ22​)

我们尝试用极大似然估计求解参数 θ = ( π 1 , π 2 , μ 1 , σ 1 2 , μ 2 , σ 2 2 ) \theta=(\pi_1,\pi_2,\mu_1,\sigma^2_1,\mu_2,\sigma^2_2) θ=(π1​,π2​,μ1​,σ12​,μ2​,σ22​)。

优化目标函数
max ⁡ θ ∑ z i = 1 log ⁡ π 1 N ( x i ; μ 1 , σ 1 2 ) + ∑ z i = 2 log ⁡ π 2 N ( x i ; μ 2 , σ 2 2 ) s.t.  π 1 + π 2 = 1 \max_{\theta}\sum_{z_i=1}\log \pi_1\mathcal N(x_i;\mu_1,\sigma_1^2)+\sum_{z_i=2}\log \pi_2\mathcal N(x_i;\mu_2,\sigma_2^2) \\ \text{s.t. } \pi_1+\pi_2=1 θmax​zi​=1∑​logπ1​N(xi​;μ1​,σ12​)+zi​=2∑​logπ2​N(xi​;μ2​,σ22​)s.t. π1​+π2​=1
使用拉格朗日乘子法容易求得
π 1 = 0.4 , π 2 = 0.6 μ 1 = 5 , σ 1 2 = 0.5 4 2 μ 2 = 3.53 , σ 2 2 = 0.9 8 2 \pi_1=0.4,\quad \pi_2=0.6 \\ \mu_1=5,\quad \sigma_1^2=0.54^2 \\ \mu_2=3.53,\quad \sigma_2^2=0.98^2 \\ π1​=0.4,π2​=0.6μ1​=5,σ12​=0.542μ2​=3.53,σ22​=0.982

最终得到

p ( x ) = 0.4 × N ( x ; 5 , 0.5 4 2 ) + 0.6 × N ( x ; 3.53 , 0.9 8 2 ) p(x)=0.4\times\mathcal N(x;5,0.54^2)+0.6\times\mathcal N(x;3.53,0.98^2) p(x)=0.4×N(x;5,0.542)+0.6×N(x;3.53,0.982)

但是,实际中如果瓜农无法辩识标记西瓜的品种,此时概率分布函数变为
p ( x ; θ ) = π N ( x ; μ 1 , σ 1 2 ) + ( 1 − π ) N ( x ; μ 2 , σ 2 2 ) p(x;\theta)=\pi\mathcal N(x;\mu_1,\sigma^2_1)+(1-\pi)\mathcal N(x;\mu_2,\sigma^2_2) p(x;θ)=πN(x;μ1​,σ12​)+(1−π)N(x;μ2​,σ22​)

其中品种 z z z 成为隐藏变量。对数似然函数变为
log ⁡ L ( θ ) = ∑ i log ⁡ ( π N ( x i ; μ 1 , σ 1 2 ) + ( 1 − π ) N ( x i ; μ 2 , σ 2 2 ) ) \log L(\theta)=\sum_{i}\log (\pi\mathcal N(x_i;\mu_1,\sigma^2_1)+(1-\pi)\mathcal N(x_i;\mu_2,\sigma^2_2)) logL(θ)=i∑​log(πN(xi​;μ1​,σ12​)+(1−π)N(xi​;μ2​,σ22​))
其中参数 θ = ( π , μ 1 , σ 1 2 , μ 2 , σ 2 2 ) \theta=(\pi,\mu_1,\sigma^2_1,\mu_2,\sigma^2_2) θ=(π,μ1​,σ12​,μ2​,σ22​)。上式中存在"和的对数",若直接求导将会变得很麻烦。下节我们将会介绍EM算法来解决此类问题。

基本思想

概率模型有时既含有观测变量 (observable variable),又含有隐变量 (latent variable)。EM(Expectation-Maximization,期望最大算法)是一种迭代算法,用于含有隐变量的概率模型的极大似然估计或极大后验估计,是数据挖掘的十大经典算法之一。

假设现有一批独立同分布的样本
X = { x 1 , x 2 , ⋯ , x N } X=\{x_1,x_2,\cdots,x_N\} X={x1​,x2​,⋯,xN​}
它们是由某个含有隐变量的概率分布 p ( x , z ∣ θ ) p(x,z|\theta) p(x,z∣θ) 生成。设样本对应的隐变量数据
Z = { z 1 , z 2 , ⋯ , z N } Z=\{z_1,z_2,\cdots,z_N\} Z={z1​,z2​,⋯,zN​}

对于一个含有隐变量 Z Z Z 的概率模型,一般将 ( X , Z ) (X,Z) (X,Z) 称为完全数据 (complete-data),而观测数据 X X X 为不完全数据(incomplete-data)。

假设观测数据 X X X 概率密度函数是 p ( X ∣ θ ) p(X|\theta) p(X∣θ),其中 θ \theta θ是需要估计的模型参数,现尝试用极大似然估计法估计此概率分布的参数。为了便于讨论,此处假设 z z z 为连续型随机变量,则对数似然函数为
log ⁡ L ( θ ) = ∑ i = 1 N log ⁡ p ( x i ∣ θ ) = ∑ i = 1 N log ⁡ ∫ z i p ( x i , z i ∣ θ ) d z i \log L(\theta)=\sum_{i=1}^N\log p(x_i|\theta)=\sum_{i=1}^N\log\int_{z_i}p(x_i,z_i|\theta)\mathrm dz_i logL(θ)=i=1∑N​logp(xi​∣θ)=i=1∑N​log∫zi​​p(xi​,zi​∣θ)dzi​

Suppose you have a probability model with parameters θ \theta θ.
p ( x ∣ θ ) p(x|\theta) p(x∣θ) has two names. It can be called the probability of x x x (given θ \theta θ), or the likelihood of θ \theta θ (given that x x x was observed).

我们的目标是极大化观测数据 X X X 关于参数 θ \theta θ 的对数似然函数
θ ^ = arg ⁡ max ⁡ θ log ⁡ L ( θ ) \hat\theta=\arg\max_{\theta}\log L(\theta) θ^=argθmax​logL(θ)

显然,此时 log ⁡ L ( θ ) \log L(\theta) logL(θ) 里含有未知的隐变量 z z z 以及求和项的对数,相比于不含隐变量的对数似然函数,该似然函数的极大值点较难求解,而 EM 算法则给出了一种迭代的方法来完成对 log ⁡ L ( θ ) \log L(\theta) logL(θ) 的极大化。

注意:确定好含隐变量的模型后,即确定了联合概率密度函数 p ( x , z ∣ θ ) p(x,z|\theta) p(x,z∣θ) ,其中 θ \theta θ是需要估计的模型参数。为便于讨论,在此有必要说明下其他已知的概率函数。

联合概率密度函数
p ( x , z ∣ θ ) = f ( x , z ; θ ) p(x,z|\theta)=f(x,z;\theta) p(x,z∣θ)=f(x,z;θ)
观测变量 x x x 的概率密度函数
p ( x ∣ θ ) = ∫ z f ( x , z ; θ ) d z p(x|\theta)=\int_z f(x,z;\theta)\mathrm dz p(x∣θ)=∫z​f(x,z;θ)dz
隐变量 z z z 的概率密度函数
p ( z ∣ θ ) = ∫ x f ( x , z ; θ ) d x p(z|\theta)=\int_x f(x,z;\theta)\mathrm dx p(z∣θ)=∫x​f(x,z;θ)dx
条件概率密度函数
p ( x ∣ z , θ ) = p ( x , z ∣ θ ) p ( z ∣ θ ) = f ( x , z ; θ ) ∫ x f ( x , z ; θ ) d x p(x|z,\theta)=\frac{p(x,z|\theta)}{p(z|\theta)}=\frac{f(x,z;\theta)}{\int_x f(x,z;\theta)\mathrm dx} p(x∣z,θ)=p(z∣θ)p(x,z∣θ)​=∫x​f(x,z;θ)dxf(x,z;θ)​
和
p ( z ∣ x , θ ) = p ( x , z ∣ θ ) p ( x ∣ θ ) = f ( x , z ; θ ) ∫ z f ( x , z ; θ ) d z p(z|x,\theta)=\frac{p(x,z|\theta)}{p(x|\theta)}=\frac{f(x,z;\theta)}{\int_z f(x,z;\theta)\mathrm dz} p(z∣x,θ)=p(x∣θ)p(x,z∣θ)​=∫z​f(x,z;θ)dzf(x,z;θ)​
下面给出两种推导方法:一种借助 Jensen 不等式;一种使用 KL 散度。

首先使用 Jensen 不等式推导:使用含有隐变量的全概率公式
log ⁡ p ( x i ∣ θ ) = log ⁡ ∫ z i p ( x i , z i ∣ θ ) d z i = log ⁡ ∫ z i q i ( z i ) p ( x i , z i ∣ θ ) q i ( z i ) d z i = log ⁡ E z ( p ( x i , z i ∣ θ ) q i ( z i ) ) ⩾ E z ( log ⁡ p ( x i , z i ∣ θ ) q i ( z i ) ) = ∫ z i q i ( z i ) log ⁡ p ( x i , z i ∣ θ ) q i ( z i ) d z i \begin{aligned} \log p(x_i|\theta)&=\log\int_{z_i} p(x_i,z_i|\theta)\mathrm dz_i \\ &=\log\int_{z_i}q_i(z_i)\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i \\ &=\log\mathbb E_z\left(\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\right) \\ &\geqslant \mathbb E_z\left(\log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\right) \\ &= \int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i \end{aligned} logp(xi​∣θ)​=log∫zi​​p(xi​,zi​∣θ)dzi​=log∫zi​​qi​(zi​)qi​(zi​)p(xi​,zi​∣θ)​dzi​=logEz​(qi​(zi​)p(xi​,zi​∣θ)​)⩾Ez​(logqi​(zi​)p(xi​,zi​∣θ)​)=∫zi​​qi​(zi​)logqi​(zi​)p(xi​,zi​∣θ)​dzi​​
其中 q i ( z i ) q_i(z_i) qi​(zi​) 是引入的第 i i i个样本隐变量 z i z_i zi​ 的任意概率密度函数(未知函数),其实 q q q 不管是任意函数,上式都成立。从后续推导得知,当 q i ( z i ) q_i(z_i) qi​(zi​) 是 z i z_i zi​ 的概率密度时,方便计算。

所以
log ⁡ L ( θ ) = ∑ i = 1 N log ⁡ p ( x i ∣ θ ) ⩾ B ( q , θ ) = ∑ i = 1 N ∫ z i q i ( z i ) log ⁡ p ( x i , z i ∣ θ ) q i ( z i ) d z i \log L(\theta)=\sum_{i=1}^N\log p(x_i|\theta)\geqslant B(q,\theta)=\sum_{i=1}^N\int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i logL(θ)=i=1∑N​logp(xi​∣θ)⩾B(q,θ)=i=1∑N​∫zi​​qi​(zi​)logqi​(zi​)p(xi​,zi​∣θ)​dzi​

其中函数 B B B 为对数似然的下界函数。下界比较好求,所以我们要优化这个下界来使得似然函数最大。

假设第 t t t 次迭代时 θ \theta θ 的估计值是 θ ( t ) \theta^{(t)} θ(t),我们希望第 t + 1 t+1 t+1 次迭代时的 θ \theta θ 能使 log ⁡ L ( θ ) \log L(\theta) logL(θ) 增大,即
log ⁡ L ( θ ( t ) ) ⩽ log ⁡ L ( θ ( t + 1 ) ) \log L(\theta^{(t)}) \leqslant \log L(\theta^{(t+1)}) logL(θ(t))⩽logL(θ(t+1))

可以分为两步实现:

  • 首先,固定 θ = θ ( t ) \theta=\theta^{(t)} θ=θ(t) ,通过调整 q q q 函数使得 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 在 θ ( t ) \theta^{(t)} θ(t) 处和 log ⁡ L ( θ ( t ) ) \log L(\theta^{(t)}) logL(θ(t)) 相等;
    B ( q ( t ) , θ ( t ) ) = log ⁡ L ( θ ( t ) ) B(q^{(t)},\theta^{(t)})=\log L(\theta^{(t)}) B(q(t),θ(t))=logL(θ(t))

  • 然后,固定 q q q,优化 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 取到下界函数 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 的最大值。
    θ ( t + 1 ) = arg ⁡ max ⁡ θ B ( q ( t ) , θ ) \theta^{(t+1)}=\arg\max_{\theta} B(q^{(t)},\theta) θ(t+1)=argθmax​B(q(t),θ)

所以
log ⁡ L ( θ ( t + 1 ) ) ⩾ B ( q ( t ) , θ ( t + 1 ) ) ⩾ B ( q ( t ) , θ ( t ) ) = log ⁡ L ( θ ( t ) ) \log L(\theta^{(t+1)})\geqslant B(q^{(t)},\theta^{(t+1)})\geqslant B(q^{(t)},\theta^{(t)})=\log L(\theta^{(t)}) logL(θ(t+1))⩾B(q(t),θ(t+1))⩾B(q(t),θ(t))=logL(θ(t))

因此,EM算法也可以看作一种坐标提升算法,首先固定一个值,对另外一个值求极值,不断重复直到收敛。

接下来,我们开始求解 q ( t ) q^{(t)} q(t) 。Jensen不等式中等号成立的条件是自变量是常数,即
p ( x i , z i ∣ θ ) q i ( z i ) = c \frac{p(x_i,z_i|\theta)}{q_i(z_i)}=c qi​(zi​)p(xi​,zi​∣θ)​=c
由于假设 q i ( z i ) q_i(z_i) qi​(zi​)是 z i z_i zi​ 的概率密度函数,所以
p ( x i ∣ θ ) = ∫ z i p ( x i , z i ∣ θ ) d z i = ∫ z i c q i ( z i ) d z i = c p(x_i|\theta)=\int_{z_i}p(x_i,z_i|\theta)\mathrm dz_i=\int_{z_i} cq_i(z_i)\mathrm dz_i=c p(xi​∣θ)=∫zi​​p(xi​,zi​∣θ)dzi​=∫zi​​cqi​(zi​)dzi​=c

于是
q i ( z i ) = p ( x i , z i ∣ θ ) c = p ( x i , z i ∣ θ ) p ( x i ∣ θ ) = p ( z i ∣ x i , θ ) q_i(z_i)=\frac{p(x_i,z_i|\theta)}{c}=\frac{p(x_i,z_i|\theta)}{p(x_i|\theta)}=p(z_i|x_i,\theta) qi​(zi​)=cp(xi​,zi​∣θ)​=p(xi​∣θ)p(xi​,zi​∣θ)​=p(zi​∣xi​,θ)
可以看到,函数 q i ( z i ) q_i(z_i) qi​(zi​) 代表第 i i i 个数据是 z i z_i zi​ 的概率密度,是可以直接计算的。

最终,我们只要初始化或使用上一步已经固定的 θ ( t ) \theta^{(t)} θ(t),然后计算
θ ( t + 1 ) = arg ⁡ max ⁡ θ ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ⁡ p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ( t ) ) d z i = arg ⁡ max ⁡ θ ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ⁡ p ( x i , z i ∣ θ ) d z i = arg ⁡ max ⁡ θ ∑ i = 1 N E z i ∣ x i , θ ( t ) [ log ⁡ p ( x i , z i ∣ θ ) ] = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \begin{aligned} \theta^{(t+1)}& = \arg\max_{\theta}\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta^{(t)})}\mathrm dz_i \\ & = \arg\max_{\theta}\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log p(x_i,z_i|\theta)\mathrm dz_i \\ & = \arg\max_{\theta}\sum_{i=1}^N \mathbb E_{z_i|x_i,\theta^{(t)}}[\log p(x_i,z_i|\theta)] \\ & = \arg\max_{\theta} Q(\theta,\theta^{(t)}) \end{aligned} θ(t+1)​=argθmax​i=1∑N​∫zi​​p(zi​∣xi​,θ(t))logp(zi​∣xi​,θ(t))p(xi​,zi​∣θ)​dzi​=argθmax​i=1∑N​∫zi​​p(zi​∣xi​,θ(t))logp(xi​,zi​∣θ)dzi​=argθmax​i=1∑N​Ezi​∣xi​,θ(t)​[logp(xi​,zi​∣θ)]=argθmax​Q(θ,θ(t))​

接下来使用 KL 散度推导:使用含有隐变量的条件概率
log ⁡ p ( x i ∣ θ ) = log ⁡ p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ) = ∫ z i q i ( z i ) log ⁡ p ( x i , z i ∣ θ ) p ( z i ∣ x i , θ ) ⋅ q i ( z i ) q i ( z i ) d z i = ∫ z i q i ( z i ) log ⁡ p ( x i , z i ∣ θ ) q i ( z i ) d z i + ∫ z i q i ( z i ) log ⁡ q i ( z i ) p ( z i ∣ x i , θ ) d z i = B ( q i , θ ) + K L ( q i ∥ p i ) \begin{aligned} \log p(x_i|\theta)&=\log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta)} \\ &=\int_{z_i}q_i(z_i)\log\frac{p(x_i,z_i|\theta)}{p(z_i|x_i,\theta)}\cdot\frac{q_i(z_i)}{q_i(z_i)}\mathrm dz_i \\ &= \int_{z_i}q_i(z_i) \log\frac{p(x_i,z_i|\theta)}{q_i(z_i)}\mathrm dz_i + \int_{z_i}q_i(z_i) \log\frac{q_i(z_i)}{p(z_i|x_i,\theta)}\mathrm dz_i \\ &=B(q_i,\theta)+KL(q_i\|p_i) \end{aligned} logp(xi​∣θ)​=logp(zi​∣xi​,θ)p(xi​,zi​∣θ)​=∫zi​​qi​(zi​)logp(zi​∣xi​,θ)p(xi​,zi​∣θ)​⋅qi​(zi​)qi​(zi​)​dzi​=∫zi​​qi​(zi​)logqi​(zi​)p(xi​,zi​∣θ)​dzi​+∫zi​​qi​(zi​)logp(zi​∣xi​,θ)qi​(zi​)​dzi​=B(qi​,θ)+KL(qi​∥pi​)​
同样 q i ( z i ) q_i(z_i) qi​(zi​) 是引入的关于 z i z_i zi​ 的任意概率密度函数(未知函数),函数 B ( q i , θ ) B(q_i,\theta) B(qi​,θ) 表示对数似然的一个下界,散度 K L ( q i ∥ p i ) KL(q_i\|p_i) KL(qi​∥pi​)描述了下界与对数似然的差距。

同样为了保证
log ⁡ L ( θ ( t ) ) ⩽ log ⁡ L ( θ ( t + 1 ) ) \log L(\theta^{(t)}) \leqslant \log L(\theta^{(t+1)}) logL(θ(t))⩽logL(θ(t+1))

分为两步实现:

  • 首先,固定 θ = θ ( t ) \theta=\theta^{(t)} θ=θ(t) ,通过调整 q q q 函数使得 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 在 θ ( t ) \theta^{(t)} θ(t) 处和 log ⁡ L ( θ ( t ) ) \log L(\theta^{(t)}) logL(θ(t)) 相等,即 K L ( q i ∥ p i ) = 0 KL(q_i\|p_i)=0 KL(qi​∥pi​)=0,于是
    q i ( z i ) = p ( z i ∣ x i , θ ( t ) ) q_i(z_i)=p(z_i|x_i,\theta^{(t)}) qi​(zi​)=p(zi​∣xi​,θ(t))

  • 然后,固定 q q q,优化 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) 取到下界函数 B ( q ( t ) , θ ) B(q^{(t)},\theta) B(q(t),θ) 的最大值。
    θ ( t + 1 ) = arg ⁡ max ⁡ θ B ( q ( t ) , θ ) \theta^{(t+1)}=\arg\max_{\theta} B(q^{(t)},\theta) θ(t+1)=argθmax​B(q(t),θ)

算法流程

输入:观测数据 X X X,联合分布 p ( x , z ; θ ) p(x,z;\theta) p(x,z;θ),条件分布 P ( z ∣ x , θ ) P(z|x,\theta) P(z∣x,θ)

输出:模型参数 θ \theta θ

EM算法通过引入隐含变量,使用极大似然估计(MLE)进行迭代求解参数。每次迭代由两步组成:

  • E-step:求期望 (expectation)。以参数的初始值或上一次迭代的模型参数 θ ( t ) \theta^{(t)} θ(t) 来计算隐变量后验概率 p ( z i ∣ x i , θ ( t ) ) p(z_i|x_i,\theta^{(t)}) p(zi​∣xi​,θ(t)) ,并计算期望(expectation)
    Q ( θ , θ ( t ) ) = ∑ i = 1 N ∫ z i p ( z i ∣ x i , θ ( t ) ) log ⁡ p ( x i , z i ∣ θ ) d z i Q(\theta,\theta^{(t)})=\sum_{i=1}^N\int_{z_i}p(z_i|x_i,\theta^{(t)}) \log p(x_i,z_i|\theta)\mathrm dz_i Q(θ,θ(t))=i=1∑N​∫zi​​p(zi​∣xi​,θ(t))logp(xi​,zi​∣θ)dzi​

  • M-step: 求极大 (maximization),极大化E步中的期望值,来确定 t + 1 t+1 t+1 次迭代的参数估计值
    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)}=\arg\max_{\theta} Q(\theta,\theta^{(t)}) θ(t+1)=argθmax​Q(θ,θ(t))

依次迭代,直至收敛到局部最优解。

高斯混合模型

基础模型

高斯混合模型 (Gaussian Mixture Model, GMM) 数据可以看作是从 K K K个高斯分布中生成出来的,每个高斯分布称为一个组件 (Component)。

引入隐变量 z ∈ { 1 , 2 , ⋯ , K } z\in\{1,2,\cdots,K\} z∈{1,2,⋯,K},表示对应的样本 x x x 属于哪一个高斯分布,这个变量是一个离散的随机变量:
P ( z = k ) = π k s.t.  ∑ k = 1 K π k = 1 \mathbb P(z=k)=\pi_k \\ \text{s.t. } \sum_{k=1}^K\pi_k=1 P(z=k)=πk​s.t. k=1∑K​πk​=1
可将 π k \pi_k πk​ 视为选择第 k k k 高斯分布的先验概率,而对应的第 k k k 个高斯分布的样本概率
p ( x ∣ z = k ) = N ( x ; μ k , Σ k ) p(x|z=k)=\mathcal N(x;\mu_k,\Sigma_k) p(x∣z=k)=N(x;μk​,Σk​)

于是高斯混合模型
p M ( x ) = ∑ k = 1 K π k N ( x ; μ k , Σ k ) p_M(x)=\sum_{k=1}^K\pi_k\mathcal N(x;\mu_k,\Sigma_k) pM​(x)=k=1∑K​πk​N(x;μk​,Σk​)

其中 0 ⩽ π k ⩽ 1 0\leqslant \pi_k\leqslant 1 0⩽πk​⩽1为混合系数(mixing coefficients)。

高斯混合模型的参数估计是EM算法的一个重要应用,隐马尔科夫模型的非监督学习也是EM算法的一个重要应用。

EM算法

高斯混合模型的极大似然估计
θ ^ = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ ∑ k = 1 K π k N ( x i ; μ k , Σ k ) \hat\theta=\arg\max_{\theta} \sum_{i=1}^N\log\sum_{k=1}^K\pi_k \mathcal N(x_i;\mu_k,\Sigma_k) θ^=argθmax​i=1∑N​logk=1∑K​πk​N(xi​;μk​,Σk​)
其中参数 θ k = ( π k , μ k , Σ k ) \theta_k=(\pi_k,\mu_k,\Sigma_k) θk​=(πk​,μk​,Σk​),使用EM算法估计GMM的参数 θ \theta θ。

依照当前模型参数,计算隐变量后验概率:由贝叶斯公式知道
P ( z i = k ∣ x i ) = P ( z i = k ) p ( x i ∣ z i = k ) p ( x i ) = π k N ( x i ; μ k , Σ k ) ∑ k = 1 K π k N ( x i ; μ k , Σ k ) = γ i k \begin{aligned} P(z_i=k|x_i)&=\frac{P(z_i=k)p(x_i|z_i=k)}{p(x_i)} \\ &=\frac{\pi_k\mathcal N(x_i;\mu_k,\Sigma_k)}{\sum_{k=1}^K\pi_k\mathcal N(x_i;\mu_k,\Sigma_k) } \\ &=\gamma_{ik} \end{aligned} P(zi​=k∣xi​)​=p(xi​)P(zi​=k)p(xi​∣zi​=k)​=∑k=1K​πk​N(xi​;μk​,Σk​)πk​N(xi​;μk​,Σk​)​=γik​​

令 γ i k \gamma_{ik} γik​表示第 i i i个样本属于第 k k k个高斯分布的概率。

E-step:确定Q函数

Q ( θ , θ ( t ) ) = ∑ i = 1 N ∑ k = 1 K p ( z i = k ∣ x i , μ ( t ) , Σ ( t ) ) log ⁡ p ( x i , z i = k ∣ μ , Σ ) = ∑ i = 1 N ∑ k = 1 K γ i k log ⁡ π k N ( x ; μ k , Σ k ) = ∑ i = 1 N ∑ k = 1 K γ i k ( log ⁡ π k + log ⁡ N ( x ; μ k , Σ k ) ) \begin{aligned} Q(\theta,\theta^{(t)})&=\sum_{i=1}^N\sum_{k=1}^Kp(z_i=k|x_i,\mu^{(t)},\Sigma^{(t)}) \log p(x_i,z_i=k|\mu,\Sigma) \\ &=\sum_{i=1}^N\sum_{k=1}^K\gamma_{ik}\log\pi_k\mathcal N(x;\mu_k,\Sigma_k) \\ &=\sum_{i=1}^N\sum_{k=1}^K\gamma_{ik}(\log\pi_k+ \log\mathcal N(x;\mu_k,\Sigma_k) ) \end{aligned} Q(θ,θ(t))​=i=1∑N​k=1∑K​p(zi​=k∣xi​,μ(t),Σ(t))logp(xi​,zi​=k∣μ,Σ)=i=1∑N​k=1∑K​γik​logπk​N(x;μk​,Σk​)=i=1∑N​k=1∑K​γik​(logπk​+logN(x;μk​,Σk​))​

M-step:求Q函数的极大值

上面已获得的 Q ( θ , θ ( t ) ) Q(\theta,\theta^{(t)}) Q(θ,θ(t))分别对 μ k , Σ k \mu_k,\Sigma_k μk​,Σk​求导并设为0。得到
μ k ( t + 1 ) = ∑ i = 1 N γ i k x i ∑ i = 1 N γ i k Σ k ( t + 1 ) = ∑ i = 1 N γ i k ( x i − μ k ( t + 1 ) ) ( x i − μ k ( t + 1 ) ) T ∑ i = 1 N γ i k \mu_k^{(t+1)}=\frac{\sum_{i=1}^N\gamma_{ik}x_i}{\sum_{i=1}^N\gamma_{ik}} \\ \Sigma_k^{(t+1)}=\frac{\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k^{(t+1)}) (x_i-\mu_k^{(t+1)})^T }{\sum_{i=1}^N\gamma_{ik}} μk(t+1)​=∑i=1N​γik​∑i=1N​γik​xi​​Σk(t+1)​=∑i=1N​γik​∑i=1N​γik​(xi​−μk(t+1)​)(xi​−μk(t+1)​)T​

可以看到第 k k k个高斯分布的 μ k , Σ k \mu_k,\Sigma_k μk​,Σk​ 是所有样本的加权平均,其中每个样本的权重为该样本属于第 k k k个高斯分布的后验概率 γ i k \gamma_{ik} γik​。

对于混合系数 π k \pi_k πk​,因为有限制条件,使用拉格朗日乘子法可求得
π k ( t + 1 ) = 1 N ∑ i = 1 N γ i k \pi_k^{(t+1)}=\frac{1}{N}\sum_{i=1}^N\gamma_{ik} πk(t+1)​=N1​i=1∑N​γik​

即第 k k k个高斯分布的混合系数是属于 k k k的样本的平均后验概率,由此运用EM算法能大大简化高斯混合模型的参数估计过程,在中间步只需计算 γ i k \gamma_{ik} γik​就行了。

高斯混合模型的算法流程如下图所示:

GMM_algorithm

高斯混合聚类

高斯混合聚类假设每个类簇中的样本都服从一个多维高斯分布,那么空间中的样本可以看作由 K K K个多维高斯分布混合而成。

引入隐变量 z z z 标记簇类别,这样就可以使用高斯混合模型
p M ( x ) = ∑ k = 1 K π k N ( x ; μ k , Σ k ) p_M(x)=\sum_{k=1}^K\pi_k\mathcal N(x;\mu_k,\Sigma_k) pM​(x)=k=1∑K​πk​N(x;μk​,Σk​)

使用EM算法迭代求解。

相比于K-means更具一般性,能形成各种不同大小和形状的簇。K-means可视为高斯混合聚类中每个样本仅指派给一个混合成分的特例
γ i k = { 1 , if  k = arg ⁡ min ⁡ k ∥ x i − μ k ∥ 2 0 , otherwise \gamma_{ik}=\begin{cases} 1, & \text{if } k=\arg\min_k\|x_i-\mu_k\|^2\\ 0, & \text{otherwise} \end{cases} γik​={1,0,​if k=argmink​∥xi​−μk​∥2otherwise​
且各混合成分协方差相等,均为对角矩阵 σ 2 I \sigma^2 I σ2I。

附录

Jensen 不等式

若 f f f 是凸函数(convex function),对任意的 λ ∈ [ 0 , 1 ] \lambda\in [0,1] λ∈[0,1],下式恒成立
f ( λ x 1 + ( 1 − λ ) x 2 ) ⩽ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1+(1-\lambda)x_2)\leqslant \lambda f(x_1)+(1-\lambda)f(x_2) f(λx1​+(1−λ)x2​)⩽λf(x1​)+(1−λ)f(x2​)
Jensen’s inequality就是上式的推广,设 f ( x ) f(x) f(x) 为凸函数, λ i ∈ [ 0 , 1 ] , ∑ i λ i = 1 \lambda_i\in[0,1],\ \sum_i\lambda_i=1 λi​∈[0,1], ∑i​λi​=1 ,则
f ( ∑ i λ i x i ) ⩽ ∑ i λ i f ( x i ) f(\sum_i\lambda_ix_i)\leqslant \sum_i\lambda_if(x_i) f(i∑​λi​xi​)⩽i∑​λi​f(xi​)
若将 λ i \lambda_i λi​ 视为一个概率分布,则可表示为期望值的形式
f ( E [ x ] ) ⩽ E [ f ( x ) ] f(\mathbb E[x])\leqslant\mathbb E[f(x)] f(E[x])⩽E[f(x)]

显然,如果 f f f 是凹函数(concave function),则将不等号反向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/diannao/45220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作理念分享

上份工作的上级,分享他的工作理念,做个整理: 1 士气上要奋发向上有追求,最低限度当然是要恰饭,保证生活,最好是做一些事情,把钱挣了的同时也能有更多的收获。 2 公司为社会,用户创造…

华为HCIP Datacom H12-821 卷36

1.单选题 在PIM- SM中,以下关于RP 的描述,错误的是哪一选项? A、在PIM-SM中,组播数据流量不一定必须经过RP的转发。 B、对于一个组播组来说,可以同时有多个RP地址,提升网络可靠性。 C、组播网络中,可以…

【BUG】已解决:JsonMappingException

已解决:JsonMappingException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 概述: 没有getter方法的实体的序列化,并解决Jackson引发的JsonMappingException异常。 默认情况下,Jackson 2只会处理公有字段或具有公有get…

vue 级联下拉框选择的思维

在原来的js的思维下,级联下拉框的选择往往是,先绑定一级下拉框的菜单,然后在该下拉框下onchange, 在onchange事件中获取当前选项,然后绑定二级下拉框的数据,以此类推…… 在vue框架下应该改变思维,首先设置…

经典再现,回顾常见排序算法之冒泡排序,附Java源码及优化改进实现

回顾一下排序算法,老酒装新瓶,给自己的技能点做个回放。 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个有序的序列,也可以理解为高矮个站队。 衡量排…

Renesas R7FA8D1BH (Cortex®-M85) 控制DS18B20

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置 2.1 硬件接口电路 2.2 FSB配置DS18B20的IO 2.3 生成Keil工程文件 3 DS18B20驱动代码 3.1 DS18B20介绍 3.2 DS18B20驱动实现 3.2.1 IO状态定义 3.2.2 读IO状态函数 3.2.3…

OpenCV:python图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

前言 仅供个人学习用,如果对各位朋友有参考价值,给个赞或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 参数说明 parameters center:旋转中心坐标,是一个元组参数(col, row) angle:旋转角度…

Go-知识测试-模糊测试

Go-知识测试-模糊测试 1. 定义2. 例子3. 数据结构4. tesing.F.Add5. 模糊测试的执行6. testing.InternalFuzzTarget7. testing.runFuzzing8. testing.fRunner9. FuzzXyz10. RunFuzzWorker11. CoordinateFuzzing12. 总结 建议先看:https://blog.csdn.net/a1879272183…

一文入门【NestJs】Providers

Nest学习系列 ✈️一文入门【NestJS】 ✈️一文入门【NestJs】Controllers 控制器 🚩 前言 在NestJS的世界里,理解“Providers”是构建健壮、可维护的后端服务的关键。NestJS,作为Node.js的一个现代框架,采用了Angular的一些核…

Redis的安装配置及IDEA中使用

目录 一、安装redis,配置redis.conf 1.安装gcc 2.将redis的压缩包放到指定位置解压 [如下面放在 /opt 目录下] 3.编译安装 4.配置redis.conf文件 5.开机自启 二、解决虚拟机本地可以连接redis但是主机不能连接redis 1.虚拟机网络适配器网络连接设置为桥接模式…

VSCode上通过C++实现单例模式

单例模式实际上就是为了确保一个类最多只有一个实例,并且在程序的任何地方都可以访问这个实例,也就是提供一个全局访问点,单例对象不需要手动释放,交给系统来释放就可以了,单例模式的设计初衷就是为了在整个应用程序的…

vue 下拉菜单树形结构——vue-treeselect的组件使用

参考: https://www.cnblogs.com/syjtiramisu/p/17672866.htmlhttps://www.cnblogs.com/syjtiramisu/p/17672866.html vue-treeselect的使用 - 简书下载依赖 使用https://www.jianshu.com/p/459550e1477d 实际项目使用:

uni-app iOS上架相关App store App store connect 云打包有次数限制

相册权限 uni-app云打包免费有次数 切换一个账号继续

使用SOAP与TrinityCore交互(待定)

原文:SOAP with TrinityCore | TrinityCore MMo Project Wiki 如何使用SOAP与TC交互 SOAP代表简单对象访问协议,是一种类似于REST的基于标准的web服务访问协议的旧形式。只要必要的配置到位,您就可以利用SOAP向TrinityCore服务器发送命令。 …

Open3D 计算点云配准的精度和重叠度

目录 一、概述 1.1计算配准精度 1.2计算点云重叠度 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2计算结果 一、概述 在点云配准中,精度和重叠度是两个重要的评价指标。精度通常用均方根误差(RMSE)来衡量,而重叠度则表示两个点云在…

centos环境启动/重启java服务脚本优化

centos环境启动/重启java服务脚本优化 引部分命令说明根据端口查询服务进程杀死进程函数脚本接收参数 脚本注意重启文档位置异常 引 在离线环境部署的多个java应用组成的系统,测试阶段需要较为频繁的发布,因资源限制,没有弄devops或CICD那套…

华为手机联系人不见了怎么恢复?3个解决方案

华为手机联系人列表就像是我们精心编织的社交网络之网。然而,有时,这张网可能会因为各种原因而意外破损,联系人信息消失得无影无踪,让我们陷入“人脉孤岛”的困境。华为手机联系人不见了怎么恢复?别担心,我…

构建高质量数据集与智能数据工程平台:播客AI Odyssey深度对话实录

对话整数智能联创和前IDEA研究员:构建高质量数据集与智能数据工程平台 - AI Odyssey | 小宇宙 - 听播客,上小宇宙 人工智能技术的日益深远发展,对人工智能的性能提升与技术迭代提出了新的要求。在大模型训练中,已有的研究和实践表…

【操作系统】进程管理——用信号量机制解决问题,以生产者-消费者问题为例(个人笔记)

学习日期:2024.7.10 内容摘要:利用信号量机制解决几个经典问题模型 目录 引言 问题模型 生产者-消费者问题(经典) 多生产者-多消费者问题 吸烟者问题 读者写者问题(难点) 哲学家进餐问题&#xff0…

解决POST请求中文乱码问题

解决POST请求中文乱码问题 1、乱码原因2、解决方法3、具体步骤 💖The Begin💖点点关注,收藏不迷路💖 在Web开发中,处理POST请求时经常遇到中文乱码问题,这主要是由于服务器在接收到POST请求的数据后&#x…