Genetiska algoritmer - Evolution i en digital värld Vetenskapsmetodik, CDT212 Period 3 2009 Av: Primus Nyxén Kim Jansson E-mail: [email protected] [email protected] Akademin för Innovation, Design och Teknik Mälardalens Högskola Box 883, SE-721 23 Västerås, SWEDEN 7/15/17 Sammanfattning Användningsområdena för genetiska algoritmer har ökat stadigt sedan dess uppkomst under mitten av 1900-talet, allt eftersom algoritmerna utvecklats och förfinats. Genom att försöka återskapa evolutionens naturliga mekanismer kan en dator söka information, optimera, hitta och utveckla egna lösningar på problem. Algoritmerna grundas på evolution och naturligt urval, där strängar av information representerar individer i en population. Dessa utvärderas efter sin lämplighet och de mest lämpade får föra sina gener vidare till en ny generation, och precis som i naturen blandas och muteras gener, vilket resulterar i helt nya uppsättningar. På så sätt kan informationen anpassas över generationerna tills en önskvärd lösning hittats. Genetiska algoritmer har visat sig vara effektiv inom ett antal områden, bl.a. planering, schemaläggning, optimering och problemlösning. Ämnet genetiska algoritmer har även grenat ut sig, och används idag bl.a. inom programmering, s.k. genetisk programmering. Som sagt bygger genetiska algoritmer på evolutionsteorin och naturligt urval, men även genetik. Sättet som informationen individerna bär på överförs till sin avkomma bygger på samma principer som i genetiken. Även mindre kända, och idag motbevisade teorier inom evolution och genetik används inom genetiska algoritmer för att öka effektiviteten. Genetiska algoritmer har tveklöst kommit för att stanna, och har visat sig vara ett effektivt hjälpmedel och komplement till andra algoritmer, särskilt inom artificiell intelligens. Det som kännetecknar genetiska algoritmer är inte strävan efter en perfekt lösning, utan att hitta en acceptabel lösning inom en acceptabel tidsram. Det är dessa egenskaper som gör genetiska algoritmer lämplig till så många områden, men den är långt ifrån en universallösning. 2/9 7/15/17 Innehåll Sammanfattning .............................................................................................................................................................. 2 Inledning .......................................................................................................................................................................... 4 Genetiska algoritmer ...................................................................................................................................................... 5 En kort bakgrund........................................................................................................................................................................................................................... 5 Funktion ............................................................................................................................................................................................................................................ 5 Användningsområden ................................................................................................................................................................................................................. 6 För- och nackdelar ........................................................................................................................................................................................................................ 6 Liknande tekniker och varianter .................................................................................................................................. 7 Genetisk programmering ........................................................................................................................................................................................................... 7 Bakomliggande teorier ................................................................................................................................................... 7 Darwin ............................................................................................................................................................................................................................................... 7 Mendel ............................................................................................................................................................................................................................................... 7 Lamarckism ..................................................................................................................................................................................................................................... 7 Baldwin-effekten ........................................................................................................................................................................................................................... 7 Slutsatser .......................................................................................................................................................................... 8 Referenser ........................................................................................................................................................................ 9 3/9 7/15/17 Inledning Vi har valt att skriva om genetiska algoritmer, eftersom vi båda läser datavetenskapliga programmet, med inriktning artificiell intelligens. Vi har i flera kurser kommit i kontakt med genetiska algoritmer, och fann det intressant. Vi valde därför ämnet för att få mer insikt i området. Rapporten kommer att behandla bl.a. ämnets historia, uppkomst, och bakgrunden till algoritmens teknik. Vidare kommer vi se på de tekniska aspekterna av algoritmen, de olika varianter som används, och kort gå in på inom vilka områden genetiska algoritmer med fördel kan användas. För att förhindra att vi gräver ner oss för djupt i tekniken har vi valt att lägga en del av fokus på den biologiska aspekten. Vi kommer därför titta närmare på de olika teorier som ligger till grund för tankesättet i genetiska algoritmer, och ett par exempel på biologiska mekanismer och teorier som hjälpt till att öka effektiviteten hos dessa. Slutligen vill vi göra en kort redogörelse för vad det är som utmärker genetiska algoritmer gentemot andra algoritmer inom artificiell intelligens, och varför de är lämpliga/inte lämpliga för vissa uppgifter. 4/9 7/15/17 Genetiska algoritmer En kort bakgrund Ända sedan mitten av 1900-talet, då vetenskapsgrenen artificiell intelligens började ta form, har människan försökt få datorer att tänka, analysera och agera mer som levande varelser. Många algoritmer inom artificiell intelligens härstammar därför från processer som pågår i naturen. Algoritmerna bygger på allt från vårt sätt att tänka och resonera till hur naturen har sin gång. Från detta sista exempel har flera algoritmer för artificiell intelligens och problemlösning skapats, bland andra genetiska algoritmer. Genetiska algoritmer härstammar från, som namnet skvallrar om, vetenskapen bakom genetik och evolution. Darwin visade oss under den senare halvan av 1800-talet hur evolutionen och det naturliga urvalet format livet på vår planet. I Om arternas Uppkomst målade han upp den process som fått arterna att utvecklas och anpassas sedan livets begynnelse. Nu började man förstå hur arterna hade uppstått, hur naturligt urval och arv skapat den otroliga artrikedom som vi har idag. Kort därefter inleddes forskning om genetik, och framåt början av 1900-talet började bilden av arvsanlag långsamt klarna. Kunskapen om dessa processer visade sig senare kunna utnyttjas inom datavetenskapen. Knappt ett sekel senare började forskare simulera evolutionsprocessen med hjälp av datorer. Under 60- och 70-talet tog forskningen fart på riktigt, och man insåg möjligheterna med genetiska algoritmer. Precis som naturligt urval och evolution väljer ut de starka individerna i en population och låter deras framgångsrika gener leva vidare, återskapas denna process i en dator för att hitta lösningar på problem. Funktion Genetiska algoritmer utnyttjar något som brukar kallas djungelns lag, den starkaste överlever. Det finns även en mutationssannolikhet, vilket gör att det kan tillkomma märkliga men bra lösningar. Vi ska nu skriva en kortfattad förklaring till hur det går till, enligt Mitchell [Mitchell96]. Först skapas det en population av individer, de innehåller olika förslag till lösningar på problemet. Eftersom varje individ i populationen representeras av ett numeriskt värde, måste också problemet representeras på detta sätt, vilket kan vara problematiskt. Nästa steg är att pröva varje individ och tilldela den Fitness, vilket är ett mått på hur bra varje numeriskt värde är på att lösa problemet. När alla individer har fått Fitness tilldelat räknas en sannolikhet(Probability), P j ut för varje individ j, enligt ekvation 1. Ekvation 1 Pj Fit j Fit j j Sannolikheten för varje individ är nu ett tal mellan noll till ett. Sannolikheten används nu för att välja ut två individer ur populationen till parning. Detta kan göras på flera olika sätt, vi kommer att beskriva ett av dessa, ”Roulette wheel selection”. Nu slumpas det fram ett nytt tal, r, mellan noll och ett, detta tal används nu i ”Roulette wheel selection”. Algoritmen stegar igenom populationen och hittar en individ. Den gör det genom att lägga till varje individs probability till en summa. När den summan är större än r, väljs den aktuella individen ut. Detta medför att en individ med hög probability inte nödvändigtvis kommer väljas, vilket kan vara både till fördel eller nackdel. Det är enkelt att se varje individ som en tårtbit i en roulettskiva, där individer med hög probability får en större tårtbit, vilket ökar chansen att bli vald, men inte nödvändigtvis garanterar detta. Algoritm för Roulette wheel selection j = 1, där j är index för individer i populationen Sum = P j Slumpa ett tal r mellan 0 och 1 While Sum < r, gör så länge Sum är mindre än r o j = j + 1, stega framåt bland individerna o Sum = Sum + P j , lägg till individens probability till Sum Välj ut individ j för parning När algoritmen valt ut två individer ur populationen kan dessa individer paras. I detta exempel representerar individerna binära strängar, då skulle parningen kunna gå till på följande sätt. Två individer blir föräldrar åt två avkommor. En slumpartad delningspunkt väljs i strängen, varpå den ena avkomman får den främre delen av förälder A och den bakre delen av förälder B, den andra avkomman får således den bakre delen av förälder A och den främre delen av förälder B. Fig. 2 1001 010 1010 101 1001 101 1010 010 Figur 2 är ett exempel på två föräldrar till vänster och deras två avkommor till höger. Delningspunkten är i detta exempel mellan position tre och fyra, från höger till vänster. Detta upprepas tills en ny population har skapats vilken är lika stor som den gamla, varpå hela den gamla populationen kastas. Dock så kontrolleras om den gamla populationen innehåller någon individ som hittills är bäst. Om så är fallet sparas denna individ, för att kunna ges som lösning när algoritmen är klar, om ingen bättre hittas. 5/9 7/15/17 Nästa steg är mutering, där individer slumpässigt väljs ut för att ändras. De som blir valda får en eller flera bitar i strängen inverterade, dessa bitar väljs också slumpmässigt. Detta medför att individer kan få värden som inte fanns med i den ursprungliga populationen, vilket medför att algoritmen inte fastnar i lokala extrempunkter. När den gamla generationen är kasserad och muteringen är klar börjar förloppet om från början. Algoritm för GA. Skapa ursprunglig slumpmässig population Tilldela fitness till alla individer Tilldela probability till alla individer Välj individer för parning, med t.ex. Roulette wheel selection Välj ut individer för mutation Avslutnings kriterium uppfyllt? o Ja, avsluta och välj ut bästa individ o Nej, börja om från punkt 2 Algoritmen kommer att fortgå så länge som användaren bestämmer i förväg. Det finns flera olika tekniker för att avsluta algoritmen, till exempel kan vi bestämma att den körs 50 gånger. Alternativt kan algoritmen avslutas när en individ har fått en fitness över ett givet tröskelvärde. Användningsområden Genetiska algoritmer har med framgång använts inom olika områden av planering, t.ex. tidsoptimering och schemaläggning. Detta har varit till stor nytta inom t.ex. trafik- och tågplanering. Det största användnings området är optimering av andra lärande system. Det är enkelt och effektiv att låta genetiska algoritmer hjälpa andra system, till exempel att förbättra så kallade Fuzzy systems. I Fuzzy systems finns numeriska värden som definierar olika mätdata till klasser, kort sagt. Genom att anpassa dessa numeriska värden med hjälp av genetiska algoritmer kan dessa värden bli ännu bättre, och som följd blir klassificeringen bättre. Det finns även lyckade försök där genetiska algoritmer har kombinerats med Artificiella Neurala Nätverk. Ett neuralt nätverk består av en mängd noder(neuroner), vilka i sin tur har ett antal ingångar. Varje ingång har en vikt, vilken avgör ingångens betydelse. Dessa vikter kan ändras med hjälp av genetiska algoritmer, nätverket uppnår då snabbare ett bra resultat än om det görs på det traditionella sättet. Alternativt kan individerna i populationen bestå av Artificiella Neurala Nätverk [Koehn94]. För- och nackdelar Eftersom genetiska algoritmer är en övervakad inlärning kan den inte lösa problem som det inte finns något känt svar på. Det skulle inte gå att beräkna någon fitness om det inte finns data att göra mätningar eller utvärdera mot, detta medför en klar nackdel. När algoritmen utförs så krävs det även en del datorkraft, har man stora populationer krävs det mycket minne av värddatorn. Dock finns det andra lärande algoritmer som kräver betydligt mer minne, även när dem är klara. Fördelen här med genetiska algoritmer är att vid slutfört arbete har algoritmen valt ut ett enda värde som svar, och ställer därför inga krav på minne. Att genetiska algoritmer kan optimera andra algoritmer är en väldigt stor fördel, då de annars är svåra att effektivisera eller inte producerar tillräckligt bra resultat. Genetiska algoritmer kan hitta nya, bättre lösningar på gamla problem, eftersom vi bara behöver veta svaret, inte hur problemet löses. 6/9 7/15/17 Liknande tekniker och varianter Genetisk programmering En variant på användande av genetiska algoritmer är så kallad genetisk programmering. Funktionsmässigt skiljer sig inte tekniken nämnvärt, däremot informationen som bearbetas, vilken i detta fall är program. Individer i populationer innehåller istället för numeriska värden, små sekvenser av kod, och skiljer sig från varandra genom vilken följd och funktion sekvenserna har. Precis som i genetiska algoritmer förändras sekvensföljden genom korsning och mutation över generationerna. Individernas fitness mäts oftast genom att individens kod körs på en uppsättning testdata. Genetisk programmering har visat sig framgångsrik inom vissa områden, t.ex. utveckling av elektroniska filter och analyser inom biologi [Mitchell97], detta trots dess extremt stora sökområde och stora krav på minneskapacitet. Bakomliggande teorier Darwin Under 1700- och 1800-talet utvecklades ett antal evolutionsteorier, men det är utan tvekan Charles Darwins teori från mitten av 1800talet som är mest känd och allmänt accepterad. Darwins teorier om naturligt urval menar att de individer som är mest anpassade för att klara sig i sin omgivning kommer att ha större chans att överleva[Darwin59]. Därför kommer dessa individers gener favoriseras i urvalet, och de individer som saknar den genetiska uppsättning som krävs kommer att minska i antal. På så sätt specialiseras vissa arter till att överleva i just sin omgivning, och på lång sikt uppstår nya arter helt och hållet. Han insåg även vikten av korsning av individers gener, och hur detta skapar individer med helt nya egenskaper och genuppsättningar. Darwins teori är en av grundpelarna till genetiska algoritmer, eftersom processen i evolution och naturligt urval är det man försöker emulera, för att avla fram de ”gener” som passar ändamålet. Mendel Runt samma period som Darwin offentliggjorde sin evolutionsteori arbetade en österrikisk munk med problemen runt arvsanlag. Hans namn var Gregor Mendel, och hans arbete skulle senare lägga grund till det som vi idag kallar genetik. Mendel kunde för första gången visa hur egenskaper nedärvdes från båda föräldrar till avkomman genom gener. Hans arbete visade bland annat [Mendel65]: 1. Varje genetiskt särdrag hos en individ är nedärvt av en av föräldrarna. 2. Tidigare teorier att föräldrarnas gener blandas i avkomman motbevisades. 3. Honor och hanar bidrar med lika mycket till avkommans genetiska uppsättning. 4. Särdrag som skaffats under en individs livstid kan inte nedärvas. Om Darwins teorier är en av grundpelarna till genetiska algoritmer, är Mendels arbete utan tvekan den andra. Flera av punkterna som togs upp tidigare kan direkt relateras till hur genetiska algoritmer fungerar. Lamarckism Biologen Jean-Baptiste Lamarck utvecklade under slutet på 1700-talet en evolutionsteori, där han hävdade att arvsanlag direkt påverkades av händelser och erfarenheter i en individs liv, vilka mer eller mindre fördes vidare till nästa generation och ökade deras chanser i det naturliga urvalet. Detta till skillnad från den teori som idag är allmänt accepterad, vilken säger att en arts utveckling helt och hållet är beroende av det naturliga urvalet, och livserfarenheter inte på något sätt påverkar den genetiska uppsättningen hos kommande generationer. Teorin har sedan sin uppkomst gång på gång överbevisats, bland andra av Mendel, och har därför mer eller mindre förkastats. Trots detta har det visats sig vara ett effektivt tillskott till genetiska algoritmer, där man således utnyttjar modifiering av individerna i en population under en generations ”livslängd” för att öka deras fitness, istället för att detta enbart sker genom rekombination eller mutation. Baldwin-effekten En annan, mer accepterad modell från biologin som anpassats till genetiska algoritmer är Baldwin-effekten, eller Baldwin-evolution, som den ibland kallas. Den togs fram av James Mark Baldwin, amerikansk filosof och psykolog. Kort sagt förutspår Baldwin-effekten att särdrag som uppstår under en individs livstid långsamt integreras i populationen, inte genom direkt nedärvning, utan genom det övertag den delen av populationen kommer ha i det naturliga urvalet. Baldwin-effekten är i grunden baserad på två av Baldwins observationer [Baldwin96]: 1. I en miljö där en förändring sker kommer individer som lär sig under sin livstid, och därför lättare kan anpassa sig, ha större chanser i det naturliga urvalet. De individer som lever efter sin fasta uppsättning gener, och inte kan förändra sig från det beteende som finns inprogrammerat i dessa, kommer ha mindre chanser att klara sig. 2. Den grupp individer som besitter möjligheten att lära och anpassa sig, är inte lika beroende av den information som förts vidare till dom via deras gener. Detta innebär en ökad takt för evolutionen för denna grupp eftersom de inte nödvändigtvis behöver de egenskaper som krävs i sina gener, utan kan utveckla dessa egenskaper vid behov. Effekten av detta blir att den grupp som lättare kan anpassa sig till sin omgivning kan klara sig utan förprogrammerade genetiska egenskaper, och detta i sin tur innebär att gruppen kan innehålla en större genetisk variation. Gruppen har då chans att på kortare tid utveckla de genetiska egenskaper som krävs för att klara förändringen. Detta faktum kan utnyttjas i genetiska algoritmer. Många försök har gjorts att implementera Baldwin-effekten i genetiska algoritmer. Till exempel har försök gjorts att implementera denna algoritm i ett neuralt nätverk. Två typer av individer användes, en ”fast”, vilken inte kunde förändras under sin livstid, och en ”lärbar”, vilken anpassade sig under sin livstid [Mitchell97]. När enbart fasta individer användes sågs ingen ökning i fitness över tiden. När invidiver tilläts att lära sig ökade dess fitness snabbt. Efter en tid ökade antalet fasta individer och populationen blev mer och mer genetisk betingad, allt eftersom den blev mindre och mindre beroende av individuell anpassning för att utföra sin uppgift. 7/9 7/15/17 Slutsatser Genetiska algoritmer kan vara mycket användbart inom flera områden, men oftast kräver den ett samarbete med andra algoritmer för att kunna lösa problem. Algoritmen bara för sig har ett något begränsat användnings område, det är ingen universallösning på problem. Trots detta används algoritmen mycket inom forskning, och även i industrin. Oftast löser den då en liten del i ett större problem, detta är den starkaste sidan hos genetiska algoritmer, då algoritmen är effektiv på att hitta snabba och adekvata lösningar på enklare problem. Detta är också en av orsakerna till dess stora användningsområde. Troligtvis kommer användningen av genetiska algoritmer att öka i framtiden, samt att nya förbättrade varianter och kombinationer kan spela en stor roll inom utvecklingen av artificiell intelligens. 8/9 7/15/17 Referenser [Mitchell97] Tom M. Mitchell, ”Machine Learning”, McGraw-Hill Science/Engineering/Math, sidorna 267-268, 262-266, 1997 [Koehn94] P. Koehn, ”Combining Genetic Algorithms and Neural Networks: The Encoding Problem”, The University of Tennessee, Knoxville, Master Theseis report, sidorna 15-16, 1994 [Mitchell96] M. Mitchell, ”An introduction to genetic algorithms”, The MIT Press, sidorna 10-12, 1996 [Darwin59] “The origin of the species (or the preservation of favoured races in the struggle for life)”, Charles Robert Darwin, Kapitel 4, 1859 [Mendel65] Gregor Mendel, “Experiments in plant hybridization (Versuche über Pflanzen-Hybriden)”, 1865 [Baldwin96] J. M. Baldwin, “A new factor in evolution”, American Naturalist 30, 1896 9/9