A library for generating machine learning figures and illustrations
April 20, 2019

To better visualize a machine learning model, it is useful to create diagrams and figures of your models. I have published a python library called AIFIG which is intended for this purpose.

Raymarching and fractals in three dimensions
March 12, 2019

Raymarching is a variation of raytracing in which the length of steps for each ray is not constant. This technique is well suited for fractals in three dimensions because we can easily define distance estimators in folded space and expoit them to efficiently render complex details. This article describes briefly how this works, and presents several examples of fractals I have produced.

Complex emergent flocking behavior
February 20, 2019

Many animals such as birds and fish exhibit complex flocking behaviors in nature. Boids is an artificial life simulation which attempts to capture some of these flocking attributes. Interestingly, very complex behavior can emerge from a group of individually acting entities following simple rules. This article describes my implementation briefly, and contains several visualizations of interesting flocking behaviors I have observed.

Proximal Policy Optimization - teaching a biped how to walk
February 10, 2019

PPO is a powerful reinforcement learning algorithm which attempts to estimate the policy directly based on running estimates of action advantages. This article describes my intuitions behind how PPO works, as well as my results in training a biped to walk using proximal policy optimization with objective clipping.

Experiments with variational autoencoders and latent space interpolation
February 06, 2019

Variational autoencoders attempt to encode high dimensional data such as images into smaller, normally distributed latent vectors. These representations can then decoded and reconstructed. This article describes my VAE experiments and results.

Landing on the moon using deep Q learning and experience replay
February 02, 2019

The OpenAI lunar lander environment is an exciting way to test reinforcement learning algorithms. My solution uses deep Q learning with experience replay to solve the discrete lunar lander task after 1500 episodes of training.

Creating new pokemon using a generative adversarial network
February 01, 2019

The goal for this project was to train a generative adversarial network to create new pokemon sprites. The task proved quite difficult, due to the large variance in the dataset. Results are however insightful.

New website design with an emphasis on written content
January 31, 2019

I've redesigned my website to move the focus from games to articles and other written content. The main focus will be machine learning and techniques in artificial intelligence, but other topics may be relevant as well.