/machine-learning-and-simulation

All the handwritten notes 📝 and source code files 🖥️ used in my YouTube Videos on Machine Learning & Simulation (https://www.youtube.com/channel/UCh0P7KwJhuQ4vrzc3IRuw4Q)

Primary LanguageJupyter NotebookMIT LicenseMIT

# Mathematics for Machine Learning and Simulation

DOI

Here you can find all the material of my YouTube Channel.

Overview

Most of my videos are in English but some content is also offered in German. You can find the hand-written notes in the folders, respectively.

These are the topics I cover at the moment:

  • English:
    • 🧑‍🏫 Math Basics (Playlist): Things that are usually not taught in (engineering) math courses but that are relevant for Machine Learning & Simulation like (inequality) constrained optimization, some tricks in linear algebra, functionals, functional derivatives etc.
    • Essential probability density/mass functions (Playlist): Standard discrete probability mass functions like Bernoulli & Categorical as well as continuous probability density functions like univariate and multivariate Gaussian/Normal together with their Maximum Likelihood Estimates, priors, posteriors, moments etc.
    • 🎲 Probabilistic Machine Learning (Playlist): All the way from directed graphical models, the EM algorithm and Variational Inference to Deep Generative Models like Variational Auto-Encoders, Generative Adversarial Networks and Latent Dirichlet Allocation
    • 🖥️ Miscellaneous Computer Science Topics (Playlist): Handy things that are relevant for some parts of Machine Learning and Simulation, like calling libraries in C from different languages like Julia or Python.
    • 💾 Sparse Matrices (Playlist): Different ways to implement sparse matrices that become relevant when dealing with (large) sparse linear systems arising in simulation problems like FEM & CFD. All formats include an implementation in the C programming language.
    • 🥔 Continuum Mechanics (Playlist): The Fundamentals of Structural & Fluid Mechanics relevant for deriving numeric schemes in CFD & FEM. From Eulerian & Lagrangian description of motion to stretch & strain measures, to stress measures, time derivatives and constitutive modelling.
    • 📉 Automatic Differentiation, Adjoints & Sensitivities (Playlist): Algorithms and Mathematical Tricks to differentiate through various computer codes. These can include explicit computation graphs (like in Neural Networks), implicitly given relations like Linear or nonlinear Systems or even Ordinary and Partial Differential equations. The applications are vast, ranging from differentiable physics to classical Deep Learning to Optimal Control. The derivations are accompanied by implementations in Python & Julia.
    • 🛠️ Fenics Tutorial (Playlist): A collection of videos to showcase the usage of the Fenics Finite Element Library to solve various Partial Differential Equations. Videos can be practical (including coding in Python) as well as theoretical on the Finite Element Method.
    • 🌊 Simulations simply implemented in Python or Julia (Playlist): My favorite series! If you ever wanted to write a Fluid Simulation from scratch, take a look at the playlist. Includes all kinds of simulations like CFD, Structural Mechanics, Electrodynamics etc.
    • 👶 Automatic Differentiation Primitive Rules (Playlist): Modern autodiff engines (like JAX, TensorFlow, PyTorch, Julia Zygote etc.) are based on the transformation of a computational graph by the transformation of its primitive operations. This playlist covers the rules (both for forward-mode and reverse-mode automatic differentiation) for the most important operations.
    • 🐍 Scientific Python Worksop (Playlist): Recording for a three-day introduction to Python and the most essential libraries for scientific computing and machine learning. Find the corresponding repo here
  • Deutsch:
    • 📏 Tensor Analysis (Playlist): Grundlegende und erweiterte Techniken zur Mehrdimensionalen Analysis mit einen Fokus auf Visualierungen.
    • ↗️ Gewöhnliche Differentialgleichungen (Playlist): Analytische und numerische Behandlung gewöhnlicher Differentialgleichungen, beginnend bei Trennung der Variablen und Variation der Konstanten bis hin zu Runge-Kutta Verfahren, Stabilitätsanalyse und Konvergenzuntersuchung.

These are topics I am going to cover in the long run:

  • English:
    • Basics:
      • Tensor Calculus
      • Automatic Differentiation
      • More on Probability mass/density functions
    • Modelling & Simulation:
      • Ordinary Differential Equations (ODEs)
      • Partial Differential Equations (PDEs)
      • Linear Finite Element Method
      • (Numerical) Control Theory
      • Computational Fluid Dynamics
      • Nonlinear Finite Element Method
      • Visualization Techniques
      • Constitutive Modelling of Solids
      • Constitutive Modelling of Fluids
      • Computational Viscoelasticity
      • Computational Plasticity
      • Uncertainty Quantification
    • Numerical Analysis:
      • Floating Point Error Analysis
      • Solving Linear Systems
      • Interpolation & Quadrature
      • Eigenvalue Computation
      • Solving Nonlinear Systems
      • Optimization Techniques
    • High-Performance Computing:
      • Essential topics of programming in parallel
      • A tour of the BLAS library
      • A tour of the lapack library
      • Parallel Numerics
      • PThread
      • OpenMP
      • MPI
      • CUDA
    • Machine Learning:
      • (Classical) Machine Learning
      • Dimensionality Reduction
      • Metrics in Machine Learning
      • Deep Learning
      • Markov-Chain Monte-Carlo Techniques

On top of that I have some ideas for projects. :)

Contribution

Contribution to this repo are always welcome. If you extended one of my source-codes for a more advanced example or if you think something is wrong or could have been explained better, feel free to open a Pull-Request to this repo. And of course if you can improve the code's performance (while maintaining readability), also feel free to open a pull request.

Donation

If you like the content of this repo, please consider becoming a Patreon