Neuroevolution

Neuroevolution, or neuro-evolution, is a form of machine learning that uses genetic algorithms to train artificial neural networks. It is useful for applications such as games and robot motor control, where it is easy to measure a network's performance at a task but difficult or impossible to create a syllabus of correct input-output pairs for use with a supervised learning algorithm.

There are many neuroevolutionary algorithms. A distinction is made between those that evolve the values of the connection weights for a network of pre-specified topology, vs. those that evolve the topology of the network in addition to the weights. Although there are no standardized terms for this distinction as a whole, adding or removing a network's connections during evolution is often referred to as complexification or simplification, respectively. Networks that evolve both the connection weights and the topology are sometimes called TWEANNs (Topology & Weight Evolving Artificial Neural Networks).

Direct encoding methods use floating-point numbers in the genetic algorithm's chromosomes to specify directly every value of a network's connection weights. Indirect encoding methods, which do not explicitly store every weight in each genome, are also possible.