Probabilistic Programming Systems aim to merge general purpose programming with probabilistic modelling. They provide powerful statistical inference and thus allow developers to focus on the modelling with tools and environments they are comfortable with. These emerging methods are promising additions to the Data Scientist’s toolbox and an interesting, satisfying playground for programming enthusiasts. This talk is an introduction to Probabilistic Programming Systems, their use and value for the industry and Clojure’s great library “Anglican”.
8. Compared to other machine learning techniques
incorporates domain knowledge
models are explainable and
understandable
works well with small to medium data
need to build a model
computationally expensive (aka “slow”)
+ -
9. Don’t think of Probabilistic
Programming vs other techniques,
they can complement each other
22. Execution model
probabilistic programs are
executed many times for inference
random choices affect the
execution path on each run
computes the distribution from
which execution results are drawn
24. What is Anglican?
embedded language, subset of
Clojure
same syntax but different
semantics
Clojure, JVM and Anglican
available to each other
Anglican runs wherever
you have a JVM
39. PPS beyond Anglican
Clojure, high performance:
Bayadera
Industry Standards: Stan, PyMC
Many PPS: Figaro, WebPPL,
BayesDB, …
40. Probabilistic Programming, my conclusions so far:
Probabilistic Programming Systems: Very low entry barrier to predict, infer
and train domain models, but modelling requires skill
Anglican: Solid solution in Clojure space with great modelling and
prototyping capabilities, but inference is slow and ecosystem is lacking
Research Topic: Expect maturation and extension of the probabilistic
programming techniques
41. Acknowledgements
Anglican Devs: Frank Wood, David Tolpin & all contributors
Speaker Mentor: Jan Stępień
Discussions: Dragan Djuric, Chris Wallace, David Tolpin, Christian Weilbach