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 prakhar.verma@aalto.fi.
Documentation | Tutorials | API reference | Slack
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.
In the Documentation, we have multiple Tutorials showing the basic functionality of the toolbox, and a comprehensive API reference.
This project is assuming you are using python3
.
To install the latest (stable) release of the toolbox from PyPI, use pip
:
$ pip install markovflow
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.
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.
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.
All constructive input is very much welcome. For detailed information, see the guidelines for contributors.
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.