Evolutionary Deep Learning
GENETIC ALGORITHMS AND NEURAL NETWORKS
MICHEAL LANHAM

{alt=”Book cover illustration”}

{alt=”Book title graphic or logo”}

{alt=”Decorative graphic”}
Brief Contents
| PART 1 | GETTING STARTED |
|---|---|
| 1 Introducing evolutionary deep learning | |
| 2 Introducing evolutionary computation | |
| 3 Introducing genetic algorithms with DEAP | |
| 4 More evolutionary computation with DEAP | |
| PART 2 | OPTIMIZING DEEP LEARNING |
| 5 Automating hyperparameter optimization | |
| 6 Neuroevolution optimization | |
| 7 Evolutionary convolutional neural networks | |
| PART 3 | ADVANCED APPLICATIONS |
| 8 Evolving autoencoders | |
| 9 Generative deep learning and evolution | |
| 10 NEAT: NeuroEvolution of Augmenting Topologies | |
| 11 Evolutionary learning with NEAT | |
| 12 Evolutionary machine learning and beyond |
Contents
- Preface
- Acknowledgments
- About this book
Optimizing the network architecture
-
What is automated machine learning?
- Model selection: Weight search
- Model architecture: Architecture optimization
- Hyperparameter tuning/optimization
- Validation and loss function optimization
- Neuroevolution of augmenting topologies
- Goals
2 Introducing evolutionary computation
- 2.1 Conway’s Game of Life on Google Colaboratory
- 2.2 Simulating life with Python
- Learning exercises
- 2.3 Life simulation as optimization
- Learning exercises
- 2.4 Adding evolution to the life simulation
- Simulating evolution
- Learning exercises
- Some background on Darwin and evolution
- Natural selection and survival of the fittest
- 2.5 Genetic algorithms in Python
- Understanding genetics and meiosis
- Coding genetic algorithms
- Constructing the population
- Evaluating fitness
- Selecting for reproduction (crossover)
- Applying crossover: Reproduction
- Applying mutation and variation
- Putting it all together
- Understanding genetic algorithm hyperparameters
- Learning exercises
3 Introducing genetic algorithms with DEAP
- 3.1 Genetic algorithms in DEAP
- One max with DEAP
- Learning exercises
- 3.2 Solving the Queen’s Gambit
- Learning exercises
- 3.3 Helping a traveling salesman
- Building the TSP solver
- Learning exercises
- 3.4 Selecting genetic operators for improved evolution
- Learning exercises
- 3.5 Painting with the EvoLisa
- Learning exercises
Chapter 4: More evolutionary computation with DEAP
4.1 Genetic programming with DEAP
Solving regression with genetic programming
Learning exercises
4.2 Particle swarm optimization with DEAP
Solving equations with PSO
Learning exercises
4.3 Coevolving solutions with DEAP
Coevolving genetic programming with genetic algorithms
4.4 Evolutionary strategies with DEAP
Applying evolutionary strategies to function approximation
Revisiting the EvoLisa
Learning exercises
4.5 Differential evolution with DEAP
Approximating complex and discontinuous functions with DE
Learning exercises
PART 2: OPTIMIZING DEEP LEARNING
Chapter 5: Automating hyperparameter optimization
5.1 Option selection and hyperparameter tuning
Tuning hyperparameter strategies
Selecting model options
5.2 Automating HPO with random search
Applying random search to HPO
5.3 Grid search and HPO
Using grid search for automatic HPO
5.4 Evolutionary computation for HPO
Particle swarm optimization for HPO
Adding EC and DEAP to automatic HPO
5.5 Genetic algorithms and evolutionary strategies for HPO
Applying evolutionary strategies to HPO
Expanding dimensions with principal component analysis
5.6 Differential evolution for HPO
Differential search for evolving HPO
Chapter 6: Neuroevolution optimization
6.1 Multilayered perceptron in NumPy
Learning exercises
6.2 Genetic algorithms as deep learning optimizers
Learning exercises
6.3 Other evolutionary methods for neurooptimization
Learning exercises
6.4 Applying neuroevolution optimization to Keras
Learning exercises
6.5 Understanding the limits of evolutionary optimization
Learning exercises
Chapter 7: Evolutionary convolutional neural networks
7.1 Reviewing convolutional neural networks in Keras
Understanding CNN layer problems
Learning exercises
7.2 Encoding a network architecture in genes
Learning exercises
7.3 Creating the mating crossover operation
7.4 Developing a custom mutation operator
7.5 Evolving convolutional network architecture
Learning exercises
PART 3: ADVANCED APPLICATIONS
Chapter 8: Evolving autoencoders
8.1 The convolution autoencoder
Introducing autoencoders
Building a convolutional autoencoder
Learning exercises
Generalizing a convolutional AE
Improving the autoencoder
8.2 Evolutionary AE optimization
Building the AE gene sequence
Learning exercises
8.3 Mating and mutating the autoencoder gene sequence
8.4 Evolving an autoencoder
Learning exercises
8 Variational autoencoders
8.5 Building variational autoencoders
Variational autoencoders: A review
Implementing a VAE
Learning exercises
9 Generative deep learning and evolution
9.1 Generative adversarial networks
Introducing GANs
Building a convolutional generative adversarial network in Keras
Learning exercises
9.2 The challenges of training a GAN
The GAN optimization problem
Observing vanishing gradients
Observing mode collapse in GANs
Observing convergence failures in GANs
Learning exercises
9.3 Fixing GAN problems with Wasserstein loss
Understanding Wasserstein loss
Improving the DCGAN with Wasserstein loss
9.4 Encoding the Wasserstein DCGAN for evolution
Learning exercises
9.5 Optimizing the DCGAN with genetic algorithms
Learning exercises
10 NEAT: NeuroEvolution of Augmenting Topologies
10.1 Exploring NEAT with NEAT-Python
Learning exercises
10.2 Visualizing an evolved NEAT network
10.3 Exercising the capabilities of NEAT
Learning exercises
10.4 Exercising NEAT to classify images
Learning exercises
10.5 Uncovering the role of speciation in evolving topologies
Tuning NEAT speciation
Learning exercises
11 Evolutionary learning with NEAT
11.1 Introducing reinforcement learning
Q-learning agent on the frozen lake
Learning exercises
11.2 Exploring complex problems from the OpenAI Gym
Learning exercises
11.3 Solving reinforcement learning problems with NEAT
Learning exercises
11.4 Solving Gym’s lunar lander problem with NEAT agents
Learning exercises
11.5 Solving Gym’s lunar lander problem with a deep Q-network
12 Evolutionary machine learning and beyond
12.1 Evolution and machine learning with gene expression programming
Learning exercises
12.2 Revisiting reinforcement learning with Geppy
Learning exercises
12.3 Introducing instinctual learning
The basics of instinctual learning
Developing generalized instincts
Evolving generalized solutions without instincts
Learning exercises
12.4 Generalized learning with genetic programming
Learning exercises
12.5 The future of evolutionary machine learning
Is evolution broken?
Evolutionary plasticity
Improving evolution with plasticity
Computation and evolutionary search
12.6 Generalization with instinctual deep and deep reinforcement learning
Appendix
Index
Preface
When I started my career in machine learning and artificial intelligence 25+ years ago, two dominant technologies were considered the next big things. Both technologies showed promise in solving complex problems and both were computationally equivalent. Those two technologies were evolutionary algorithms and neural networks (deep learning).
Over the next couple of decades, I witnessed the steep decline of evolutionary algorithms and explosive growth of deep learning. While this battle was fought and won through computational efficiency, deep learning has also showcased numerous novel applications. On the other hand, for the most part, knowledge and use of evolutionary and genetic algorithms dwindled to a footnote.
My intention for this book is to demonstrate the capability of evolutionary and genetic algorithms to provide benefits to deep learning systems. These benefits are especially relevant as the age of DL matures into the AutoML era, in which being able to automate the large and wide-scale development of models is becoming mainstream.
I also believe that our search for generalized AI and intelligence can be assisted by looking at evolution. After all, evolution is a tool nature has used to form our intelligence, so why can’t it improve artificial intelligence? My guess is we are too impatient and arrogant to think humanity can solve this problem on its own.
Acknowledgments
I would like to thank the open source community and, especially, the following projects:
- Distribution Evolutionary Algorithms in Python (DEAP)
- Gene Expression Programming Framework in Python (GEPPY)
- NeuroEvolution of Augmenting Topologies in Python (NEAT Python)
- OpenAI Gym
- Keras/TensorFlow
- PyTorch
Without the work and time others have tirelessly spent developing and maintaining these repositories, books like this wouldn’t be possible. These are also all excellent resources for anyone interested in improving their skills in EA or DL.
Thanks especially to my family for their ongoing support of my writing, teaching, and speaking endeavors. They are always available to read a passage or section and give me an opinion, be it good or bad.
Thanks to all the reviewers: Al Krinker, Alexey Vyskubov, Bhagvan Kommadi, David Paccoud, Dinesh Ghanta, Domingo Salazar, Howard Bandy, Edmund Ronald, Erik Sapper, Guillaume Alleon, Jasmine Alkin, Jesús Antonino Juárez Guerrero, John Williams, Jose San Leandro, Juan J. Durillo, kali kaneko, Maria Ana, Maxim Volgin, Nick Decroos, Ninoslav Čerkez, Oliver Korten, Or Golan, Raj Kumar, Ricardo Di Pasquale, Riccardo Marotti, Sergio Govoni, Sadhana G, Simone Sguazza, Shivakumar Swaminathan, Szymon Harabasz, and Thomas Heiman. Your suggestions helped make this a better book.
Finally, I would also like to thank Charles Darwin for his inspiration and courage to write his seminal work, On the Origin of Species. Being a very religious man, Charles wrestled internally for two decades, fighting between his beliefs and observation before deciding to publish his book. In the end, he demonstrated his courage and trust in science and pushed beyond his beliefs and the mainstream thought of the time. This is something I took inspiration from when writing a book that combines evolution and deep learning.
About This Book
This book introduces readers to evolutionary and genetic algorithms, from tackling interesting machine learning problems to pairing the concepts with deep learning. The book starts by introducing simulation and the concepts of evolution and genetic algorithms in Python. As it progresses, the focus shifts toward demonstrating value, with applications for deep learning.
Who Should Read This Book
You should have a strong background in Python and understand core machine learning and data science concepts. A background in deep learning will be essential for understanding concepts in later chapters.