
Apprentissage automatique évolutionnaire : la neuroévolution cultive des réseaux de neurones qui apprennent en évoluant
⏱ 4 minL’apprentissage automatique s’intéresse aux méthodes de l’algorithmique évolutionnaire. La neuroévolution propose une nouvelle façon d’élaborer un réseau de neurones, qui apprend en évoluant, génération après génération.
Comme nous l’avons déjà signalé dans notre précédent article, les algorithmes évolutionnaires peuvent se rendre utile à différentes étapes et de diverses manières dans l’élaboration d’un modèle d’apprentissage. Une approche radicale vise à créer des réseaux de neurones qui apprennent en évoluant. Elle propose ainsi une voie nouvelle, divergente de l’apprentissage profond et de sa rétropropagation du gradient d’erreur, pour ouvrir un chapitre du mariage entre apprentissage artificiel et algorithmique évolutionnaire, aujourd’hui connu sous le nom de « neuroévolution ».
En deux mots, la neuroévolution consiste à élaborer des réseaux de neurones par sélection au sein d’une population qui évolue, génération après génération. Les premières tentatives de cette nature remontent aux années 1980 et 1990, époques où la puissance des machines limitait fortement les ambitions des pionniers. Au départ, les travaux portaient essentiellement sur des calculs visant à faire évoluer à l’aide d’algorithmes évolutionnaires, les poids d’un réseau de neurones dont l’architecture était fixée au départ.
UNE POPULATION DE RÉSEAUX DE NEURONES
On comprendra l’idée centrale de cette nouvelle forme d’IA en prenant un exemple simple où il s’agit précisément d’optimiser les poids d’un réseau de neurones dont l’architecture est prédéterminée. Soit donc une architecture de réseau de neurones toute simple, ainsi qu’une fonction d’évaluation, qui nous permettra de savoir à tout moment ce que vaut ce réseau quand on attribue certaines valeurs à ses poids synaptiques.
L’approche évolutionnaire implique que l’on va considérer non pas un, mais toute une population de réseaux. La topologie étant fixée, nous allons donc travailler sur cent ou mille exemplaires du jeu de poids synaptiques. Au départ, les valeurs sont attribuées aléatoirement. Commence alors le cycle des générations. Dans un premier temps nous évaluons, grâce à la fonction ci-dessus mentionnée, tous les individus de notre population. Ensuite, en mimant la dure loi du darwinisme, nous appliquons une « pression de sélection ». Les meilleurs, c’est-à-dire les plus adaptés (d’après notre fonction d’évaluation) survivent plus souvent que les autres, qui ont tendance à disparaître. Par exemple, on ne garde qu’un quart ou un cinquième des individus, choisis surtout parmi les meilleurs. Il n’est généralement pas souhaitable d’éliminer systématiquement les plus mauvais.
Dans un troisième temps, notre population réduite se reproduit jusqu’à atteindre la taille fixée. Selon notre exemple simplifié, la nouvelle génération est engendrée en dupliquant au hasard des survivants tout en introduisant aléatoirement des mutations. Ne reste plus qu’à boucler la boucle : la nouvelle génération est à son tour évaluée, sélectionnée, reproduite, etc. On peut ensuite décider d’en sortir après avoir par exemple atteint un nombre de générations prédéterminé ou quand émerge un réseau particulièrement performant.
NEAT ET SA DESCENDANCE
Une étape est franchie en 2002 lorsque Kenneth Stanley publie1 “NeuroEvolution of Augmenting Topologies (NEAT)”, un algorithme permettant de faire évoluer une population de réseaux d’architectures différentes et évolutives, non seulement par mutations mais également par recombinaisons, mimant ainsi la reproduction sexuée qui engendre une variation plus riche au sein des populations. À chaque génération, des mutations peuvent faire apparaître de nouveaux nœuds dans la descendance d’un individu-réseau et d’autres peuvent naître d’une combinaison des caractéristiques de deux parents.
Kenneth Stanley est alors étudiant à l’université du Texas à Austin. Après une dizaine d’années passées à l’université de Floride centrale, il intégrera les Uber AI Labs en 2017, puis OpenAI l’année dernière. NEAT a connu un succès certain et a engendré une riche descendance. De nombreuses publications ont proposé toutes sortes d’améliorations à l’algorithme initial, et NEAT est désormais le chef de file de toute une dynastie d’algorithmes. Citons HyperNEAT, publié par Kenneth Stanley lui-même en 2009, amélioré avec ES-HyperNEAT en 2012 et introduisant une nouvelle manière de coder les populations de réseaux qui permettent de travailler sur des architectures lourdes. Ou encore CoDeepNEAT, proposé en 2017 par Risto Miikkulainen et une équipe de l’université du Texas à Austin.
GAGNER EN EFFICACITÉ
En 2017, Tim Salimans et son équipe de OpenAI publient2 une nouvelle approche du problème, reposant sur une stratégie évolutionnaire naturelle (Natural Evolutionary Strategy, NES), variété d’une catégorie classique d’algorithmes regroupés sous le terme général de « stratégie évolutionnaire ». Ils atteignent des performances comparables à celles de réseaux obtenus par des solutions de deep learning, dans un contexte d’apprentissage par renforcement.
Une idée se propage dans le milieu de la neuroévolution : plutôt que d’ignorer superbement les atouts du deep learning, pourquoi ne pas jouer sur les deux tableaux et hybrider neuroévolution et rétropropagation ? Joel Lehman et son équipe des Uber AI Labs, animée par Kenneth Stanley, publient3 en 2018 une approche qui renoue avec le deep learning et son gradient d’erreur et propose une méthode pour éviter les mutations catastrophiques. Cette solution améliore l’efficacité du processus et permet de faire évoluer des réseaux de neurones de grande taille.
La neuroévolution propose une nouvelle manière de construire des réseaux de neurones qui apprennent en s’inventant, au sein de populations régies par les principes du darwinisme. Cette approche commence même à se montrer compétitive en termes d’efficacité. Mais elle n’est que l’un des chapitres de cette jeune discipline qu’est l’apprentissage automatique évolutionnaire, qui trace sa route et pourrait réserver d’autres surprises. Nous aurons sans doute l’occasion d’y revenir.
Pierre Vandeginste
Image en une : ©Creative Commons
1. Kenneth Stanley, Risto Miikkulainen. “Evolving Neural Networks Through Augmenting Topologies”. Evolutionary Computation, 2002. utexas.edu
2. Tim Salimans et al. “Evolution Strategies as a Scalable Alternative to Reinforcement Learning”. arxiv.org
3. Joel Lehman et al. “Safe Mutations for Deep and Recurrent Neural Networks through Output Gradients”. GECCO’18. doi