Backstory
The first thing that got me into machine learning was MarI/O. I was absolutely blown away at how such a basic set of elements (neurons) could be connected in a way that made Mario blaze through the level unscathed. Even more mind blowing was that this set of connections could be obtained through an evolutionary process. No direct design. Just trial and error and environmental pressures. Ever since then, I have been obsessed with evolutionary optimization methods and have tried to sneak them into my work whenever I can.
These days, much of the work being done with neural networks seems to favor the almighty back propagation algorithm, and for good reason. Evolutionary methods can be very sample inefficient, resulting in significantly worse performance as compared to back propagation for the same number of training passes. Back propagation based methods are able to do something truly amazing. They constantly move towards a better solution in way that also seemingly avoids local optima. The only catch is that they require that the network be differentiable.
As the current explosion of AI took off, I drifted away from neuroevolution and spent my time learning about other kinds of interesting emergent phenomenon. I never stopped being interested in it so I would check in on what people in the field have been up to, but the massive success of the current back propagation paradigm made the application side of it seem niche.
In come spiking neural networks. I don’t know how, but up until a couple weeks ago I did not know that these existed. Instead of outputting a single continuous value, the neurons in a spiking neural network output discrete spatio-temporal spikes. There are many pros/cons to these kinds of networks (many of which I am still learning about), but one of the biggest drawbacks is that it is not differentiable. More precisely, its derivatives are either zero or undefined which ends up blocking the gradient flow required by back propagation. Furthermore, because the SNNs process information over time, doing back propagation would require storing states across multiple time steps. Evolutionary methods have neither of these problems. This makes SNNs seem like a great place to get some experience with neuroevolution.