Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Inleiding Adaptieve Systemen
Genetisch programmeren Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
2
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
3
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
4
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
5
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
6
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
7
Interne lijst-representatie
(A (U V) B C) A B C NIL U V NIL Representatie van de lege lijst = ? NIL Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
8
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
9
Evaluatie-functionaliteit in LISP
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))) } Getallen, strings, T en NIL evalueren naar zichzelf beschouw 1e element als functie, en pas die toe op de evaluatie van de overige elementen. Lijsten evalueren d.m.v. functie-applicatie: Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
10
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
11
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
12
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
13
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
14
Terminal- en functie-set voor de wortel-formule
Genereert een homogene term-verzameling: alle functies zijn toe te passen op alle termen. Terminal-set T { a, b, c } Functie-set F { + , – , ± , * , /, kwadrateren, } 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
15
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
16
LISP-expressie als syntactische boom
Vraag: Schrijf de rechter- boom terug als LISP-expressie. Evalueer deze LISP-expressie. Antwoord: (+ (- (- 8) 7) (* (/ 5 1) 4)) = (+ (- 15) 20) = 5 + – * / – 7 4 8 5 1 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
17
Mutatie in GP + – * 4 / 5 1 9 4 + – – 7 8 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
18
Kruising in GP * + / – – * / + – 6 2 8 7 4 9 4 5 1
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
19
Ander voorbeeld van kruising in GP
* + / – – 7 8 * / + 6 2 4 9 4 5 1 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
20
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 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
21
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 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
22
Overzicht Representatie Syntax-bomen Initialisatie
Ramped half-and-half Kruising Verwisseling van sub-bomen Mutatie Genereren van een willekeurig sub-boom Reproductie (klonen) Verhoudingsgewijs naar fitness Mutatie (wijzigen) Recombinatie (kruising) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
23
Flow (volgens Koza, 1992) Stop ja nee Tevreden?
Creëer lege populate Q en plaats W daar in Kies één ouder uit P Plaats kopie in Q reproductie |Q| = |P| ? Bepaal de meest fitte S-expressie, W, uit P ja Selecteer genetische operator mu-tatie Kies één ouder uit P Plaats mutant in Q recombinatie Bereken van elke S-expressie uit P de fitness nee 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
24
Voorbeeld: genetic moonlander
Link naar genetic moonlander 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) / )) (Reversed) fitness voor snelle maar zachte landing: max(vtouchdown,5) – *sec Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
25
Voorbeeld: symbolische regressie
Link naar symbolische regressie applet van Hannes Planatscher. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
26
Voorbeeld: genetic ant
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk Link naar genetic ant
27
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
28
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
29
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
30
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
31
Enkele atomaire functies
Waarde Beschrijving (s1) bool Returns my internal state flag (1 or 0). (mate-closer) 1 if a teammate is closer than I am to the ball, else 0. (near-opp) 1 if there is an opponent within r distance from me, else 0. (squadn) 1 if I am squad mate n, else 0. (rand) 1 or 0, depending on a random event. (home) vect A vector to the my “home position”. (ball) A vector to the ball. (defgoal) A vector to goal I am defending. (goal) A vector to the goal I am attacking. (closest-mate) A vector to my closest teammate. (/2 vect1) Divides the magnitude of vect1 by 2. (dribble vect1) Sets the magnitude of vect1 to some constant c. (avg vect1 vect2) Returns the average of vect1 and vect2. Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
32
Voorbeeld van robot prog
LISP : (if (mag>1/2 (/2 goal)) (if near-opp goal closest-mate ) (dribble goal) Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
33
Mutatie Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
34
Crossover Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
35
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
36
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 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk Link naar RoboCup 2007 Soccer Simulation 2D Final
37
Initiële populatie Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
38
Kluitjesvoetbal Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
39
Leren om doel te bewaken
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
40
Positiespel Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
41
Evolved tree for passing behavior
Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
42
Problemen? 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 Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
43
Netlogo’s JGE extensie
JGE: Java Grammatical Evolution Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
44
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 Springer-Verlag (site, sectie “Materiaal”). Inleiding Adaptieve Systemen, Opleiding CKI, Utrecht. Auteur: Gerard Vreeswijk
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.