Skip to content

Code for 'Variational Gaussian Process Difussion Processes' (AISTATS 2024)

License

Notifications You must be signed in to change notification settings

AaltoML/vi-diffusion-processes

 
 

Repository files navigation

Variational Gaussian Process Diffusion Processes

This fork of Markovflow contains the official implementation of the methods in the publication:

  • P. Verma, V. Adam, and A. Solin, (2024). Variational Gaussian Process Diffusion Processes. In Proceedings of the International Conference on Artificial Intelligence and Statistics (AISTATS). arXiv

Diffusion processes are a class of stochastic differential equations (SDEs) providing a rich family of expressive models that arise naturally in dynamic modelling tasks. Probabilistic inference and learning under generative models with latent processes endowed with a non-linear diffusion process prior are intractable problems. We build upon work within variational inference, approximating the posterior process as a linear diffusion process, and point out pathologies in the approach. We propose an alternative parameterization of the Gaussian variational process using a site-based exponential family description. This allows us to trade a slow inference algorithm with fixed-point iterations for a fast algorithm for convex optimization akin to natural gradient descent, which also provides a better objective for learning model parameters

The VDP and CVI-DP models are present in the directory: markovflow/models/.

All the experiments included in the paper are present in the directory: docs/diffusion_processes/. For more details go through the following README.

For all correspondence, please contact [email protected].


Markovflow

Quality checks and Tests Docs build

Documentation | Tutorials | API reference | Slack

What does Markovflow do?

Markovflow is a Python library for time-series analysis via probabilistic inference in generative models with Markovian Gaussian Processes.

Markovflow uses the mathematical building blocks from GPflow and marries these with objects and operators dedicated to run inference and learning in linear dynamical systems. This combination leads to a framework that can be used for:

  • researching new Markovian Gaussian process based models, and
  • building, training, evaluating and deploying Gaussian processes in a modern way — making use of the tools developed by the deep learning community.

Getting started

In the Documentation, we have multiple Tutorials showing the basic functionality of the toolbox, and a comprehensive API reference.

Install Markovflow

This project is assuming you are using python3.

For users

To install the latest (stable) release of the toolbox from PyPI, use pip:

$ pip install markovflow

For contributors

To install this project in editable mode, run the commands below from the root directory of the markovflow repository.

poetry install

Check that the installation was successful by running the tests:

poetry run task test

You can have a peek at the pyproject.toml for the commands.

The Secondmind Labs Community

Getting help

Bugs, feature requests, pain points, annoying design quirks, etc: Please use GitHub issues to flag up bugs/issues/pain points, suggest new features, and discuss anything else related to the use of Markovflow that in some sense involves changing the Markovflow code itself. We positively welcome comments or concerns about usability, and suggestions for changes at any level of design. We aim to respond to issues promptly, but if you believe we may have forgotten about an issue, please feel free to add another comment to remind us.

Slack workspace

We have a public Secondmind Labs slack workspace. Please use this invite link and join the #markovflow channel, whether you'd just like to ask short informal questions or want to be involved in the discussion and future development of Markovflow.

Contributing

All constructive input is very much welcome. For detailed information, see the guidelines for contributors.

Maintainers

Markovflow was originally created at Secondmind Labs and is now maintained by (in alphabetical order) Vincent Adam, Stefanos Eleftheriadis, Samuel Willis. We are grateful to all contributors who have helped shape Markovflow.

Markovflow is an open source project. If you have relevant skills and are interested in contributing then please do contact us (see "The Secondmind Labs Community" section above).

We are very grateful to our Secondmind Labs colleagues, maintainers of GPflow, GPflux, Trieste and Bellman, for their help with creating contributing guidelines, instructions for users and open-sourcing in general.

License

Apache License 2.0

About

Code for 'Variational Gaussian Process Difussion Processes' (AISTATS 2024)

Resources

License

Code of conduct

Stars

Watchers

Forks

Languages

  • Python 99.9%
  • Makefile 0.1%