Introduction to Probabilistic Programming for Scientific Discovery
Course material for the introduction to probabilistic programming for scientific discovery held at the Lviv Data Science Summer School
Structure
The course is structured into 4 lectures of 90 minutes presentation time each with 2 coding tutorials for self-paced consumption.
Further reading material and references to relevant papers are provided in the respective lectures and tutorials.
This course is based on the Julia programming language. If you have not yet worked with Julia, I'd highly encourage you to take a quick look at a tutorial, such as this one or the ones offered by the JuliaAcademy.
Lectures
Lecture 1: Building the foundational knowledge
- Example applications of probabilistic programming
- Why do we even need probabilistic programming?
- Underlying theoretical ideas
Lecture 2: Inference Engines & Introduction to Turing.jl
- Approaches to inference
- Probabilistic Programming Frameworks
- Practical introduction to a probabilistic programming framework
Lecture 3: Hierarchical Bayesian Approaches & Bayesian Deep Learning
- Bayesian deep learning
- Marrying deep learning frameworks with probabilistic programming systems for type 2 machine learning
Lecture 4: The Connection to Scientific Problems
- What types of simulators would I want to link to in scientific applications?
- Areas of application: Robotics, Physics, Engineering, Machine-learning based design
Tutorials
Tutorial 1: Introduction to probabilistic programming systems
Tutorial 2: Bayesian deep learning + probabilistic programming (Bayesian deep learning)