NEAT (Neuroevolution of Augmenting Topologies) is a genetic algorithm that combines neuroevolution and the evolution of neural network topologies. It was introduced by Kenneth O. Stanley and Risto Miikkulainen in 2002 as a method for evolving artificial neural networks (ANNs) with minimal human intervention.
NEAT addresses the challenge of designing neural network architectures by allowing the evolution of both the weights and the structure of the network. Traditional neuroevolution techniques typically use fixed neural network topologies and only evolve the weights of the connections. In NEAT, however, the topology of the network can change and evolve over time.
The NEAT algorithm begins with a population of randomly generated small networks with minimal structure. These initial networks are often referred to as "organisms." Each organism's neural network is initially composed of input nodes, output nodes, and no connections. During the evolutionary process, NEAT allows the networks to evolve by adding or removing nodes and connections.
The evolution in NEAT occurs through a process of selection, mutation, and crossover. The fitness of each organism is evaluated based on its performance in solving a specific task or problem. Organisms with higher fitness are more likely to be selected for reproduction.
Mutation plays a crucial role in NEAT. It introduces innovation by adding new nodes and connections to the networks. This allows the networks to grow in complexity over time. Mutation also affects the weights of the connections to refine the network's behavior.
Crossover, which is the genetic process of combining genetic material from two parents, is also utilized in NEAT. During crossover, matching genes (connections with the same historical origin) are inherited from the parents, while disjoint and excess genes are inherited randomly from one of the parents.
The novelty of NEAT lies in its ability to evolve both the structure and weights of neural networks simultaneously. This enables the algorithm to discover complex network topologies that can solve various tasks effectively.
NEAT has been applied to a wide range of problem domains, including control tasks, game playing, and robotics. It has demonstrated the ability to evolve neural networks that outperform manually designed architectures in certain scenarios and has contributed to the field of neuroevolution.