【课堂笔记】EM算法

文章目录

背景

EM算法 (期望最大化算法,Expectation-Maximization Algorithm)是一种迭代优化算法,用于在含有隐变量 的概率模型中估计最大似然参数。

这是概括性的定义,下面我会解释其中的名词并用具体例子来引入EM算法。

极大似然估计

先复习一下极大似然函数估计 ,我们假设数据满足某个分布(例如正态分布 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2)),但我们不知道其中的参数( μ , σ \mu, \sigma μ,σ),于是我们需要从已知的数据中去拟合或估计出这些参数。

进行极大似然估计的一般过程为(以正态分布为例):

(1)确定概率模型
p ( x i ; μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) p(x_i;\mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp \left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) p(xi;μ,σ2)=2πσ2 1exp(−2σ2(xi−μ)2)

(2)确定似然函数,并取负对数得到负对数似然
L ( μ , σ 2 ) = ∏ i = 1 n p ( x i ; μ , σ 2 ) = ∏ i = 1 n 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) l ( μ , σ 2 ) = − ln ⁡ L ( μ , σ 2 ) = n 2 ln ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ∑ i = 1 n ( x i − μ ) 2 L(\mu, \sigma^2) = \prod_{i=1}^np(x_i;\mu,\sigma^2)=\prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x_i - \mu)^2}{2\sigma^2}\right) \\ l(\mu, \sigma^2) = -\ln L(\mu, \sigma^2) = \frac{n}{2} \ln(2\pi\sigma^2) + \frac{1}{2\sigma^2} \sum_{i=1}^n (x_i - \mu)^2 L(μ,σ2)=i=1∏np(xi;μ,σ2)=i=1∏n2πσ2 1exp(−2σ2(xi−μ)2)l(μ,σ2)=−lnL(μ,σ2)=2nln(2πσ2)+2σ21i=1∑n(xi−μ)2

(3)计算极值点, θ ^ = ( μ , σ 2 ) \hat{\theta}=(\mu, \sigma^2) θ^=(μ,σ2)是待估计的参数
θ ^ = arg ⁡ min ⁡ μ , σ 2 l ( μ , σ 2 ) \hat{\theta} = \arg\min_{\mu, \sigma^2} l(\mu, \sigma^2) θ^=argμ,σ2minl(μ,σ2)

如果方程简单,可以解析求解,即导数为0,得到似然方程。

如果方程复杂,可能需要数值方法(如梯度下降、牛顿法)。

隐变量

什么是隐变量?考虑以下情景:

现在有一个蛋糕集,里面有巧克力蛋糕和草莓蛋糕,用 k i = 0 , 1 k_i = 0, 1 ki=0,1来表示。假设它们分别满足分布 N ( μ 1 , σ 1 2 ) N(\mu_1, \sigma_1^2) N(μ1,σ12)和 N ( μ 2 , σ 2 2 ) N(\mu_2, \sigma_2^2) N(μ2,σ22),然而,我们并不知道某个蛋糕具体是巧克力做的还是草莓做的。换句话说,我们需要估计出所有的 k i k_i ki以及参数 μ 1 , σ 1 , μ 2 , σ 2 \mu_1, \sigma_1, \mu_2, \sigma_2 μ1,σ1,μ2,σ2。这里 k i k_i ki就是隐变量,即无法直接观测的变量。

这里就产生了一个"鸡生蛋,蛋生鸡"问题:

(1)要想估计模型参数 μ 1 , σ 1 , μ 2 , σ 2 \mu_1, \sigma_1, \mu_2, \sigma_2 μ1,σ1,μ2,σ2,需要知道每个样本的类别 k i k_i ki

(2)要想确认样本的类别 k i k_i ki需要事先知道模型的参数。

高斯混合模型

事实上,我们可以用高斯混合模型来同时表示两个正态分布模型:
p ( x i ∣ μ 1 , σ 1 2 , μ 2 , σ 2 2 , π 0 , π 1 ) = π 0 ⋅ 1 2 π σ 1 2 exp ⁡ ( − ( x i − μ 1 ) 2 2 σ 1 2 ) + π 1 ⋅ 1 2 π σ 2 2 exp ⁡ ( − ( x i − μ 2 ) 2 2 σ 2 2 ) p(x_i | \mu_1, \sigma_1^2, \mu_2, \sigma_2^2, \pi_0, \pi_1) = \pi_0 \cdot \frac{1}{\sqrt{2\pi\sigma_1^2}} \exp\left(-\frac{(x_i - \mu_1)^2}{2\sigma_1^2}\right) + \pi_1 \cdot \frac{1}{\sqrt{2\pi\sigma_2^2}} \exp\left(-\frac{(x_i - \mu_2)^2}{2\sigma_2^2}\right) p(xi∣μ1,σ12,μ2,σ22,π0,π1)=π0⋅2πσ12 1exp(−2σ12(xi−μ1)2)+π1⋅2πσ22 1exp(−2σ22(xi−μ2)2)

这里引入了两个新的参数 π 0 , π 1 \pi_0, \pi_1 π0,π1满足 π 0 + π 1 = 1 \pi_0 + \pi_1 = 1 π0+π1=1,分别表示巧克力蛋糕和草莓蛋糕的占比。注意由于我们不知道样本的类别,这两个参数也是需要估计的。

看起来这样干很美好,只要把刚才最大似然估计的步骤来一遍就好了。然而在计算负对数似然的时候你就会卡住了。先前取对数的时候可以很容易把 log ⁡ ∏ p ( x i ) \log\prod p(x_i) log∏p(xi) 变成 ∑ log ⁡ p ( x i ) \sum\log p(x_i) ∑logp(xi),然后 log ⁡ \log log和 p ( x i ) p(x_i) p(xi)中的 exp ⁡ \exp exp消掉了。但这里不行。然后后面不管是求导还是梯度下降都完蛋了。

EM算法

EM算法通过另一个思路解决了这个问题,那就是互相猜!

这里先讲一下要算点啥,后面再讲来路。

(1)设置初始参数 θ = ( μ 1 , σ 1 2 , μ 2 , σ 2 2 , π 0 , π 1 ) \theta = (\mu_1, \sigma_1^2, \mu_2, \sigma_2^2, \pi_0, \pi_1) θ=(μ1,σ12,μ2,σ22,π0,π1)

(2)E-Step:根据目前的参数 μ 1 , σ 1 2 , μ 2 , σ 2 2 \mu_1, \sigma_1^2, \mu_2, \sigma_2^2 μ1,σ12,μ2,σ22,分别计算每个样本属于草莓蛋糕的概率和属于巧克力蛋糕的概率。

似然:
p ( x i ∣ k i = 0 ) = 1 2 π σ 1 2 exp ⁡ ( − ( x i − μ 1 ) 2 2 σ 1 2 ) p ( x i ∣ k i = 1 ) = 1 2 π σ 2 2 exp ⁡ ( − ( x i − μ 2 ) 2 2 σ 2 2 ) p(x_i | k_i = 0) = \frac{1}{\sqrt{2\pi\sigma_1^2}} \exp \left( -\frac{(x_i - \mu_1)^2}{2\sigma_1^2} \right) \\ p(x_i | k_i = 1) = \frac{1}{\sqrt{2\pi\sigma_2^2}} \exp \left( -\frac{(x_i - \mu_2)^2}{2\sigma_2^2} \right) p(xi∣ki=0)=2πσ12 1exp(−2σ12(xi−μ1)2)p(xi∣ki=1)=2πσ22 1exp(−2σ22(xi−μ2)2)

先验概率:
P ( k i = 0 ) = π 0 , P ( k i = 1 ) = π 1 P(k_i = 0) = \pi_0, P(k_i = 1) = \pi_1 P(ki=0)=π0,P(ki=1)=π1

边缘概率:
p ( x i ) = p ( x i ∣ k i = 0 ) P ( k i = 0 ) + p ( x i ∣ k i = 1 ) P ( k i = 1 ) = π 0 ⋅ 1 2 π σ 1 2 exp ⁡ ( − ( x i − μ 1 ) 2 2 σ 1 2 ) + π 1 ⋅ 1 2 π σ 2 2 exp ⁡ ( − ( x i − μ 2 ) 2 2 σ 2 2 ) \begin{aligned} p(x_i) &= p(x_i | k_i = 0)P(k_i = 0) + p(x_i | k_i = 1)P(k_i = 1) \\ &= \pi_0 \cdot \frac{1}{\sqrt{2\pi\sigma_1^2}} \exp \left( -\frac{(x_i - \mu_1)^2}{2\sigma_1^2} \right) + \pi_1 \cdot \frac{1}{\sqrt{2\pi\sigma_2^2}} \exp \left( -\frac{(x_i - \mu_2)^2}{2\sigma_2^2} \right) \end{aligned} p(xi)=p(xi∣ki=0)P(ki=0)+p(xi∣ki=1)P(ki=1)=π0⋅2πσ12 1exp(−2σ12(xi−μ1)2)+π1⋅2πσ22 1exp(−2σ22(xi−μ2)2)

然后通过贝叶斯定理计算后验概率:
P ( k i = k ∣ x i ) = p ( x i ∣ k i = k ) P ( k i = k ) p ( x i ) P(k_i = k | x_i) = \frac{p(x_i | k_i = k) P(k_i = k)}{p(x_i)} P(ki=k∣xi)=p(xi)p(xi∣ki=k)P(ki=k)

(3)M-Step:这一步最大化期望对数似然,并更新参数。E 步计算隐变量期望后得到的优化目标为:
Q ( θ , θ ( t ) ) = ∑ i = 1 n ∑ k = 0 1 P ( k i = k ∣ x i , θ ( t ) ) ln ⁡ [ p ( x i , k i = k ∣ θ ) ] Q(\theta, \theta^{(t)}) = \sum_{i=1}^n \sum_{k=0}^1 P(k_i = k | x_i, \theta^{(t)}) \ln [p(x_i, k_i = k | \theta)] Q(θ,θ(t))=i=1∑nk=0∑1P(ki=k∣xi,θ(t))ln[p(xi,ki=k∣θ)]

其中 θ \theta θ是待更新参数, θ ( t ) \theta^{(t)} θ(t)是当前迭代(第 t t t轮)的参数,来自上一次估计。 P ( k i = k ∣ x i , θ ( t ) ) P(k_i = k | x_i, \theta^{(t)}) P(ki=k∣xi,θ(t))是E-Step得到的后验概率。 p ( x i , k i = k ∣ θ ) p(x_i, k_i = k | \theta) p(xi,ki=k∣θ)是联合概率。

这个式子的来源和含义一会儿再讲。

然后通过求偏导的方式更新参数:
π k = 1 n ∑ i = 1 n P ( k i = k ∣ x i , θ ( t ) ) μ k = ∑ i = 1 n P ( k i = k ∣ x i , θ ( t ) ) x i ∑ i = 1 n P ( k i = k ∣ x i , θ ( t ) ) σ k 2 = ∑ i = 1 n P ( k i = k ∣ x i , θ ( t ) ) ( x i − μ k ) 2 ∑ i = 1 n P ( k i = k ∣ x i , θ ( t ) ) \pi_k = \frac{1}{n} \sum_{i=1}^n P(k_i = k | x_i, \theta^{(t)}) \\ \mu_k = \frac{\sum_{i=1}^n P(k_i = k | x_i, \theta^{(t)}) x_i}{\sum_{i=1}^n P(k_i = k | x_i, \theta^{(t)})} \\ \sigma_k^2 = \frac{\sum_{i=1}^n P(k_i = k | x_i, \theta^{(t)}) (x_i - \mu_k)^2}{\sum_{i=1}^n P(k_i = k | x_i, \theta^{(t)})} πk=n1i=1∑nP(ki=k∣xi,θ(t))μk=∑i=1nP(ki=k∣xi,θ(t))∑i=1nP(ki=k∣xi,θ(t))xiσk2=∑i=1nP(ki=k∣xi,θ(t))∑i=1nP(ki=k∣xi,θ(t))(xi−μk)2

(4)返回步骤(2),重复E-Step,M-Step循环直到稳定。

合理性分析

问题来了,为什么这么做可以拟合出最优状态,并且能保证算法的收敛性呢?

回忆一开始最大似然估计解决不了的式子:
p ( x i ∣ θ ) = π 0 ⋅ 1 2 π σ 1 2 exp ⁡ ( − ( x i − μ 1 ) 2 2 σ 1 2 ) + π 1 ⋅ 1 2 π σ 2 2 exp ⁡ ( − ( x i − μ 2 ) 2 2 σ 2 2 ) l ( θ ) = − ln ⁡ ∏ i = 1 n p ( x i ∣ θ ) p(x_i |\theta) = \pi_0 \cdot \frac{1}{\sqrt{2\pi\sigma_1^2}} \exp\left(-\frac{(x_i - \mu_1)^2}{2\sigma_1^2}\right) + \pi_1 \cdot \frac{1}{\sqrt{2\pi\sigma_2^2}} \exp\left(-\frac{(x_i - \mu_2)^2}{2\sigma_2^2}\right) \\ l(\theta) = -\ln \prod_{i=1}^np(x_i|\theta) p(xi∣θ)=π0⋅2πσ12 1exp(−2σ12(xi−μ1)2)+π1⋅2πσ22 1exp(−2σ22(xi−μ2)2)l(θ)=−lni=1∏np(xi∣θ)

这个似然的问题在于无法直接优化,是因为求导时涉及 log(sum) 的形式,梯度不好算。于是我们引入一个任意 k \mathbf{k} k的概率分布,并使用琴生不等式变化一下:
ln ⁡ p ( x ∣ θ ) = ln ⁡ ∑ k q ( k ) ⋅ p ( x , k ∣ θ ) q ( k ) ≥ ∑ k q ( k ) ln ⁡ p ( x , k ∣ θ ) q ( k ) : = L ( q , θ ) \ln p(\mathbf{x} \mid \theta) = \ln \sum_{\mathbf{k}} q(\mathbf{k}) \cdot \frac{p(\mathbf{x}, \mathbf{k} \mid \theta)}{q(\mathbf{k})} \ge \sum_{\mathbf{k}} q(\mathbf{k}) \ln \frac{p(\mathbf{x}, \mathbf{k} \mid \theta)}{q(\mathbf{k})} :=\mathcal{L}(q, \theta) lnp(x∣θ)=lnk∑q(k)⋅q(k)p(x,k∣θ)≥k∑q(k)lnq(k)p(x,k∣θ):=L(q,θ)

于是我们得到了一个下界 L \mathcal{L} L,这个下界被称为 Evidence Lower Bound(ELBO)

现在我们来研究一下这个下界,将它分解一下:
L ( q , θ ) = ∑ k q ( k ) ln ⁡ p ( x , k ∣ θ ) q ( k ) = ∑ k q ( k ) ln ⁡ p ( k ∣ x , θ ) p ( x ∣ θ ) q ( k ) = ∑ k q ( k ) ln ⁡ p ( k ∣ x , θ ) q ( k ) + ln ⁡ p ( x ∣ θ ) ⋅ ∑ k q ( k ) \begin{aligned} \mathcal{L}(q, \theta) &= \sum_{\mathbf{k}} q(\mathbf{k}) \ln \frac{p(\mathbf{x}, \mathbf{k} \mid \theta)}{q(\mathbf{k})} = \sum_{\mathbf{k}} q(\mathbf{k}) \ln \frac{p(\mathbf{k} \mid \mathbf{x},\theta)p(\mathbf{x}\mid \theta)}{q(\mathbf{k})} \\ &=\sum_k q(\mathbf{k}) \ln \frac{p(\mathbf{k}\mid\mathbf{x}, \theta)}{q(\mathbf{k})} + \ln p(\mathbf{x}\mid\theta) \cdot \sum_k q(\mathbf{k}) \end{aligned} L(q,θ)=k∑q(k)lnq(k)p(x,k∣θ)=k∑q(k)lnq(k)p(k∣x,θ)p(x∣θ)=k∑q(k)lnq(k)p(k∣x,θ)+lnp(x∣θ)⋅k∑q(k)

注意到最后一项求和是 1 1 1(概率分布的性质),于是:
L ( q , θ ) = ∑ k q ( k ) ln ⁡ p ( k ∣ x , θ ) q ( k ) + ln ⁡ p ( x ∣ θ ) = − KL ( q ( k ) ∥ p ( k ∣ x , θ ) ) + ln ⁡ p ( x ∣ θ ) \begin{aligned} \mathcal{L}(q, \theta) &= \sum_k q(\mathbf{k}) \ln \frac{p(\mathbf{k}\mid\mathbf{x}, \theta)}{q(\mathbf{k})} + \ln p(\mathbf{x}\mid\theta) \\ &= -\text{KL}(q(\mathbf{k})\|p(\mathbf{k} \mid \mathbf{x}, \theta)) + \ln p(\mathbf{x}\mid\theta) \end{aligned} L(q,θ)=k∑q(k)lnq(k)p(k∣x,θ)+lnp(x∣θ)=−KL(q(k)∥p(k∣x,θ))+lnp(x∣θ)

这里 KL \text{KL} KL被称为KL散度,衡量你选的隐变量分布 q ( k ) q(\mathbf{k}) q(k)离真实后验 p ( k ∣ x , θ ) p(\mathbf{k}∣\mathbf{x},θ) p(k∣x,θ) 有多远。没学过也不要紧,看上面的式子就可以了。

在EM算法中,实际上干了以下两件事:

(1)设当前参数为 θ ( t ) \theta^{(t)} θ(t),E步取 q ( k ) = p ( k ∣ x , θ ( t ) ) q(\mathbf{k}) = p(\mathbf{k}|\mathbf{x}, \theta^{(t)}) q(k)=p(k∣x,θ(t)),此时 L ( q , θ ) \mathcal{L}(q, \theta) L(q,θ)对 q q q来说取到最大值,即KL散度为0。

(2)M步最大化 θ \theta θ上 L ( q , θ ) \mathcal{L}(q, \theta) L(q,θ)的值
θ ( t + 1 ) = arg ⁡ max ⁡ θ L ( q , θ ) \theta^{(t+1)} = \arg\max_{\theta}\mathcal{L}(q, \theta) θ(t+1)=argθmaxL(q,θ)

再看一下此时的 L ( q , θ ) \mathcal{L}(q, \theta) L(q,θ)
L ( q , θ ) = ∑ k p ( k ∣ x , θ ( t ) ) ln ⁡ p ( x , k ∣ θ ) p ( k ∣ x , θ ( t ) ) = ∑ k p ( k ∣ x , θ ( t ) ) ln ⁡ ( p ( x , k ∣ θ ) ) − ∑ k p ( k ∣ x , θ ( t ) ) ln ⁡ ( p ( k ∣ x , θ ( t ) ) ) = E k ∼ p ( k ∣ x , θ ( t ) ) [ ln ⁡ p ( x , k ∣ θ ) ] − E k ∼ p ( k ∣ x , θ ( t ) ) [ ln ⁡ p ( k ∣ x , θ ( t ) ) ] \begin{align*} \mathcal{L}(q, \theta) &= \sum_k p(k|\mathbf{x}, \theta^{(t)}) \ln \frac{p(\mathbf{x}, k|\theta)}{p(k|\mathbf{x}, \theta^{(t)})} \\ &= \sum_k p(k|\mathbf{x}, \theta^{(t)}) \ln(p(\mathbf{x}, k|\theta)) - \sum_k p(k|\mathbf{x}, \theta^{(t)}) \ln (p(k|\mathbf{x}, \theta^{(t)}))\\ &= \mathbb{E}{k \sim p(k|\mathbf{x}, \theta^{(t)})} [\ln p(\mathbf{x}, k|\theta)] - \mathbb{E}{k \sim p(k|\mathbf{x}, \theta^{(t)})} [\ln p(k|\mathbf{x}, \theta^{(t)})] \end{align*} L(q,θ)=k∑p(k∣x,θ(t))lnp(k∣x,θ(t))p(x,k∣θ)=k∑p(k∣x,θ(t))ln(p(x,k∣θ))−k∑p(k∣x,θ(t))ln(p(k∣x,θ(t)))=Ek∼p(k∣x,θ(t))[lnp(x,k∣θ)]−Ek∼p(k∣x,θ(t))[lnp(k∣x,θ(t))]

我们现在要优化 L ( q , θ ) \mathcal{L}(q, \theta) L(q,θ)在 θ \theta θ上的值,而后面那一项与 θ \theta θ无关,于是我们只需要优化第一项,也就是前文直接给出的优化目标 Q ( θ , θ ( t ) ) Q(\theta, \theta^{(t)}) Q(θ,θ(t))
Q ( θ , θ ( t ) ) = E k ∼ p ( k ∣ x , θ ( t ) ) [ ln ⁡ p ( x , k ∣ θ ) ] = ∑ k p ( k ∣ x , θ ( t ) ) ln ⁡ ( p ( x , k ∣ θ ) ) \begin{align*} Q(\theta, \theta^{(t)}) &= \mathbb{E}_{k \sim p(k|\mathbf{x}, \theta^{(t)})} [\ln p(\mathbf{x}, k|\theta)] \\ &= \sum_k p(k|\mathbf{x}, \theta^{(t)}) \ln(p(\mathbf{x}, k|\theta)) \end{align*} Q(θ,θ(t))=Ek∼p(k∣x,θ(t))[lnp(x,k∣θ)]=k∑p(k∣x,θ(t))ln(p(x,k∣θ))

再使用样本 x i x_i xi和隐变量 k i k_i ki的独立性,有:
p ( x , k ∣ θ ) = ∏ n i = 1 p ( x i , k i ∣ θ ) p ( k ∣ x , θ ( t ) ) = ∏ n i = 1 p ( k i ∣ x i , θ ( t ) ) p(\mathbf{x}, \mathbf{k}\mid\theta) = \underset{i=1}{\overset{n}{\prod}}p(x_i, k_i\mid\theta) \\ p(\mathbf{k}\mid \mathbf{x}, \theta^{(t)}) = \underset{i=1}{\overset{n}{\prod}}p(k_i\mid x_i, \theta^{(t)}) p(x,k∣θ)=i=1∏np(xi,ki∣θ)p(k∣x,θ(t))=i=1∏np(ki∣xi,θ(t))

于是:
Q ( θ , θ ( t ) ) = ∑ i = 1 n ∑ k = 0 1 p ( k i = k ∣ x i , θ ( t ) ) ln ⁡ [ p ( x i , k i = k ∣ θ ) ] Q(\theta, \theta^{(t)}) = \sum_{i=1}^n \sum_{k=0}^1 p(k_i = k | x_i, \theta^{(t)}) \ln [p(x_i, k_i = k | \theta)] Q(θ,θ(t))=i=1∑nk=0∑1p(ki=k∣xi,θ(t))ln[p(xi,ki=k∣θ)]

这就是最终M步需要优化的目标。

相关好文章

【机器学习】EM算法详细推导和讲解
如何通俗理解EM算法

相关推荐
九狼9 分钟前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS17 分钟前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈2 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang2 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
颜酱3 小时前
单调栈:从模板到实战
javascript·后端·算法
shengjk13 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁5 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能
恋猫de小郭6 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程