This book, written by leading international researchers of evolutionary approaches to machine learning, explores various ways evolution can address machine learning problems and improve current methods of machine learning. Topics in this book are organized into five parts..
Intro // Preface // Acknowledgments // Contents // Contributors // Part I Evolutionary Machine Learning Basics // 1 Fundamentals of Evolutionary Machine Learning // 1.1 Introduction // 1.2 A Definition of Evolutionary Machine Learning // 1.3 A History of EML // 1.3.1 EC Applied to ML Methods // 1.3.2 EC Applied to ML Problems // 1.4 A Taxonomy of EML // 1.4.1 EC for ML Methods // 1.4.2 ML for EC Methods // 1.4.3 EC for ML Problems // 1.5 Discussion of Main Branches of the Field // 1.5.1 Neuroevolution // 1.5.2 Learning Algorithms // 1.5.3 Learning Results // 1.5.4 Ethical Aspects // 1.6 Open Problems // References // 2 Evolutionary Supervised Machine Learning // 2.1 Introduction // 2.2 Evolving General Neural Network Designs // 2.2.1 Compact Neural Networks // 2.2.2 Deep Networks // 2.3 Evolving Explainable Solutions // 2.3.1 Decision Trees // 2.3.2 Learning Classifier Systems // 2.3.3 Genetic Programming // 2.3.4 Rulesets // 2.4 Evolutionary Metalearning // 2.4.1 Neural Architecture Search // 2.4.2 Beyond Architecture Search // 2.5 Conclusion // References // 3 EML for Unsupervised Learning // 3.1 Introduction // 3.2 Main Concepts // 3.2.1 Data Preparation // 3.2.2 Outlier or Anomaly Detection // 3.2.3 Dimensionality Reduction // 3.2.4 Association Rule Mining // 3.3 EML for Data Preparation // 3.3.1 EML for Instance Selection // 3.3.2 EML for Feature Discretization // 3.3.3 EML for Imputation // 3.3.4 EML for Dimensionality Reduction // 3.3.5 EML for Outlier or Anomaly Detection // 3.3.6 EML for Association Rule Mining // 3.4 Conclusions // References // 4 Evolutionary Computation and the Reinforcement Learning Problem // 4.1 Introduction // 4.2 Machine Reinforcement Learning // 4.2.1 Reinforcement Learning Algorithms // 4.2.2 Evolutionary RL Algorithms // 4.3 Complex Evaluations // 4.3.1 Incremental Growth // 4.3.2 Dynamic Inference Complexity //
4.3.3 Sensor Space Selectivity // 4.3.4 Parallel Algorithms and Hardware Acceleration // 4.3.5 Discussion and Open Challenges // 4.4 Exploration and Temporal Credit Assignment Ambiguity // 4.4.1 Exploration // 4.4.2 Credit Assignment // 4.4.3 Discussion and Open Challenges // 4.5 Partial Observability in Space and Time // 4.5.1 Discussion and Open Challenges // 4.6 Non-stationary and Multi-Task Environments // 4.6.1 Discussion and Open Challenges // 4.7 Transformational Learning and Hierarchical Decomposition // 4.7.1 Transfer Learning // 4.7.2 Hierarchical Reinforcement Learning // 4.7.3 Discussion and Open Challenges // 4.8 Conclusion // References // Part II Evolutionary Computation as Machine Learning // 5 Evolutionary Regression and Modelling // 5.1 Introduction // 5.2 Evolutionary Computation for Regression: Fundamentals // 5.2.1 Evolutionary Computation for Learning Coefficients for Regression // 5.2.2 Genetic Programming for Symbolic Regression // 5.2.3 Learning Classifier Systems for Regression and Function Approximation // 5.3 Genetic Programming for Symbolic Regression: Generalisation // 5.3.1 Representation // 5.3.2 Gradient Descent Search for Learning/Optimising Constants in GP Evolved Programs // 5.3.3 Complexity Measures and VC Dimension // 5.3.4 Multi-objective Approaches // 5.3.5 Lexicase Selection // 5.4 Semantic GP for Regression // 5.4.1 Semantics in GP // 5.4.2 Geometric Semantic GP // 5.4.3 Angle-Aware Geometric Semantic Operators // 5.5 GP for Regression with Incomplete Data // 5.5.1 Imputation Methods // 5.5.2 Interval Functions // 5.5.3 Instance Selection and Feature Selection // 5.5.4 Transfer Learning // 5.6 Interpretable GP/Evolving Interpretable Models for Regression // 5.6.1 Representation // 5.6.2 Offline and Online Program Simplification // 5.6.3 Feature Selection // 5.7 LCSs for Symbolic Modelling // 5.8 Summary //
References // 6 Evolutionary Clustering and Community Detection // 6.1 Introduction // 6.2 Unsupervised Learning Scenarios // 6.3 Cluster Analysis and Community Detection // 6.4 Practical Challenges and Opportunities for Evolutionary Computation // 6.4.1 Solution Representation // 6.4.2 Objective Functions // 6.4.3 Model Selection // 6.4.4 Choice of Optimizer // 6.5 Final Perspectives // References // 7 Evolutionary Classification // 7.1 Introduction // 7.2 Evolutionary Computation (EC) for Classification: Fundamentals // 7.2.1 GP for Classification: Binary Versus Multi-class Classification // 7.2.2 Learning Classifier Systems for Classification // 7.2.3 Vector-Based EC Algorithms for Classification // 7.2.4 Evolutionary Data Reduction for Classification // 7.3 GP for Multi-class Classification // 7.3.1 Program Class Translation Based on Single Evolved Tree-Based Programs // 7.3.2 Strongly Typed GP for Multi-class Classification // 7.3.3 Multi-tree GP for Multi-class Classification // 7.3.4 Linear GP for Multi-class Classification // 7.4 GP for Classification with Missing Data // 7.4.1 GP-Based Imputation // 7.4.2 GP-Based Classifier // 7.5 GP for Classification with Unbalanced Data // 7.5.1 Fitness Measures // 7.5.2 Cost-Sensitive Methods // 7.5.3 Ensemble Learning // 7.6 Genetic Programming for Explainable/Interpretable Classifiers // 7.6.1 Model-Based GP for Classification // 7.6.2 Post-hoc Interpretability GP for Classification // 7.7 Advanced Topics // 7.7.1 Evolutionary Transfer Learning for Classification // 7.7.2 Evolutionary Surrogate Models // 7.7.3 Evolutionary Deep Structures // 7.8 Conclusions // References // 8 Evolutionary Ensemble Learning // 8.1 Introduction // 8.2 Ensembles for Supervised Learning // 8.2.1 Diversity Maintenance in Supervised Evolutionary Ensemble Learning // 8.2.2 Discussion // 8.3 Level of Selection //
8.4 Multi-agent Systems and Cooperative Coevolution // 8.4.1 Diversity Maintenance // 8.4.2 Task Transfer // 8.4.3 Hybrid Homogeneous-Heterogeneous Multi-agent Systems // 8.5 Ensembles with Variable Size-Structures // 8.5.1 Variable Size Ensembles Through Symbiosis // 8.5.2 Tangled Program Graphs // 8.6 Applications and Future Research // 8.7 Discussion // References // Part III Evolution and Neural Networks // 9 Evolutionary Neural Network Architecture Search // 9.1 Introduction // 9.2 ENAS Algorithms: Fundamentals and Step-by-step Example // 9.2.1 Core Components of ENAS // 9.2.2 Step-by-Step Design of an ENAS Algorithm // 9.3 Discussions of State-of-the-art ENAS // 9.3.1 Search Space // 9.3.2 Search Strategy // 9.3.3 Fitness Evaluation // 9.4 Advanced Topics // 9.4.1 Benchmarks of ENAS // 9.4.2 Efficient Evaluation // 9.4.3 Resource-Constraint ENAS // 9.4.4 Interpretability of ENAS // 9.4.5 Theoretical Analysis of ENAS // 9.5 Conclusions // References // 10 Evolutionary Generative Models // 10.1 Introduction // 10.2 Fundamentals // 10.3 Taxonomy // 10.4 Historical Overview // 10.4.1 Evolutionary Computation Without Machine Learning // 10.4.2 Evolutionary Computation Aided by Machine Learning // 10.4.3 Machine Learning Aided by Evolutionary Computation // 10.4.4 Machine Learning Evolved by Evolutionary Computation // 10.5 Evolutionary Computation Without Machine Learning // 10.6 Evolutionary Computation Aided by Machine Learning // 10.7 Machine Learning Aided by Evolutionary Computation // 10.8 Machine Learning Evolved by Evolutionary Computation // 10.9 Open Problems and Challenges // 10.9.1 How to Represent the Space of Solutions Generated by the Model? // 10.9.2 How to Navigate the Generated Space of Solutions? // 10.9.3 How to Evaluate the Generative Capabilities of a Model? // 10.9.4 How to Compare Evolutionary and Non-evolutionary Models? //
10.9.5 How to Improve the Computational Efficiency and Scalability of Evolutionary Generative Models? // 10.9.6 How to Improve the Interaction of Evolutionary Generative Models? // 10.9.7 How to Increase the Availability of Evolutionary Generative Model Systems? // 10.10 Conclusions // References // 11 Evolution Through Large Models // 11.1 Introduction // 11.2 Background // 11.2.1 Genetic Programming // 11.2.2 Large Language Models // 11.2.3 Open-Endedness // 11.3 Approach: Evolution Through Large Models // 11.3.1 Mutation Through Diff // 11.3.2 The Evolutionary Algorithm and Implications for Open-Endedness // 11.3.3 Fine-Tuning the Diff Operator // 11.4 Experiment and Results // 11.4.1 Encoding Sodaracers with Python // 11.5 Pipeline Stage 1: Data Generation Through ELM // 11.5.1 Experimental Details and Results // 11.6 Pipeline Stage 2: Language Model Training // 11.7 Pipeline Stage 3: Conditional RL // 11.7.1 Terrain Distributions // 11.7.2 Parametrizing TENs // 11.7.3 Experimental Details and Results // 11.7.4 Qualitative Observations // 11.8 Discussion and Conclusion // References // 12 Hardware-Aware Evolutionary Approaches to Deep Neural Networks // 12.1 Introduction // 12.2 Hardware Platforms for Efficient Processing of DNNs // 12.2.1 Convolutional Layers // 12.2.2 DNN Accelerators: Temporal Architecture // 12.2.3 DNN Accelerators: Spatial Architecture // 12.2.4 Hardware Simulators and Performance Predictors // 12.3 Evolutionary Optimization in DNN Hardware Accelerators // 12.3.1 Evolutionary Design of Components of Hardware Accelerators // 12.4 NAS Considering the Target Hardware // 12.4.1 HW-Aware Evolutionary NAS // 12.4.2 NAS with Hardware Co-design // 12.5 Conclusions and Open Challenges // 12.5.1 Benchmarking and Reproducibility // 12.5.2 Security and Reliability // 12.5.3 Unconventional Hardware Platforms // 12.5.4 Design Cost // References