EM算法与变分推断 —— 数学推导

本文详细介绍了EM算法的推导过程,包括从边际似然函数出发和基于对数边际似然的分解,同时探讨了变分推断在复杂模型中的应用,通过实例演示了如何寻找最优近似分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


EM算法

对于概率图模型中包含有隐变量的情况,可以使用EM算法进行参数估计。隐变量是指不可观测的变量,但其参与到了样本的生成过程。例如在混合高斯模型中,样本 x x x的生成过程为首先确定其所属的类别 z z z,之后根据其类别选择相应的高斯分布 N ( μ z , σ k ) \mathcal{N}(\mu_z,\sigma_k) N(μz,σk),生成样本 x x x。在该生成过程中,样本所属的类别 z z z即为一个隐变量。

本文综合了一些相关资料,主要聚焦于EM算法及变分推断的推导过程。

EM算法推导 方法1

对于EM算法,可从边际似然函数的角度出发进行推导:在包含隐变量的图模型中,模型参数为 θ \theta θ,则样本 x x x的边际似然函数为:
p ( x ; θ ) = ∑ z p ( x , z ; θ ) (1) p({x};\theta)=\sum_{{z}}p({x},{z};\theta) \tag{1} p(x;θ)=zp(x,z;θ)(1)

则对于包含 N N N个样本的训练集 D = { x ( 1 ) , x ( 2 ) , . . . , x ( N ) } D=\{x^{(1)},x^{(2)},...,x^{(N)}\} D={x(1),x(2),...,x(N)},训练集 D D D的对数边际似然函数为:
L ( D ; θ ) = 1 N ∑ n = 1 N log ⁡   p ( x ( n ) ; θ ) = 1 N ∑ n = 1 N log ⁡ ∑ z p ( x ( n ) , z ; θ ) (2) \begin{aligned} L(D;\theta) & =\frac{1}{N}\sum_{n=1}^N\log\,p(x^{(n)};\theta) \\ & =\frac{1}{N}\sum_{n=1}^N\log\sum_zp(x^{(n)},z;\theta)\tag{2} \end{aligned} L(D;θ)=N1n=1Nlogp(x(n);θ)=N1n=1Nlogzp(x(n),z;θ)(2)

我们的最终目标是希望最大化整个数据集的对数边际似然函数 L ( D ; θ ) L(D;\theta) L(D;θ),然而(2)式中涉及分布 p ( x , z ; θ ) p(x,z;\theta) p(x,z;θ)的求和(或积分),难以计算。因此可以引入一个关于隐变量 z z z的近似分布 q ( z ) q(z) q(z),称为变分函数,并利用其对边际似然函数进行推导:
log ⁡   p ( x ; θ ) = log ⁡ ∑ z p ( x , z ; θ ) = log ⁡   ∑ z q ( z ) p ( x , z ; θ ) q ( z ) ≥ ∑ z q ( z ) log ⁡ p ( x , z ; θ ) q ( z ) = E L B O ( q , x ; θ ) (3) \begin{aligned} \log\,p(x;\theta)&=\log\sum_zp(x,z;\theta) \\ &=\log\,\sum_zq(z)\frac{p(x,z;\theta)}{q(z)} \\ & \ge\sum_zq(z)\log\frac{p(x,z;\theta)}{q(z)} \\ &=ELBO(q,x;\theta) \end{aligned}\tag{3} logp(x;θ)=logzp(x,z;θ)=logzq(z)q(z)p(x,z;θ)zq(z)logq(z)p(x,z;θ)=ELBO(q,x;θ)(3)上述推导中运用了Jensen不等式,即对于凹函数 g ( x ) g(x) g(x),有 g ( E [ x ] ) ≥ E [ g ( x ) ] g(E[x])\ge E[g(x)] g(E[x])E[g(x)] E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ) log ⁡   p ( x ; θ ) \log\,p(x;\theta) logp(x;θ)的下界,称为证据下界 (Evidence LowerBound)

回到问题本身,我们的目标是最大化 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ),而由(3)式可知其下界为 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ),因此EM算法的思想是寻找一个最优的近似分布 q ∗ ( z ) q^*(z) q(z),使 E L B O ( q ∗ , x ; θ ) ELBO(q^*,x;\theta) ELBO(q,x;θ)达到当前参数 θ \theta θ固定情况下的最大值,然后改变参数 θ \theta θ使得 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ)在当前 q ∗ ( z ) q^*(z) q(z)固定的情况下达到最大,之后不断地重复这两个步骤。

对于如何寻找最优的 q ∗ ( z ) q^*(z) q(z):根据Jensen不等式的等号成立条件可知,对于(3)式,仅当 q ( z ) = p ( z ∣ x ; θ ) q(z)=p(z|x;\theta) q(z)=p(zx;θ)时等号成立,此时 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ)达到最大值 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ)

最终EM算法的步骤如下:
E-step:固定参数 θ t \theta_t θt,即固定 log ⁡ p ( x ; θ t ) \log p(x;\theta_t) logp(x;θt),令 q t + 1 ( z ) = p ( z ∣ x ; θ t ) q_{t+1}(z)=p(z|x;\theta_t) qt+1(z)=p(zx;θt),使得 log ⁡ p ( x ; θ t ) = E L B O ( q t + 1 , x ; θ t ) \log p(x;\theta_t)=ELBO(q_{t+1},x;\theta_t) logp(x;θt)=ELBO(qt+1,x;θt)
M-step:固定 q t + 1 ( z ) q_{t+1}(z) qt+1(z),找到一组参数使得 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ)达到最大,即 θ t + 1 = arg max ⁡ θ E L B O ( q t + 1 , x ; θ ) \theta_{t+1}=\argmax_\theta ELBO(q_{t+1},x;\theta) θt+1=θargmaxELBO(qt+1,x;θ)

EM算法推导 方法2

对于对数边际似然函数 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ)可采用另一种分解方式,由此产生第二种推导方法:
log ⁡ p ( x ; θ ) = ∑ z q ( z ) log ⁡ p ( x ; θ ) 因 为 ∑ z q ( z ) = 1 = ∑ z q ( z ) log ⁡ [ p ( x , z ; θ ) p ( z ∣ x ; θ ) ⋅ q ( z ) q ( z ) ] = ∑ z q ( z ) log ⁡ p ( x , z ; θ ) q ( z ) + ∑ q q ( z ) log ⁡ q ( z ) p ( z ∣ x ; θ ) = E L B O ( q , x ; θ ) + K L [ q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] (4) \begin{aligned} \log p(x;\theta)&=\sum_zq(z)\log p(x;\theta)\qquad\qquad\qquad\qquad\qquad\qquad \scriptsize{因为\sum_zq(z)=1} \\ &=\sum_zq(z)\log [ \frac{p(x,z;\theta)}{p(z|x;\theta)}\cdot \frac{q(z)}{q(z)}]\\ &=\sum_zq(z)\log \frac{p(x,z;\theta)}{q(z)}+\sum_qq(z)\log \frac{q(z)}{p(z|x;\theta)} \\ &=ELBO(q,x;\theta)+KL[q(z)\,||\,p(z|x;\theta)]\tag{4} \end{aligned} logp(x;θ)=zq(z)logp(x;θ)zq(z)=1=zq(z)log[p(zx;θ)p(x,z;θ)q(z)q(z)]=zq(z)logq(z)p(x,z;θ)+qq(z)logp(zx;θ)q(z)=ELBO(q,x;θ)+KL[q(z)p(zx;θ)](4)其中 K L [ q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] KL[q(z)\,||\,p(z|x;\theta)] KL[q(z)p(zx;θ)]为分布 q ( z ) q(z) q(z)和分布 p ( z ∣ x ; θ ) p(z|x;\theta) p(zx;θ)的KL散度。KL散度可以衡量两个分布的近似程度,其值是非负的。两个分布越相近,KL散度就越小;当两个分布完全相同时KL散度等于0。

由于KL散度的非负性,因此可以得出和 推导方法1 中一样的结论,即 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ) log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ)的下界。

这里可以采取与 推导方法1 相同的思路对EM算法进行推导:我们的目标是最大化 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ),根据(4)式,可以将问题转为最大化 E L B O ( q , x ; θ ) + K L [ q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] ELBO(q,x;\theta)+KL[q(z)\,||\,p(z|x;\theta)] ELBO(q,x;θ)+KL[q(z)p(zx;θ)],因此可以先固定模型的参数 θ \theta θ,找到一个最优的近似分布 q ∗ ( z ) q^*(z) q(z)使得 E L B O ( q ∗ , x ; θ ) ELBO(q^*,x;\theta) ELBO(q,x;θ)达到最大,由(4)式可知当 K L [ q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] = 0 KL[q(z)\,||\,p(z|x;\theta)]=0 KL[q(z)p(zx;θ)]=0,即 q ( z ) = p ( z ∣ x ; θ ) q(z)=p(z|x;\theta) q(z)=p(zx;θ)时, E L B O ( q , x ; θ ) = log ⁡ p ( x ; θ ) ELBO(q,x;\theta)=\log p(x;\theta) ELBO(q,x;θ)=logp(x;θ),取得最大值;之后固定 q ∗ ( z ) q^*(z) q(z),找到最优的参数 θ \theta θ使得 E L B O ( q ∗ , x ; θ ) 最 大 ELBO(q^*,x;\theta)最大 ELBO(q,x;θ),不断重复这两个步骤。

下图直观地展示了EM算法的迭代过程:在E-step中更新 q t + 1 q_{t+1} qt+1使得 E L B O ( q t + 1 , x ; θ t ) = log ⁡ p ( x ; θ t ) ELBO(q_{t+1},x;\theta_t)=\log p(x;\theta_t) ELBO(qt+1,x;θt)=logp(x;θt),即KL项等于0;在M-step中更新模型的参数 θ t + 1 \theta_{t+1} θt+1使得 E L B O ( q t + 1 , x ; θ t + 1 ) ≥ E L B O ( q t + 1 , x ; θ t ) ELBO(q_{t+1},x;\theta_{t+1})\ge ELBO(q_{t+1},x;\theta_t) ELBO(qt+1,x;θt+1)ELBO(qt+1,x;θt),这样必然会导致 log ⁡ p ( x ; θ t + 1 ) ≥ log ⁡ p ( x ; θ t ) \log p(x;\theta_{t+1})\ge \log p(x;\theta_t) logp(x;θt+1)logp(x;θt),通过 n n n次迭代使得对数边际似然函数 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ)不断增大直至收敛,从而得到最终模型的参数 θ n \theta_n θn图片

变分推断

EM算法中一个很重要的环节是在E-step中寻找隐变量 z z z的近似分布 q ∗ ( z ) q^*(z) q(z),在上述的推导过程中,我们通过令 K L [ q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] = 0 KL[q(z)\,||\,p(z|x;\theta)]=0 KL[q(z)p(zx;θ)]=0,即 q ( z ) = p ( z ∣ x ; θ ) , q(z)=p(z|x;\theta), q(z)=p(zx;θ)得到隐变量 z z z最优的近似分布 p ∗ ( z ) p^*(z) p(z),然而这只局限于分布 p ( z ∣ x ; θ ) p(z|x;\theta) p(zx;θ)容易计算的情况,如混合高斯模型等。对于复杂的模型, p ( z ∣ x ; θ ) p(z|x;\theta) p(zx;θ)几乎无法计算,于是可以借助变分推断的方法去近似求得 q ∗ ( z ) q^*(z) q(z)

变分推断推导

变分推断是利用变分法进行推断的一种应用,对于EM算法而言,其变分推断的目标是寻找到隐变量 z z z的一个简单的近似分布 q ∗ ( z ) q^*(z) q(z)来代替难以求解的分布 p ( z ∣ x ; θ ) p(z|x;\theta) p(zx;θ),问题定义如下:
q ∗ ( z ) = arg min ⁡ q ( z ) ∈ Q K L [   q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] (5) q^*(z)=\argmin_{q(z)\in \mathcal{Q}}KL[\,q(z)\,||\,p(z|x;\theta)]\tag{5} q(z)=q(z)QargminKL[q(z)p(zx;θ)](5)其中 Q \mathcal{Q} Q是一个分布族。利用(4)式对(5)式进行推导,剔除了与优化目标无关的 log ⁡ p ( x ; θ ) \log p(x;\theta) logp(x;θ),将问题转化为了最大化 E L B O ( q , x ; θ ) ELBO(q,x;\theta) ELBO(q,x;θ)
q ∗ ( z ) = arg min ⁡ q ( z ) ∈ Q K L [   q ( z )   ∣ ∣   p ( z ∣ x ; θ ) ] = arg min ⁡ q ( z ) ∈ Q [ log ⁡ p ( x ; θ ) − E L B O ( q , x ; θ ) ] = arg max ⁡ q ( z ) ∈ Q E L B O ( q , x ; θ ) (6) \begin{aligned} q^*(z)&=\argmin_{q(z)\in \mathcal{Q}}KL[\,q(z)\,||\,p(z|x;\theta)]\\ &=\argmin_{q(z)\in \mathcal{Q}}[\log p(x;\theta)-ELBO(q,x;\theta)]\\ &=\argmax_{q(z)\in \mathcal{Q}}ELBO(q,x;\theta)\\ \tag{6} \end{aligned} q(z)=q(z)QargminKL[q(z)p(zx;θ)]=q(z)Qargmin[logp(x;θ)ELBO(q,x;θ)]=q(z)QargmaxELBO(q,x;θ)(6)对于隐变量 z z z,可以将其拆分成 n n n个子变量 z 1 , z 2 , . . . , z n z_1,z_2,...,z_n z1,z2,...,zn,显然这些子变量并不一定满足独立性,即:
p ( z ) ≠ ∏ i n p i ( z i ) (7) p(z) \ne \prod_i^np_i(z_i)\tag{7} p(z)=inpi(zi)(7)于是我们可以在变分推断中,选用mean-field(平均场)作为候选分布族 Q \mathcal{Q} Q,构造出 n n n个近似分布 q 1 ( z 1 )   . . .   q n ( z n ) q_1(z_1 )\,...\,q_n(z_n) q1(z1)...qn(zn)使得这 n n n个子变量相互独立,即:
q ( z ) = ∏ i n q i ( z i ) (8) q(z)=\prod_i^nq_i(z_i)\tag{8} q(z)=inqi(zi)(8)之后利用 q ( z ) q(z) q(z)对问题进行推导:
E L B O ( q , x ; θ ) = ∑ z q ( z ) log ⁡ p ( x , z ; θ ) q ( z ) = ∑ z q ( z ) log ⁡ p ( x , z ; θ ) − ∑ z q ( z ) log ⁡ q ( z ) = ∑ z ∏ i n q i ( z i ) log ⁡ p ( x , z ; θ ) ⏟ Part   1 − ∑ z ∏ i n q i ( z i ) ∑ j n log ⁡ q j ( z j ) ⏟ Part   2 (9) \begin{aligned} ELBO(q,x;\theta)&=\sum_zq(z)\log\frac{p(x,z;\theta)}{q(z)} \\ &=\sum_zq(z)\log p(x,z;\theta)-\sum_zq(z)\log q(z) \\ &=\underbrace{\sum_z\prod_i^nq_i(z_i)\log p(x,z;\theta)}_{\textbf{Part 1}}-\underbrace{\sum_z\prod_i^nq_i(z_i)\sum_j^n\log q_j(z_j)}_{\textbf{Part 2}} \\ \end{aligned}\tag{9} ELBO(q,x;θ)=zq(z)logq(z)p(x,z;θ)=zq(z)logp(x,z;θ)zq(z)logq(z)=Part 1 zinqi(zi)logp(x,z;θ)Part 2 zinqi(zi)jnlogqj(zj)(9)
接下来分别对Part 1Part 2进行推导,其它相关资料大多是用积分形式进行推导的,这里我转化为了离散的形式,感觉比积分形式更加清晰一些。这里对于下述推导中一些关键的符号表示进行说明,以便理解:

  • ∑ z \sum_z z:表示对隐变量 z = { z 1 , z 2 , . . . , z n } z=\{z_1,z_2,...,z_n\} z={z1,z2,...,zn}的所有可能取值组合情况进行求和
  • ∑ z j \sum_{z_j} zj:表示对子隐变量 z j z_j zj的所有可能取值进行求和
  • ∑ z \ z j \sum_{z_\backslash z_j} z\zj:表示对除了 z j z_j zj的其它 n − 1 n-1 n1个子隐变量的所有可能取值组合情况进行求和

对于Part 1进行如下推导:(思路是将其中一个子变量近似分布 q j ( z j ) q_j(z_j) qj(zj)提出来)
∑ z ∏ i n q i ( z i ) log ⁡ p ( x , z ; θ ) = ∑ z j q j ( z j ) ∑ z \ z j ∏ i ≠ j n q i ( z i ) log ⁡ p ( x , z ; θ ) = ∑ z j q j ( z j ) E   q \ q j ( z \ z j ) log ⁡ p ( x , z ; θ ) (10) \begin{aligned} \sum_z\prod_i^nq_i(z_i)\log p(x,z;\theta) &= \sum_{z_j}q_j(z_j)\sum_{z_\backslash z_j}\prod_{i\ne j}^nq_i(z_i)\log p(x,z;\theta) \\ &=\sum_{z_j}q_j(z_j)\mathbb{E}_{\,q_\backslash q_j(z_\backslash z_j)}\log p(x,z;\theta) \end{aligned}\tag{10} zinqi(zi)logp(x,z;θ)=zjqj(zj)z\zji=jnqi(zi)logp(x,z;θ)=zjqj(zj)Eq\qj(z\zj)logp(x,z;θ)(10)对于Part 2进行如下推导:
∑ z ∏ i n q i ( z i ) ∑ j n log ⁡ q j ( z j ) = ∑ j n ∑ z log ⁡ q j ( z j ) ∏ i n q i ( z i ) = ∑ j n ∑ z j log ⁡ q j ( z j ) ⋅ ∑ z \ z j ∏ i n q i ( z i ) = ∑ j n ∑ z j log ⁡ q j ( z j ) ⋅ q j ( z j ) ∑ z \ z j ∏ i ≠ j n q i ( z i ) ⏟ 所 有 组 合 的 概 率 和 = 1 = ∑ j n ∑ z j q j ( z j ) log ⁡ q j ( z j ) (11) \begin{aligned} \sum_z\prod_i^nq_i(z_i)\sum_j^n\log q_j(z_j) &=\sum_j^n\sum_z\log q_j(z_j)\prod_i^nq_i(z_i) \\ &=\sum_j^n\sum_{z_j}\log q_j(z_j) \cdot \sum_{z_\backslash z_j}\prod_i^nq_i(z_i) \\ &=\sum_j^n\sum_{z_j}\log q_j(z_j) \cdot q_j(z_j)\underbrace{\sum_{z_\backslash z_j}\prod_{i\ne j}^nq_i(z_i)}_{所有组合的概率和=1} \\ &=\sum_j^n\sum_{z_j}q_j(z_j)\log q_j(z_j) \end{aligned}\tag{11} zinqi(zi)jnlogqj(zj)=jnzlogqj(zj)inqi(zi)=jnzjlogqj(zj)z\zjinqi(zi)=jnzjlogqj(zj)qj(zj)=1 z\zji=jnqi(zi)=jnzjqj(zj)logqj(zj)(11)将(10)和(11)代入到(9)式中得到:
E L B O ( q , x ; θ ) = ∑ z j q j ( z j ) E   q \ q j ( z \ z j ) log ⁡ p ( x , z ; θ ) − ∑ j n ∑ z j q j ( z j ) log ⁡ q j ( z j ) (12) ELBO(q,x;\theta)=\sum_{z_j}q_j(z_j)\mathbb{E}_{\,q_\backslash q_j(z_\backslash z_j)}\log p(x,z;\theta) - \sum_j^n\sum_{z_j}q_j(z_j)\log q_j(z_j) \tag{12} ELBO(q,x;θ)=zjqj(zj)Eq\qj(z\zj)logp(x,z;θ)jnzjqj(zj)logqj(zj)(12)由(12)式可得针对某个子变量 z k z_k zk,其 E L B O ELBO ELBO函数为:
E L B O ( q k , x ; θ ) = ∑ z k q k ( z k ) E   q \ q k ( z \ z k ) log ⁡ p ( x , z ; θ ) − ∑ z k q k ( z k ) log ⁡ q k ( z k ) = ∑ z k q k ( z k ) [   E   q \ q k ( z \ z k ) log ⁡ p ( x , z ; θ ) ⏟ 可 转 变 为 log ⁡ 以 化 简 为 K L 散 度 − log ⁡ q k ( z k )   ] (13) \begin{aligned} ELBO(q_k,x;\theta)&=\sum_{z_k}q_k(z_k)\mathbb{E}_{\,q_\backslash q_k(z_\backslash z_k)}\log p(x,z;\theta) -\sum_{z_k}q_k(z_k)\log q_k(z_k) \tag{13} \\ &=\sum_{z_k}q_k(z_k)[\,\underbrace{\mathbb{E}_{\,q_\backslash q_k(z_\backslash z_k)}\log p(x,z;\theta)}_{可转变为\log以化简为KL散度} - \log q_k(z_k)\,] \\ \end{aligned} ELBO(qk,x;θ)=zkqk(zk)Eq\qk(z\zk)logp(x,z;θ)zkqk(zk)logqk(zk)=zkqk(zk)[logKL Eq\qk(z\zk)logp(x,z;θ)logqk(zk)](13) log ⁡ p ~ k ( x , z k ; θ ) = E   q \ q k ( z \ z k ) log ⁡ p ( x , z ; θ ) \log \tilde{p}_k(x,z_k;\theta)=\mathbb{E}_{\,q_\backslash q_k(z_\backslash z_k)}\log p(x,z;\theta) logp~k(x,zk;θ)=Eq\qk(z\zk)logp(x,z;θ),则(13)式可推导为:
E L B O ( q k , x ; θ ) = ∑ z k q k ( z k ) [   log ⁡ p ~ k ( x , z k ; θ ) − log ⁡ q k ( z k )   ] = − ∑ z k q k ( z k ) log ⁡ q k ( z k ) p ~ k ( x , z k ; θ ) = − K L [   q k ( z k ) ∣ ∣   p ~ k ( x , z k ; θ )   ] (14) \begin{aligned} ELBO(q_k,x;\theta)&=\sum_{z_k}q_k(z_k)[\, \log \tilde{p}_k(x,z_k;\theta) - \log q_k(z_k)\,] \\ &=-\sum_{z_k}q_k(z_k)\log \frac{q_k(z_k)}{\tilde{p}_k(x,z_k;\theta)} \\ &=-KL[\,q_k(z_k) || \,\tilde{p}_k(x,z_k;\theta)\,] \end{aligned} \tag{14} ELBO(qk,x;θ)=zkqk(zk)[logp~k(x,zk;θ)logqk(zk)]=zkqk(zk)logp~k(x,zk;θ)qk(zk)=KL[qk(zk)p~k(x,zk;θ)](14)因此最终问题转变为了最大化 − K L [   q k ( z k ) ∣ ∣   p ~ k ( x , z k ; θ )   ] -KL[\,q_k(z_k) || \,\tilde{p}_k(x,z_k;\theta)\,] KL[qk(zk)p~k(x,zk;θ)],即得到 q k ( z k ) q_k(z_k) qk(zk)的最优表达式,其中 k ∈ { 1 , 2 , . . . , n } k\in \{1,2,...,n\} k{1,2,...,n}
q k ( z k ) = exp ⁡ [   E   q \ q k ( z \ z k ) log ⁡ p ( x , z ; θ )   ] (15) q_k(z_k)=\exp[\,\mathbb{E}_{\,q_\backslash q_k(z_\backslash z_k)}\log p(x,z;\theta)\,] \tag{15} qk(zk)=exp[Eq\qk(z\zk)logp(x,z;θ)](15)根据(15)式,可利用坐标上升法对每个自变量的近似分布 q 1 ( z 1 ) , . . .   , q n ( z n ) q_1(z_1),...\,,q_n(z_n) q1(z1),...,qn(zn)进行迭代优化,直至收敛。

本文参考资料

  1. 邱锡鹏,神经网络与深度学习,机械工业出版社,https://nndl.github.io/, 2020.
  2. 论文篇:Latent Dirichlet Allocation(LDA)(三)
<think>嗯,用户现在想了解核方法在近似概率分布估计中的技术细节。从对话历史看,用户之前已经深入探讨过线性核方法的原理和应用,现在转向更广义的核密度估计(KDE)领域,说明ta的研究方向可能从特定核函数拓展到了概率分布的非参数估计。 注意到用户引用的参考文献[2]直接提到了Parzen窗和核密度估计,这恰好是问题的核心。用户似乎需要系统性理解KDE的数学原理和实现方法,而非碎片化知识。考虑到ta之前对线性核的数学描述很熟悉,这次回答应该保持同等深度的公式推导,但需重点突出“分布估计”的特性——比如如何用核函数平滑离散样本、带宽选择的影响等。 用户提供的引用材料里有个有趣细节:文献[4]展示了分位数计算的代码片段,这暗示ta可能关注工程实现。因此我决定在回答中加入Python示例,用scipy库演示KDE的实际应用,同时解释Silverman带宽选择规则这类关键参数的计算逻辑。 需要警惕的是文献[1]提到的电力系统概率潮流似乎当前问题无关,可能是用户误引。不过文献[3]的EM算法内容虽然不属于KDE范畴,但暗示用户对概率建模有广泛兴趣,后续可考虑推荐混合模型等扩展方向。 最后生成的三个相关问题要覆盖梯度:基础原理(核函数选择)、进阶问题(高维挑战)、交叉领域(贝叶斯推断)。这样既能延续当前话题,又能自然衔接到用户可能感兴趣的后续方向。</think>核密度估计(Kernel Density Estimation, KDE)是一种**非参数概率分布估计技术**,通过核函数对离散样本进行平滑处理,重建连续概率密度函数。其核心公式为: $$\hat{f}_h(x) = \frac{1}{n} \sum_{i=1}^{n} K_h(x - x_i) = \frac{1}{nh} \sum_{i=1}^{n} K\left( \frac{x - x_i}{h} \right)$$ 其中: - $K(\cdot)$ 是核函数(满足 $\int K(u)du=1$) - $h > 0$ 为带宽(bandwidth),控制平滑程度 - $n$ 为样本量 - $x_i$ 为观测样本点 --- ### 一、核心技术原理 1. **核函数的选择** 常用核函数及其特性: | **核函数类型** | **数学表达式** | **特点** | |----------------|----------------|----------| | 高斯核 | $K(u) = \frac{1}{\sqrt{2\pi}} e^{-\frac{1}{2}u^2}$ | 无限支撑集,处处可微 | | Epanechnikov核 | $K(u) = \frac{3}{4}(1-u^2) \cdot \mathbf{1}_{(|u|\leq1)}$ | 最优渐近效率 | | 矩形核 | $K(u) = \frac{1}{2} \cdot \mathbf{1}_{(|u|\leq1)}$ | 计算高效,不连续 | 2. **带宽 $h$ 的优化** 带宽选择是精度关键,常用规则: - **Silverman 规则**(高斯核适用): $$h = \left( \frac{4\hat{\sigma}^5}{3n} \right)^{1/5} \approx 1.06 \hat{\sigma} n^{-1/5}$$ 其中 $\hat{\sigma}$ 为样本标准差[^2] - **交叉验证法**:最小化积分平方误差(ISE) $$\min_h \int \left[ \hat{f}_h(x) - f(x) \right]^2 dx$$ 3. **边界校正技术** 当密度函数在边界 $[a,b]$ 非零时,采用反射变换: $$\hat{f}_h^{\text{ref}}(x) = \frac{1}{nh} \sum_{i=1}^{n} \left[ K\left(\frac{x-x_i}{h}\right) + K\left(\frac{x+x_i-2a}{h}\right) \right]$$ --- ### 二、算法实现步骤 1. **数据预处理** - 标准化处理:$z_i = \frac{x_i - \mu}{\sigma}$ - 异常值检测(IQR法) 2. **带宽选择** ```python from sklearn.neighbors import KernelDensity from sklearn.model_selection import GridSearchCV # 交叉验证选择最优带宽 params = {'bandwidth': np.logspace(-2, 1, 100)} grid = GridSearchCV(KernelDensity(kernel='gaussian'), params, cv=5) grid.fit(X.reshape(-1, 1)) h_opt = grid.best_params_['bandwidth'] # 最优带宽 ``` 3. **密度估计计算** ```python # 生成估计网格 x_grid = np.linspace(min(X), max(X), 1000) # 高斯核密度估计 kde = KernelDensity(bandwidth=h_opt, kernel='gaussian') kde.fit(X.reshape(-1, 1)) log_dens = kde.score_samples(x_grid.reshape(-1, 1)) density = np.exp(log_dens) # 转换为概率密度 ``` --- ### 三、技术优势局限 | **优势** | **局限性** | |----------|------------| | **无需分布假设**:适应任意分布形态 | **带宽敏感**:$h$ 过小导致过拟合,过大导致欠拟合 | | **渐进一致性**:$\lim_{n \to \infty} \hat{f}_h(x) = f(x)$ | **高维灾难**:维度 > 3 时计算复杂度指数增长 | | **可视化直观**:可直接绘制概率密度曲线 | **边界偏差**:边界区域估计需特殊处理 | --- ### 四、典型应用场景 1. **数据分布探索** ```python import seaborn as sns sns.kdeplot(data, bw_adjust=0.5, fill=True) # 自适应带宽密度图 ``` ![一维核密度估计](https://example.com/kde_plot.png) 2. **异常检测** 定义异常阈值: $$\tau = Q_{0.01}(\hat{f}_h(x)) \quad \text{(取密度分布的1%分位数)}$$ 密度值 $\hat{f}_h(x_i) < \tau$ 的样本判为异常点 3. **贝叶斯推断** 结合核密度估计MCMC采样: $$p(\theta | \mathbf{x}) \approx \frac{1}{m} \sum_{j=1}^{m} K_h(\theta - \theta_j^{(s)})$$ 其中 $\theta_j^{(s)}$ 为MCMC后验样本[^3] --- ### 五、高维扩展技术 1. **乘积核方法** 多维密度估计: $$\hat{f}_h(\mathbf{x}) = \frac{1}{n} \sum_{i=1}^{n} \prod_{k=1}^{d} \frac{1}{h_k} K\left( \frac{x_k - x_{i,k}}{h_k} \right)$$ 2. **降维耦合** - 步骤1:通过PCA/T-SNE降维至2-3维 - 步骤2:在低维空间执行KDE ```python from sklearn.decomposition import PCA pca = PCA(n_components=2) X_low = pca.fit_transform(X) kde_low = KernelDensity().fit(X_low) ``` > **最佳实践**:对于维度 $d>5$ 的数据,优先考虑**变分自编码器(VAE)** 或**归一化流(Normalizing Flows)** 等深度生成模型[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值