I am pleased to announce the release of Figaro 3.0, the latest version of our probabilistic programming system.
Figaro is free and is released under an open-source license (see license file). The public code repository for Figaro can also be found at https://github.com/p2t2. The latest stable Figaro binary release is available for download from the Charles River Analytics, Inc. Web site: http://www.cra.com/figaro Each binary release comes with Figaro, all required libraries, Scaladoc, examples, and source code. What's New in Figaro 3.0? Many new features have been introduced into Figaro 3.0 since Figaro 2.0 was released. These include: * A collections library. This library includes support for processes defined over an infinite space, such as Gaussian processes or continuous-time Markov processes. It also supports collections consisting of an unknown number of elements. Many convenient methods are defined on Figaro collections, including mapping values of elements in a collection through a function and folds or aggregates (for finite collections). * A number of new algorithms: o Lazy variable elimination allows variable elimination to be used on very large or infinite models by only expanding part of the model and quantifying the contribution of the unexpanded part of the model on the query. o Belief propagation for approximate factored inference. o The factored frontier algorithm for filtering. o A wider variety of expectation-maximization-based learning algorithms. * Improvements to existing algorithms: o Forward sampling algorithms like importance sampling and particle filtering now work in log space to avoid underflow. o Importance sampling now properly implements likelihood weighting to avoid too many rejections. o More algorithms support computing probability of evidence, including variable elimination, importance sampling, and particle filtering. o Observations on continuous elements are now implemented as constraints on the arguments of the elements, which helps avoiding rejections and mixing. o Ability to sample particular target variables without sampling all the variables. * Features to make programming easier: o New patterns for learning. Parameter collections enable you to reuse the same parameters in both the training model and operational model. o One line shortcuts for common queries. o Ability to query the mean and variance of a Double element. o Ability to add logarithmic constraints to elements. * New element classes in the library: o Multivariate normal o Inverse gamma o Parameterized binomial o Fold for implementing associative aggregates efficiently * Numerous minor improvements and bug fixes About Figaro Reasoning under uncertainty requires taking what you know and inferring what you don't know, when what you know doesn't tell you for sure what you don't know. A well-established approach for reasoning under uncertainty is probabilistic reasoning. Typically, you create a probabilistic model over all the variables you're interested in, observe the values of some variables, and query others. There is a huge variety of probabilistic models, and new ones are being developed constantly. Figaro is designed to help build and reason with the wide range of probabilistic models. Developing a new probabilistic model normally requires developing a representation for the model and a reasoning algorithm that can draw useful conclusions from evidence, and in many cases also an algorithm to learn aspects of the model from data. These can be challenging tasks, making probabilistic reasoning require significant effort and expertise. Furthermore, most probabilistic reasoning tools are standalone and difficult to integrate into larger programs. Figaro is a probabilistic programming language that helps address both these issues. Figaro makes it possible to express probabilistic models using the power of programming languages, giving the modeler the expressive tools to create all sorts of models. Figaro comes with a number of built-in reasoning algorithms that can be applied automatically to new models. In addition, Figaro models are data structures in the Scala programming language, which is interoperable with Java, and can be constructed, manipulated, and used directly within any Scala or Java program. Figaro is extremely expressive. It can represent a wide variety of models, including: * directed and undirected models * models in which conditions and constraints are expressed by arbitrary Scala functions * models involving inter-related objects * open universe models in which we don't know what or how many objects exist * models involving discrete and continuous elements * models in which the elements are rich data structures such as trees * models with structured decisions * models with unknown parameters Figaro provides a rich library of constructs to build these models, and provides ways to extend this library to create your own model elements. Figaro's library of reasoning algorithms is also extensible. Current built-in algorithms include: * Exact inference using variable elimination * Belief propagation * Lazy factored inference for infinite models * Importance sampling * Metropolis-Hastings, with an expressive language to define proposal distributions * Support computation * Most probable explanation (MPE) using variable elimination or simulated annealing * Probability of evidence using importance sampling * Particle Filtering * Factored frontier * Parameter learning using expectation maximization Figaro provides both regular (the algorithm is run once) and anytime (the algorithm is run until stopped) versions of some of these algorithms. In addition to the built-in algorithms, Figaro provides a number of tools for creating your own reasoning algorithms. + + + + + + + + + + + + Avi Pfeffer Charles River Analytics Inc. apfef...@cra.com<mailto:apfef...@cra.com> (617) 491-3474x513 + + + + + + + + + + + + Avi Pfeffer Charles River Analytics Inc. apfef...@cra.com<mailto:apfef...@cra.com> (617) 491-3474x513
_______________________________________________ uai mailing list uai@ENGR.ORST.EDU https://secure.engr.oregonstate.edu/mailman/listinfo/uai