Tutorial: Evolution of Neural Networks

Risto Miikkulainen
The University of Texas at Austin and Cognizant Technology Solutions


Neuroevolution is a new and emerging area of reinforcement learning (RL). It is particularly useful in two areas:

  1. Tasks that require memory: Whereas the traditional value-function-based approach most naturally focuses on MDP problems and on maximizing lifetime reward, neuroevolution work focuses mostly on POMDP tasks and on maximizing reward at the end of learning. Knowledge of neuroevolution should therefore be valuable for researchers and students in robotics, intelligent agents, and multiagent systems.
  2. Deep learning: The performance of deep learning depends crucially on the network architecture and hyperparameters, and several techniques have been develop to optimize them. As a population-based search technique, neuroevolution can explore the search space widely, and therefore find innovative and surprising solutions that would be difficut to find with other techniques. Researchers and students working in learning in image processing, speech, language, and prediction and modeling of complex systems, should be able to use neuroevolution to improve their results.
In this tutorial, I will review (1) neuroevolution methods that evolve fixed-topology networks, network topologies, and network construction processes for POMDP tasks, (2) ways of combining gradient-based training with evolutionary methods to discover more powerful deep learning architectures, and (3) applications of these techniques in control, robotics, artificial life, games, image processing, and language.

Presentation Materials

Slides (in 4-up pdf, for GECCO 2020)
Video of the tutorial presentation (for GECCO 2020)
Demos (i.e. animations)

Neuroevolution Exercise

NERO is a video game where the player evolves neural network controllers for teams of non-player characters that engage in battle in a simulated environment. We do not have time to run this exercise during this 1.75hr tutorial, but you can do it on your own. It will take some 30mins to get the idea, and upto a few hours of training to build complex teams.

NERO Software

You need to download two components:

(1) NERO:
Mac version
Windows version (a possible problem and a fix)
32-bit Linux (suggestions for 64-bit linux).

(2) tutorial.cs.dso
The same file works in all platforms. You need to save it in your NERO application folder, replacing the tutorial.cs.dso there. That folder is
in MacOS: NERO-2.0/nero/client/scripts/
in Windows: Nero\2.0\nero\client\scripts (a possible problem and a fix)
in Linux: nero2_linux_i386/nero/client/scripts/

Running the Exercise

Start NERO by double clicking its icon in the main folder, or from the command line. Then click on "SINGLE PLAYER", "SIMPLE TUTORIAL", and hit the spacebar (you don't need to read the story). You'll see NERO loading the sandbox environment. In that environment, there is a text window that tells you what to do. In case you weren't able to install the tutorial.ps.dso file, you can follow the text here.

Towards the end of the exercise (e.g. after step 27) you may want to test your team against teams that other people have created. NERO comes with a number of such teams, or you can play against a few teams that people attending this tutorial created; you can get such teams from here; download a team file, place it in nero/data/saves/brains subdirectory, and then select it as an opponent in the battle mode. If you want to contribute your team to this archive, please email it to risto@cs.utexas.edu.

Further Reading

A Scholarpedia article on neuroevolution (includes links to neuroevolution software).
A survey article in Nature Machine Intelligence.
The NERO Game website.
The OpenNERO research and education platform (includes open-source version of the NERO game).

Last modified: Sat May 2 18:04:15 CDT 2020