Napjainkra az 1990-es évekig egymástól elkülönülten fejlődő rokontechnológiák (evolúciós és genetikus programozás, evolúciós, genetikus és bakteriális algoritmusok stb.) a mesterséges intelligencia - kombinatorikai optimalizáló problémákra is kiterjedő - fontos alterületévé váltak. Módszereit tekintve az ágazat az iteratív fejlődési folyamatokat, például egy adott populáción belüli növekedést, változásokat vizsgál. A kiválasztódást részben irányított, részben random kereséssel, az óhajtott output elérését párhuzamos feldolgozással oldja meg. (A párhuzamosságon alapuló processzorok felépítését és működési mechanizmusait gyakran szintén a biológiai evolúció inspirálja.)
Biológiai analógiák
Mivel az evolúció magas szinten optimalizált folyamatokat és hálózatokat eredményez, a számítástudományban felettébb sok rendszer és alkalmazás alapul rá, fejlesztők egész sora tekinti másolandó mintának. Az evolúció szimulációjához használt különböző, főként genetikus algoritmusokkal és a későbbi mesterségesélet-kutatásokat előlegező megoldásokkal, így a számítógépes környezetben végbemenő szelekcióval az 1960-as évek óta foglalkoznak. Evolúciós stratégiák komplex mérnöki problémákra történő alkalmazása a német Ingo Rechenberg akkori, különféle szerkezetek tulajdonságainak javítását célzó kísérleteit követően vált széles körben elfogadott optimalizáló módszerré.
Az 1970-es években bevezetett evolúciós algoritmusok a biológiai evolúció által motivált problémamegoldó sémák, metaheurisztikák. Az eltelt évtizedek alatt komoly fejlődésen mentek keresztül, sokféle változatuk jött létre, miközben matematikai megalapozásuk is egyre teljesebbé vált. Komoly előnyük, hogy bizonytalan és pontatlan információs környezetben is eredményesen alkalmazhatók, főként rugalmasságuknak és a párhuzamos keresésnek köszönhetően gyakran felülmúlják a hagyományosabb optimalizálási eljárásokat. Alkalmazásuk akkor célszerű, ha a megoldandó probléma célértéke (kritériumfüggvénye) ismert, az egészen pontos célérték viszont nem, ugyanakkor az egyes eredmények egymáshoz viszonyított pozitívuma/negatívuma meghatározható. Akkor is hasznosak, ha sok olyan utat, módszert ismerünk, amely az eredményhez vezet, viszont nem tudjuk, melyik az optimális.
Alapötletük a természetből származik: több egyed verseng a keresési tér szűkös erőforrásaiért, és csak a legerősebbek örökíthetik át génjeiket a következő generációba. A kezdeti populációt legegyszerűbb véletlenszerűen létrehozni. Mérete a probléma természetétől függ, leggyakrabban néhány száz vagy néhány ezer egyedből áll. Általában egyenletesen oszlanak el a keresési térben, viszont egyes esetekben olyan részeken többen vannak, ahol feltételezhető az optimum. A célokat megvalósító program először véletlenszerű megoldásokat generál, eleinte valószínűleg nagyon rossz minőségűeket. Egy algoritmus segítségével módosítást hajt végre rajtuk, azaz (a rendszer folyamatos működését biztosító kereszteződéssel - rekombinációval - és mutációval) létrehozza a következő generációt, amit megvizsgál, és csak egy részét, a - valamilyen szempontból - legjobbakat tartja meg. A kiválasztás (szelekció) determinisztikus és sztochasztikus is lehet. Előbbinél szigorúan az egy adott alkalmassági (fitness) küszöbértéknél jobbak maradnak fenn, utóbbinál a rosszabb fitness értékkel rendelkező egyedek közül is fennmarad néhány.
Ilyen módon „szaporodnak", és létrejön egy újabb, az előzőtől kismértékben különböző generáció. A program addig futtatja/folytatja a ciklust, amíg kielégítő megoldást nem talál, a leállási feltétel (például adott generációszám elérése) nem teljesül, vagy esetleg elfogy a megoldásra szánt idő. Nincs garancia arra, hogy a létező legjobb megoldást találja meg, de erre általában nincs is szükség. Egy „még megfelelő" változat ilyen módon általában sokkal kevesebb idő alatt alakul ki (evolválódik), mintha hagyományos optimalizáló algoritmussal dolgozna.
Élővilág és számítástudomány
Az evolúciós algoritmusokat a számítástudomány legkülönbözőbb területein, elsősorban automatizált problémamegoldásra alkalmazzák: klaszterezés, adatbányászat, szoftverek megbízhatóságának tesztelése, rendszertervezés, optimalizálási feladatok stb.
A darwini evolúció és a genetika alapjait magába építő első - speciális, genetikus - változatot John Holland, a szakterület úttörője dolgozta ki 1975-ben. Ő bizonyította be elsőként, hogy a számítógépek képesek „továbbfejleszteni" a rajtuk futó, összetett problémákat megoldó programokat - akár úgy is, hogy a tervezők se értik teljesen a mechanizmusokat.
A genetikus algoritmusok és általában az evolúciós számítások térhódítását a gépek teljesítményének drasztikus növekedése tette lehetővé. A szakterület (akárcsak a szintén biológiai ihletésű emergenciakutatások) élenjárójának sokáig a Santa Fe Intézet számított.
Melanie Mitchell, az intézet egyik kutatója szerint biológusok és számítástudományi szakemberek kölcsönösen tanulhatnak egymástól: minél többet tudunk a biológiai rendszerek információfeldolgozásáról, az ellesett módszerek annál jobban ültethetők át számítógépes közegbe. Működésük során jól megfigyelhető a komplexitás-tudományokban gyakori emergencia: a rendszer alapvetően egyszerű műveleteket végző, egyszerű összetevőkből áll. Viszont az elemek együtt, az általuk formált hálózat már rendkívül bonyolult dolgokat visz véghez. Ilyen például az immunrendszer, amely információalapú kognitív hálózat, tehát a minél biztonságosabb számítógépes alkalmazások az immunrendszer által végzett műveletekhez hasonlókon alapulhatnak.
Az evolúciós számításokat egyre sűrűbben használják valódi élethelyzetek, gyártási/termelési, üzleti feladatok kezelésére, megoldására: üzembeli munka-beosztásra, láncoptimalizálásra, áramkörök automatikus kezelésére, elektronikus tranzakciók könnyebbé tételére. A jelenlegi legfőbb dilemmát talán az jelenti, hogy egyelőre még mindig nem értjük kristálytisztán, mi jellemzi azokat a problémákat, problémaköröket, amelyek megoldására tökéletesen működnek ezek az alkalmazások.
A mesterségesintelligencia-kutatás 1990-es években elterjedt és ma is meghatározó trendjei (szociális robotok, ágenstechnológia stb.) kifejezetten „kompatibilisek" az evolúciós megoldásokkal. Elsősorban azért, mert nagyon nehéz manuálisan megtervezni intelligens vagy életszerűen cselekvő komplex számítógépes rendszereket, és célszerűbbnek tűnik hagyni a rendszert, hadd tanuljon önmagától. Azaz, az evolúciós számítások a gépi tanulás egyik típusaként is értelmezhetők.
A gépi tanulás színvonala, hatékonysága koevolúciós módszerekkel szintén növelhető. A hagyományos eljárás során tanulási példák rögzített sorozatán keresztül tesztelik az adott rendszert. Ha jó a válasz, elfogadják, ha rossz, akkor nem. Ezzel szemben a koevolúció során maguk a tanulási példák is fejlődésen mennek át. Dinamikusabbak, életszerűbbek. Ideális teszteléskor a rendszer generálja őket, közben pedig olyan szituációk alakulhatnak ki, amelyek sebezhetőbbé teszik. Ez azért jó, mert így könnyebb optimalizálni. Magyarán, az evolúciós számításokkal foglalkozó kutatók ezekben az esetekben a „próba és hiba" (trial and error) gyakorlatot fejlesztik tovább, alkalmazzák dinamikus környezetre.
Rugalmasság, hatékonyság
Egy Esmail Bonakdarian, a Franklin Egyetem (Columbus, Ohio) számítástudományi adjunktusa által idén kidolgozott új evolúciós számítási módszer lehetővé teszi, hogy a kutatók rugalmasabban kereshessék a különböző típusú alkalmazásokból, például a gazdaságból származó adatokat legjobban kezelő modelleket. Bonakdarian az Ohio Szuperszámítógép Központ (OSC) büszkeségén, a Glenn IBM 1350 Opteron klaszteren tesztelte algoritmusát.
„Nap mint nap kísérleti adatsorok sokaságával és az értelmezésük, hasznos ismeretté alakításuk okozta komoly kihívásokkal szembesülünk - nyilatkozta. - Ezek az adatok általában megfigyelés-sorozatok, és az elképzelés az, hogy kutatási vagy előrejelzési céllal kapcsolatrendszereket alakítsunk ki különféle változóik között."
Evolúciós adatelemzési megközelítését a klasszikus gazdaságtan közjavakra vonatkozó két jól ismert problémájára alkalmazta: egyrészt, ha kötelező egyéni hozzájárulás nélkül szélesebb közösségnek szolgáltatunk javakat, az „eredmény" sokszor leginkább a „potyautasok" számának drasztikus növekedésében mérhető. Másrészt viszont az egyén mégis hajlandóságot mutat a közösség, csoport javát szolgáló együttműködésre és áldozathozatalra.
„Az OSC erőforrásait általában az olyan tudományterületeken, mint például a fizikában, kémiában vagy a biológiában történő felfedezésekre vagy komplex ipari és gyártási kihívások megoldására használják, ugyanakkor mindig érdekes látni, hogy valamelyik kutató hogyan alkalmazza a szuperszámítógépeket átfogóbb területek problémáinak a kezelésére" - jelentette ki Bonakdarian gazdaságtani vizsgálódásaival kapcsolatban a központot vezető Ashok Krishnamurty.
„Az evolúciós algoritmusok természetüknél fogva alkalmasak feladatok párhuzamos és elosztott végrehajtására" - magyarázta Bonakdarian. - Ha adott a megfelelő platform, lehetőséget biztosítanak potenciális megoldások, például modellek szimultán, párhuzamos kiértékelésére, miközben a munka tempóját is jelentős mértékben felgyorsítják."
A matematikai statisztika egyik legfontosabb gyakorlati alkalmazása, a két vagy több vizsgálati paraméter közötti összefüggést leíró képletet kísérleti (mérési, megfigyelési) adatokból meghatározó regresszióanalízis olyan kutatási projekt, mint Bonakdarian gazdasági példái közti statisztikailag releváns összefüggések feltárásának hagyományos módszere. Azonban nemcsak az adatokat, hanem az azokat generáló folyamatokat is meg kell érteni.
Amíg a független változók száma relatíve alacsony, vagy a kísérletezőnek pontos elképzelései vannak a lehetséges mögöttes összefüggésekről, a legjobb modellek szabvány szoftvercsomagokat és metodológiákat használva is létrehozhatók. Viszont ha túl sok a független változó, és ösztönösen nem érzünk rá a köztük és a függő változók közti összefüggésekre, a kísérletező automatizált, ám általános és teljes körű vizsgálódásba foghat, máskülönben nem fogja azonosítani a releváns független változókat. Ugyanakkor a számok legkisebb, de még értelmezhető részhalmazra csökkentése szintén igen komoly kihívást jelent, ráadásul sok hibalehetőséget is rejt magában.
Mi a teendő az ilyen esetekben?
Bonakdarian javaslata: a legnagyobb magyarázó értékkel rendelkező legjobb minimális részegységek evolúciós algoritmusokkal történő evolválása. Mivel a felhasználó specializálhatja a modell optimalizálásához szükséges egzakt keresési kritériumokat, a megközelítés sokkal flexibilisebb a lehetséges többi alternatívánál. A következő lépés a rendszer által talált csúcsmodellek rangsorának áttekintése, értékelése, többek között a meghatározó paraméterek számának és százalékos előfordulásának figyelembevételével. Mindezek mellett az algoritmus a végleges modellben lévő változók számának korlátozására is beállítható.
A mai evolúciós számítások több ok miatt vonzó problémamegoldó technikák. Az a tény, hogy könnyen kezelhetők különböző alkalmassági kritériumok (például kiértékelési funkciók) mellett, egyértelműen bizonyítja rugalmasságukat. Egy-egy alkalommal ugyan leragadhatnak valamelyik lokális minimumnál, de a keresés sztochasztikus jellege megakadályozza, hogy többszöri futtatás mellett ugyanez a hiba megismétlődjön. Az adott modell nagyszámú koefficiense miatti kimerítő és nemegyszer kivitelezhetetlen keresésekkel ellentétben, az evolúciós és genetikus algoritmusok a keresési tér csekély részhalmazának mintájával dolgoznak - a heurisztikus megközelítés általában még akkor is hatékonyabb, ha az optimális megoldást nem tudja mindig garantálni.
Bonakdarian szerint további kutatások szükségesek ahhoz, hogy eddigi - biztató - eredményeiből még általánosabb következtetéseket vonjanak le. Több lehetőségre hívja fel a figyelmet: a futtatás közben akár önmagukon változtató, saját „elhatározásból" alkalmazkodó újabb paraméterek bevezetésére, esetleg hasonló vagy jobb eredményeket generáló alternatív, például részecskesereges optimalizáló (particle swarm optimization) algoritmusok használatára.