关于跳跃、卫星坠毁和发疯:汉密尔顿蒙特卡罗的第一个概念介绍

TensorFlow Probability 及其 R 包装器 tfprobability 提供了马尔可夫链蒙特卡罗 (MCMC) 方法,这些方法已在本博客的近期多篇文章中使用。这些文章针对的是已经熟悉该方法和术语本身的用户,而主要对深度学习感兴趣的读者不一定熟悉。在这里,我们试图弥补不足,介绍汉密尔顿蒙特卡罗 (HMC) 以及一些经常听到的伴随它的“流行语”,始终努力记住这一切“为了”什么。

来源:RStudio AI博客

为什么在这个博客上对汉密尔顿蒙特卡罗 (HMC) 进行非常(意思是:非常!)的第一个概念介绍?

对汉密尔顿蒙特卡罗进行非常(意思是:非常!)的第一个概念介绍

好吧,在我们努力展示 TensorFlow Probability (TFP) / tfprobability 的各种功能时,我们开始展示如何使用 TFP 的联合分布类和 HMC 之一来拟合分层模型的示例。技术方面本身就足够复杂了,我们从未介绍过“事物的数学方面”。在这里,我们试图弥补这一点。

tfprobability

考虑到在一篇简短的博客文章中不可能对贝叶斯建模和马尔可夫链蒙特卡罗进行一般介绍,以及已经有如此多的优秀文本这样做,我们将假设一些先验知识。那么,我们特别关注的是最新、最伟大的魔法流行语、著名的咒语:汉密尔顿蒙特卡罗、蛙跳法、NUTS——一如既往地试图揭开神秘面纱,让事情尽可能地通俗易懂。本着这种精神,欢迎来到“带有叙述的词汇表”。

蛙跳法

那么它是用来做什么的呢?

抽样或蒙特卡罗技术一般用于我们想要从没有闭式公式的分布中产生样本或统计描述分布时。有时,我们可能真的对样本感兴趣;有时我们只是想要它们,这样我们就可以计算分布的均值和方差。

蒙特卡罗

什么分布?在我们讨论的应用类型中,我们有一个模型,一个联合分布,它应该描述一些现实。从最基本的场景开始,它可能看起来像这样:

模型

\[x \sim \mathcal{Poisson}(\lambda)\]

\[x \sim \mathcal{Poisson}(\lambda)\]

这个“联合分布”只有一个成员,即泊松分布,它应该模拟代码审查中的评论数量。我们也有关于实际代码审查的数据,例如:

参数 \(\lambda\) (