NEAT: Simple neuroevolution framework, in Rust

A month or so ago I started working on a neural network implementation in Rust, from scratch. I wasn’t interested in achieving the best performance, or having all the bells and whistles. I had a simple goal of understanding NEAT. For those of you that are not familiar with it, here’s a snippet from the Wikipedia :point_down:.

a form of artificial intelligence that uses evolutionary algorithms to generate artificial neural networks, parameters, topology and rules

What fascinated me is that the system starts from a totally random set of simple neural networks. Very often, the evolution finds the best architecture and weights in a relatively short amount of time. The first problem I wanted to solve was training the network to be a XOR gate. It managed to do that after a few days of me writing code and figuring out where the bugs were. I was very excited when I found out it evolved the output activation function to be a step function. It figured out the outputs are always round numbers. All by itself. Wow.

This thread was posted by one of our members via one of our news source trackers.

Corresponding tweet for this thread:

https://twitter.com/dev_talk/status/1350986412070481920

Share link for this tweet.


Related portal: