Skip to main content
QUICK REVIEW

[论文解读] An Introduction to Probabilistic Programming

Staton, Sam|arXiv (Cornell University)|Sep 27, 2018
Bayesian Modeling and Causal Inference参考文献 108被引用 110
一句话总结

本文为概率编程提供了一套全面的研究生级别介绍,提出了一套基于编程语言构建和推理概率模型的系统性框架。内容涵盖基于模型推理的基础概念、推理算法(例如吉布斯采样、SMC、哈密顿蒙特卡洛)以及高级技术,如可微分和深度概率编程,重点在于组合性、推理模块化以及与机器学习的集成。

ABSTRACT

This book is a graduate-level introduction to probabilistic programming. It not only provides a thorough background for anyone wishing to use a probabilistic programming system, but also introduces the techniques needed to design and build these systems. It is aimed at people who have an undergraduate-level understanding of either or, ideally, both probabilistic machine learning and programming languages. We start with a discussion of model-based reasoning and explain why conditioning is a foundational computation central to the fields of probabilistic machine learning and artificial intelligence. We then introduce a first-order probabilistic programming language (PPL) whose programs correspond to graphical models with a known, finite, set of random variables. In the context of this PPL we introduce fundamental inference algorithms and describe how they can be implemented. We then turn to higher-order probabilistic programming languages. Programs in such languages can define models with dynamic computation graphs, which may not instantiate the same set of random variables in each execution. Inference requires methods that generate samples by repeatedly evaluating the program. Foundational algorithms for this kind of language are discussed in the context of an interface between program executions and an inference controller. Finally we consider the intersection of probabilistic and differentiable programming. We begin with a discussion of automatic differentiation, and how it can be used to implement efficient inference methods based on Hamiltonian Monte Carlo. We then discuss gradient-based maximum likelihood estimation in programs that are parameterized using neural networks, how to amortize inference using by learning neural approximations to the program posterior, and how language features impact the design of deep probabilistic programming systems.

研究动机与目标

  • 为具备机器学习和编程语言背景的研究人员提供概率编程的基础理解。
  • 解释概率程序如何被编译为图形模型和因子图以实现高效推理。
  • 介绍通过重复程序执行运行的推理算法,如似然加权、梅特罗波利斯-黑斯廷斯和SMC。
  • 探讨具有动态计算图的高阶概率编程及其对推理带来的挑战。
  • 将可微分编程与概率编程集成,实现基于梯度的推理和深度生成建模。

提出的方法

  • 设计一种具有静态计算图和有限随机变量的一阶概率编程语言(FOPPL),将程序映射为图形模型。
  • 引入模型与推理控制器之间的消息接口,实现模型定义与推理策略的解耦。
  • 采用延续传递风格(CPS)变换,实现高阶PPL中模块化和可组合的推理。
  • 应用自动微分技术,实现可微分概率程序中的哈密顿蒙特卡洛(HMC)推理。
  • 使用随机梯度方法和摊销推理,提升深度概率模型中的学习可扩展性。
  • 将神经网络作为推理中的提议分布,实现生成模型与概率程序的端到端训练。

实验结果

研究问题

  • RQ1如何将概率编程形式化为具有静态计算图和有限随机变量的一阶语言?
  • RQ2适用于具有动态计算图的高阶概率程序的推理算法有哪些?
  • RQ3如何通过模型与推理控制器之间的消息接口实现推理的模块化?
  • RQ4自动微分在实现可微分概率程序中高效基于梯度的推理中起到什么作用?
  • RQ5如何利用深度神经网络摊销推理并扩展概率程序中的学习能力?

主要发现

  • 本文建立了一套系统性框架,可将概率程序编译为图形模型和因子图,从而实现标准推理算法的系统性应用。
  • 研究证明,高阶PPL中的推理需要重复执行程序,并可通过消息接口实现模块化,从而实现关注点分离。
  • 将自动微分与概率编程集成,可实现高效的HMC推理,在高维空间中显著提升混合效率和收敛速度。
  • 利用神经网络进行摊销推理可降低后验近似的计算成本,实现复杂模型中的可扩展学习。
  • 本文表明,可通过端到端可微分和模块化组件设计深度概率编程系统,同时支持生成建模与推理。
  • 案例研究(如fMRI分析、主题建模)的实证结果表明,所提方法在后验近似和模型学习方面达到了最先进性能。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。