1 about DeltaNet
https://zhuanlan.zhihu.com/p/1974403522306020939
https://zhuanlan.zhihu.com/p/1974403522306020939
本文将深入探讨操作系统内核如何管理 CPU 资源。从调度衡量指标出发,对比抢占式与非抢占式调度,并深度剖析 FCFS、SJF、RR 以及现代 OS 广泛采用的多级反馈队列(MLFQ)算法。
在处理含有隐变量(Latent Variable)的参数估计时,我们无法直接观测到数据的来源标签。例如,我们只有一堆身高数据,却不知道哪些来自男生,哪些来自女生。
假设我们有 $n$ 个独立同分布的身高观测值 $X = {x_1, x_2, \dots, x_n}$。
对于每一个身高 $x_i$,都对应一个隐藏变量 $z_i \in {男, 女}$。
我们需要估计的参数为 $\theta = {\pi_k, \mu_k, \sigma_k}$(其中 $k \in {男, 女}$,$\pi_k$ 是性别比例)。观测数据的总对数似然函数为:
难点:求解每个人是男/女的概率需要知道$\theta$,但是求解$\theta$又需要知道每个样本是男还是女。这是一个鸡生蛋蛋生鸡的问题。
为了解决耦合,我们为每个数据点 $x_i$ 引入一个关于性别的分布 $q_i(z_i)$。$q_i(男)$ 表示第 $i$ 个同学是男生的概率。
利用 $\ln$ 函数的凹性,我们可以将对数符号“推进”求和号内部:
我们将右侧这项记为 ELBO (Evidence Lower Bound)。
在 E-step 中,我们要固定当前猜测的男女生身高参数 $\theta^{(t)}$,调整 $q_i(z_i)$ 使下界达到最大。
根据 Jensen 不等式,等号成立(即下界触碰到原函数)的条件是:
由于 $\sum_{z_i} q_i(z_i) = 1$,我们可以推导出:
固定刚才算出的“性别概率” $q_i^{(t+1)}$,我们更新 $\theta$:
该式是可以直接求解出来的(该式与原ELBO差了一个常数项,直接舍掉)
以更新男生平均身高 $\mu_{男}$ 为例,对上式求导令其为 0,你会得到:
物理含义:这不再是简单的平均值,而是加权平均。每个人的身高 $x_i$ 根据他是男生的可能性 $q_i(男)$ 为贡献权重,重新计算出男生的均值。
为什么这样做一定会收敛?
最终链条:
这就证明了:只要我们不断重复这两步,观测数据的对数似然 $L(\theta)$ 就会像爬楼梯一样单调不减,直到收敛到局部极大值。
一个下方的函数曲线在向上方的函数曲线的极值点逼近(可以找一些EM算法介绍的博客看看)
变分自编码器(VAE)与期望极大算法(EM)在统计机器学习中有着极其深刻的血缘关系。从本质上讲,VAE 可以被视作一种“深度化、参数化且随机化”的变分 EM 算法。
为了理清两者的关系,我们需要从潜变量模型的对数似然分解出发,逐步推导。
假设我们有观测数据 $x$ 和潜变量 $z$。我们的目标是最大化对数似然 $\log p_\theta(x)$。
根据全概率公式:
引入一个关于 $z$ 的任意分布 $q(z)$,根据 Jensen 不等式或 KL 散度的性质,我们可以得到:
这个下界被称为 ELBO (Evidence Lower Bound)。为了更细致地观察,我们进行如下恒等变形:
结论 1:最大化 $\log p\theta(x)$ 等价于最大化 $ELBO$,同时最小化 $q(z)$ 与真实后验 $p\theta(z|x)$ 之间的 KL 散度。
EM 算法解决的是:当 $p_\theta(z|x)$ 比较简单(有解析解)时,如何迭代优化 $\theta$。
EM 算法在 $ELBO(q, \theta)$ 上执行坐标上升:
E-Step(期望步):
固定参数 $\theta{old}$,寻找最优的 $q(z)$ 来收紧下界。
为了使 $ELBO$ 最大,由于 $\log p\theta(x)$ 是常数,必须令 $KL(q(z) || p_\theta(z|x)) = 0$。
因此,E-step 的最优解是:
(即:直接使用当前的后验分布作为 $q$)
M-Step(极大步):
固定 $q^{new}(z)$,寻找最优的 $\theta$ 来提升下界:
这通常通过对 $\theta$ 求导并令其为 0 来实现。
在深度学习场景下,传统的 EM 算法遇到了两个瓶颈:
A. 摊销推断 (Amortized Inference)
VAE 不再为每一个样本 $xi$ 单独优化一个 $q_i(z)$(如 EM 所做的),而是引入一个由参数 $\phi$ 化的神经网络——**生成器/编码器 $q\phi(z|x)$**。这个网络学习一个映射,输入 $x$ 直接输出 $z$ 的分布参数。
B. 联合优化
VAE 不再分步交替优化 $q$ 和 $\theta$,而是将两者放在同一个目标函数 $ELBO$ 下,使用 SGD 同时优化。
在 VAE 中,我们将 $ELBO$ 重新展开为易于神经网络处理的形式:
利用贝叶斯公式 $p\theta(x, z) = p\theta(x|z)p(z)$,进一步分解:
| 特性 | EM 算法 | VAE (变分自编码器) | ||
|---|---|---|---|---|
| 优化目标 | 似然函数的坐标上升 | 似然函数下界(ELBO)的联合上升 | ||
| 后验分布 $q(z)$ | 每次迭代精确计算 $p(z\ | x)$ | 用神经网络 $q_\phi(z\ | x)$ 近似拟合 |
| 参数更新 | 交替更新 $q$ 和 $\theta$ (E-step & M-step) | 使用 SGD 同时更新 $\phi$ 和 $\theta$ | ||
| 适用范围 | 指数族分布、简单潜变量模型 | 复杂非线性分布、大规模数据 | ||
| 处理技巧 | 解析求导 | 重参数化技巧 (Reparameterization Trick) |
一句话总结:VAE 是利用神经网络来近似实现 EM 算法中 E-step 的变分推断过程,并将其转化为端到端的梯度优化问题。
你的观察非常敏锐且完全正确。这看似只是一个条件符号 的差别,实则揭示了从传统统计机器学习到深度学习推断范式的重大演进。
我们可以从以下三个维度来理解这个区别:
这种转变主要是为了应对大数据和泛化能力:
| 维度 | EM $ q_{\phi}(z) $ | VAE $ q_{\phi}(z \vert x) $ |
|---|---|---|
| 训练 | 与数据点 $ N $ 成正比($ N $ 越大,要优化的 $ q_{\phi}(z) $ 越多) | 与数据无关(只优化固定的神经网络参数 $ \phi $) |
| 计算复杂度 | 高(需要对每个数据点进行 E-step) | 低(直接用 Encoder 前向传播,瞬间给出结果) |
| 模型表达力 | 简单,通常假设 $ q_{\phi}(z) $ 是简单的数分布(如高斯) | 很强,可以拟合很复杂的后验分布 |
其实,VAE 里的 $ q_{\phi}(z \vert x) $ 也可以看作是一个极其复杂的条件分布,只是它没有用函数表达,而是用参数化的方式学到的。
在 VAE 的损失函数推导中:
这里的 $ q_{\phi}(z \vert x) $ 承担了 EM 中 E-step 的全部功能,但它通过“梯度下降”同时优化所有数据的推断精度,而不是像 EM 那样逐个数据点“点对点”对齐。
二者在数学公式本身上的区别其实就是引入的常数变易的方法不同
在标准 EM 中,对于每一个观测样本 $x_i$,我们都会引入一个与之对应的独立分布 $q_i(z)$。
对数似然分解式:
VAE 不再为每个样本维护一个 $qi(z)$,而是引入一个由全局参数 $\phi$ 控制的函数(神经网络) $q\phi(z|x)$。
对数似然分解式:
| 特性 | EM 算法 (EM) | 变分自编码器 (VAE) |
|---|---|---|
| 近似后验符号 | $q_i(z)$ | $q_\phi(z \mid x)$ |
| 参数性质 | 逐样本参数:每个 $x_i$ 对应一套参数 | 摊销参数 (Amortized):所有 $x_i$ 共享一套 $\phi$ |
| 对 $x$ 的依赖 | 隐式依赖:通过下标 $i$ 区分 | 显式依赖:$x$ 是神经网络的输入 |
| 变量维数 | 参数量随数据量 $N$ 线性增长 | 参数量固定(神经网络的大小),与 $N$ 无关 |
一句话总结数学上的区别:
EM 算法是在 $N$ 个独立的分布空间里分别寻找 $N$ 个最优的 $qi$ 点;而 VAE 是在寻找一个最优的函数映射 $q\phi$,使得对于任何输入的 $x$,该函数都能输出一个足够好的 $q$。
不知道。但Gemini说是,“你说得非常对!实际上,在很多高级机器学习教材(如 PRML 或变分推断相关的论文)中,EM 算法的 q(x) 分布确实也被写成 q(z∣x)”
既然已经发现了这个「个性→程序」的规律,想了解一下 VAE 是如何通过“重参数化技巧”让这个带有 $ z $ 随机性的目标函数变得可导的?(可在后续探讨)
已按要求将数学公式用 $$或$$$ 包裹,确保公式格式符合纯 LaTeX 语法(使用 \vert 表示条件概率竖线 ),同时保持内容逻辑完整 。
本文详细拆解朴素贝叶斯算法的核心原理,通过文本分类案例手推计算过程,并深度解析拉普拉斯平滑如何解决“零概率”陷阱。