probabilistic programming languages (PPLs) allow users to encode arbitrary inference problems, and PPL implementations provide general-purpose automatic inference for these problems. However, constructing inference im...
详细信息
ISBN:
(数字)9783030993368
ISBN:
(纸本)9783030993368;9783030993351
probabilistic programming languages (PPLs) allow users to encode arbitrary inference problems, and PPL implementations provide general-purpose automatic inference for these problems. However, constructing inference implementations that are efficient enough is challenging for many real-world problems. Often, this is due to PPLs not fully exploiting available parallelization and optimization opportunities. For example, handling probabilistic checkpoints in PPLs through continuation-passing style transformations or non-preemptive multitasking-as is done in many popular PPLs-often disallows compilation to low-level languages required for high-performance platforms such as GPUs. To solve the checkpoint problem, we introduce the concept of PPL control-flow graphs (PCFGs)-a simple and efficient approach to checkpoints in low-level languages. We use this approach to implement RootPPL: a low-level PPL built on CUDA and C++ with OpenMP, providing highly efficient and massively parallel SMC inference. We also introduce a general method of compiling universal high-level PPLs to PCFGs and illustrate its application when compiling Miking CorePPL-a high-level universal PPL-to RootPPL. The approach is the first to compile a universal PPL to GPUs with SMC inference. We evaluate RootPPL and the CorePPL compiler through a set of real-world experiments in the domains of phylogenetics and epidemiology, demonstrating up to 6x speedups over state-of-the-art PPLs implementing SMC inference.
We present a robotic development framework called ROSPPL, which can accomplish many of the essential probabilistic tasks that comprise modern autonomous systems and is based on a general purpose probabilistic programm...
详细信息
ISBN:
(纸本)9781728164229
We present a robotic development framework called ROSPPL, which can accomplish many of the essential probabilistic tasks that comprise modern autonomous systems and is based on a general purpose probabilisticprogramming language (PPL). Benefiting from ROS integration, a short PPL program in our framework is capable of controlling a robotic system, estimating its current state online, as well as automatically calibrating parameters and detecting errors, simply through probabilistic model and policy specification. The advantage of our approach lies in its generality which makes it useful for quickly designing and prototyping of new robots. By directly modeling the interconnection of random variables, decoupled from the inference engine, our design benefits from robustness, re-usability, upgradability, and ease of specification. In this paper, we use a SDV as an example of a complex autonomous system, to show how different sub-components of such system could be implemented using a probabilisticprogramming language, in a way that the system is capable of reasoning about itself. Our set of use-cases include localization, mapping, fault detection, calibration, and planning.
We present a robotic development framework called ROSPPL, which can accomplish many of the essential probabilistic tasks that comprise modern autonomous systems and is based on a general purpose probabilistic programm...
详细信息
ISBN:
(数字)9781728164229
ISBN:
(纸本)9781728164236
We present a robotic development framework called ROSPPL, which can accomplish many of the essential probabilistic tasks that comprise modern autonomous systems and is based on a general purpose probabilisticprogramming language (PPL). Benefiting from ROS integration, a short PPL program in our framework is capable of controlling a robotic system, estimating its current state online, as well as automatically calibrating parameters and detecting errors, simply through probabilistic model and policy specification. The advantage of our approach lies in its generality which makes it useful for quickly designing and prototyping of new robots. By directly modeling the interconnection of random variables, decoupled from the inference engine, our design benefits from robustness, re-usability, upgradability, and ease of specification. In this paper, we use a SDV as an example of a complex autonomous system, to show how different sub-components of such system could be implemented using a probabilisticprogramming language, in a way that the system is capable of reasoning about itself. Our set of use-cases include localization, mapping, fault detection, calibration, and planning.
Constructive type theory combines logic and programming in one language. This is useful both for reasoning about programs written in type theory, as well as for reasoning about other programminglanguages inside type ...
详细信息
Constructive type theory combines logic and programming in one language. This is useful both for reasoning about programs written in type theory, as well as for reasoning about other programminglanguages inside type theory. It is well-known that it is challenging to extend these applications to languages with recursion and computational effects such as probabilistic choice, because these features are not easily represented in constructive type theory. We show how to define and reason about FPC circle plus, a programming language with probabilistic choice and recursive types, in guarded type theory. We use higher inductive types to represent finite distributions and guarded recursion to model recursion. We define both operational and denotational semantics of FPC circle plus, as well as a relation between the two. The relation can be used to prove adequacy, but we also show how to use it to reason about programs up to contextual equivalence.
We propose a symbolic execution method for programs that can draw random samples. In contrast to existing work, our method can verify randomized programs with unknown inputs and can prove probabilistic properties that...
详细信息
We propose a symbolic execution method for programs that can draw random samples. In contrast to existing work, our method can verify randomized programs with unknown inputs and can prove probabilistic properties that universally quantify over all possible inputs. Our technique augments standard symbolic execution with a new class of probabilistic symbolic variables, which represent the results of random draws, and computes symbolic expressions representing the probability of taking individual paths. We implement our method on top of the KLEE symbolic execution engine alongside multiple optimizations and use it to prove properties about probabilities and expected values for a range of challenging case studies written in C++, including Freivalds' algorithm, randomized quicksort, and a randomized property-testing algorithm for monotonicity. We evaluate our method against Psi, an exact probabilistic symbolic inference engine, and Storm, a probabilistic model checker, and show that our method significantly outperforms both tools.
For overcoming the limitations of probabilistic coherence spaces which do not seem to provide natural interpretations of continuous data types such as the real line, we introduced with Pagani and Tasson a model of pro...
详细信息
ISBN:
(纸本)9781450371049
For overcoming the limitations of probabilistic coherence spaces which do not seem to provide natural interpretations of continuous data types such as the real line, we introduced with Pagani and Tasson a model of probabilistic higher order computation based on (positive) cones, and a class of totally monotone functions that we called "stable". Then Crubille proved that this model is a conservative extension of the earlier probabilistic coherence space model. We continue these investigations by showing that the category of cones and linear and Scott-continuous functions is a model of intuitionistic linear logic. To define the tensor product, we use the special adjoint functor theorem, and we prove that this operation is an extension of the standard tensor product of probabilistic coherence spaces. We also show that these latter are dense in cones, thus allowing to lift the main properties of the tensor product of probabilistic coherence spaces to general cones. Finally we define in the same way an exponential of cones and extend measurability to these new operations.
probabilistic programming languages offer an intuitive way to model uncertainty by representing complex probability models as simple probabilistic programs. probabilisticprogramming systems (PP systems) hide the comp...
详细信息
ISBN:
(纸本)9781450355728
probabilistic programming languages offer an intuitive way to model uncertainty by representing complex probability models as simple probabilistic programs. probabilisticprogramming systems (PP systems) hide the complexity of inference algorithms away from the program developer. Unfortunately, if a failure occurs during the run of a PP system, a developer typically has very little support in finding the part of the probabilistic program that causes the failure in the system. This paper presents Storm, a novel general framework for reducing probabilistic programs. Given a probabilistic program (with associated data and inference arguments) that causes a failure in a PP system, Storm finds a smaller version of the program, data, and arguments that cause the same failure. Storm leverages both generic code and data transformations from compiler testing and domain-specific, probabilistic transformations. The paper presents new transformations that reduce the complexity of statements and expressions, reduce data size, and simplify inference arguments (e.g., the number of iterations of the inference algorithm). We evaluated Storm on 47 programs that caused failures in two popular probabilisticprogramming systems, Stan and Pyro. Our experimental results show Storm's effectiveness. For Stan, our minimized programs have 49% less code, 67% less data, and 96% fewer iterations. For Pyro, our minimized programs have 58% less code, 96% less data, and 99% fewer iterations. We also show the benefits of Storm when debugging probabilistic programs.
probabilisticprogramming systems (PP systems) allow developers to model stochastic phenomena and perform efficient inference on the models. The number and adoption of probabilisticprogramming systems is growing sign...
详细信息
ISBN:
(纸本)9781450355735
probabilisticprogramming systems (PP systems) allow developers to model stochastic phenomena and perform efficient inference on the models. The number and adoption of probabilisticprogramming systems is growing significantly. However, there is no prior study of bugs in these systems and no methodology for systematically testing PP systems. Yet, testing PP systems is highly non-trivial, especially when they perform approximate inference. In this paper, we characterize 118 previously reported bugs in three open-source PP systems-Edward, Pyro and Stan-and propose ProbFuzz, an extensible system for testing PP systems. ProbFuzz allows a developer to specify templates of probabilistic models, from which it generates concrete probabilistic programs and data for testing. ProbFuzz uses language-specific translators to generate these concrete programs, which use the APIs of each PP system. ProbFuzz finds potential bugs by checking the output from running the generated programs against several oracles, including an accuracy checker. Using ProbFuzz, we found 67 previously unknown bugs in recent versions of these PP systems. Developers already accepted 51 bug fixes that we submitted to the three PP systems, and their underlying systems, PyTorch and TensorFlow.
A multitude of different probabilistic programming languages exists today, all extending a traditional programming language with primitives to support modeling of complex, structured probability distributions. Each of...
详细信息
A multitude of different probabilistic programming languages exists today, all extending a traditional programming language with primitives to support modeling of complex, structured probability distributions. Each of these languages employs its own probabilistic primitives, and comes with a particular syntax, semantics and inference procedure. This makes it hard to understand the underlying programming concepts and appreciate the differences between the different languages. To obtain a better understanding of probabilisticprogramming, we identify a number of core programming concepts underlying the primitives used by various probabilisticlanguages, discuss the execution mechanisms that they require and use these to position and survey state-of-the-art probabilisticlanguages and their implementation. While doing so, we focus on probabilistic extensions of logic programminglanguages such as Prolog, which have been considered for over 20 years.
We prove a computable version of the de Finetti theorem on exchangeable sequences of real random variables. As a consequence, exchangeable stochastic processes expressed in probabilistic functional programming languag...
详细信息
We prove a computable version of the de Finetti theorem on exchangeable sequences of real random variables. As a consequence, exchangeable stochastic processes expressed in probabilistic functional programminglanguages can be automatically rewritten as procedures that do not modify non-local state. Along the way, we prove that a distribution on the unit interval is computable if and only if its moments are uniformly computable. (C) 2011 Elsevier B.V. All rights reserved.
暂无评论