本书是对概率编程的研究生水平的介绍。它不仅为希望使用概率编程系统的任何人提供了全面的背景知识,而且还介绍了设计和构建这些系统所需的技术。它面向对概率机器学习和编程语言或理想情况下对概率机器学习和编程语言具有本科水平理解的人。
我们首先讨论基于模型的推理,并解释为什么条件反射是概率机器学习和人工智能领域的核心基础计算。然后,我们引入一阶概率编程语言 (PPL),其程序对应于具有已知的有限随机变量集的图形模型。在本 PPL 的上下文中,我们介绍了基本的推理算法并描述了如何实现它们。
然后我们转向高阶概率编程语言。此类语言的程序可以定义具有动态计算图的模型,这些模型可能不会在每次执行中实例化相同的随机变量集。推理需要通过重复评估程序来生成样本的方法。在程序执行和推理控制器之间的接口的上下文中讨论了这种语言的基础算法。
最后,我们考虑概率规划和可微规划的交集。我们首先讨论自动微分,以及如何使用它来实现基于哈密顿蒙特卡罗的高效推理方法。然后,我们讨论在使用神经网络参数化的程序中基于梯度的最大似然估计,如何通过学习程序后验的神经近似来分摊推理,以及语言特征如何影响深度概率编程系统的设计。