Probabilistic programming languages allow programmers to write down conditional probability distributions that represent statistical and machine learning models as programs that use observe statements. These programs are run by accumulating likelihood at each observe statement, and using the likelihood to steer random choices and weigh results with inference algorithms such as importance sampling or MCMC. We argue that naive likelihood accumulation does not give desirable semantics and leads to paradoxes when an observe statement is used to condition on a measure-zero event, particularly when the observe statement is executed conditionally on random data. We show that the paradoxes disappear if we explicitly model measure-zero events as a limit of positive measure events, and that we can execute these type of probabilistic programs by accumulating infinitesimal probabilities rather than probability densities. Our extension improves probabilistic programming languages as an executable notation for probability distributions by making it more well-behaved and more expressive, by allowing the programmer to be explicit about which limit is intended when conditioning on an event of measure zero.
翻译:概率性编程语言允许程序员写下作为使用观察语句的程序的统计和机器学习模型的有条件概率分布。 这些程序的运行方式是在每个观察语句中积累可能性,并使用随机选择的可能性,用重要取样或MCMC等推论算法来权衡结果。 我们认为,天真可能性积累并不能提供理想的语义,当观察语句以零度事件为条件时,特别是当观察语句以随机数据为条件执行时,会导致悖论。 我们表明,如果我们明确将零度事件作为积极度事件的一个限度来模拟,那么悖论就会消失,我们可以通过积累极小的概率而不是概率密度来实施这些概率性程序。 我们的扩展通过让程序员在以零度事件为条件时能够明确设定什么限度,从而改进概率性编程语言作为概率分布的可执行性标记,使之更加稳妥和直观,从而使程序员在以零度事件为条件时能够明确设定什么限度。