Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 071...
-
Upload
micheline-clement -
Category
Documents
-
view
107 -
download
0
Transcript of Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 071...
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
1
Programmation Génétique Avancée
Pierre COLLETLaboratoire du Littoral - Calais
Université du Littoral Côte d’Opale
Ecole d’Eté Evolution ArtificielleYravals 2007
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
2
Présentation de 9 papiers récents
Opérateurs mal protégés (2004)
Détection du surapprentissage (2006)
Lutte contre le bloat par op. gén. multiples (2005)
Sur la spécialisation du Xover pour lutter contre le bloat (2007, à paraître)
Lutte contre la convergence prématurée par découpage de la population en tranches d’âge (ALPS) (2006)
Exploration exhaustive (2006, 2006)
Accélération par gestion de cache (2004)
Optimisation du jeu de primitives utilisé (2004)
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
3
Opérateurs mal protégésM. Keijzer, « Improving Symb. Regression with Interval Arithmetic and
Linear Scaling », EuroGP’04
Programmation génétique standard :– Racine carrée = |x|– Logarithme = ln(|x|)– …– Mais : division protégée = 1 si dénominateur nul
x/y sinon
Ce n’est pas sans conséquences possibles…
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
4
Opérateurs mal protégés
La protection simple des opérateurs peut conduire à des problèmes de généralisation :
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
5
Opérateurs mal protégésSolution : Interval Arithmetic. A tout nœud ou feuille, on
ajoute 2 paramètres, une borne inférieure et une borne supérieure.– Si la feuille est une constante, inf=sup=3.4– Si la feuille est une variable d’entrée x, inf=valeur inférieure de x et
sup=valeur supérieure de x.– Si le nœud est une addition entre x et y :
» inf=inf(x)+inf(y), sup=sup(x)+sup(y)
– Si le nœud est une multiplication entre x et y :» inf=min(inf(x)inf(y),inf(x)sup(y),sup(x)inf(y),sup(x)sup(y))» sup=sup(inf(x)inf(y),inf(x)sup(y),sup(x)inf(y),sup(x)sup(y))
– Si le nœud est une division entre x et y :» inf=min(inf(x)/inf(y),inf(x)/sup(y),sup(x)/inf(y),sup(x)/sup(y))» sup=sup(inf(x)/inf(y),inf(x)/sup(y),sup(x)/inf(y),sup(x)/sup(y))
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
6
Opérateurs bien protégés
Et maintenant pour en revenir à la division :Si l’on connaît les bornes des opérandes, on peut s’assurer que pour x/y, inf(y) est du même signe que sup(y) et que ni l’un ni l’autre ne valent 0.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
7
Détection du surapprentissageC. Gagné, M. Schoenauer & al., « GP, Validation Sets and Parsimony Pressure », EuroGP’06
Surapprentissage : au delà d’un certain stade, la fitness continue à augmenter sur le jeu d’apprentissage, mais la fitness baisse sur un jeu de test : encore un pb de généralisation !
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
8
Détecter le surapprentissage et évaluer le meilleur individu
Il faut 3 jeux de données indépendants :1. Un jeu d’apprentissage2. Un jeu de test3. Un jeu d’évaluation
Faire évoluer les individus sur le jeu d’apprentissage.
Tester le surapprentissage sur le jeu de test. Lors de la détection du surapprentissage,
évaluer le meilleur individu sur le jeu d’évaluation
(qui n’a pas participé à la détermination du meilleur individu)
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
9
Lutte constructive contre le bloat
J. Stevens, R. Heckendorn, T. Soule, « Exploiting Disruption Aversion to Control Code Bloat », Gecco’05
Représentation de taille variable = apparition possible de bloat. Interprétation :– Au début de l’évolution, il est plus simple d’améliorer des
petits individus, car moins de matériel génétique à optimiser. » Résultat : individus pas très bons mais généralisant bien.
– Puis, plus possible d’améliorer simplement les individus : la PG crée des verrues pour approximer chaque point : surapprentissage / bloat.
– Le bloat permetrait aux individus de se protéger du Xover (mais aussi d’autres raisons probabilistes à son apparence, cf. présentation suivante)…
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
10
Lutter contre le bloat (parcimonie) Beaucoup de propositions destructrices :
– Pas d’arbres de profondeur > 17 (pourquoi 17 ?)
– Tarpeian GP (R. Poli) : on donne une très mauvaise note aux gros individus.
– …
Pourquoi pas une lutte constructive ?– Les opérateurs génétiques font évoluer les
individus, mais sont destructeurs…
– Proposition : application d’opérateurs génétiques avec une probabilité par nœud (= plusieurs croisements possibles pour 1 seul enfant !)
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
11
Distrib. de la taille des individus en PG.
Cette belle formule donne la distribution de la taille des arbres d’une population de PG ayant évolué par croisement standard (sous-arbres) avec sélection uniforme des loci et sans sélection (fitness)
R. Poli & al., « Generalization of the Limiting Distribution of Program Sizes in Tree-Based
Genetic Programming and Analysis of its Effects on Bloat », GECCO’07
Comparaison entre la distribution théorique et empirique d’arbres d’arité mixte 1, 2, 3, 4 après 500 générations, taille moyenne initiale 25.37 (prof. 3, en full).
Axe des Y : fréquence (échelle log).
Axe des X : Nb de nœuds (0 à 100).
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
12
Modif de la taille initiale des ind.Distribution de probabilité pour tailles initiales de 5, 10, 20, 40, 200
De plus si on introduit une fitness après avoir fait évoluer une population par Xover seul… 55
1010
2020
200200
… un phénomène de bloat apparaît plus rapidement sur les populations déjà évoluées, si le problème requiert une taille supérieure aux individus créés majoritairement… (car les petits individus se font éliminer rapidement)
0 gen avant 0 gen avant intro de la fitnessintro de la fitness
2020
5050
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
13
Créer un croisement spécifique
Conclusion : si on a la chance de connaître la taille en dessous de laquelle les individus ne pourront pas donner de bonnes solutions (11 pour la fourmi artificielle, par ex…)
Il faut créer un croisement favorisant les individus de taille >= 11 sous peine de… bloat ! (ce qui va contre l’intuition), car sinon, tous les petits individus vont rapidement se faire éliminer au profit d’individus bien plus gros…
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
14
Lutte contre la convergence prématurée
La PG converge très vite (dans les modèles panmictiques)…, d’où l’idée de créer des niches écologiques, mais comment ?Age Layered Population Structure (ALPS):– On découpe la population totale en n tranches d’âge.– La population initiale démarre à l’âge 0.– Un individu a l’âge de ses gènes : l’âge donné à un enfant est l’âge de son
plus vieux parent +1.– Chaque individu utilisé pour créer un enfant voit son âge incrémenté de 1
(une fois par génération).– Chaque tranche d’âge est déterminée de manière polynomiale, ou
exponentielle, ou … ex : 20, 40, 80, 160… pour un « age-gap » de 20.– Les individus ne peuvent se reproduire qu’avec d’autres individus de leur
même tranche d’âge ou de la tranche juste inférieure.
G. S. Hornby, « ALPS: The Age Layered Population Structure for Reducing the Problem of Premature Convergence », GECCO’06
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
15
ALPS : Fonctionnement Ex: 10 tranches de 100 individus (= population de 1000 individus). « Age-gap » de 20, et tranches « linéaires » (20, 40, 60,…), à partir
de la tranche 0. Au début, 100 individus créés, qui évoluent pendant 19
générations. A la 20è génération, la tranche 1 est ouverte : 100 enfants sont
créés utilisant les parents de la tranche 0, avec certains individus qui passent en tranche 1.
A la 21è génération, 100 nouveaux individus sont créés en tranche 0, et 100 enfants sont créés à partir des tranches 1 et 0.
A la 41è génération, 100 nouveaux individus sont créés en tranche 0, 100 enfants sont créés à partir des tranches 1 et 0, et 100 enfants sont créés à partir des tranches 2 et 1.
A la 201è génération, les 100 plus mauvais individus sont supprimés, et 100 nouveaux individus sont créés en tranche 0.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
16
Résultats sur l’optimisation d’antennes
ALPS : Age-Layered Population Structure AHFC: Adaptive Hierarchical Fair Competition. La différence
avec ALPS est que les tranches sont basées sur la fitness (et pas sur l’âge).
Le résultat continue à évoluer bien après que les méthodes standard (et même adaptatives) aient convergé.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
17
Et l’exploration exhaustive ?
Stefan Voss, conférencier invité à EuroGP’06:« Les individus initiaux ont une grande importance pour la suite, donc, passez du temps à les choisir, voire, choisissez-les de manière exhaustive ! »
– Papier de Cyril Fillon et Alberto Bartoli à EuroGP’06… « Divide& Conquer Strategy for Improving Efficiency and Probability of Success in GP »
– Papier de Hammad Majeed & Conor Ryan à Gecco’06… « Using Context-Aware Xover to Improve the Performance of GP »
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
18
Divide & Conquer pour plus de diversité
Pour faire évoluer une population de p individus avec un jeu de fonction F={+,-,,} :– 1) Si Card F=n, créer n sous-populations avec un
opérateur manquant. (Fs1={+, - , }, Fs2={+, - , }, Fs3={+, , }, Fs4={- , , })
– 2) Faire évoluer pendant quelques générations (5) avec m individus dans chaque sous-population, avec m<p (si p = 500, m = 400) pour maintenir la diversité.
– 3) Sélectionner 500 parmi les 5 sous-populations, et continuer l’évolution avec une population de 500 individus
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
19
Divide & Conquer : résultats
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
20
Context-Aware Xover, pour la performance
Idée simple pour ce Xover : 2 parents.1. Dans le 2eme parent, on sélectionne aléatoirement
un sous-arbre.
2. On va chercher exhaustivement où le greffer dans l’arborescence du premier parent.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
21
Context-Aware Xover
En grisé, tous les points de greffe possible pour ne pas dépasser la prof. max autorisée
On crée tous les enfants potentiels, et le résultat de ce Xover est le meilleur de tous.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
22
Context-Aware Xover
Pct_00,_10, _50, _70, _90 : On démarre le CA-Xover après 0%, 10%, 50%, 70%, 90% des évaluations
Troublant, non ?
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
23
Accélération de la PGM. Keijzer, « Alternatives in Subtree Caching for Genetic Programming », EuroGP’04
Propositions intéressantes :– Vectorisation de l’évaluation d’un individu
– Mise en cache des sous-arbres.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
24
Vectorisation de l’évaluation Evaluation standard d’un individu pour de la
régression symbolique sur un ensemble d’apprentissage de n points :– Si l’individu comporte m nœuds, on évalue
l’ensemble des nœuds n fois.– Mais comme l’ensemble des points d’apprentissage
est fini (Card = n), pourquoi ne pas créer un vecteur de n valeurs, et évaluer l’arbre une seule fois pour le vecteur complet ?
– Gain énorme sur le parcours de l’arbre (1 fois au lieu de n fois)
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
25
Mise en cache des sous-arbres Ensuite, pourquoi ne pas mettre les sous-arbres
rencontrés dans un cache, sachant que :– A partir d’un pool d’individus initial, la PG crée de
nouveaux individus par croisement de sous-arbres.Manipulation incessante des mêmes sous-arbres !
Sur la régression symbolique, gain de 50% observé pour un cache de 20 sous-arbres.
Pour 500 à 1000 sous-arbres, gain observé de l’ordre de 90% !
Utilisation de ces idées avec les GPU ?
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
26
Optimisation du jeu de fonctions
Quel est l’intérêt de ne pas mettre toutes les fonctions possibles et imaginables dans le jeu de fonctions utilisables par la PG ?
Les tests montrent que les performances sont moins bonnes pour un grand jeu de fonctions (raison probable : augmentation non nécessaire de l’espace de recherche).
Question : quelles fonctions supprimer, quelles fonctions garder ?
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
27
Optimisation du jeu de fonctionsG. Wang & T. Soule, « How to Choose Appropriate Functions Sets for
Genetic Programing », EuroGP’04
Intuitivement, certaines fonctions font partie d’une même classe d’équivalence (sin cos, + -, * /).
Soule montre que de tels groupes existent : Soient, pour 1 pb donné, 4 fonctions A B C D.– Si performance identique pour {A,B}, {A,C}, {A,B,C} alors B
et C appartiennent au même groupe.
– Si la performance est différente pour {A,B} {A,D} alors B et D n’appartiennent pas au même groupe.
Pierre COLLET - Programmation Génétique Avancée - Ecole d'Ete Evolution Artificielle 07
28
Optimisation du jeu de fonctions
Conclusions du papier :– Jeu de fonctions optimal : une seule fonction par
groupe (dépend du pb à résoudre).
Pour un nouveau problème, commencer par déterminer les groupes de fonctions…