Flappy Bird NEAT AI

Python, Neat AI Genetic Algorithm, Neural Network, Artificial Intelligence, Flappy Bird
English
English [Auto]
Neat AI Genetic Algorithm

Requirements

  • python installed
  • install modules like numpy,pygame,matplotlib and graphviz
  • pip install neat-python

Description

NeuroEvolution of Augmenting Topologies (NEAT) is a genetic algorithm (GA) for the generation of evolving artificial neural networks (a neuroevolution technique) developed by Ken Stanley in 2002 while at The University of Texas at Austin. It alters both the weighting parameters and structures of networks, attempting to find a balance between the fitness of evolved solutions and their diversity. It is based on applying three key techniques: tracking genes with history markers to allow crossover among topologies, applying speciation (the evolution of species) to preserve innovations, and developing topologies incrementally from simple initial structures ("complexifying").

Traditionally a neural network topology is chosen by a human experimenter, and effective connection weight values are learned through a training procedure. This yields a situation whereby a trial and error process may be necessary in order to determine an appropriate topology. NEAT is an example of a topology and weight evolving artificial neural network (TWEANN) which attempts to simultaneously learn weight values and an appropriate topology for a neural network.

In order to encode the network into a phenotype for the GA, NEAT uses a direct encoding scheme which means every connection and neuron is explicitly represented. This is in contrast to indirect encoding schemes which define rules that allow the network to be constructed without explicitly representing every connection and neuron allowing for more compact representation.

The NEAT approach begins with a perceptron-like feed-forward network of only input neurons and output neurons. As evolution progresses through discrete steps, the complexity of the network's topology may grow, either by inserting a new neuron into a connection path, or by creating a new connection between (formerly unconnected) neurons.

Competing conventions

The competing conventions problem arises when there is more than one way of representing information in a phenotype. For example, if a genome contains neurons A, B and C and is represented by [A B C], if this genome is crossed with an identical genome (in terms of functionality) but ordered [C B A] crossover will yield children that are missing information ([A B A] or [C B C]), in fact 1/3 of the information has been lost in this example. NEAT solves this problem by tracking the history of genes by the use of a global innovation number which increases as new genes are added. When adding a new gene the global innovation number is incremented and assigned to that gene. Thus the higher the number the more recently the gene was added. For a particular generation if an identical mutation occurs in more than one genome they are both given the same number, beyond that however the mutation number will remain unchanged indefinitely.

These innovation numbers allow NEAT to match up genes which can be crossed with each other

Who this course is for:

  • Python Developers
  • Game Developers
  • Bignner Python Developer
  • Computer Science Engineer

Course content

4 sections12 lectures39m total length
  • Introduction
    00:53
  • NEAT AI
    02:01

Instructor

Computer Science Engineer and Software developer
Vijay A
  • 4.2 Instructor Rating
  • 128 Reviews
  • 19,138 Students
  • 13 Courses

Computer Science Engineer and a Software Developer

I am interested in programming and love to code

i am a full stack developer

I perform or the environment in which they work: for example, database programmers, mainframe programmers, or web developers

Android Web development and participated in hackathons

other hobbies like singing,dancing,painting,content writing

other skills include type writing,computer networking and all about computers

Master in Databases,operating system,Networks,and

Software engineering