Umělá inteligence
zpracoval: Jiří Svršek

Odkazy a literatura:

[1] Josiah Dykstra: The Fundamentals of Artificial Intelligence Expert Systems: Manifestations in Dialogue Programs. 11 December 2001. Senior Project Seminar: Dr. Herb Dershem.

[2] Michael Crichton: Kořist. Knižní Klub. Euromedia Group k.s., 2003. ISBN: 80-242-1094-0. Z angl. orig.: "Prey", HarperCollins, New York, 2002.

[3] Davidson, Clive: Creatures from primordial silicon. Let Darwinism loose in an electronics lab and just watch what it creates. New Scientists, 15 November 1997, p. 30 - 34.

[X1] Promoting the adoption and development of Alicebot and AIML free software. [M1]

[X2] American Association for Artificial Intelligence.

[X3] Hardware Evolution. Adrian Thompson, COGS, University of Sussex, Brighton, BN1 9QH, United Kingdom. Publikace Adriana Thompsona. (viděno: září 1998)

[N1] Virus Ebola. Natura 6/2003.

[N2] Významní matematikové v historii (19). Alan Turing. Natura 8/2003.

[N3] Michael Crichton: Koule. Natura 3/1996.

[N4] New Scientist: Darwinova teorie v laboratoři elektroniky. Natura 9/1998. 


1. Vývoj oboru

Umělá inteligence (AI, Artificial Intelligence) je oborem vědy o počítačích. Zabývá se koncepty a metodami symbolických odvození a symbolickou znalostní reprezentací pro vytváření těchto odvození počítačovými programy. Jinými slovy, jde o obor vědy o počítačích, zabývající se vývojem technologie a programů pro provádění činností, o nichž se obvykle domníváme, že vyžadují lidskou inteligenci. Tento obor se rozdělil na řadu podoborů s cílem lépe porozumět mechanismům lidské inteligence a vyvinout počítače s intelektuální úrovní lidí. Umělá inteligence proto zahrnuje matematickou teorii dokazatelnosti, matematickou teorii her, robotiku, rozpoznávání obrazu a tvaru, zpracování lidské řeči a jazyka a znalostní expertní systémy.

Běžné programovací jazyky, jako je jazyk C nebo Java, jsou určeny a optimalizovány pro procedurální manipulaci s daty (jako jsou čísla nebo pole znakových řetězců). Lidé však složité problémy často řeší pomocí velmi abstraktních symbolických postupů. Příkladem takových postupů jsou matematické důkazy, které nelze běžnými programovacími jazyky dobře implementovat. Přestože abstraktní informace lze těmito jazyky modelovat, při programování se musí věnovat značné úsilí transformaci abstraktní informace do formátu použitelného pro procedurální paradigma běžných programovacích jazyků.

Jedním z výsledků v oblasti umělé inteligence byl vývoj metod, které umožňují modelovat informaci s vyššími úrovněmi abstrakce. Tyto metody jsou začleněny do programovacích jazyků nebo nástrojů, které umožňují programům, aby lépe využívaly logiku a způsoby uvažování lidí. Programy, které emulují lidského odborníka v dobře definované oblasti problémů, se nazývají expertní systémy. Příklady expertních systémů jsou MYCIN, ELIZA a ALICE.

Znalostní expertní systémy jsou takové expertní systémy, které využívají nějakou znalostní bázi pro řešení problémů, které by jinak vyžadovaly lidskou inteligenci. Takové expertní systémy představují odborné znalosti jako data nebo pravidla uložená v počítači. Tato pravidla nebo data jsou používána kdykoliv je nutné řešit nějaké problémy. Knihy a manuály obsahují ohromné množství znalostních dat, avšak aby je lidé mohli použít, musí tyto knihy přečíst, porozumět jejich obsahu a interpretovat získané znalosti při řešení problému. Expertní systém umožňuje automatizované rozhodování v oblastech, v nichž si odborník počíná lépe než neodborník.

Konvenční počítačové programy provádějí úkoly s využitím konvenční rozhodovací logiky. Obsahují pouze znalosti, které jsou obsaženy v základním algoritmu pro řešení určitého problému, a nezbytné okrajové podmínky. Znalosti programu jsou většinou zahrnuty do vykonavatelného kódu programu. Pokud se však tyto znalosti změní, je nutné kód programu změnit. Znalostní systémy udržují ve znalostní bázi rozhodovací metody, jichž používají při řešení problému. Jiný problém v rámci této znalostní báze je schopen program řešit bez nutnosti změny svého kódu. Schopnost těchto systémů vysvětlit proces rozhodování zpětným trasováním a schopnost pracovat s určitou věrohodností a nejistotou, jsou vlastnosti, které konvenční programy postrádají.

Expertní systémy obecně vykazují následující charakteristiky:

Expertní systémy se používají dvěma způsoby. Prvním je podpora rozhodování. Tento způsob odborníkovi podává potřebné informace a nabízí možnosti rozhodnutí. Systémy tohoto typu se dnes někdy používají v medicíně. Druhým způsobem je samostatné rozhodování systému. Tento postup umožňuje neodborníkovi provádět rozhodnutí v oblasti, která přesahuje úroveň jeho odborných znalostí. Tento typ umělé inteligence často používají průmyslové systémy.

Konstrukce expertních systémů je důležitá ze čtyř důvodů. Za prvé, tyto systémy umožňují udržování a rozšiřování odborných znalostí. Jeden lidský odborník vytvoří znalostní bázi, kterou lze poskytnout ostatním lidem, kteří potřebují využívat těchto odborných znalostí. Za druhé, expertní systémy umožňují použití odborných znalostí na vzdálených místech. Současné technologie počítačových sítí umožňují využívat centrální znalostní bázi kdekoliv na světě nebo dokonce ve vesmíru, jako je tomu u různých průzkumných robotů. Za třetí, expertní systémy zajišťují kvalitu řešení problému. Lidé sice mají ohromné intelektuální schopnosti a fantastické možnosti abstraktního myšlení, avšak počítače jsou schopny problémy řešit rychle a účelně například vyzkoušením všech možných kombinací pravidel proti datovému souboru, který problém popisuje. Přitom počítač při řešení stejného problému dospěje vždy ke stejnému závěru. Konečně expertní systémy mohou používat také neodborníci po nezbytném zaškolení, aniž by bylo nutné je podrobně zasvětit do teorií, na nichž je rozhodování založeno.

Většina expertních systémů jsou systémy založené na pravidlech. Tyto systémy mají některé zvláštní charakteristiky. Systémy založené na pravidlech představují znalosti v podobě databáze nebo seznamu pravidel, která definují, co by se mělo udělat nebo k jakému závěru by se mělo dospět v určitém stavu nebo situaci. Celý systém se skládá ze seznamu pravidel typu "if- then-else" (jestliže je podmínka splněna, udělej to, jinak udělej ono), ze seznamu faktů a z interpreteru, který řídí použití pravidel nad danými fakty.

Existují dva základní typy systémů založených na pravidlech: vpřed řetězené systémy a nazpět řetězené systémy. Vpřed řetězený systém začíná s počátečními fakty a použitím pravidel dochází k novým závěrům (nebo akcím) na základě těchto faktů. Nazpět řetězený systém začíná s určitou hypotézou (nebo cílem) a pokouší se nalézt pravidla, jimiž lze tuto hypotézu ze vstupních faktů dokázat, případně stanoví další nové hypotézy. Vpřed řetězené systémy jsou řízeny vstupními daty, zatímco nazpět řetězené systémy jsou řízeny cíli a hypotézami. Vpřed řetězené systémy jsou vhodnější, pokud chceme dokázat více závěrů nebo například chceme pouze ověřit, která nová fakta jsou pravdivá, pokud máme malý soubor počátečních faktů nebo pokud existuje více pravidel, která umožňují dospět ke stejnému závěru. Nazpět řetězené systémy jsou vhodnější, pokud se pokoušíme dokázat určitý fakt a máme k dispozici velký soubor počátečních faktů, případně pokud vpřed řetězený systém na základě pravidel vede k zacyklení.

ELIZA

V lednu 1966 v časopisu Communications of the ACM profesor MIT Joseph Weizenbaum publikoval počítačový program, který umožňoval přirozenou jazykovou komunikaci člověka s počítačem. ELIZA bylo označení rodiny programů, které se pokoušeli vést běžnou konverzaci s lidmi. Program prohledával vstupní text na výskyt klíčových slov a když některé nalezl, pomocí pravidel platných pro dané klíčové slovo vytvořil větu. Prvním příkladem principů ELIZA byl program DOCTOR, který se pokoušel simulovat psychiatra v rozhovoru s pacientem. Během testování programů typu ELIZA se ukázalo, že v některých případech lidé nebyli schopni rozlišit, zda hovoří s člověkem nebo s počítačem. Pozdější verze programů typu ELIZA byly schopny se učit novým klíčovým slovům a pomocí konverzace s člověkem se pokoušely odvodit pravidla pro jejich používání.

MYCIN

MYCIN byl expertní systém vyvimut v 70. letech 20. století na Stanfordské univerzitě s cílem diagnostikovat a doporučit léčbu pro určité typy krevních infekcí, jako jsou virové hemmorrhagické horečky, provázené mohutným krvácením ze všech tkání. Tato onemocnění jsou způsobena arenaviry, bunyaviry, flaviviry a filoviry, mezi něž náleží například virus Ebola. [N1] Analytická procedura sledovala rostoucí kultury a vyžadovala až 48 hodin, během nichž pacient již mohl zemřít. Program MYCIN byl napsán částečně kvůli tomu, jak musí lékařský odborník provést obtížné, avšak životně důležité rozhodnutí na základě neúplných informací. MYCIN byl napsán v programovacím jazyce Lisp a jeho pravidla byla reprezentována jako výrazy jazyka Lisp. Byl cílově orientovaným systémem, který používal nazpět řetězenou strategii. MYCIN nebyl v praxi nikdy použit. Přestože se na jeho vývoji podíleli studenti medicíny Stanfordské university, etické a právní důvody spojené s užitím počítačů v medicíně zabránily jeho nasazení.

A.L.I.C.E.

A.L.I.C.E. (Artificial Intelligence Internet Computer Entity) je konverzační robot v přirozeném jazyce s umělou inteligencí, který je dostupný zdarma. Systém vyvinul v roce 1995 Dr. Richard S. Wallace, který tehdy vyučoval na Univerzitě v New Yorku. Dr. Wallace se seznámil s programy typu ELIZA a rozhodl se jejich koncept rozšířit. První verze A.L.I.C.E. (Program A) byla napsána v SETL, nepříliš známém programovacím jazyce založeném na teorii množin a matematické logice. Tento projekt však přilákal jen málo vývojářů, dokud nebyl v roce 1998 přepsán do jazyka JAVA. Tuto druhou verzi (Program B) začalo upravovat asi 300 vývojářů díky licenci GNU. Vývojáři začali používat nový jazyk AIML (Artificial Intelligence Markup Language), vyhovující normě XML. Tato verze získala v lednu 2000 poprvé Loebnerovu cenu za nejúspěšnější výsledek v Turingově testu. V roce 2000 vznikla také verze v programovacím jazyce C/C++ (Program C) a v roce 2002 vznikla dosud podporovaná verze v jazyce Java 2.

Dr. Richard S. Wallace je dnes předsedou představenstva a spoluzakladatelem nadace A.L.I.C.E. Artificial Intelligence Foundation. Je autorem jazyka AIML (Artificial Intelligence Markup Language) a vedoucím projektu A.L.I.C.E. O práci a životě Dr. Wallace publikovaly Salon, L. A. Weekly, Slashdot, The New York Times Magazine, WIRED, Scientific American, USA Today, Nature, the San Diego Union-Tribune, the Guardian, the Financial Times, New York Post, Premiere and Entertainment Weekly a informovaly agentury ABC, BBC, CNN, CNET, TechTV, a ZDNet. O jeho práci se lze také dočíst v Asii, v Latinské Americe a v Evropě.

Richard S. Wallace se narodil v roce 1960 v Portlandu, v americkém státě Maine. V roce 1989 získal doktorát Ph.D. za počítačové vědy v Carnegie Mellon University. V současné době žije v Bethlehemu v Pennsylvánii.

Loebnerova cena

Američan Hugh Loebner v roce 1990 založil Loebnerovu cenu, která je každoročně udělována počítačovému programu za nejlepší konverzační schopnosti. Tato soutěž je variantou přísnějšího Turingova testu, který vymyslel britský matematik Alan Turing a v roce 1950 jej publikoval ve své knize "Computing machinery and intelligence in Mind". [N2] Podle Turinga lze počítač považovat za "inteligentní", pokud jeho konverzační schopnosti nelze odlišit od schopností člověka. V Loebnerově soutěži skupina sudích hovoří s každým účastníkem soutěže a pokouší se určit, zda hovoří s člověkem nebo s počítačem. Zlatou a stříbrnou medaili obdrží ty programy, o nichž se nejméně polovina sudích domnívá, že hovořila s člověkem. Tyto medaile dosud nikdy nebyly uděleny. Bronzová medaile je udělována programu, o němž se největší počet sudích domníval, že hovoří s člověkem. Tuto medaili již dvakrát získal program Alicebot.

2. Experiment

Autor článku [X1] původně měl v úmyslu prozkoumat běžné jazyky pro umělou inteligenci, jako je Prolog a Lisp, a běžné algoritmy umělé inteligence. Jeho práce zahrnovala vytvoření jednoduchých interaktivních programů a vytvoření báze pravidel. Pro lepší pochopení formy a funkce se autor rozhodl pro metodu zpětného inženýrství již existujících programů.

Pro umělou inteligenci se nejčastěji používají programovací jazyky Lisp a Prolog. Autor nalezl příklady algoritmů a několika jednoduchých příkladů v těchto jazycích. Jejich vnitřní podstata a zejména schopnost používat symbolickou logiku a reprezentaci dat tyto jazyky přímo předurčuje pro umělou inteligenci.

Většina příkladů týkajících se umělé inteligence však pochází ze 70. a 80. let 20. století a jejich autoři je již nerozvíjeli. Autor článku nakonec nalezl program Alicebot, v jehož pozadí stojí rozsáhlý projekt s volně dostupnými zdrojovými texty.

Uživatelé programu Alicebot s ním komunikují pomocí webového formuláře. Systém Alice používá sadu pravidel a předformulovaných odpovědí a interakcí s uživatelem. Domovská stránka projektu se nachází na [X1]. Autor článku [1] nejprve získal a prostudoval zdrojový kód celého systému. Podle jeho názoru několik desítek zdrojových souborů je dobře organizováno a popsáno. Autor se rozhodl nejprve funkce programu pochopit, než se rozhodl k jeho rozšíření a modifikaci.

Autor článku [1] se rozhodl přizpůsobit systém Alice tak, aby odpovídal na otázky týkající se Hope College. Znalostní báze se zapisuje v jazyce AIML. Skládá se z řady standardních faktů a pravidel pro odpovědi na otázky. Autor článku [1] úmyslně vnesl do kódu několik děr a několik nových implementací (jako je vyhledávání v síti Internet, otevírání nového okna prohlížeče a podobně), aby vyzkoušel různé možnosti jazyka AIML v kombinaci s jazykem HTML. Vzorek kódu v jazyce AIML je uveden v příloze [F1].

3. Výsledky

Program Alicebot a skriptový jazyk AIML se dosud rychle mění a vyvíjejí. Přesto samotný program a jazyk jsou dobře popsány a tato dokumentace je pravidelně doplňována, aby se umožnila podpora současným modelům umělé inteligence. Systém je schopen provozu již například ve Windows 2000 s podporou Java 1.3.1 nebo se systémem Linux SuSE 8.3 a podporou Java 1.3.1

Jazyk XML a jeho rozšíření pro umělou inteligenci AIML jsou snadno pochopitelné a lze jich bezprostředně použít. Autor článku [1] objevil některé vlastnosti, které jednoduché úlohy činí složitější, a některé sémantické zvláštnosti v samotném jazyce, které znemožňují reagovat na složitější témata. Například jazyk neumožňuje zpracovat současně několik řetězců v jediném vstupním textu.

4. Budoucí vývoj

Autor článku [1] již po krátkém seznámení s programem Alicebot objevil několik věcí, které by podle jeho názoru bylo vhodné upravit. Velmi užitečným nástrojem by bylo rozšíření nalezeného vzorku textu s expanzním znakem (jako je hvězdička) do úrovně regulárních výrazů. Formát datové reprezentace je poněkud těžkopádný. Jazyk XML je vynikajícím nástrojem pro ukládání dat, avšak použití statických textových souborů pro rozvoj umělé inteligence je naprosto nevhodné. Data by měla být uložena v databázi nějakého databázového serveru, jako je PostgreSQL nebo MySQL, aby mohla být modifikována a rozšiřována v reálném čase. Tímto způsobem by se systém umělé inteligence mohl učit při komunikaci s uživatelem a tyto znalosti by ihned mohl využít. Takový systém umělé inteligence by bylo možno použít například pro vyhledávání odkazů na Internetu typu Google nebo Yahoo.

Velmi zajímavé úvahy o rozvoji umělé inteligence lze nalézt v science-fiction románu amerického Michaela Crichtona "Kořist". [2] Připomeňme, že Crichton je autorem románů Kmen Andromeda (Andromeda Strain, 1969), Velká vlaková loupež (The Great Train Robbery, 1975), Pojídači mrtvých (The Eaters of Dead, 1976), Koule (Sphere, 1987) [N3], Jurský Park (Jurassic Park, 1990), Vycházející slunce (1992), Skandální odhalení (1994), Proud času (1999) a další.

Autor uvažuje o budoucím splynutí tří progresivních oborů: informatiky (zejména umělé inteligence), genetického inženýrství (a genomiky) a nanotechnologií (nanoelektronických součástek, mechanických strojů, přístrojů a robotů nanoskopické velikosti). Vyslovuje názor, že umělá inteligence založená na pravidlech, nikdy nemůže fungovat. Programy založené na pravidlech nikoliv vždy reagují na běžné situace. Jejich rozšiřování zaváděním dalších pravidel však povede k nepřekonatelným obtížím při jejich ladění a k zanášení těžko odhalitelných chyb.

Jako možnou cestu umělé inteligence vidí Michael Crichton v distribuovaných sítích složených z agentů, tedy programů nebo robotů s jednoduchou inteligencí, které vzájemně interagují. Chování systému je definováno pouze na úrovni těchto agentů. Celý model připomíná spolupráci mravenců v mraveništi. Nanotechnologie budou schopny přispět vývojem nanoskopických robotů, které budou schopni navzájem interagovat. Genetické inženýrství bude schopno přispět samovolnou reprodukcí a evolucí těchto robotů, tedy skutečným umělým životem.

V roce 1997 v časopisu New Scientists byl publikován článek o práci Adriana Thompsona a jeho kolegy Phila Husbandse ve středisku počítačové neurovědy a robotiky Univerzity v Sussexu. Jejich práce byla naprosto ojedinělá.

Thompson si položil otázku, zda by mohly evoluční principy uspořádat elektronické součástky stejným způsobem, jako biochemické struktury v živých organismech? Co se bude dít, když necháme evoluční procesy překonat omezení, které ve svém myšlení mají lidé? Odpověď na tuto otázku lze nalézt jen tehdy, pokud se podaří zkombinovat "jemné" procesy biologické evoluce s "hrubým" světem křemíkových čipů. Thompson nalezl řešení v tzv. hradlových polích programovatelných elektrickým polem FPGA (field-programmable gate array), v křemíkových čipech velmi vysoké integrace VLSI.

V běžném mikroprocesoru jsou tranzistory na čipu propojeny do pevných logických hradel, která zpracovávají data. V polích FPGA se propojení logických hradel může měnit. Tranzistory jsou zde uspořádány do polí "logických buněk" a zavedením zvláštního programu do konfigurační paměti čipu lze nastavit každou buňku do funkce některého logického hradla a buňky vzájemně propojit. Tímto způsobem se funkce pole FPGA může změnit např. ze zesilovače na telefonní modem.

Thompson využil standardní genetický algoritmus pro vývoj konfiguračního programu pro pole FPGA, který by překonal zapojení vytvořené člověkem. Použil pouze 100 logických buněk a pomocí evolučních mechanismů vyvinul obvod, který byl schopen rozlišovat mezi dvěma tóny o kmitočtech 1 kHz a 10 kHz.

Při experimentu Thompson vytvořil na počítači populaci 50 konfiguračních programů z náhodné posloupnosti nul a jednotek. Počítač každý konfigurační program zavedl do pole FPGA, vytvořil obvod a testoval pomocí určitých charakteristik, jak tento obvod rozlišuje dva tóny, a každý obvod ohodnotil. Genetický algoritmus pak odstranil nevyhovující obvody. Pak počítač zkombinoval různé vyhovující obvody vzájemnou záměnou částí jejich konfiguračních programů a konečně vložil do několika programů nepatrné náhodné chyby jako náhodné mutace. Tím se celý cyklus uzavřel a mohla začít další generace.[3] [N4], [X3]