Welcome!

An unsolicited collection of random notes on machine learning, maths and algorithms. Now with nice pics! 🌈

My attempt at string art

String art is a technique to draw by weaving a string between pins, obtaining a picture entirely composed of straight lines. Its origins are probably ancient, but a computational approach to produce photorealistic results has been popularized by artist Petros Vrellis in 2016. I have recently stumbled upon a blog post by Possibly Wrong about this topic, and I decided to give it a go myself, before looking at any other implementation....

2022-07-09 · 11 min · Gabriele Balletti

Piecewise linear activations: Machine Learning meets Tropical Geometry (Part 2)

In the previous post we gave an introduction to Tropical Geometry. We spoke about tropical varieties, why it makes sense to define them the way they are defined, and how their Newton polytopes can be used to deduce information about their combinatorial structure. We now talk about how these tools can be used to get a better understanding of decision boundaries of neural network and how they are influenced by the structure of the network....

2022-06-20 · 9 min · Gabriele Balletti

Piecewise linear activations: Machine Learning meets Tropical Geometry (Part 1)

Activation functions decide what is to be fired to the following neuron in a neural network depending on the input signal received. Since they generally are the only nonlinear component in a model architecture, they are what truly allows networks to learn complex patterns, as without them network would only approximate linear functions (and most of their structure would be redundant). Although traditionally the sigmoid was the most common choice for an activation function, in modern neural network the default recommendation is to use the Rectified Linear Unit (ReLU) defined as $x \mapsto \max(0,x)$, or a more general Leaky ReLU $x \mapsto \max(ax,x)$, or a even more general Maxout unit....

2022-05-16 · 14 min · Gabriele Balletti

MeshCNN: a convolutional neural network for meshes

This post is an adaptation of my notes for a presentation I have recently given. All pictures are from the authors’ paper presentation page. Some time ago, while working on a mesh segmentation problem I found a very interesting paper which was presented at SIGGRAPH 2019 called MeshCNN: A Network with an Edge. The main result of the paper is to define convolution and (un)pooling operations on triangular meshes with the goal of allowing CNN techniques while preserving the connectivity information that would be lost if the 3D object was represented for example as a point cloud or with voxelization....

2022-04-21 · 4 min · Gabriele Balletti

Minkowski sums and the GJK algorithm

The Gilbert-Johnson-Keerthi algorithm is a fast and efficient way to compute a pair of closest point between two convex objects, and - in particular - to find out if they have a common intersection or how far from each other they are. The main idea on which the algorithm is based is simple and beautiful, as it uses the concept of Minkowski sum (difference, in this case) to transform and simplify a problem between two bodies in a problem between a single body and a point....

2021-08-01 · 7 min · Gabriele Balletti