MI2 előadás jegyzet Tartalom: - Evolúciós alapfogalmak, általános algoritmusok - Evolúciós stratégiák - Raj intelligencia, részecske-raj optimalizálás A jegyzetet Jelasity Márk 2008. 04. 08., 2008. 04. 15. és 2008. 04. 22-dikei MI2 előadásai alapján készítette: Szécsényi Hajnalka. Evolúciós alapfogalmak, általános algoritmusok I. Evolúció Mi is az evolúció? - replikáció DNS - variáció mutáció / keresztezés - szelekció fitnesz egy egyed hány szaporodni képes utódot tud létrehozni Kérdések: - survival of the fittest - replikátorok Mi replikálódik? Nem az egyed, hanem a DNS. Csoport is replikálódhat. DNS, sejt, ökoszisztéma, (Dawkins, Csányi Vilmos (etológus)). Órai tanulás is replikáció. - komplexitás Evolúció során növekszik, bonyolódik az ökoszisztéma. Állattenyésztés! Nem megfelelő élőlények kiszelektálása. II. Mesterséges evolúció Fogalmak: optimalizálás modellezés gépi tanulás - optimalizálás A halmaz, f: A R, min f(a), a A. - modellezés A: modellek tere f: illeszkedés empirikus adatokra - tanulás A: hipotézisek tere Cél: adatok egy jó modelljének a megtalálása. Evolúciós algoritmusok: optimalizálás (minden szinten alkalmazható, és adhat is optimális eredményt, de nem garantált, hogy ad is). 9/1
Általános módszer: x 1 y 1,, x n y n y = ax + b f(a,b) = i (y i (ax i + b)) 2 itt például NEM célszerű alkalmazni, mert más módszer van rá Evolúciós algoritmus jó választás pl.: NPnehéz problémák, vagy az óra elején bemutatott videók (ld. honlap) esetén. Sztochasztikus hegymászó (általános evolúciós algoritmus váza): 1 veszünk egy x A véletlen változót 2 y = f(x) //kiértékeljük a változót 3 repeat until kilépés 4 x = kis ugrás x-ből 5 y = f(x ) 6 if (y < y) { x = x ; y = y } 7 end-repeat f Kis ugrás x-ből : Kis véletlen szám hozzáadása x-hez, melynek paraméterével is lehet játszani. Azaz ha közelebb vagyunk az optimumhoz, kisebb lépések kellenek, mert nagy lépéssel rosszabb eredményt kaphatunk. Az ábrán jobbról az első 2 ugrást elfogadjuk, mert kisebb értéket kapunk, de a 3-dikat nem, mert az magasabb. (Hasonló a szimulált hűtéshez, ld. később) Az evolúciós algoritmushoz felhasznált kiegészítések: + populáció: multiset + reprezentáció: halmaz elemeit kódolja DNS 1 populáció inicializálása 2 kiértékelés 3 repeat until kilépés 4 szülő választás //sokféleképp lehet: egész populáció vagy csak 1 egyed 5 új megoldások rekombinációval //általában 2 szülő felhasználásával új egyed létrehozása 6 új megoldásokon mutáció //adott keresési térben kicsit megváltoztatjuk a megoldást 7 kiértékelés 8 túlélők szelekciója //új populáció kiválasztása, elemszám visszatér a kiindulásira 9 end-repeat 9/2
Fő komponensek: - reprezentáció - rekombinációs operátor - mutáció - szülő választás (alkalmazzuk a szelekciót) - túlélő választás (impliciten: versenyeztetés) Ezeknek számos különböző implementálási lehetősége van, így sokféle algoritmus alakult ki: - Genetikus algoritmusok (amerikai irányzat, Michigan) általános - Evolúciós stratégiák (német irányzat, 60-as évek, Berlini Egyetem) - Genetikus programozás: kifejezetten számítógépes algoritmusok, pl. prímszámokat felismerő tenyésztés. - Szimulált hűtés: (fizikus találta ki) populáció mérete 1, a szülő kiválasztása függ a hőmérséklettől, melyet folyamatosan csökkentünk. - Tabu keresés, részecske-raj optimalizálás Terminológia, operátorok: - reprezentáció A B (kódolás / dekódolás, bijektív fv.), ahol A: keresési tér, fenotípus és B: genotípus x A (vagy x B): egyed, lehetséges megoldás és x B: kromoszóma - mutáció m: B B; a = m(a), ahol a: szülő és a : utód - rekombináció b: BB B - kilépési feltétel - CPU idő - kiértékelések száma - javulás sebessége - diverzitás: ha már minden egyed azonos, akkor az az állapot már nem fog változni any time : az algoritmus bármikor megállhat, nem számít a kilépési feltétel; kevés idővel rosszabb megoldást, több idővel jobb megoldást adva. III. Hogyan készültek a videók (ld. honlap)? GOLEM projekt - reprezentáció <pontok><csövek><neuronok><aktivátorok>, ahol pontok: koordináták csövek: melyik pontpárok vannak összekötve csővel; adott a rugalmasság is 9/3
- mutáció Kis változtatások alkalmazása. Aktivátort ad hozzá / vesz el, pontot ad hozzá / vesz el, Kezdésként adott 200 db semmi : 0 pont, 0 cső, 10-20 generáció után már elkezdtek mozogni. 600 generáció után szimmetrikus, valósághű robotok. A projektben nincsenek szenzorok, viszont képesek oszcillációkat létrehozni, ezáltal mozogni (nincs visszacsatolás). Összehasonlítás: úszás, mozgás esetén a megtett út a kritérium, míg küzdelem esetén körmérkőzések alakítják ki a rangsort. KARL SIMS Jelenleg Hollywood-ban dolgozik. Evo lúciós stratégiák Alkalmazás: A R n és f: A R, ahol A: keresési tér. Valós, csúnya függvények optimalizálása. A függvény lehet: - sztochasztikus - nem folytonos - dinamikus: maga a függvény változik: t 1 időpillanatban egyik, t 2 -ben már egy másik - implicit: a függvény nem kiértékelhető, de 2 érték közül tudjuk, melyik a nagyobb Komponensek: - reprezentáció: A B - rekombináció (x 1,, x n ) 1) köztes: z i = (y i + x ) / 2 (z i (y 1,, y n ) 1,, z n ) 2) keverés: z i = x i vagy yi - szülő választás: véletlen - túlélő választás: legjobb utódok (μ db; feltesszük, hogy sorba rendezhetőek, és a fitnesz függvény szerint sorba rendezzük) μ: populáció mérete λ: szülők száma (μ, λ) ES. (Evolúciós Stratégia) vagy vesszős stratégia: az új μ elemű populáció a λ gyerekből van kiválasztva (a gyerekek száma egyenlő a szülőkével, mert minden szülőből egy gyerek van mutációval) (μ + λ) ES.: az új populáció a λ gyerekből és a régi, μ elemű populáció uniójából, vagyis (μ λ)-ból van kiválasztva A vesszős stratégia jobb, inkább ez használatos, főleg ha dinamikus megoldást választunk, mert gyorsabban érvényesíti az adaptációkat. [μ = 15, λ = 100; λ = 7μ] Forrás: - Egyszerű függvényekkel nagyszámú empirikus kísérlet, hogy melyik paraméterekkel kapható a legjobb eredmény 2 - Analitikusan elemezhető, egyszerű függvényeken (pl.: x ) mi az optimális beállítás 9/4
- Pl.: (1 + 1)-ES. sztochasztikus hegymászó mutáció x i = x i + N(0, σ), ahol N a normális eloszlás 0 várható értékkel és σ szórással [p(x) = 1 / (σ (2π))exp(-(x-a) 2 / (2σ 2 ))], ahol σ adaptív, azaz nem fixáljuk le, hanem megpróbáljuk a futás közben optimalizálni (a megoldás közelében a kisebb σ a jobb). 1) homogén (adaptív) megoldás: (x 1,, x n, σ), a keresési tér egy eleme mutáció: 1) σ = σexp(n(0, τ)) 2) x i = x i + N(0, σ ) Jobb lenne, ha minden koordinátának saját σ-ja lenne. τ 1 / n σ ε 0 Ha túl kicsi a σ, akkor nincs mutáció, ezért erre is figyelni kell. 2) heterogén adaptív megoldás: (x 1,, x n, σ 1,, σ n ) mutáció: 1) σ i = σ i exp(n(0, τ))exp(n(0, τ 0 )), ahol exp(n(0, τ))-t minden koordinátára kiszámoljuk exp(n(0, τ 0 )) globális: először kiszámoljuk, aztán csak x 2 helyettesítjük τ 0 = 1 / (2n) τ = 1 / (2 n) x 1 2) x i = x i + N(0, σ i ) A koordináta mutációja megtanulja, hogy melyik koordináták a fontosak, s ezzel nagyobb alkalmazkodást tesz lehetővé. 3) 1/5 szabály (1 + 1)-ES. esetében alkalmazzák, ha 1 db közös σ paraméter (homogén) van. Ha a mutáció túl nagy, vagyis az utódok sikertelensége < 1/5, akkor σ-t csökkenteni kell, ha > 1/5, akkor növelni. G utód esetén (G = n) p: sikeres utódok aránya G-ben σ ha p = 1/5 σ = aσ ha p < 1/5 a 0,9 σ / a ha p > 1/5 Kevésbé általános, így sajnos ez a módszer nem alkalmazható mindig. 4) korrelált mutáció (adaptív) megoldás: (x 1,, x n, σ 1,, σ n, α 12, α 13,, α (n-1)n ) mutáció: σ i = σ i exp(n(0, τ))exp(n(0, τ 0 )), ahol x 2 n 2 db dimenziópárokhoz tartozó forgatás x 1 9/5
exp(n(0, τ)) minden dimenzióban változik exp(n(0, τ 0 )) minden dimenzióban közös α ij = α ij + N(0, β), β 5 x = x + z, z = M(N(0, σ 1 ),, N(0, σ n )) N(0, c) forgatási mátrix 2 c ii = σ i (átlóban éppen σ-k vannak) c (i j σ 2 ij ) = 1/2(σ 2 i - j )tan2αij kovariancia mátrix Hátrány: sok paraméter lassabb evolúció. Dámajáték (ES alkalmazás neurális hálók tanítására) Blondie24: http://en.wikipedia.org/wiki/blondie24 2007-es eredmény viszont, hogy megoldották a dámajátékot, azaz van olyan program, ami matematikailag bizonyíthatóan verhetetlen. Kezdőállás: A szabályok röviden: - A bábukkal átlósan lehet lépni. - Kötelező ütni (figura átugrása), ha lehet. - Több ütés is lehet egymás után. - Ha végigér egy bábu, akkor király lesz: visszafelé is léphet. A pontos szabályok megtalálhatók a neten, pl.: http://www.flyordie.com/games/help/checkers/ hu/games_rules_checkers.html http://mek.oszk.hu/00000/00056/html/133.htm A megoldás során használt m ódszerek: minimax keresés 4 mélységig, α-β vágás, valamint az állást neurális hál ó számította ki. 0: üres 1: saját korong bemenet Össze s 33-as résztábla (36 db) Bal alsó sarok... k: saját király -1 és k: hasonlóan az ellenfélre Összes 44-es résztábla (24 db)..... 40 db. Teljes tábla 32 elemű vektor 91 db neuron......... output 10 db 9/6
(15+15)-ES., heterogén adaptív mutáció. Raj intelligencia, részecske-raj optimalizálás Raj intelligencia: sok komponensű rendszer, pl. ágensekből, hangyákból, madarakból, méhekből, baktériumokból, vagy ténylegesen fizikai részecskékből áll. Olyan rendszerekkel foglalkozik, melyek bizonyos intelligens viselkedést mutatnak, de nem tudnak róla. Érdekes viselkedések pl.: - legrövidebb út felderítése a hangyáknál (fészek táplálék) - bonyolult várak felépítése a termeszeknél (légkondicionálás, élelemtároló szint, ) Alkalmazás pl. P2P hálózatok. Részecske-raj optimalizálás: pl. madárcsapatok, halrajok, nyájak,, együtt mozgó dolgok modellezéséből indul ki. Ilyenek pl.: - ragadozók kikerülése (flash and fountain) - préda elejtése - hatékonyság növelése (pl. ludak V alakban repülése) BOIDS (C. Reynolds, 87.) - n madár: x 1,, x n R 2 (R 3 ) (vektorok!) - madárnak van sebessége: v 1,, v n v i x i 3 szabály, amit betartanak a madarak (k legközelebbi szomszédra vonatkozóan): - elkerülés: ne repüljenek bele a szomszédos madarakba Minden madárnak saját, személyes tere központ: van, ami taszítja a többieket, mint a mágnesek egymást. - központ: minden madár a k legközelebbi szomszéd koordinátáinak átlagába v szeretne repülni k - másolás: minden madár megfigyeli, hogy a szomszédok merre repülnek, milyen sebességgel, és azok átlagát veszi. x i (t + 1 ) = x i (t) + τv i (t + 1) v i (t + 1) = αv i (t) + (1 - α)[ α 1 v elkerülés + α 2 v központ + α 3 v másolás ] 9/7
Részecske-raj optimalizálás - n db részecske x 1,, x n sebesség v 1,, v n memória y 1,, y n y i = min(f(x i (t))), t = 0, 1, - algoritmus 1 inicializálás 2 3 repeat for i = 1 to n 4 y g = min(y j ), j Szomszéd 5 if (f(x i ) < f(y i )) y i = x i 6 v i := v i + c 1 [y i - x i ] + c 2 [y g - x i ] [c1, c 2 [0, 2]] 7 xi := x i + vi 8 end-for 9 until kilépés Sebesség összetevői: - régi sebesség: felfedező magatartás, lendület - szociális tag: globális optimum, mindenkinek afelé kell tartani közös pont felé - saját lokális optimum konvergálnak Ha nem lenne a szociális tag, akkor a részecskéknek nem lenne egymással kapcsolatuk, így a saját maguk által talált optimum körül végeznének véletlen mozgást. Ha pedig a lokális nem lenne, csak a globális, akkor mindenki gyorsan megtalálna egy közös pontot. A saját környezet felderítésének szükségessége miatt tehát szükség van a lokális optimumra is. Szomszédsági struktúra: 1) Globális : hasznos, ha csak egy optimum van tudja meg mindenki és siessen oda. Viszont nem jó, ha több lokális optimum van, mert nem talál meg új területet, hanem az elsőként megtaláltnál leragad. 9/8
2) Lokális ( kör ): szomszédsági gráf 2 szomszéd van csak, így a globális optimum lassan, lineárisan terjed. 1) 2) exploitation (kiaknázás) hatékony kevésbé hatékony exploration (felfedezés) kevésbé hatékony hatékony Ennek megfelelője evolúciós algoritmusokban a szelekciós nyomás. Szintén any time. Az algoritmus javítása: 1) Sebesség korlát (gondot jelent a vég nélküli sebességnövekedés) v i = (v i1,, v in ) v ij δ[xmax,j x min,j ], δ (0,1) adott keresési tér korlátjai Hatások: - A sebesség eléri a maximumot minden dimenzióban a részecskék a doboz falán mászkálnak - Egyik dimenzióban levágok értékeket, a másikban nem irány drasztikusan megváltozhat durva 2) Lendület (inercia) faktor hozzáadása v i = wv i + c 1 (y i - x i ) + c 2 (y g - x i ), ahol w 1; lendület faktor: sebességnövekedés változtatható 3) hűtés technikák Minél kisebb a w, annál inkább lokális lesz a keresés, és megszűnik a felfedezés. Fuzzy: olyan utasítások rendszere, mintha azok természetes nyelven lennének megfogalmazva, pl.: ha y g kicsi és w kicsi akkor közepesen növeljük w-t az aláhúzott egységeket egy-egy 0-1 közötti függvény határozza meg populáció méret (n) 30 (hasraütésszerű érték, amivel el lehet indulni) c 1 és c 2 : (0,2) (uniform, egyenletes eloszlás) Differenciál-evolúció: populáció: x 1,, x n x i -re keresztezés: v (mutáció eredménye) = x i + F(x r1 x r2 ) + λ(y g - x i ), ahol λ 0,9, F 0,8 v y g x i x r1 x r2 u (keresztezés eredménye): x i és v keresztezése CR valószínűséggel x i elemei, 1 CR valószínűséggel v elemei ha f(u) < f(x i ) u felülírja x i -t 9/9