Live data from Hacker News

Neuroevolution of augmenting topologies (NEAT algorithm)

en.wikipedia.org

21–30 of 34 posts

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#21
If you like NEATs you might also want to have a look at PDGP by R. Poli.

This is a more traditional / general GP in the sense that it expresses computer programs rather than NNs specifically, but is graph based rather than tree based, in a way that allows one to add a "link set" on top of the "function set" and "terminal sets", allowing it to fully express neural networks as well as more general graph structures. And as the name implies, it lends itself well to parallel/distributed operations.

The big difference with NEATs is that your initial population is randomly generated programs rather than "base" networks ... but you could easily treat these programs in the same manner Koza used GPs to evolve circuits from "embryonic circuits" by having terminals act as circuit-modifying operations.

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#22
post #10
post #2

I post a link to NEAT here about once a week. The big problem is that NEAT can't leverage a GPU effectively at scale (arbitrary topologies vs bipartite graphs) Other than that, it feels like a "road not taken" of machine learning. It handles building complex agent behaviors really well, and pressure to minimal topology results in understandable and reverse interpretable networks. Its easier to learn and implement tha…

> The big problem is that NEAT can't leverage a GPU effectively at scale (arbitrary topologies vs bipartite graphs) Is that true? These graphs can be transformed into a regular tensor shape with zero weights on unused connections. If you were worried about too much time/space used by these zero weights, you could introduce parsimony pressure related to the dimensions of transformed tensors rather than on the bipartit…

Just because you can pack the topology into a sparse matrix doesn't make it actually go faster.

Sparse matrices often don't see good speedup from GPUs.

In addition, each network is unique, each neuron can have an entirely different activation function, and the topology is constantly changing. You will burn a lot on constantly re-packing into matrices that then don't see the same speedups a more wasteful topology pretends to have.

On the flip-side out narrative of "speedup" is on bipartite graphs crunch faster in gpus and it might not be the same if the basis is actually utility of behaviors generated by the networks. A cousin thread explores this better.

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#23
Some more interesting approaches in the same space:

- https://github.com/openai/evolution-strategies-starter

- https://cloud.google.com/blog/topics/developers-practitioner...

And perhaps most close:

- https://weightagnostic.github.io/

Which also showed that you can make NNs weight agnostic and just let the architecture evolve using a GA.

Even though these approaches are cool and NEAT even is somewhat easier to implement than getting started with RL (at least that is what based on so many AI Youtubers starting with NEAT first) they didn't ever seem to fully take off. Although knowing about metaheuristics is still a good tool to know IMO.

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#24
post #2

I post a link to NEAT here about once a week. The big problem is that NEAT can't leverage a GPU effectively at scale (arbitrary topologies vs bipartite graphs) Other than that, it feels like a "road not taken" of machine learning. It handles building complex agent behaviors really well, and pressure to minimal topology results in understandable and reverse interpretable networks. Its easier to learn and implement tha…

I never understood the appeal of NEAT. It's easy to conceive of mutation operators on fully connected layers instead of graphs of neurons and evaluate a lot faster. NEAT also seems to have at least a dozen hyperparameters.

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#25

Legendary Sethbling video from 2015 where he implemented NEAT for SMW: https://www.youtube.com/watch?v=qv6UVOQ0F44&t=1

That video inspired me to read the NEAT paper. I think that was the first scientific paper I ever printed out and read

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#26
post #2

I post a link to NEAT here about once a week. The big problem is that NEAT can't leverage a GPU effectively at scale (arbitrary topologies vs bipartite graphs) Other than that, it feels like a "road not taken" of machine learning. It handles building complex agent behaviors really well, and pressure to minimal topology results in understandable and reverse interpretable networks. Its easier to learn and implement tha…

I never understood the appeal of NEAT. It's easy to conceive of mutation operators on fully connected layers instead of graphs of neurons and evaluate a lot faster. NEAT also seems to have at least a dozen hyperparameters.

It mostly manages its hyperparameters itself.

There is a reward function, one of the hyperparameters we do have to set, for condensing functionality into topology instead of smearing it obscurely across laters. You can just look at a NEAT network analytically and know what is going on there.

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#29

Legendary Sethbling video from 2015 where he implemented NEAT for SMW: https://www.youtube.com/watch?v=qv6UVOQ0F44&t=1

Thanks for that link!

There is another video posted 7 months ago from Seth where he interviews Ken Stanley, the creator of the NEAT algorithm.

https://www.youtube.com/watch?v=5zg_5hg8Ydo

Re: Neuroevolution of augmenting topologies (NEAT algorithm)

#30
I did my high school senior project on NEAT! It was a c++ project set up as an "ants eating food" expermient where their miniscule brains learned over several iterations to go to the closest food and eat it.

I later did a version (in common lisp) where instead of an ant knowing where the nearest food was, it had a visual field extending forward that would feed as inputs to the NN. Then added predators, poisonous food items, etc etc. It was fascinating seeing it all unfold.

Genetic algorithms seem like a somewhat forgotten but very handy tool for ML. I've always wondered what the cost of running experiments on species/populations over and over for however many hundreds of iterations is compared to something like back propagation on a large network.

Post reply on HN