440 likes | 546 Views
Inleiding Adaptieve Systemen. Genetisch programmeren. Genetisch programmeren. Ontstaan: USA in de 90-er jaren Bekende naam: John R. Koza Typisch toepassings-gebied: machine learning, (simulated) robot learning Eigenschappen: Concurreert met andere connectionistische technieken
E N D
Inleiding Adaptieve Systemen Genetisch programmeren Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Genetisch programmeren • Ontstaan: USA in de 90-er jaren • Bekende naam: John R. Koza • Typisch toepassings-gebied: machine learning, (simulated) robot learning • Eigenschappen: • Concurreert met andere connectionistische technieken • Werkt alleen met grote populaties • Traag • Speciaal: • Niet-lineaire chromosomen (bomen, grafen) • Genotype bezit variabele omvang Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Genotypen • In het domein van GA’s zijn genotypen (chromosomen) typisch strings, en dan vaak ook nog bitstrings. • Met Genetisch Programmeren zijn genotypen typisch (computer-) programma’s. • Het Fouraging Ant voorbeeld uit het vorige college ligt half tussen GA en GP in. Want: Ant ~ Eindige Automaat. • In John Koza’s versie van GP (en eigenlijk in de meeste versies van GP) zijn genotypen programma’s in LISP. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk http://kazimirmajorinc.blogspot.com/2010/03/what-dijkstra-blogged-about-lisp.html
Crash course LISP • LISP: LISt Processing Language (~ 1958). • Geïnspireerd op Church’s λ-calculus. [Bv. (λx.x2) 2 4.] • Datastructuur: enkelvoudige gelinkte lijst. • Een oude programmeertaal. Bekijk bv. O’Reilly’s History of Programming Languages poster. • Dialecten: Common Lisp (~ 1974), Scheme, Emacs Lisp, AutoLISP, Logo, XLisp, ISLISP, Newlisp, Arc. • Invloed op: ML, Perl, Python, Smalltalk, Ruby, Dylan, Mathematica, Rebol, Miranda, Haskell, Lua, JavaScript, Forth. • LISP is door de jaren heen gebleven. • Helaas zijn de programmabibliotheken voor alleen al Common Lisp onderling afwijkend, en soms verouderd. Installatie vergt ervaring. (Vgl. bv. pregexp.) • Lees ook Flake's H3, Sec. 3 over LISP! Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
LISP: LISt Processing • De syntax van LISP is eenvoudig: alles is een atoom of een lijst • Vier soorten atomen: • Identifiers (zoals X12 en t4. Regexp: /[A-Za-z][\w\-]*/) • Getallen (zoals -3 en 9.0e+45) • Strings (zoals "hallo" en "hallo\n" ) • Speciale atomen (zoals T en NIL) • Er is maar één soort lijst. Voorbeelden: (1 2 3) (X123 X123 T -3 “hallo”) ((-3 “hallo”)(-3 “hallo”)) () (Y 1 2 () 3) (()()) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
A B C NIL U V NIL Interne lijst-representatie (A (U V) B C) Representatie van de lege lijst = ? NIL Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Symbolische expressies (SEXPs) • LISP bestaat uit zg. s-expressies: • NIL • (1 2 3) • (+ (+ 1 2) (* 2 3)) • (QUOTE X) • 'X(single-quote teken is geen stricte syntax!) • (QUOTE (+ (+ 1 2) (* 2 3))) • '(+ (+ 1 2) (* 2 3)) (geen stricte syntax!) • Recursieve definitie: • Een s-expressie is een atoom of een lijst. • Een lijst is linkerhaakje, gevolgd door een eindig (mogelijk leeg) rijtje s-expressies, gevolgd door een rechterhaakje. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
} Getallen, strings, T en NIL evalueren naar zichzelf Lijsten evalueren d.m.v. functie-applicatie: beschouw 1e element als functie, en pas die toe op de evaluatie van de overige elementen. Evaluatie-functionaliteit in LISP • 172 172 • T T • NIL NIL • X ERROR: var. “X” not bound • (QUOTE X) X • 'X X • (1 2 3) ERROR: “1” is not a function • (+ 2 3) 5 • Y 17 • (+ Y Y) 34 • (+ (+ 1 2) (* 2 3)) 9 • (QUOTE (+ (+ 1 2) (* 2 3))) (+ (+ 1 2) (* 2 3))) • '(+ (+ 1 2) (* 2 3)) (+ (+ 1 2) (* 2 3))) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Construeren, dan evalueren • Definiëren: • (SETQ x "Hallo") • x "Hallo" • Lijsten maken: • (SETQ L (list 1 'x x '3)) • L (1 x "Hallo" 3) • Expressies construeren, om ze pas daarna te evalueren: • (SETQ expressie-1 '(+ 3 5)) • (SETQ expressie-2 '(+ 1 7)) • (SETQ expressie-G (LIST '* expressie-1 expressie-2)) • expressie-G (* (+ 3 5) (+ 1 7)) • (EVAL expressie-G) 64 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Construeren, dan evalueren • (SETQ then-code '(do (left) (move) (right))) • (SETQ else-code '(do (left) (wait))) • (SETQ code '(if (food-ahead) **then-part** **else-part**)) • (SETF (NTH 2 code) then-code) • (SETF (NTH 3 code) else-code) • code (if (food-ahead) (do (left) (move) (right)) (do (left) (wait))) • (EVAL code) ant voert code uit Instantieer element nr. 2 van lijst code Instantieer element nr. 3 van lijst code Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Genotypen • Chromosomen worden gerepresenteerd als LISP structuren, typisch opgebouwd uit een handvol elementaire expressies of instructies. • Voorbeelden: • Logische of rekenkundige expressies: (AND (OR (AND P (NOT R) Q) P)(OR R P)) (+ ( (* 4 ( 2) 7) 3)(+ 6 1)) • Instructies: (if (food-ahead (left) (if (food-ahead (right) (left))) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld van typisch genoom (if (food-ahead (if (food-ahead (right) (if (food-ahead (right) (if (food-ahead (left) (if (food-ahead (if (food-ahead (if (food-ahead (right) (if (food-ahead (right) (if (food-ahead (left) (if (food-ahead (right) (left))))) (if (food-ahead (right) (if (food-ahead (left) (if (food-ahead (right) (right))))) (left))))) (if (food-ahead (right) (if (food-ahead (left) (if (food-ahead (right) (right))))) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Terminal- en functie-setvoor de wortel-formule Genereert een homogene term-verzameling: alle functies zijn toe te passen op alle termen. • Alle elementen uit T zijn correcte kandidaat-oplossingen. • Als f een functie-symbool is met ariteit n, en e1,…,en zijn correcte kandidaat-oplossingen, dan is f(e1,…,en) ook een correcte kandidaat-oplossing. • Alle kandidaat-oplossingen zijn op bovenstaande manier te maken. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeelden van te construeren kandidaat wortel-formules a, b, a – c, (a – c)2, (a – c)2 + b2 , √( (a – c)2 + b2 ) , √( (a – c)2 + b2 ) + (a – c)2 , [ √( (a – c)2 + b2 ) + (a – c)2 ] / ( a + a ) , [ [ √( (a – c)2 + b2 ) + (a – c)2 ] / ( a + a ) ] + b , …. …. Waarom geen 2a hier? Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Vraag: Schrijf de rechter- boom terug als LISP-expressie. Evalueer deze LISP-expressie. Antwoord: (+ (- (- 8) 7) (* (/ 5 1) 4)) = (+ (- 15) 20) = 5 + * – / – LISP-expressie alssyntactische boom 4 7 8 5 1 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
+ + * – / – – 4 5 1 9 4 Mutatie in GP 7 8 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
+ + * * – – – / / 6 2 8 Kruising in GP 4 7 9 4 5 1 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
+ + * * / / – – – 7 6 2 8 Ander voorbeeld vankruising in GP 4 9 4 5 1 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorwaarden voor kruising • De te kruisen structuren moeten van hetzelfde type zijn (bv. numeriek x numeriek, of: instructie x instructie). Voorbeeld: (if *cond-1* *then-part-1* *else-part-1*) (if *cond-2* *then-part-2* *else-part-2*) • Hier zijn 1 + 3 x 3 = 10 kruisingen mogelijk • Eén Boole’s deel: cond-1 x cond-2 • Negen instructie-delen: 1x2, 1 x then2, 1x else2, then1 x 2, …, else1 x else2 • Veel GP implementaties maken gebruik van zg. homogene termverzamelingen. Daar zijn alle termen van één type. Voorbeeld: (if-food-ahead *then-part* *else-part*) bevat geen test. Deze is hier in de structuur “ingebakken”. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Initialisatie van een populatie • Zet maximum initiële diepte van syntaxbomen, bijvoorbeeld Dmax = 15 • Verzadigde methode (elke tak heeft diepte = Dmax ): • expressies op diepte d < Dmax willekeurig kiezen uit functie-set F • expressies op diepte d = Dmax willekeurig kiezen uit terminal-set T • Groeimethode (elke tak heeft diepte Dmax ): • expressies op diepte d < Dmax willekeurig kiezen uit F T • expressies op diepte d = Dmax willekeurig kiezen uit terminal-set T • Gebruikelijke GP initialisatie: ramped half-and-half, waarbij de verzadigde methode en de groeimethode elk de helft van de populatie genereren. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Overzicht Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Stop ja nee Tevreden? reproductie ja mu-tatie |Q| = |P| ? Selecteer genetische operator nee recombinatie Flow (volgens Koza, 1992) Creëer lege populate Q en plaats W daar in Kies één ouder uit P Plaats kopie in Q Bepaal de meest fitte S-expressie, W, uit P Kies één ouder uit P Plaats mutant in Q Bereken van elke S-expressie uit P de fitness Kies twee ouders uit P Plaats kinderen in Q P wordt Q Genereer initiële populatie P ter grootte N Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld: genetic moonlander • Link naar geneticmoonlander op googlepages. • Doel: zet maanlander zacht neer. • I.i.g. zonder dat de brandstof voortijdig op raakt. • Bij voorkeur: (i) zo snel mogelijk (ii) zo zuinig mogelijk • Technisch doel: bepaal optimale thrust (voortstuwing) f(m, v, h), gebaseerd op massa (m), hoogte (h) en neerwaartste snelheid (v). • Terminals: m, v, en h • Functiesymbolen: +, –, *, /, en eventueel sqrt, log, exp, en sin • Voorbeeld kandidaat-oplossing: f(v,h,m) = ( 3.12 / (1.18*v) ) – (h / sin( (h*v) / -9.74 )) • (Reversed) fitness voor snelle maar zachte landing: max(vtouchdown,5) – 5 + 0.1*sec Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld: symbolische regressie Link naar symbolische regressie applet van Hannes Planatscher. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld: genetic ant Link naar genetic ant Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Probleem met kruising: bloat • Zonder tegenmaatregelen groeit, bij kruising en mutatie, de gemiddelde omvang van expressies. • Dit wordt bloat genoemd, ook wel: survival of the fattest. • Tot op heden bestaat hier (nog) geen sluitende statistische verklaring voor. • Mogelijke tegenmaatregelen: • Verbied de creatie van dikke kinderen. • Geef dikke kinderen een lagere fitness (Eng.: pressure of parsimony, of: pressure of Ockham’s razor). Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld van bloat Mogelijke fitnesmaat om overbodige expressies tegen te gaan: Fitness(formule) =Def de som van: • α x de fout van de formule op 100 willekeurige 2e - graadsvergelijkingen • β x het aantal sub-expressies in de formule De parameters α en β moet je nu tweaken om tot aanvaardbare oplossingen te komen Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Problemen met fitness-evaluatie In GP domein is fitness-evaluatie meestal duur. • In GA domein: fitness-evaluatie ↔ doorrekenen oplossing. • Voorbeeld: zendcapaciteit antenne of gewicht giek is makkelijk te berekenen. • Effectiviteit foraging ant is alweer moeilijker. • In GP domein: fitness-evaluatie ↔ uitvoeren van een programma, en wachten op de resultaten (die je nodig hebt om het programma te evalueren). In het slechtste geval wordt het programma bv. uitgevoerd op een robot in robo-soccer. (Voor elke trial: robot klaarzetten, bal klaarleggen, etc.) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Voorbeeld: RoboCup Soccer • In tegenstelling tot andere leermethoden is GP een natuurlijke kandidaat om algoritmisch robotgedrag te ontwikkelen. • Softbots (agents in een gesimuleerde omgeving) evolueren bottom-up tot een team dat in staat is elkaars acties te coördineren en in staat is tot samenspelen. • Er waren leagues waarin teams van hand-gecodeerde bots (met heuristische ALS-DAN regels) verslagen werden door teams met GP gecodeerde bots. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Enkele atomaire functies Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
LISP : (if (mag>1/2 (/2 goal)) (if near-opp goal closest-mate ) (dribble goal) ) Voorbeeld van robot prog Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Mutatie Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Crossover Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Fitness function(s) Uitgeprobeerde fitness functies : • Maximaliseer aantal gescoorde goals • Maximaliseer balbezit • Maximaliseer aantal succesvolle passes • Minimaliseer bal buiten lijnen brengen Concurrerende fitness: ge-evolueerde teams spelen tegen elkaar. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Verdere specificaties algoritme • Representatie • Homogeen: één voetbalprogramma voor alle spelers. • Heterogeen: elk programma heeft verschillende code voor verschillende spelers. of: • Elke speler heeft een eigen programmaatje. • Parameters • 200 individuen in één populatie • 50 generaties Link naar RoboCup 2007 Soccer Simulation 2D Final Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Initiële populatie Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Kluitjesvoetbal Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Leren om doel te bewaken Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Positiespel Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Evolved tree for passing behavior Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Populatiegrootte te klein niet genoeg diversiteit. Teams speelden te weinig tegen elkaar evaluaties onvoldoende gespreid. Teamgedrag vs. gedrag individuen. Zg. credit assignment probleem. Link naar Robocup Soccer Simulation League, 3D Final 2007 Problemen? Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Netlogo’s JGE extensie JGE: Java Grammatical Evolution Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Taal-onafhankelijk GP Zie verder: I. Dempsey et al. (2009). Grammatical Evolution. Chapter 2 in: Foundations in Grammatical Evolution for Dynamic Environments, SCI 194, pp. 9-24. Springer-Verlag (site, sectie “Materiaal”). Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk