变分推断 和 贝叶斯和马尔可夫链蒙特卡洛什么关系?VI+重参数化技巧 = VAE (变分自编码器)
这是一个非常深刻且核心的问题。要理解这三者的关系我们需要先理清它们各自的角色和层级。简单来说贝叶斯统计Bayesian Statistics是一套世界观或理论框架我们要追求的目标。马尔可夫链蒙特卡洛MCMC是一种精确但昂贵的计算工具用来在这个框架下求答案的方法之一。变分推断Variational Inference, VI是一种近似但高效的计算工具用来在同一个框架下求答案的另一种方法。它们的关系可以比喻为“找宝藏”的三种不同策略。文章目录1. 贝叶斯统计终极目标The Goal2. MCMC穷举搜索的“笨”方法The Precise but Slow Approach3. 变分推断VI优化问题的“聪明”近似The Efficient Approximation三者关系的直观对比表为什么现在 VI 比 MCMC 更火它们是如何协同工作的VI重参数化技巧 VAE (变分自编码器)总结1. 贝叶斯统计终极目标The Goal贝叶斯统计是一种处理不确定性的数学框架。核心思想知识是概率分布而不是确定的数值。当我们看到数据时我们要更新我们对世界认知的不确定性。关键任务计算后验分布Posterior Distribution。公式P ( 隐藏参数 ∣ 数据 ) ∝ P ( 数据 ∣ 隐藏参数 ) × P ( 隐藏参数 ) P(\text{隐藏参数} | \text{数据}) \propto P(\text{数据} | \text{隐藏参数}) \times P(\text{隐藏参数})P(隐藏参数∣数据)∝P(数据∣隐藏参数)×P(隐藏参数)通俗理解我想根据看到的证据数据推测出背后真实的规律参数/隐藏变量的概率分布。如果你想从数据 x 推断隐藏变量 z即计算后验分布 p(z∣x)通常使用马尔可夫链蒙特卡洛MCMC methods。MCMC 需要成千上万次迭代才能收敛到一个近似的样本。对于每一张新图片都要跑几百步模拟这在大数据集如 ImageNet上几乎是不可能的任务计算成本极高。问题在于在很多复杂模型尤其是深度学习模型中计算这个后验分布需要进行极其复杂的积分归一化常数这在数学上通常不可解Intractable。我们需要近似的方法。2. MCMC穷举搜索的“笨”方法The Precise but Slow Approach马尔可夫链蒙特卡洛MCMC是一类算法的总称如 Metropolis-Hastings, Gibbs Sampling, Hamiltonian Monte Carlo。它是怎么工作的想象你在一个巨大的、黑暗的山谷里寻找宝藏后验分布的高概率区域。MCMC 就像是一个蒙着眼睛的人随机迈步。如果迈到的地方比上次高概率更高他就接受如果低他有时也接受为了跳出局部最优。随着他走了很多很多步迭代很多次他脚下的位置分布就逐渐逼近了山谷的地形即真实的后验分布。优点理论上如果时间足够长它可以精确地逼近真实的后验分布没有近似误差。缺点太慢了需要成千上万次迭代才能收敛。无法并行每一步都依赖上一步很难利用 GPU 加速。在高维空间失效在深度学习的高维参数空间中MCMC 极易陷入局部最优或完全迷失方向。总结MCMC 是贝叶斯推断的“经典正统解法”但在现代大数据和深度学习面前它跑不动。3. 变分推断VI优化问题的“聪明”近似The Efficient Approximation变分推断Variational Inference是受变分法启发的一种近似方法。它是怎么工作的它不直接计算那个难算的真实后验分布P ( z ∣ x ) P(z|x)P(z∣x)。它假设后验分布长得很像某个简单的分布家族q ( z ) q(z)q(z)比如高斯分布。它将“计算积分”的问题转化为“优化问题”。它寻找一组参数ϕ \phiϕ使得这个简单的分布q ϕ ( z ) q_\phi(z)qϕ(z)尽可能接近真实的后验P ( z ∣ x ) P(z|x)P(z∣x)。衡量接近程度的指标是 KL 散度KL Divergence。最小化 KL 散度等价于最大化ELBO证据下界。优点极快可以将问题转化为标准的梯度下降问题利用反向传播和 GPU 加速。可扩展可以轻松处理大规模数据随机梯度下降。适合深度学习可以轻松嵌入到神经网络中。缺点近似误差结果取决于你选择的近似分布家族q qq是否足够强大。如果q qq太简单比如只用对角高斯它可能无法捕捉真实后验的复杂结构。低估方差VI 倾向于寻找一个简单的分布去“覆盖”高概率区域可能会低估不确定性。总结VI 是贝叶斯推断的“现代工程解法”牺牲了一点精度换取了巨大的速度提升。三者关系的直观对比表特性贝叶斯统计 (Bayesian)MCMC变分推断 (VI)角色理论框架(世界观)计算算法(工具)计算算法(工具)目标计算后验分布 $P(zx)$近似后验分布方法本质基于概率论和贝叶斯定理基于随机采样 (Sampling)基于优化 (Optimization)精度理论上是精确的理论上精确 (收敛后)近似解 (取决于q qq的选择)速度N/A (理论)极慢(迭代收敛)极快(梯度下降)适用场景所有贝叶斯模型小样本、低维、需要高精度大数据、高维、深度学习类比想要知道山的全貌一个人慢慢爬山记录每个点用一张简单的地图去拟合山的形状为什么现在 VI 比 MCMC 更火在深度学习时代我们面对的是高维参数空间数百万权重和海量数据 millions of images。MCMC 跑不动在高维空间中MCMC 需要极长的链才能探索完整个空间且梯度信息利用率低除非用 HMC但也比不过 VI 的梯度效率。VI 完美契合深度学习VI 将推断转化为优化问题。深度学习的核心也是优化问题梯度下降。通过重参数化技巧Reparameterization TrickVI 可以完美地与神经网络结合形成VAE (变分自编码器)。它们是如何协同工作的在现代研究中它们并不是完全对立的而是经常结合使用VI MCMC (Variational MCMC)先用 VI 找到一个好的初始分布快速的近似解。再用 MCMC 在这个基础上进行微调以校正 VI 的近似误差获得更精确的结果。这是目前最先进的方法如 Stochastic Gradient Langevin Dynamics, SGLD。贝叶斯深度学习使用 VI 来近似神经网络权重的后验分布从而让神经网络也能输出“不确定性”不仅是预测结果还有置信区间。VI重参数化技巧 VAE (变分自编码器)因为* VI 将推断转化为优化问题。* 深度学习的核心也是优化问题梯度下降。* 通过重参数化技巧Reparameterization TrickVI 可以完美地与神经网络结合形成VAE (变分自编码器)。基于神经网络的识别模型Recognition Model也称为推理模型或编码器q ϕ ( z ∣ x ) q_\phi(z|x)qϕ(z∣x)解决了传统贝叶斯推断中的“计算不可行性”与“可扩展性”这两个致命痛点从而让变分推断Variational Inference, VI真正成为了深度学习的主流工具。从“迭代估算”到“前向传播”速度的革命传统困境在神经网络普及之前如果你想从数据x xx推断隐藏变量z zz即计算后验分布p ( z ∣ x ) p(z|x)p(z∣x)通常使用马尔可夫链蒙特卡洛MCMC methods。MCMC 需要成千上万次迭代才能收敛到一个近似的样本。对于每一张新图片都要跑几百步模拟这在大数据集如 ImageNet上几乎是不可能的任务计算成本极高。神经网络的改变引入神经网络作为识别模型后推断过程变成了一次简单的前向传播Forward Pass。输入一张图片神经网络直接输出潜在变量z zz的均值μ \muμ和方差σ \sigmaσ。耗时从“几分钟/几秒”缩短到“毫秒级”。结果使得在大规模数据集上训练生成模型成为可能。可微性与端到端训练梯度的贯通传统困境在变分推断中采样过程从分布中抽取z zz通常是一个离散或非平滑的过程导致梯度无法反向传播。这意味着你无法直接用反向传播算法来更新模型参数因为“噪声”阻断了梯度的流动。神经网络的改变配合重参数化技巧Reparameterization Trick神经网络使得采样过程变得可微。随机性被分离出来z μ σ ⋅ ϵ z \mu \sigma \cdot \epsilonzμσ⋅ϵ网络只学习确定性的映射μ \muμ和σ e a c h \sigma eachσeach。结果生成模型Decoder和识别模型Encoder可以被看作一个整体的端到端系统。你可以同时优化两者通过反向传播更新所有参数。这使得**变分自编码器VAE**这种架构变得简单而优雅。将“黑盒”贝叶斯推断转化为“白盒”优化问题传统困境贝叶斯推断原本是一个复杂的积分计算问题需要深厚的数学功底来推导特定的解析解。对于复杂的非线性模型如深层网络解析解往往不存在。神经网络的改变神经网络作为一种通用的函数近似器可以用来拟合任意复杂的后验分布q ϕ ( z ∣ x ) q_\phi(z|x)qϕ(z∣x)。我们不再需要手动推导特定模型的梯度公式。我们只需要定义一个目标函数ELBO证据下界然后使用标准的自动微分工具如 TensorFlow, PyTorch进行梯度下降。结果极大地降低了应用贝叶斯方法的门槛。研究人员无需精通复杂的统计推导只需关注架构设计即可处理复杂的概率模型。总结贝叶斯是你想要到达的目的地获得对不确定性的完整描述。MCMC是通往目的地的徒步旅行路虽然准但太慢太累走不到终点可能就老了。变分推断是坐直升机虽然可能无法看清每一棵树的细节近似但能迅速让你到达大致的区域并且可以带着这个直升机技术去探索更大的世界深度学习。