- dr. R.P. Dwight <r.p.dwight@tudelft.nl>
- T.S.B. Buchanan <T.S.B.Buchanan@tudelft.nl>
- Part of the MSc Aerodynamics Track, TU Delft
Prerequisites: a) a first course on probability/statistics (though we give a brief refresher in Week I), b) a first course in numerical analysis, and c) a familiarity with numerical solution of PDEs. In addition numerical exercises will be done in Python - some programming experience is necessary.
Topics: UQ is a broad heading, and we will cover specifically:
- Propagation of parametric uncertainty through simulation codes;
- Description of random functions with (Gaussian) processes;
- Stochastic inverse problems in the Bayesian framework;
- Numerical methods for high-dimensional propagation/inverse problems;
- Machine-learning as Bayesian inference, Bayesian Neural Networks;
- Assimilating experimental data and simulation into a single prediction.
Structure: The course is taught in 7 weeks, each week there are recorded lectures (see next tab), an in-person inverted classroom (Tuesday afternoons, 13:45-15:30 in LR CZ-J). For each part of the course there is a programming tutorial, in which the theory is applied. The exercises use Python in Jupyter notebooks. Each should take ~3-6 hours depending strongly on your programming (and Python/numpy) experience.
- Week 4.1a: Introduction and motivation
- Week 4.1b: Probability refresher/fundamentals
- Week 4.2: Polynomial stochastic methods for propagation in 1d
- Week 4.3: Bayes theorem & Gaussian-processes
- Week 4.4: Bayes for nonlinear models
- Week 4.5: Variational methods for inverse problems with adjoints
- Week 4.6: Research topics in Machine-learning for fluid-dynamics
- Week 4.7 (onsite only): Data-assimilation and Neural networks in turbulence modelling
The tutorials are in the form of IPython notebooks:
- Tutorial 1: Uncertainty propagation with polynomials, zip
- Tutorial 2: Gaussian processes for surrogate modelling, ipynb
- Tutorial 3: Nonlinear inverse problems with McMC, ipynb
- Tutorial 4: High-dimensional inverse problems with variational Bayes zip.
- Tutorial 1 - Friday 18:00, Week 4.3
- Tutorial 2 - Friday 18:00, Week 4.4
- Tutorial 3 - Friday 18:00, Week 4.5
- Tutorial 4 - Friday 18:00, Week 4.7
The tutorials make heavy use of numpy, which is the standard Python module for working with arrays, matrices, etc., and scipy which is the standard Python module for numerical and statistical primitives. If you have used Python, but not numpy before, then I strongly recommend reading:
- Numpy Quickstart Tutorial (and do the exercises!),
- Chapter 11 of the TU Delft reader of AE1205 Programming and Scientific Computing in Python.
To ensure easy access to a correctly setup Python environment for TU Delft students I've setup a server at: https://ipython.lr.tudelft.nl:8888. The port number is important!!! Your username is your NetID, and your password will appear in Brightspace GradeCenter. The notebooks are available in your home-directory. Moreover, on this server you can run the notebooks from within any browser, make modifications, plots, etc. Please just bear in mind that your code is not running locally, but on the server, which has limited capacity. So please don't perform long-running computations (or bitcoin mining!).
In this course we use Ralph C. Smith's Uncertainty quantification: Theory, implementation, and applications, as a supporting text. Please find a copy before the course starts. We don't follow Smith closely, but if Smith covers the material, I will always reference the appropriate section below the corresponding video.
Additional texts for specific parts of the course are:
- On basic Bayesian statistics, Skilling & Sivia's Data Analysis: A Bayesian Tutorial.
- On advanced Bayesian statistics, Gelman's Bayesian Data Analysis.
- On inverse problems, Tarantola's Inverse problem theory.
- On surrogate modelling (especially Kriging) Forrester's, Engineering design via surrogate modelling.
- For an online UQ-programming course, see Bilionis's Introduction to UQ.
- Hastie, Tibshirani and Friedman The elements of statistical learning,
- Bishop's Pattern recognition and Machine Learning,
- David Barber's Bayesian reasoning and machine learning,
- Kevin Patrick Murphy's Machine Learning: a Probabilistic Perspective.
The course grade will be based 100% on an oral exam. In order to be eligible for the oral, you have to have (at least) attempted all the Python tutorials. These projects may be done alone or in pairs - orals are individual. The oral will be by preference in-person on-campus, unless you are really unable to attend in which case online is possible. We may ask questions on any part of the course. I will set aside a week, likely Week 4.10 in which orals can be scheduled.
Tutorials are due at regular intervals during the Quarter, and grades will be posted within a couple of days.
I've received from lecturers, a few requests for tips on how to make the kind of maths videos seen e.g. here. Since my lectures are quite maths-heavy, I took inspiration on style from Khan academy. I'm using Linux (Ubuntu), but for most of the software below there are Windows/MacOS versions.
Finding a setup that works well was quite a lot of effort, you'll need:
- A tablet - I'm using an old Wacom Bamboo that I inherited from our department secretary.
- A good quality microphone - I'm using the Blue Yeti.
- Drawing/doodling software.
- Screen recording software.
- Video editing software.
For drawing I just tried a few until I found one I liked. I looked for ones with customizable backgrounds (I wanted black), and keyboard-shortcuts for changing pen, erasing, etc., and found:
- Write - http://www.styluslabs.com (has Windows/Mac versions too) setup for the math expositions,
- Xournal - http://xournal.sourceforge.net (Linux only, supposedly similar to Windows "Journal") when I want to write on top of slides (it lets you load a background pdf).
My screenrecorder, the only requirement is that it works. Having a keyboard shortcut for starting and stopping saves time editing off the beginning and ends of the videos:
- SimpleScreenRecorder - https://www.maartenbaert.be/simplescreenrecorder (Linux only, but plenty of such software exists on other OSes).
And only after a lot of searching did I find an editor that worked well (some deleted sound, some cut at the wrong place, one took ~1 hour to save a video, all sorts of problems). This one is fine for cutting and combining videos, which is all I need:
- LossLessCut - https://github.com/mifi/lossless-cut (also Windows/Mac).
A special thanks to the developers of all these tools - this wouldn't have been possible without you!!!