amber.zine -- http://amber.zine.cz

Digitální genetika

Pavel Šuchmann

Známý a poněkud výstřední počítačový vědec Kevin Warwick je své knize "Úsvit robotů - soumrak lidstva" velice skeptický, co se týče naší budoucnosti: "Lidé jsou dosud inteligentnější než jiná stvoření, proto mají sklon tyto bytosti ovládat. Zanedlouho, možná již za dvacet nebo třicet let, však budou stroje inteligentnější než lidé, což znamená, že budou dominantní. Pro tyto inteligentní stroje budou lidé tím, čím jsou nyní zvířata pro nás, tedy téměř bez významu."

Pokud by měl Warwick pravdu, máme se opravdu čeho obávat. Splnily by se naše nejčernější sny o válce robotů s lidmi; scény, jež nyní známé z filmu jako např. Terminátor nebo Matrix, by se staly skutečnosti. Ale má Warwick pravdu? Má pravdu Vernor Vinge, jenž tvrdí, že do třiceti let bude stvořena nadlidská inteligence a krátce na to skončí lidská éra? Je to s inteligenci strojů opravdu tak žhavé? Na čem dnes pracují vědci působící v oboru uměla inteligence? Pojďme se jim podívat pod prsty, pokud budeme vědět, co nebezpečného ve svých počítačových laboratořích kutí, budeme mít šanci je přes ně včas klepnout.

Umělá inteligence

Snaha o vytvoření myslícího stroje je stará snad jako legenda o Golemovi; ... ne, opravdu zde nehodlám zabřednout do historie výpočetní techniky a umělé inteligence, nechci si hrát na vědeckou přílohu Lidových novin. Místo toho se zaměřím na nové - a dle mého názoru nejzajímavější - oblasti tohoto oboru, a sice adaptivní systémy, evoluční algoritmy, genetické programování a obecně to, čemu se říká umělý život. Pokusím se neuvíznout v detailech a nezahltit vás nezajímavými podrobnostmi, zůstanu na povrchu věci a budu si všímat trendu, principu a zajímavých myšlenek. Přítomni matfyzáci a odborníci z elektra mě nepřesnosti jistě prominou.

Umělý život je termín, jenž - snad - vznikl jako parafráze pojmu uměla inteligence. Není to náhoda, oba názvy oborů - uměla inteligence i umělý život přesně vystihují cíle, o které v nich jde. Počítačové expertní systémy, jež lidé stavějí od poloviny šedesátých let, pomáhají v inženýrství, lékařství, stavitelství - zktrátka všude tam, kde můžeme převést znalosti a rozhodovací procesy člověka na nějakou bázi znalosti a nahradit, nebo aspoň usnadnit, práci člověka-experta. Cíle umělého života jsou oproti tomu mnohem prozaičtější: vytvořit například jednoduchého umělého mravence, jenž bude sbírat nečistoty z koberce nebo štěnici, jenž vyhledá nejtemnější místo v místnosti a tam se usadí a poslouchá. Mohlo by se zdát, že uměla inteligence míří výš a že právě z jejího lůna se zrodí křemíkem nadupaný robot, který člověka předčí v rozumových schopnostech, ovšem přístupy známé z umělého života teprve nyní odhalují své možnosti a takže tou bytosti jež sesadí domýšlivého člověka z jeho evolučního trůnu bude spíš umělé, vysoce organizované a sebezdokonalující se mraveniště. Nevěříte? Pokusím se vysvětlit, proč si to myslím.

Umělý život

Nejprve bych rád poukázal na hlavní rozdíl mezi klasickou UI a umělým životem. Klasický systém nadaný umělou inteligencí sází, zjednodušeně řečeno, na tzv. model světa. Vstupy tohoto systému jsou porovnávány s jakousi vnitřní představou o vnějším prostředí, kterou umělé-inteligentní stroj udržuje a případně neustále upravuje podle toho, jak se jeho okolí vyvíjí. Na tomto modelu pak umělý inteligent testuje své budoucí akce, porovnává to, co může v danou chvíli udělat, s tím, jak by mohlo zareagovat jeho okolí a nakonec na základě nějakého rozhodovacího kritéria vybere nejvhodnější akci a tu vykoná. Pokyny k tomu, jak model světa vytvářet a udržovat, pocházejí většinou od člověka. Předpokládá se, že člověk-tvůrce zná dobře realitu a může tak stroji nabídnout i dostatečně dobrý návod k tomu, jak se v ní chovat. Háček ovšem spočívá v tom, že realita se nedá dosti dobře modelovat - a pravidla, která člověk stroji sděluje, jsou často příliš vágní, nepřesná či obtížné formalizovatelná. Člověk mnohdy spoléhá na intuici, jeho inteligence je velmi obecná a stroji "nesdělitelná". A tak tyto postupy fungují dobře jen ve speciálních případech: stroj postavený na tomto principu sice dokáže v turnaji porazit mistra světa v šachu (pravidla této hry jsou totiž dobře popsatelná), jakmile ale použijeme tyto postupy při tvorbě pohybujícího se robota, výsledkem je často umělý génius, který nedokáže přejít místnost.

A tak se nabízí otázka: je model světa při konstrukci umělého stvoření skutečně potřeba? - Jak jistě tušíte, není potřeba. Vědci problém umělé inteligence postavili jinak: nechť je modelem světa realita sama, nechť se zprvu primitivní robot sám učí reagovat na okolí metodou pokus/omyl: ať žije adaptace. Chytřejší vyhrává a rychle se množí, hloupý nechť skape hlady: ať žije evoluce. Při dostatečně velkém množství robotů a jejich pokusů... - to by v tom byl čert, aby v aréně nakonec nezbyl robot nejchytřejší. Prosazuje se evoluční pohled na úlohu umělé inteligence: Máme-li vytvořit umělého člověka, nemůžeme přece přeskočit stadia umělého hmyzu, umělých savců a umělých nižších primátu. Díky dnešním počítačům půjde vše rychleji, nemusíme čekat milióny let na to, než se vyvine mozek člověka. (Ano, aby to mělo smysl, musí platit, že doba trvání experimentu by měla být kratší než průměrná délka života experimentátora.)

Takto postavená hra na stvořitele může někomu připadat nesmyslná, ale ono to funguje. Funguje to do té míry, že člověk je v procesu umělého života skoro nadbytečný; jako by platilo, že čím méně se do něj vměšuje svými "vědomostmi o problémů", počátečními podmínkami a omezujícími parametry, tím lépe. Nyní bych se ale chtěl odpoutat od tohoto poněkud obecného povídání o umělém životě a vysvětlit, proč jsem svému dnešnímu vystoupení dál název Digitální genetika. A tak ačkoliv pod termínem umělý život chápeme více principů, teorií a oborů, dále se budu věnovat uměle evolučnímu programování, genetickým algoritmům a genetickému programování a všechny ostatní podobory, jež tvoří umělý život, nyní pominu.

Genetické algoritmy

Jedním z klíčových principu šlechtění či pěstování umělého života je, jak jsem již zmínil, evoluce. Počítačoví vědci se neštítili opisovat od matky přírody a vypůjčili si celý arzenál pojmu od kolegů biologů; a tak zde se setkáváme s genetickou informací, genotypem, fenotypem, populacemi, křížením, mutacemi, přirozeným výběrem, apod.

Jak taková uměla evoluce funguje? Představme si například jednoduchého, malého robota, umělého jedince-mravence; tento robot má umělé tělo, jež je vybaveno končetinami a tykadly, dále je tvořen nervovými uzlinami, které jsou napojeny na nohy a tykadla-senzory (tato nervová tkáň může být stejně tvořena neurony, jako je tomu u živého mravence). Takto vybaveny mravenec se chová (chodí, reaguje) podle toho, jakým způsobem fungují jeho neuronové uzliny; nejdůležitějším předpisem pro konstrukci mravence je tedy popis umělé neuronové sítě - to ostatní budiž jen nezajímavá strojařina. Hotového mravence a jeho projevy můžeme chápat jako fenotyp, genotypem je v tomto případě předpis, jenž popisuje výrobu jeho "mozečku". Individualitu umělého mravence, tedy to, jak je dobře navržen a jak dokáže obstát ve světě, v němž se pohybuje a soupeři o umělou potravu, určuje právě tento popis. Je dobře si uvědomit, že život mravence, jeho výrobu a následně chování je možno - a také záhodno - simulovat v paměti počítače, namísto toho, abychom vyráběli mnoho víceméně tupých umělých tvorečků.

Mravenci populace je pak, jak jistě tušíte, tvořena právě tímto velkým množstvím umělých mravenců, velkým množstvím umělých individualit. Dejme tomu, že úspěšní mravenci (tedy ti, kdo přežili a získali největší množství potravy) se mnohou křížit, množit a vyměňovat genetickou informací. V praxi je tak v každé generaci do existující populace přidáno několik nových mravenců-potomků na základě genetických popisu jejich přímých předků.

Tato operace, tedy výměna genetické informace, je pro genetické algoritmy velmi důležitá a nazývá se crossing-ověř (zkráceně crossover) a je značně podobná stejnojmennému biogickemu procesu. Během crossoveru dojde k roztržení původních genetických popisu obou předků na části a jejich vzájemné výměně - výsledný genotyp potomka je pak složen z vyměněných části genotypu předků. Tento proces je řízen náhodně; místo, kde se oba rodičovské popisy "rozstřihnou" a následně "slepí" dohromady, je vybráno neviditelnou rukou evoluce. (Kromě crossoveru se v genetických algoritmech používá ještě mutace, tedy náhodně malé změny v genotypu; význam mutace je však, z nejrůznějších důvodů, spíše doplňkový.) Potomci, nové zkonstruování mravenci, pak doplní umělou mravenci populaci a často zároveň nahrazují neúspěšně jedince předchozí populace. Výběr jedinců ke křížení je proveden na základě vzájemného soupeření jedinců turnajovou metodou nebo opět na základě nějakého náhodného klíče. Generační výměna, výběr a ohodnocování jedinců - to všechno jsou (velice podstatně) detaily, o které se dnes přou jednotliví umělé genetičtí vědátoři, dodávajíce tak celému oboru vážnost. Experimenty s virtuálními mraveništi se skutečně dělaly, mravenec se dokonce stal symbolem umělého života.

Evoluce a invence

Rád bych se teď zmínil o jedné podstatné otázce. Jak to, že uměla evoluce upřednostňuje funkční řešení před těmi méně funkčními, když crossover je slepé náhodný proces? Vysvětlení nabízí tzv. teorie schémat. Schématem (jemuž v biologii odpovídá přibližně pojem gen) rozumíme část genetické informace, která kóduje nějaký dílčí subsystém jednotlivce. Vrátím-li se k předchozímu příkladu s mravenci, muže to být například část popisující pohyb nohou mravence nebo část, níž je kódováno, jak pracují tykadla-senzory mravence. Dejme tomu, že v nehostinném prostředí, v němž musí mravenec přebývat, rozhoduje o tom, jestli mravenec přežije, právě to, jak rychle dokáže najít a ukořistit potravu. Mravenci vybavení dobrými tykadly, mohou potravu dobře najít a rozpoznat, jsou tedy v konzumaci úspěšnější než ti, kdo dobrá tykadla postrádají. Pokud ale nemají rychlé nohy, nestihnou proslídit dostatek prostoru, v němž by se potrava mohla nacházet. Naopak jedinci vybavení rychlými nohami jsou schopni rychle prohledat značnou část terénu, pokud ale nedokážou potravu rozlišit od ostatních objektů, není jim to nic platné. Obě kvalitní schémata - dobrá tykadla a rychlé nohy - představují evoluční, nebo chcete-li konkurenční výhodu mravence. Mravenec, jenž je vybaven jedním s těchto schémat, je jistě ve svém umělém životě úspěšnější než jeho kolegové, kteří takto obdarováni nebyli; nicméně ta pravá prací síla evoluce se projeví teprve v okamžiku, kdy se díky náhodě pomocí křížení - crossoveru - setkají obě schémata v jednom mravenci. Takový jedinec je pak vybaven zároveň dobrými tykadly a rychlýma nohama a všechnu potravu vyfoukne svým pomalejším nebo nevšímavým kolegům. To vede k tomu, že náš mravenec-hrdina vynikne nad ostatními, co se týče šancí na přežití; jako úspišný jedinec bude mít i lepší možnost předat svá schémata (tedy kombinaci rychlých nohou a kvalitních tykadel) svým potomkům.

Teorie schémat tedy dává tušit, jak evoluce "vynalézá" nové nápady. Zkouší - sice naprosto náhodně - jestli se jí povede kombinací předchozích ověřených postupů sestavit něco nového, jakmile se jí to podaří, uloží nový objev do paměti genofondu a provede "generační upgrade", výměnu zastaralých jedinců za nové, chytřejší, rychlejší apod. Evoluci mužeme chápat tedy jako neustálé šlechtění genetické informace, jež probíhá ve skocích. Po období stagnace, v němž se přeskupují schémata a vnějškově (fenotypově) se zdánlivě nic neděje, následuje vždy bouřlivá výměna generací, kdy se prosadí schopnější jedinci na úkor těch méně úspěšných. Evoluce tak zároveň prosazuje robustní a stabilní řešení a postupuje při vynalézání jaksi "zdola nahoru" - vždy v jejím případě platí, že nový, složitější postup je kombinací několika jednodušších, ověřených a fungujících. To je v určitém protikladu s "inženýrským" přístupem k řešení problémů "shora dolů". Člověk si při návrhu určitého složitého celku zpravidla nejprve rozdělí práci na menší úlohy a ty pak řeší samostatně, přičemž jednotlivé podsystémy často nejsou dostatečně soběstačné (nebo, chcete-li, životaschopné) a často také na sobě vzájemně úzce závisí. Přestane-li pak fungovat jediná součást, muže to mít za následek vyřazení celku z provozu. Řešení, která nabízí evoluce, však tímto nedostatkem netrpí - a tak virtuálnímu mraveneci, jenž při výkonu povolání přišel o nohu, se sice špatně chodí, to však neznamená, že je vyřazen že hry.

Hardware

Protože se neustále o chudáky umělé mravence otírám, měl bych uvést, jak se jim žije. Nemají to věru jednoduché - jsou jen záznamem v paměti nějakého velkého počítače a jejich kratinký život (tj. řádově jednotky sekund) je kompletně simulovaný. A to proto, že, jak jsem naznačil, máme zájem pouze o šlechtění genetické informace a tělo mravence nás nezajímá. Jak takový počítač, simulující stovky generací jedinců a jejich životní podmínky, vlastně vypadá? Zpravidla je to stroj pekelně výkonný, ba co více, často se jedná o několik strojů - někdy i několik desítek strojů. Proč několik? Genetické algoritmy a simulace umělého života jsou totiž velice dobře paralelizovatelné, tj. rozložitelné na velké množství navzájem nezávisejících procesů. Když to přeženu, můžeme si představit, že každému mravenci přiřadíme jeden počítač, najednou tak můžeme simulovat životy tolika mravenců, kolik máme k dispozici počítačů. To vede k velmi zajímavým konstrukcím, např. projekt superpočítače Beowulf firmy Genetic Programming, Inc., řeší paralelní počítání pomocí tisícovky běžných PC, každé z nich je vybaveno procesorem Pentium II na 350 MHz, a 64 MB paměti. Na každém uzlu běží speciálně upravený Linux. Takové - pravda, menší - mašinky jsou na univerzitách všude po světě, každá katedra počítačových věd má jednu, nebo ji alespoň chce mít.

Experimenty

Paralelní počítače možná čeká v následujících letech prudký rozvoj. Jejich uplatnění v pokusných aplikacích genetických algoritmů je značné: kromě široké kategorie GA (genetické algoritmy) se setkáváme s kombinací GANN (genetické algoritmy a umělé neuronové sítě), případně GA a fuzzy systémy.

Zmíním ještě několik příkladů uplatnění GA: Křížením elektronických obvodů složených že součástek můžeme nechat počítač, aby vynalézal nová zapojení, elektronická schémátka. Pokud něco víte o elektronice, tušíte, že právě syntéza např. analogových filtrů je vysoce náročná a odborná činnost. Pomocí GA se podařilo vytvořit fungující obvodové struktury, které doposud nenapadly žádného elektroinženýra.

Další zajímavou aplikací genetického programování je systém, který slouží k manévrování kosmické lodi. Laboratorně se podařilo vyšlechtit programy, jež provádí tyto manévry stejně dobře jako jiná numerická řešení, která ovšem jsou nepoužitelná na oběžné dráze. A tak bych mohl pokračovat, vědeckých prací - jen v oboru genetické programování - vychází ročně na desítky.

Software

Velmi zajímavým podoborem GA je též GP (genetické programování), v němž je genetickou informací přímo kompletní počítačový program (zmíněné pokusy s programy řazení čísel spadají právě do této kategorie). Rád bych se u GP ještě chvíli zastavil. Programování není žádný med a známá lidová moudrost praví, že nejrozšířenějším programovacím jazykem je klení. Stále narůstající složitost systémů a pracnost testování software je dnes velkou brzdou oboru; manažeři nechtějí slyšet nic o chybách v kódu a to, že napsat program opravdu dobře je v podstatě umění, nedokážou pochopit vůbec. Kdybychom mohli programování svěřit přímo počítačům, to by bylo!

Uvedu nyní jako příklad experimenty, které prováděl Daniel Hillis. Kdo z vás měl někdy co do činění s programováním, jistě narazil na úlohu ražení čísel. Existuje celá řada algoritmů řazeni. Jednotlivé postupy se mezi sebou liší efektivitou, rychlosti, tedy např. počtem kroků, počtem výměn v jednotlivých pořadích, počtem porovnání mezi čísly, množstvím potřebné paměti. Každý z postupu-algoritmu tak představuje, z hlediska genetického programování, jednu individualitu. Populace se pak skládá z velkého množství programu určených na ražení čísel - někteří jedinci v populaci dokážou úlohu vyřešit rychleji a s nižším použitím výpočetních prostředků, jiní jsou méně obratní a čísla řadí hloupějším způsobem. Jelikož genetickou informací je zde samotný program, crossover (křížení) je prováděno přímo jako výměna části předků-programu. Po řadě generací tak dochází k tomu, že některé méně efektivní programy zaniknou (jako druh vymřou) a jiné, nové vzniklé, kvalitnější postupy naopak brzy ovládnou teritorium.

V průběhu experimentu se podařilo vypěstovat algoritmus, jenž byl efektivnější než nejrychlejší dosud publikovány předpis pro ražení čísel. Počítač v tomto případě projevil něco, co by se při určitě schovivavosti dalo nazvat "tvůrčí činnosti": vymyslel si program, sám se naprogramoval lépe, než by to dokázal člověk. Jako zajímavost stojí za to ještě uvést, že Hillis použil principu koevoluce, konkurence dvou druhu: společně s řešením (řadícím algoritmem) nechal vyvíjet i samotnou úlohu (různé testovací posloupnosti čísel, která měla být řazena). Zjistil tak, že evoluce, pokud k ní dochází v konkurenčním prostředí, je mnohem rychlejší a účinnější.

(Dovolím si teď malou odbočku, týkající se programování a evoluce: Software, zvláště ten zdarma šířený na internetu, se v hrubých rysech chová také geneticky: schopný přežívá a šíří se na disky uživatelů, méně dobrý je nelítostně mazán. Ten nejméně dobrý se pak vůbec nešíří zdarma, musíte si jej koupit. (Konec vsuvky.))

Trend k jakémusi "osamostatňování se" počitačových programů je zřejmý, i bez genetických algoritmů. K prvním, procedurálním programovacím jazykům z šedesátých let minulého století, jako je např. Fortran, C nebo Cobol, přibyly vzápětí jejich objektoví následníci: Smalltalk, C++, Jáva, atd.; Zatímco procedurální jazyky jsou popisem typu "teď vykonávej toto, teď zase ono..." objektový popis představuje spíše formulace: "já jsem okno to a to a umím to a tohle" nebo "já jsem knoflík ten a ten, zmáčkneš-li mne, to uvidíš věci". V posledních letech se jako inovace objektového programování objevuje princip tzv. agentový. Agentem - v softwarovém smyslu - mužeme chápat samostatně jednající systém, jenž komunikuje se svým okolím (člověkem nebo i jinými agenty) a snaží se splnit určité zadané cíle. Agenty mohou například vyhledávat určitou informací na internetu, jednat jménem uživatele - v budoucnu možná budou vyřizovat jeho korespondenci a nakupovat za nás. To, že agentový software je většinou adaptivní a je schopen zobecňovat a získávat automaticky vědomosti o prostředí, v němž se pohybuje, snad ani nemusím zmiňovat.

Zajímavé pokusy s geneticky šlechtěnými agenty provádí John Holland (zájemcům mohu doporučit jeho knihu How Adaptation Builds Complexity). Jeho experimenty jsou mj. zaměřeny na sledování vazeb a vztahů mezi agenty různých typů. Ve svých digitálních zkumavkách zkoumat takové jevy jako je parazitismus, symbióza, vzájemná ochrana mezi jedinci jednoho druhu, mimikry, atd.

Pozoruhodné je, že pokud agenty vybavíme možností vysílat - signalizovat - určitou informací a na druhé straně schopností tyto signály přijímat a zpracovávat, vznikne automaticky komunikace mezi agenty a dochází také ke kooperaci mezi nimi. Jinými slovy, existují-li ústa, která mohou mluvit, a uši, které mohou naslouchat, vznikne řeč už sama od sebe.

Vrátíme-li se k našim umělým mravencům-agentům: ti, kteří jsou vybavení schématem dobrých tykadel, jistě dají v budoucnu vzniknout generaci těch, kteří se začnou těmi tykadly oťukávat. A budeme-li simulovat najednou dvě celá mraveniště, obě mravenčí kolonie vynaleznou jiný způsob oťukávání, a - pokud vydržíme dalších pár generací - začnou se zástupci obou mravenišť přít o pravidla spisovného oťukávání.

Warwick má pravdu?

Na závěr své přednášky se pokusím o odvážné přenesení výsledků těchto počítačových pokusů do naší reality. Takže jak je to vlastně s inteligencí u člověka? Řeč, konvence a lidské zvyklostí - a v podstatě i celá civilizace - to vše je jen důsledkem toho, že kooperujícím agentům - lidem se daří v podstatě lépe, než kdyby spolu nekomunikovali. (Je to prosté, nehledejte v tom filozofické otázky.) Myšlení a civilizace jsou tak vlastně emergentními jevy, tedy něčím, co vzniká samo od sebe, pokud jsou dány vhodné počáteční podmínky (ústa a uši) a je k dispozici dostatečný počet generací adaptivních agentů (lidí). Shrnu-li to: jestliže za rozvojem myšlení a uchování "knowhow" lidstva stojí právě řeč, a jestliže je řeč a mezilidská komunikace... máme již dnes možná v ruce dlouho hledaný klíč, pomocí něhož odemkneme Pandořinu skříňku obecné umělé inteligence.

Ano, tím klíčem je vývoj - umělá evoluce. Nemáme, jako lidstvo, exkluzivní patent na rozum, v tomto bodě musíme dát technokalyptikům, jako je Warwick, za pravdu.

Nebo si snad myslíte, že po vynalezení člověka to evoluce zabalila?


amber.zine -- http://amber.zine.cz