Blog

Mapping high-dimensional Bayesian optimization using small molecules

June 21, 2024

It is written that animals are divided into those that belong to the Emperor, embalmed ones, those that are trained, suckling pigs, mermaids, fabulous ones, stray dogs, those that are included in this classification, those that tremble as if they were mad, innumerable ones, those drawn with a very fine camel’s hair brush, others, those that have just broken a flower vase, those that resemble flies from a distance. […] I have noted the arbitrariness of Wilkins, of the unknown (or apocryphal) Chinese encyclopedist, and of the Bibliographical Institute of Brussels; obviously there is no classification of the universe that is not arbitrary and conjectural. ...

Do Gaussian Processes scale well with dimension?

March 16, 2024

This blogpost assumes you’re already familiarized with the basics of Gaussian Processes. Check my previous blogpost for an introduction. [Update] Here’s a link to the (very unpolished) code I used for the experiments in this blogpost. It’s folk knowledge that Gaussian Processes (GPs) don’t scale well with the dimensionality of their inputs. Some people even claim that, if the problem goes beyond 20 input dimensions, then GPs fail to do regression well. ...

Bayesian Optimization using Gaussian Processes: an introduction

July 31, 2023

This blogpost is an adaptation of Chap. 3 in my dissertation. Check it out if you’re interested! Bayesian Optimization (BO) is a tool for black-box optimization. By black-box, we mean functions to which we only have access by querying: expensive simulations of the interaction between a molecule and a folded protein, users interacting with our websites, or the accuracy of a Machine Learning algorithm with a given configuration of hyperparameters. ...

Training a VAE on Super Mario Bros and playing its levels

May 23, 2022

We recently open sourced an implementation of a categorical VAE trained on levels from the classic game Super Mario Bros. In this blogpost I expand on how it works, and how it can be used to play content directly from latent space. This blogpost covers how the model is defined and how the simulator we provide can be used to automatically extract things like how many jumps were performed, or whether the level is solvable by an artificial agent. ...

On Stuttering

December 24, 2020

At the beginning of this year I was visiting a research group at another university to present my PhD thesis project. I already knew a couple members of the group, because they had already visited us here in Copenhagen. I went to their university, I met with them and we went to a meeting room to introduce me to the rest of the group. They introduced me, and things went on normally. ...

Translating measure theory into probability

December 15, 2020

Translating measure theory into probability # This post discusses how measure theory formalizes the operations that we usually do in probability (computing the probability of an event, getting the distributions of random variables…). With it, I hope to establish a translation table between abstract concepts (like measurable spaces and \(\sigma\) -additive measures) and their respective notions in probability. I hope to make these concepts more tangible by using a running example: counting cars and the Poisson distribution. ...

Creating Priors using Normal Noise

January 15, 2020

When modeling processes in a Bayesian framework, you start with a prior distribution \(\pi(x)\) and you update it when new information, \(b\) , arrives. This blogpost focuses on the creation of priors. These topics where taught to me on a PhD course at DTU in December, 2019. Many thanks to Daniela Calvetti and Erkki Somersalo for their lectures. It all starts with a function we’re trying to create, call it \(X: [0, 1] \to \mathbb{R}\) . ...

Creating a random graph from a string

October 25, 2019

I have been toying around with the idea of creating art using pseudorandom number generators. In this post, I talk about a script that takes as input a string and outputs a random graph. Here are some examples: In summary, I transform the string to ASCII character by character, add up all these values to get an integer, I plug it as a seed for numpy’s pseudorandom generator, and I construct a graph by sampling normal distributions and joining nearby neighbors. ...

A Link to my MSc Thesis

October 6, 2019

The title of this post is the title of my M.Sc. thesis, which I defended on Friday 27th, 2019. In this thesis I explore a method deviced by Niels Justesen, Sebastian Risi and I, called Behavioral Repertoires Imitation Learning. This method extends Imitation Learning by adding behavioral features to state-action pairs. The policies that are trained with this method are able to express more than one behavior (e.g. bio-oriented, mech-oriented) on command. ...

A tutorial on sc2reader: events and units

September 3, 2018

I want to construct a database for macro learning in StarCraft 2. One way to study replays and mine information from them is using pysc2, an API developed by DeepMind that is specially designed for Reinforced Learning. Nahren and Justesen developed a tool for mining replays using this API, but unfortunately the DeepMind’s API can only play replays that match the binary version of the game, and StarCraft 2 is being patched regularly, thus many “old” replays render unparsable. ...