JEPA explained
We are going to take a short look at the joint-embedding predictive architecture (JEPA). JEPA is a form of self-supervised learning (SSL) whose basic idea is the prediction between latent space rep...
We are going to take a short look at the joint-embedding predictive architecture (JEPA). JEPA is a form of self-supervised learning (SSL) whose basic idea is the prediction between latent space rep...
In this blog post, we will briefly discuss image-based self-supervised learning (SSL). This allows one to learn a useful data representation based on automatically generating a supervisory signal f...
This post gathers a few short notes on Git pre-commit hooks. Before changes are committed to a Git repository, such hooks may automatically check or format the new code. In this way, one can enforc...

This blog post contains a brief introduction to conformal prediction (CP), a statistical framework for uncertainty quantification in machine learning [Vovk et al., 2022]. The uncertainty of model p...
My whole academic experience was focused on tabular data in one way or another, whereas I have spent most of my career in industry working with computer vision foundation models. The recent impleme...
This is a quick post on Ruff, a modern, fast linter and formatter for Python. I’ve only recently integrated Ruff into my personal workflow and wanted to collect a few notes about basic usage here. ...
I’ve recently started exploring GeoPandas, a great Python library for working with geospatial data. It combines the convenience of pandas for handling tabular data with the capabilities of shapely ...

After the previous post on energy-based models (EBMs) and the Boltzmann distribution, we will now explore a classical family of such generative models. They are known as Boltzmann machines and have...
There are intriguing connections between machine learning and physics. A full appreciation of those formal relationships and analogies is probably beyond my little (remaining) understanding of phys...
It turns out that blog-posting Jupyter notebooks with Jekyll (and the Beautiful Jekyll theme) is enjoyably simple. One just needs to follow the instructions below. 1. Convert notebook The first s...
A brief introduction to generative diffusion modeling is provided in this blog post. In particular, the discussion focuses on the denoising diffusion probabilistic model (DDPM) [Sohl-Dickstein et a...

This blog post contains a tutorial on the variational autoencoder (VAE). Since its introduction by [Kingma and Welling, 2014, Rezende et al., 2014], the framework has received much attention for it...
An introduction to Gaussian process modeling is given in this short note. Gaussian processes for example enable regression with built-in uncertainty quantification. Gaussian processes A Gaussian ...
The idea of using neural networks (NNs) for solving partial differential equations (PDEs) has been around for some time [Dissanayake and Phan-Thien, 1994; Lagaris et al., 1998]. Following the advan...
This blog post gives a brief introduction to attention in deep neural nets. Attention establishes a mechanism that allows a model to make predictions based on selectively attending to different ite...

This blog post provides an overly brief introduction to contrastive representation learning. In particular, we restrict the discussion to the contrastive loss [Hadsell et al., 2006] and the triplet...

The existence of adversarial examples for neural networks has been first observed in the context of image classification [Szegedy et al., 2014]. There are many great review papers on adversarial at...
This is my attempt at starting a blog. It will be mainly concerned with machine learning, neural networks, computer vision and generative AI. Further topics could include music, biking or parenting...