Umělá inteligence

Motto: "Přirozená inteligence bude umělou brzy překonána. Přirozenou blbost však umělá nemůže nahradit nikdy." Jára da Cimrman

Pojem "umělá inteligence" je chápán jako (a) inteligence projevovaná stroji, (b) obor informatiky zabývající se tvorbou takových strojů. Není shoda na tom, jakými měřítky hodnotit úroveň strojové inteligence; experti v oboru navrhli řadu testů schopností, jež by inteligentní stroj měl mít, od konverzačních až po praktické zahrnující vnímání, rozhodování, učení a fyzické akce. Obor umělé inteligence proto používá mnoho rozdílných přístupů a technik. V posledních letech vývoj akceleruje a byla představena řada průlomových výsledků a aplikací, zejména v oblasti strojového učení.

Chapter contains:
1
Homework Vault

Výzkum umělé inteligence prošel za posledních 70 let řadů fází a více či méně úspěšných přístupů, často se střídala období entusiasmu a investic s obdobím skepse a útlumu. Nyní jsme v období dosud nejsilnější konjunktury UI v historii.

Agentem je každé individuum, která vnímá okolní prostředí pomocí senzorů a zasahuje do něj pomocí aktuátorů. Prostředí může být reálné anebo virtuální (simulované počítačem). Inteligentní agent dokáže v prostředí jednat tak, aby dosáhl (hůře či lépe) svých cílů. Reaktivní agenty jsou nejjednodušší typ autonomních agentů s jednoduchým propojením senzorů a aktuátorů. Složitější typy agentů si mohou vytvářet vnitřní model prostředí, mohou mít paměť, komplikované cíle, schopnost plánovat akce a učit se. Složitost agenta však nemusí být vždy výhodou.

Chapter contains:
1
Homework Vault

V úlohách umělé inteligence je praktické vymezit množinu možných stavů prostředí, v němž řešení probíhá, a množinu přípustných operací v tomto prostředí - přechodů mezi stavy. Výsledek se nazývá stavový prostor a obyčejně se reprezentuje orientovaným grafem. Vrcholy grafu představují možné stavy prostředí (včetně agenta, jenž je jeho součástí), hrany jsou pak přechody mezi těmito stavy způsobené akcemi agenta (jedna hrana = jedna akce). U těchto úloh zpravidla předpokládáme plně pozorovatelné, statické prostředí, jenž se nemění "samo od sebe", a nepočítáme s více agenty. Řešení úlohy pak spočívá v co nejefektivnějším prohledávání stavového prostoru od počátečního k cílovému stavu. Základním problémem je velikost stavového prostoru, jenž se typicky zvětšuje exponenciálně s velikostí prostředí.

Chapter contains:
2
Homework Vault
Lokální a online prohledávání

Omezující podmínky poskytují dodatečné informace pro prohledávání stavového prostoru. V úlohách popsaných v předchozích kapitolách byla "hodnota" každého stavu během prohledávání určena heuristickou funkcí závisející na konkrétním problému. Nyní popíšeme každý stav množinou proměnných, kterým postupně přiřazujeme hodnoty, přičemž cílový stav musí splňovat určitou sadu podmínek nad těmito proměnnými. Taková formulace prohledávání stavového prostoru umožňuje vytvořit obecné prohledávací heuristiky nezávislé na konkrétním typu úlohy. Hlavní myšlenkou je co nejrychleji odstranit z prohledávaného prostoru stavy, jejichž kombinace proměnných nesplňuje podmínky.

Chapter contains:
1
Homework Vault

Hry představují multiagentní úlohy umělé inteligence, kde cíle jednotlivých agentů bývají často v konfliktu, a akce soupeřících agentů jsou obecně nepředvídatelné. I když se omezíme jen na jednoduché hry dvou hráčů s úplnou informací o situaci a s tzv. nulovým součtem (co jeden hráč získá, to druhý ztrácí), jedná se často o obtížné úlohy s obrovským stavovým prostorem. Proto se teprve nedlouho daří vytvořit nástroje UI, které např. šachy (1997) nebo Go (2016) zvládají lépe než lidé. Prohledávání velkých stavových prostorů her vyžaduje speciální techniky. V této kapitole probereme klasické přístupy UI k zvládání her, poslední dobou se však v této oblasti čím dál více prosazuje strojové učení.

Chapter contains:
1
Homework Vault

Strojové učení je schopnost stroje (agenta) zlepšovat své schopnosti na základě zkušeností s řešením předchozích úloh a pozorování světa. Zatímco živé organismy se učí většinou "za pochodu", agenty v umělé inteligenci častěji učíme/trénujeme předtím, než je nasadíme na řešení reálných úloh. I potom se však mohou průběžně učit a zlepšovat, jako to dnes už většina z nich činí. Prakticky všechny dosud zmíněné techniky UI lze vylepšovat učením. Mnohé z nich lze strojovým učením úspěšně nahradit, i když často za cenu zvýšených nároků na výkon. Strojové učení je v posledních 10 letech dominující technologií UI s výsledky překonávajícími lidské výkony v oblastech jako počítačové vidění, rozpoznávání a generování přirozeného jazyka, strategické hry a rozhodování a řada dalších, viz https://en.wikipedia.org/wiki/Deep_learning#Applications. Do strojového učení masivně investují největší IT hráči na trhu jako Google, Amazon, Apple nebo Microsoft.

Chapter contains:
1
Homework Vault

Support Vector Machines (SVM) představují techniku strojového učení s učitelem pro úlohy klasifikace a regrese, která byla populární v dekádách 1990-2010. I dnes jsou velmi dobře použitelné na jednodušší úlohy strojového učení, ale ve složitějších úlohách jsou obyčejně nahrazovány technikami hlubokého učení. SVM jsou neparametrickou metodou klasifikace. To znamená, že se nesnaží popsat jednotlivé třídy pomocí (číselných) parametrů, ale k jejich charakterizaci používají přímo jejich vybrané členy - prvky tréninkové množiny. Na rozdíl od jiných neparametrických metod, které hledají typické reprezentanty každé třídy, u SVM reprezentujeme třídu hraničními prvky, které vymezují hranice s jinými třídami - tzv. podpůrné vektory (support vectors). Například chceme-li klasifikovat 60 odstínů šedi do dvou tříd "světlá" a "tmavá", ve třídě "světlá" bude podpůrným vektorem nejtmavší odstín, který ještě řadíme do třída "světlá", a naopak ve třídě "tmavá" to bude nejsvětlejší odstín z těch, které řadíme mezi tmavé.

Hluboké učení využívá principu (odkoukaného z mozku) učit se tak, že vstupní data projdou sérií jednoduchých transformací, z nichž každá navazuje na výsledky předchozí, a získá z jejích dat o něco abstraktnější informace. Těmto transformacím se říká "vrstvy" a většinou využívají tzv. umělé neuronové sítě. Příkladem může být například rozpoznávání obličejů na obrázcích: první vrstva pracuje s reprezentací "bitmapa", druhá vrstva extrahuje hrany, křivky apod., třetí vrstva jednoduché tvary (obdélníky, ovály...), čtvrtá vrstva obličejové rysy (oči, uši, nos...) atd., poslední vrstva pak přiřazuje obličeje k identitám lidí.

Chapter contains:
1
Homework Vault

...pokud se o umělou inteligenci seriózně zajímáte? Téměř každé z probraných témat představuje jen úvod, který je dobré si dále rozšířit. Několik základních témat, která stojí v základech velmi úspěšných technologií UI, se do přednášky nevešlo. Například jsme se téměř nedotkli problematiky zpracování neurčité informace v UI, která by vydala na samostatný semestr. Expertním a znalostním systémům je věnován samostatný předmět. A díky raketovému pokroku v UI přibývají stále nová témata.

Úvodní informace o předmětu

Požadavky na studenta
  1. Domácí úlohy z teorie a aplikací umělé inteligence během semestru, do odevzdáváren v této osnově, kde budou uvedeny i termíny odevzdání. Každá úloha musí být vyřešena nejméně na 50%.
  2. Písemný test z teoretických otázek UI (jen denní studium), anebo sada otázek k domácímu řešení s termínem odevzdání do 15.6. (jen kombinované studium). K úspěchu je třeba vyřešit nejméně na 50%.

Celkové hodnocení podle součtu obou částí: 50-59% E, 60-69% D, 70-79% C, 80-89% B, 90-100% A.

Klíčovými materiály pro přípravu na test jsou: (a) studijní texty vystavené zde na Moodle, (b) prezentace (pptx, pdf) k jednotlivým tématům. Prezentace najdete vždy v sekci "Studijní materiály" u každého tématu.

Literatura a zdroje


Základní literatura

  • MAŘÍK, V. a kol. Umělá inteligence (1-6). Academia, Praha, 1993-2013. Díl 1 online
  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach (4rd Ed.), Pearson Education, 2021. Odkaz na 3. vydání online

Rozšiřující literatura a online zdroje

Co je umělá inteligence?

 Cíle

  • Umět rozdělit přístupy k UI do čtyř základních kategorií podle kombinace cílů: myslet/jednat + lidsky/racionálně
  • Uvážit silné a slabé stránky Turingova testu a modernějších testů umělé inteligence

 Klíčová slova

Umělá inteligence, Turingův test, Winograd Schema Challenge

Shrnutí kapitoly

"Otázka, zda počítače umějí myslet, je podobně tak relevantní jako otázka, zda ponorky umějí plavat."

E. W. Dijkstra

Chceme-li začít otázkou, co je vlastně umělá inteligence, měli bychom se nejdříve zeptat, co je vůbec inteligence. Ani na jednu z obou otázek nemáme odpověď, na níž by se shodli příslušní experti. Inteligence se často vykládá jako schopnost člověka jednat racionálně a přizpůsobit se měnícím se podmínkám prostředí, ve kterém žije. Všimněme si dvou zajímavých aspektů takového výkladu. Jednak se jako měřítko inteligence chápe člověk – dílem proto, že lepší měřítko momentálně nemáme, dílem pro náš antropocentrismus – hodnocení světa z pohledu zájmů lidské rasy. Dále sám pojem „lidské racionální chování“ je problematický – předpokládá snahu o dosažení nějakého dobře definovaného cíle, nebo maximalizaci užitku. Cíle lidí se ale poměrně rychle mění, jak individuálně, tak kolektivně, a stejně tak představa, co je vlastně pro nás užitečné (viz Starý zákon, kniha Kazatel). Neshodnou se na tom ani příslušníci jednotlivých národů či věrouk. Další otázkou je, kam zařadit v rámci takové "racionální" definice například umělecká díla. Pojem inteligence je tedy vágní od samého začátku.

Vraťme se nyní k umělé inteligenci. Klasická definice umělé inteligence od Marvina Minského z roku 1967 říká:

„Umělá inteligence je věda o vytváření strojů nebo systémů, které budou při řešení určitého úkolu užívat takového postupu, který – kdyby ho dělal člověk – bychom považovali za projev jeho inteligence.“

Řada vědců rozlišuje slabou UI, která pouze imituje (lidské) myšlení, a silnou UI, která by měla skutečně myslet - mít vědomí. Alan Turing však už v 50. letech předpověděl, že s rozvojem umělé inteligence tato otázka postupně ztratí význam (podrobnosti viz [4], kapitola 26). V současné době se přístupy k definování umělé inteligence dají rozdělit do několika kategorií, jimž odpovídají patřičné složky umělé inteligence:

  1. Myslet (nejméně) tak dobře, jako lidé – kognitivní věda, kognitivní modelování. Tento přístup primárně zkoumá schopnost uvažování lidského mozku. UI tento problém atakuje jednak shora dolu – psychologickým pozorováním principů lidského myšlení a snahou abstrahovat a implementovat jeho principy pomocí počítače. Přístup zdola nahoru staví na neurofyziologii, pozorováním funkce neuronů a jejich vazeb, a na jejich základě konstruuje jednoduché kognitivní funkce.
  2. Jednat (nejméně) tak úspěšně, jako lidé – Turingův test umělé inteligence. Stroj tento test úspěšně absolvuje, pokud při písemné konverzaci s lidským tazatelem reaguje způsobem nerozeznatelným od člověka. Rozšířená verze testu zahrnuje i možnost žádat na testovaném stroji manipulaci s fyzickými objekty. Aby stroj mohl testem projít, potřebuje zvládnout minimálně:

    • zpracování přirozeného jazyka na stupu i na výstupu;
    • reprezentaci znalostí, počátečních i průběžně doplňovaných;
    • automatické usuzování, schopnost vyvozovat nové závěry a reagovat na dotazy;
    • strojové učení k adaptaci na měnící se okolnosti, detekci analogií a podobně;
    • strojové vidění k vnímání a rozpoznání objektů;
    • robotiku pro manipulaci s nimi.

  3. Myslet racionálně (logicky uvažovat, usuzovat, …) – logika, plánování. Jaká jsou „pravidla správného usuzování,“ která umožní odvodit z platných předpokladů platné závěry? Od antických sylogismů se věda propracovala k formální logice umožňující usuzování o veškerých objektech ve světě. Dvě hlavní překážky této disciplíny jsou: (a) jak pracovat s neurčitostí, nejistotou, nejednoznačnými fakty; (b) praktické zvládnutí strojového usuzování, které je často velmi výpočetně náročné, pro exponenciálně rostoucí počet kombinací logických klauzulí.
  4. Konat racionálně – racionální agenty. Racionální agent je entitou, která by měla, s přihlédnutím k situaci, konat „správně“ pro dosažení daného cíle nebo maximalizace užitku. Racionální konání neznamená jen racionálně uvážit situaci (viz předchozí bod) a jednat podle toho. Je řada situací, kdy není na racionální zvážení čas a je třeba jednat reflexivně. V jiných případech buďto není k dispozici dostatek informací pro racionální rozhodnutí, anebo nelze vyvodit, jaké rozhodnutí je nejlepší, a přesto je třeba konat.

První dva přístupy jsou antropocentrické, druhé dva chápou inteligenci jako nezávislý princip. V této přednášce budeme dávat přednost chápání UI jako konání racionálních agentů. Tento přístup je obecnější než poměřovat umělou inteligenci lidskými schopnostmi, a je také obecnější než chápat UI jen jako racionální strojové uvažování, jak bylo vysvětleno výše.

Ověření znalostí
  1. Definujte vlastními slovy pojmy inteligence, umělá inteligence, agent, racionalita, logické usuzování.
  2. Do jaké míry představují/zahrnují následující informační systémy umělou inteligenci?
    • snímač čárových kódů v supermarketu;
    • webové vyhledávače (Google, Seznam...);
    • hlasem ovládané telefonní menu;
    • síťové směrovací algoritmy které dynamicky reagují na stav sítě.
  3. "Počítač jistě nemůže být inteligentní, protože jeho chování určuje jeho programátor." Je druhá část věty pravdivá, a vyplývá z ní ta první?
  4. "Zvířata jistě nemohou být inteligentní, protože jejich chování je určeno jejich geny." Je druhá část věty pravdivá, a vyplývá z ní ta první?
  5. "Zvířata, lidé ani počítače nemohou být inteligentní, protože jejich chování určují jejich atomy, které se řídí  zákony fyziky." Je druhá část věty pravdivá, a vyplývá z ní ta první?
Úloha: co je inteligence? Čas na odevzdání:1 týden
Odpovězte na otázky 3,4,5 ze sekce "Ověření znalostí". Každou odpověď odůvodněte 1-2 větami. Max. 6 bodů.
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 1.

Doporučená:

Užitečné odkazy:

Historie UI

 Cíle

  • Seznámit se s historickým vývojem oboru umělá inteligence a jeho předmětu zkoumání 
  • Znát základní technologie a úspěchy v aktuální éře rozkvětu UI

 Klíčová slova

Znalostní systém, umělá neuronová síť, robotika, strojové učení, hluboké učení

Shrnutí kapitoly

1) Prehistorie UI (1943-1955)

  • W. McCulloch, W. Pitts: 1943 jednoduchý Booleovský model neuronu, jen binární signály 0/1
  • A. Turing publikuje v roce 1949 vizionářský článek „Computing Machinery and Intelligence“
  • do výzkumu se zapojují např. Marvin Minsky, Dean Edmonds, Donald Hebb (demonstruje schopnost učení jednoduchých umělých neuronových sítí – perceptronů)

2) Zrození umělé inteligence (1956):

  • seminář v Dartmouth College, New Hampshire, USA, deset klíčových vědců, kteří oficiálně položili základy UI
  • název disciplíny Artificial Intelligence navrhl J. McCarthy (neplést s nechvalně známým senátorem McCarthym, který stál za politickými procesy v USA)

 3) Období entusiasmu a velkých očekávání (1952-1969)

  • daří se postupně řešit některé problémy považované za strojově neřešitelné (viz seznam v kap. 26 ve [4
  • například konverzace v přirozeném jazyce (ELIZA, 1964-1966), první stupínek směrem ke zvládnutí Turingova testu
  • na logice postavené programy General Problem Solver, Geometry Theorem Prover pro řešení (matematických) problémů
  • programovací jazyk Lisp pro UI (1958)

4) Střet s realitou (1966-1973)

  • Herbert Simon (1957): „již existují stroje, které myslí, učí se a tvoří“, předpověď – během několika málo desetiletí se jejich schopnosti vyrovnají lidským
  • přehnaně optimistické předpovědi vycházející z úspěchů UI na jednoduchých „hračkových“ problémech, které se ale nedařilo zopakovat u reálných problémů
  • příčiny:

(a) příliš primitivní přístupy, vycházející pouze ze syntaxe problému, ale nikoli jeho významu (sémantiky)
(b) přílišná výpočetní složitost reálných problémů, díky primitivnosti nasazených metod bylo často třeba prohledat exponenciálně mnoho variant řešení
(c) matematická omezení tehdejších technik UI, například perceptron se mohl naučit pouze jednoduché (lineárně separabilní) rozhodovací problémy

  • důsledky: skepse k umělé inteligenci, financování výzkumu zásadně omezeno

5) Éra znalostních systémů (1969-1979) a jejich masového nasazení (1980-)

  • pokus o překonání slabiny předchozích obecných přístupů k řešení problémů, které si vynucovaly prohledávání příliš velkého množství možností
  • řešení: zabývat se vždy jen omezenou problematikou a využít maximum existujících (byť i matematicky nepodložených) znalostí k omezení repertoáru možných řešení
  • výsledek: expertní a znalostní systémy, např. DENDRAL (molekulární chemie), MYCIN (medicinská diagnostika)
  • s úspěchy expertních systémů potřeba jazyka pro reprezentaci znalostí a pravidel => PROLOG (1972)
  • další přístup k reprezentaci znalostí: rámce (Minsky, 1975) – motivace pro dnešní OOP
  • cca. od roku 1980 průmyslové nasazení expertních systémů, trh s nimi se za prvních 10 let zvětšil nejméně o tři řády

6) „UI zima“ –  90. léta 20. století

  • v 90. letech se vedle expertních systémů rozvíjí se trh s počítačovým viděním, průmyslovými roboty apod.
  • opět přehnaná očekávání jejich přínosu, krach řady společností zabývajících se UI, pokles investic a financování výzkumu – období „zimy UI“ cca. 10-15 let

7) Návrat umělých neuronových sítí, zavedení exaktních metod v UI (1986-)

  • nové modely mnohavrstvých neuronových sítí překonaly omezení perceptronů, prudký rozvoj dodnes, po roce 2010 výrazné úspěchy, vznik pojmu hluboké učení
  • UI v dřívějších etapách často založena na intuici, nyní začíná používat exaktní metody (matematické důkazy, ověřitelné experimenty)
  • širší využití matematických metod nové přístupy: skryté Markovské modely, Bayesovské sítě, dolování dat… nástup „elegantní“ (neat) UI

8) Inteligentní agenty (1995-)

  • pokrok v řadě dílčích oblastí UI oživil myšlenku inteligentních agentů, vnímajících a konajících v určitém prostředí
  • příklad architektury inteligentního agenta: SOAR (State, Operator and Result) – 1990
  • Internet – typické prostředí pro agenty, rozšíření nejrůznějších „botů“ – burza, spam, malware…
  • vývoj profesionálních robotických simulátorů (webots)

9) Dostupnost velmi velkých souborů dat (2001-)

  • rozvoj technologií a paměťových médií umožňuje shromažďovat obří kolekce dat, příkladem genetika (projekt mapování lidského genomu) nebo proteomika
  • gigantickým zdrojem dat rovněž sociální sítě
  • problémem se stává, jak z obrovských souborů neuspořádaných dat různé struktury a typu získat relevantní informace („big data science“)
  • tyto obří báze dat umožňují oživit myšlenku univerzální UI, která by byla schopna „chápat“ (sémanticky popsat) mnoho aspektů reálného světa, na rozdíl od jednoúčelových agentů, jež např. hrají hry, řídí vozidla nebo rozpoznávají mluvenou řeč

10) Návratnost investic do základního výzkumu UI (1990-)

  • Logistika: Válka v zálivu (1991), nástroj DART (Dynamic Analysis and Replanning Tool) – úspory při přepravě a logistice převýšily veškeré náklady, které DARPA vynaložila za celou dobu své existence do vývoje UI
  • Boj proti spamu – nejlépe se osvědčují inteligentní adaptivní technologie, obří úspora v globálním měřítku
  • Rozpoznávání řeči, inteligentní hlasoví asistenti, odezírání ze rtů, strojový překlad: masově se rozšiřující aplikace
  • Diagnostika v medicíně, vyšší úspěšnost než většina lékařů, poslední slovo má ovšem lékař, UI využívána jako konzultant.
  • Autonomní řízení vozidel: reálné aplikace v kosmickém výzkumu (několik sond ke vzdáleným cílům), ale velmi brzy se očekává masové nasazení v pozemské dopravě
  • Velké jazykové modely (LLM): formulace textů, prohledávání internetových zdrojů, rešerše, automatické generování zpravodajství
  • Generování obrazu, hudby, videa...
Ověření znalostí
  1. Seznamte se s  (1950). Turing zmiňuje několik výhrad k vlastnímu projektu umělé inteligence a k jeho inteligenčnímu testu. Které z těchto výhrad byste stále označili za platné a které ne? Přinesl vývoj UI od té doby nějaké nové obtíže, na které Turing nepomyslel? V článku odhaduje, že v roce 2000 bude mít počítač šanci 30% projít Turingovým testem s neškoleným tazatelem. Jaké jsou podle vás současné šance počítače, pokud by měl představovat dospělého našince, a ne 13-letého cizince jako v případě Eugena Goostmana? Jak odhadujete výhled za 10 let?
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 1.

Doporučená:

Užitečné odkazy:

Racionální agenty

 Cíle

  • Zvládnout jednotný náhled na techniky umělé inteligence pomocí přístupu racionálních agentů
  • Osvojit si metodiku PEAS popisu úloh UI a aplikovat ji v praxi
  • Rozlišovat typy agentů podle schopností nutných pro úlohy různé obtížnosti

 Klíčová slova

Racionální agent, senzory, aktuátory, architektura agenta, prostředí agenta, PEAS popis úlohy, reaktivní agent, agent s modelem prostředí, agent s plánem

Shrnutí kapitoly
  • Příklady agentů se senzory / aktuátory:
    • člověk: zrak, sluch, čich, hmat, chuť, vnímání tepla, rovnováhy... / ruce, nohy, řečové orgány...
    • bakterie: receptory chemikálií, světla... / pohyby bičíku, chemické signály, příjem potravy...
    • autonomní vozidlo: kamera, laserový dálkoměr, ukazatel paliva... / volant, plyn, brzda, řazení...
    • softwarový agent: zachycené pakety, stisky kláves, pohyby myši, čtení z disku... / vyslané pakety, obrazovka, zápis na disk...
  • Funkce agenta je zobrazení, které přiřadí sekvenci vjemů agenty určitou akci/akce. Pro jednoduchost budeme předpokládat, že funkce agenta má přesný matematický popis, i když si umíme představit funkce vágně popsané ("zvol akci, která nejspíše umožní utéct predátorovi, kterého vidíš a který se tě chystá sežrat..."). Z praktických důvodů můžeme rozdělit funkci agenta do více dílčích funkcí.
  • Struktura agenta
    • architektura = "tělo" agenta vybavené senzory a aktuátory.
    • program = implementuje funkci agenta, určuje, jak agent reaguje na sekvence vjemů; program musí být přizpůsoben architektuře - "šitý na míru", aby agent byl schopen vykonávat akce, které po něm program žádá. Program zde není chápán jen jako "software", ale jako kompletní řídící systém agenta včetně např. paměti.
  • Vlastnosti prostředí
    • plně pozorovatelné (šachy) / částečně pozorovatelné (dopravní situace)
    • deterministické - jen agent jej mění (křížovka) / stochastické - mění jej i další agenti, příp. se mění samo (šachy, dopravní situace)
    • statické - nemění se, zatímco agent vybírá vhodnou akci (šachy) / dynamické - může se měnit se rychleji, než agent stačí reagovat (doprava)
    • diskrétní - počet jeho stavů je konečný (šachy) nebo alespoň celočíselný / spojité - stavy je nutno reprezentovat spojitými veličinami
    • jednoagentní (křížovka, průmyslový robot na lince) / multiagentní (šachy, doprava)

  • Popis úlohy agenta (PEAS) umožňuje jednak ohodnotit jeho racionalitu, jednak navrhnout jeho architekturu a program(y). Obsahuje tyto hlavní komponenty: 
    • měřítko výkonu (Performance Measure)
    • popis prostředí (Environment)
    • Aktuátory agenta
    • Senzory agenta

  • Agent je racionální tehdy, když umí využít všechny informace, které kdy o dané úloze získal, aby maximalizoval svůj očekávaný prospěch (měřítko výkonu). 
    • Agent může být racionální, i když nemá kompletní informace o prostředí, například nemá dost dobré senzory: důležité je, aby vytěžil maximum z toho, co mu senzory předají (sekvence vjemů "od narození"). Stejně tak nevadí, když se skutečný prospěch (výkon) liší od očekávaného, pokud v prostředí hraje roli náhoda
    • Racionální není, když agent některé dostupné informace neumí využít, například proto, že nemá dost chytrý program, anebo nemá paměť, takže zapomene informace, které by mu umožnily zlepšit výkon. 
  • Reaktivní agent ("s externím řízením") - přímá vazba mezi senzory a aktuátory -  reaguje na podněty bezprostředně, obsahuje jednoduchý řídící modul bez paměti , nepamatuje si předchozí vjemy. Propagátorem tohoto typu agentů byl např. Rodney Brooks: "Prostředí samo je svou nejlepší reprezentací". Příklady reaktivních agentů: agent vyhýbající se světlu, nebo mechanická beruška. Racionalita reaktivního agenta není jeho vlastností, ale vztahem agenta+prostředí. Není-li agent adaptován na své prostředí, nekoná v něm racionálně, např. pokud nasvětlíme prostředek stolu, světloplachý agent z něj spadne (na rozdíl od mechanické berušky), přestože má dostatek informací a schopností k tomu, aby se na něm udržel. Jeho program však velí "couvej od světla", zatímco v tomto prostředí by racionální program měl vydat opačný pokyn. 
  • "Chytré" chování reaktivních agentů často vzniká na základě jejich vzájemné interakce kolektivní emergence nových vlastností. Příklad: náhodně se pohybující mravenci zanechávají feromonové stopy, jiní mravenci je sledují, silnější stopa přitáhne více mravenců => pozitivní zpětná vazba, takto dokáží optimalizovat cestu ke zdroji potravy. Další příklady: Wikipedie - inteligence hejna.
  • Subsumpční architektura reaktivních agentů: priorita mezi jednotlivými reakčními moduly, která odpovídá prioritě dílčích cílů (beruška: nespadnout se stolu > pohybovat se), podrobněji viz [4] kap. 4.6., případně na Wikipedii.
  • Agent s modelem prostředí  ("s interním řízením", též  deliberativní agent): rozšíření architektury reaktivního agenta o vnitřní reprezentaci/model světa. Model zahrnuje, jak se svět vyvíjí a jak jej ovlivňují agentovy akce. příklad: Toto a Meta-Toto, viz [4] díl III, kap. 4.8. Agenty s modelem prostředí jsou schopny řešit složitější úkoly, ale reagují na podněty zprostředkovaně, se zpožděním, a jsou méně efektivní, pokud se prostředí mění způsobem, který nedokážou včas a plně zachytit.
  • Agent s dlouhodobými cíli: obsahuje modul plánování, který určuje posloupnost akcí k dosažení cíle. Agent může mít více konfliktních cílů, pak je nutné ohodnotit "žádoucnost" každého z nich, a tomu přizpůsobit plán. Platí totéž, co u agentů s modelem: pokud se prostředí neočekávaně mění, je nutná (časově náročná) změna plánu, agent reaguje pomalu, předchozí akce se mohou ukázat neúčelné.
  • Učící se agent: je schopen modifikovat svůj program (a popřípadě i architekturu) na základě předchozí zkušenosti. K tomu potřebuje učící se modul, který rozhoduje, jak vylepšit program/architekturu agenta (může využívat i evoluční strategie slepého prohledávání - agent se množí a mutuje, přežívají nejúspěšnější architektury a programy). Modul kritiky vyhodnocuje úspěšnost předchozích akcí/strategií, dává učícímu modulu zpětnou vazbu (kritikem může být i okolní prostředí). Generátor problémů pomáhá agentovi v získávání zkušeností využitelných v učení (agent "experimentuje"), pokud prostředí samo negeneruje dostatečné množství problémových situací.
Ověření znalostí
  1. Definujte vlastními slovy pojmy racionální agent, architektura agenta, program agenta, autonomie, reaktivní agent, agent s modelem prostředí, učící se agent. Uveďte příklady pro každý z těchto pojmů.
  2. Pro každé z následujících tvrzení uveďte, zda je pravdivé či nepravdivé, a uveďte (proti)příklad:
    • Agent, jehož senzory získávají jen částečnou informaci o stavu prostředí, nemůže být plně racionální.
    • Existují úlohy (ve smyslu PEAS), v nichž se žádný čistě reaktivní agent nemůže chovat racionálně.
    • Existují úlohy, v nichž je každý agent racionální.
    • Představte si agenta, který vybírá svou akci náhodně. Existuje (deterministická) úloha, v níž se tento agent chová racionálně.
    • Plně racionální agent hrající poker nikdy neprohraje.
  3. Sestavte PEAS popis každé z následujících úloh:
    • robotický fotbal;
    • zkoumání Marsu (sonda Curiosity);
    • nákup použitých knih o UI na internetu;
    • skok do výšky;
    • pletení svetru;
    • dražba předmětu na aukci.
  4. Otázky zaměřené na rozdíl mezi funkcí a programem agenta:
    • Existují funkce agenta, které nelze implementovat žádným programem?
    • Může existovat více programů, které implementují jistou funkci agenta? Uveďte příklad anebo zdůvodněte, proč to není možné.
    • Je-li zvolena nějaká architektura agenta, může na ní program implementovat více než jednu funkci?
  5. Ukažte, že agent "vysavač", popsaný na obr. 2.3 v Russel & Norvig (2010), je racionální, pokud měřítkem výkonu je co nejčistší prostředí.
  6. Pozměníme měřítko výkonu agenta "vysavače" tak, že je penalizován jedním bodem za každý pohyb.
    • Je reaktivní agent schopen tuto úlohu řešit plně racionálně?
    • Jak na tom bude agent s modelem prostředí? Navrhněte takového agenta.
    • Jak se změní odpověď na předchozí dvě otázky, jestliže agent má k dispozici kameru, která snímá celé prostředí, takže "vidí" svou pozici a stav (čisté/špinavé) každého políčka? 
Úloha: co je racionalita? Čas na odevzdání:1 týden
Vyřešte příklad 2 ze sekce "Ověření znalostí". Každou odpověď stručně odůvodněte. Max 5 bodů.
Literatura a zdroje

Základní:

  • MAŘÍK, V. a kol. Umělá inteligence , díl III, kap. 4
  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 2

Doporučená:

Užitečné odkazy:

Stavový prostor a jeho prohledávání

 Cíle

  • Umět popsat formálně stavový prostor typických úloh a přechody v něm
  • Seznámit se s metodami prohledávání stavového prostoru, jejich výhodami a nevýhodami
  • Navrhovat efektivní heuristiky ohodnocení stavů pro informované metody prohledávání

 Klíčová slova

Stavový prostor, prohledávací strom, prohledávání do šířky, do hloubky, uspořádané prohledávání, algoritmus A*

Shrnutí kapitoly

V této kapitole se budeme zabývat úlohami, jejichž postup řešení lze reprezentovat stavovým prostorem. Stavový prostor matematicky popíšeme jako orientovaný graf, jehož vrcholy jsou všechny možné stavy světa (v němž probíhá řešení úlohy). 

  • Svět se nachází v počátečním stavu a úkolem je změnit jej do jednoho z cílových stavů
  • Toho můžeme dosáhnout pomocí série akcí, měnících stav světa, které reprezentujeme hranami grafu. Pro každou akci provedenou v určitém stavu musíme vědět, jak změní svět - tedy do jakého stavu jej převede.
  • Budeme předpokládat, že každá akce (hrana grafu) má nezápornou cenu, a že se tato cena v čase nemění.
  • V některých úlohách nejsou cílové stavy předem známy, ale je dána jen podmínka, kterou musí splňovat; pak musíme vždy po dosažení nového stavu tuto podmínku otestovat.
  • Zpravidla chceme, abychom cílového stavu dosáhli co nejsnáze. K tomu potřebujeme znát cenu každé cesty na grafu.
  • Pro jednoduchost budeme zatím předpokládat, že tato cena je rovna součtu cen všech vykonaných akcí, tedy hran, z nichž se cesta skládá. 

Prohledávání stavového prostoru začíná z počátečního stavu, postupně procházíme další stavy (uzly grafu). Jednotlivé algoritmy se liší hlavně výběrem dalších uzlů v závislosti na informacích, kterými disponují. Uvědomme si, že prohledávací algoritmus "nevidí" graf jako celek, ale u každého uzlu "vidí" jen jeho sousedy, a cenu přechodu do každého z nich. Jelikož stavový prostor bývá obrovský, někdy i nekonečný, je zásadní najít (nejlevnější) cestu do cílového stavu co nejrychleji. Ukážeme si základní sadu algoritmů od nejjednodušších ke složitějším.

Jednou prozkoumané uzly si zpravidla potřebujeme zapamatovat, a také si o nich udržovat užitečné informace (například jakou cenu jsme vynaložili na dosažení uzlu). Nejčastěji to probíhá formou stromového prohledávání, využívající užitečnou datovou strukturu - prohledávací strom. Pozor, tento strom není totožný s grafem prohledávaného stavového prostoru. Společné mají jen to, že ve stromě se nacházejí informace o dosud prohledaných uzlech a hranách původního grafu. Uzel prohledávacího stromu typicky obsahuje:

  • aktuální stav problému
  • odkaz na rodičovský uzel ve stromě
  • akci, která vedla od rodiče do aktuálního stavu
  • cenu cesty do aktuálního stavu
  • hloubku (vzdálenost od kořene stromu)

Na začátku obsahuje prohledávací strom jen kořen - uzel s počátečním stavem, v němž jsou odkaz na rodiče a poslední akce nevyplněny, cena a hloubka je nula. Jak algoritmus pokračuje, ve stromě přibývají další uzly. Množinu všech dosud neprozkoumaných  uzlů stromu nazveme OPEN (v knize Russel & Norvig [5] se tato množina nazývá frontier). Na začátku tato množina obsahuje kořen stromu. Dále bude potřebovat množinu už prozkoumaných uzlů CLOSED (autoři [5] ji nazývají explored). Krok algoritmu stromového prohledávání vypadá takto:

  • pokud je množina OPEN prázdná, algoritmus končí neúspěchem
  • vyber jeden uzel z množiny OPEN, odstraň jej z OPEN a přidej do CLOSED
  • pokud je to cílový uzel, algoritmus končí úspěchem
  • expanduj vybraný uzel:  
    • urči jeho sousedy ve stavovém prostoru, kteří nejsou v OPEN ani CLOSED
    • přidej je do množiny OPEN

Jednotlivé stromové prohledávací algoritmy se tedy liší hlavně výběrem uzlu z čela, který je expandován. Algoritmy můžeme rozdělit do dvou skupin:

  • Neinformované (slepé) prohledávání: kromě samotného grafu stavového prostoru nemá žádnou dodatečnou informaci, která by dovolila odhadnout, který uzel z množiny OPEN je nejslibnější (mohla by přes něj vést nejkratší cesta k cíli).
  • Informované (heuristické) prohledávání: dokáže odhadnout, které uzly je výhodné expandovat, například pomocí odhadu ceny zbývající do cíle přes zvolený uzel.

Neinformované metody

Neinformované metody se používají, pro svou neefektivitu, jen v případech malých stavových prostorů, anebo v úlohách, kde nemáme naprosto žádnou informaci o vnitřním uspořádání stavového prostoru a vztazích mezi stavy. 

Prohledávání do šířky

Z množiny OPEN je vždy vybrán nejstarší přidaný uzel, tato množina tedy může fungovat jako fronta FIFO. Výsledkem je, že strom je prohledáván po jednotlivých úrovních počínaje kořenem. Situaci ilustruje obr. 1


Obr. 1. Prohledávání do šířky - pořadí procházení uzlů F, B, G, A, D, I, C, E, H. By Rory O'Kane - edited public domain file http://commons.wikimedia.org/wiki/File:Sorted_binary_tree_inorder.svg.

Prohledávání se stejnoměrnou cenou

Pokud mají všechny akce ve stavovém prostoru stejnou cenu, najde prohledávání do šířky vždy optimální (nejlevnější) cestu do cílového stavu. Pokud to tak ale není, lze algoritmus vylepšit tak, že vždy expanduje stav z množiny OPEN, do kterého vede z kořene cesta s nejnižší cenou. Množina OPEN pak může fungovat jako prioritní fronta. Algoritmus vyžaduje ještě drobné úpravy, pro podrobnosti odkazujeme na [5], kap. 3.4.2. Někteří autoři řadí tento algoritmus do skupiny informovaných algoritmů, přestože vlastně žádná heuristická informace není použita.

Prohledávání do hloubky

Z množiny OPEN je vždy vybrán naposledy přidaný uzel, tato množina tedy může fungovat jako fronta LIFO (= zásobník). Výsledkem je, že ve stromě vždy prohledáváme jednu větev do hloubky, a teprve až narazíme na list, vracíme se rekurzívně zpátky a prohledáváme další větve. Situaci ilustruje obr. 2.

Obr. 2. Prohledávání do hloubky - pořadí procházení uzlů F, B, A, D, C, E, G, I, H. By Sorted_binary_tree.svg: Milesderivative work: Pluke (talk) - Sorted_binary_tree.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10616003

Prohledávání do hloubky s omezením na hloubku

Pokud je stavový prostor nekonečně veliký, nemusí prohledávání do hloubky nikdy najít cílový stav, i kdyby se nacházel poblíž počátečního. Proto se do algoritmu někdy zařazuje omezení na hloubku uzlu - jakmile je dosažena určitá vzdálenost d od kořene, uzel se už dále neexpanduje a algoritmus se vrací ve stromě zpět. Je to vlastně jako bychom omezili prohledávání stavového prostoru jen na uzly, které mají od kořene hloubku nejvýše d. S uzly s hloubkou d algoritmus zachází, jakoby neměly žádné sousedy. Pokud se cílový stav nachází dále, algoritmus selže. Proto se tento algoritmus dále vylepšuje iterativním zvětšováním hloubky - pokud není cíl nalezen, zvětšíme přípustnou hloubku a celý algoritmus se opakuje.

Informované metody

Kdykoli je to možné, dáváme přednost informovaným metodám, které urychlují prohledávání stavového prostoru na základě dodatečných informací o tom, jak vybírat perspektivní stavy pro expandování - tj. přes které nejspíše povede nejkratší cesta z počátečního do koncového stavu. Takové informace závisí na konkrétní úloze, a často jsou jen přibližné nebo odhadované. Například u hry Lišák [4] můžeme vzít jako nejperspektivnější stav, který má co nejméně kamenů ve špatné pozici. U problému hledání nejkratší cesty [5], pokud jsou k dispozici zeměpisné souřadnice jednotlivých měst, můžeme brát jako nejlepší stav s minimální vzdáleností vzdušnou čarou od cíle. 

Uspořádané prohledávání (best-first search):

Metoda je založena na použití hodnotící funkce f(n), která určuje "perspektivnost" stavu n v množině OPEN pro jeho expandování. Metoda vybírá stav s nejmenší hodnotou f(n); pokud je takových stavů více, je vybrán libovolný z nich.

Hodnotící funkce má zpravidla tvar f(n) = g(n) + h(n), kde

g(n) je cena optimální cesty z počátečního stavu do stavu n,

h(n) je odhadovaná cena cesty ze stavu n do některého z cílových stavů.

Pokud budeme ignorovat složku g(n) (položíme g(n) = 0), dostaneme algoritmus tzv. hladového uspořádaného prohledávání (greedy best-first search) , který nezaručuje nalezení optimální cesty, viz [5] kap. 3.5.1. Pokud naopak položíme h(n) = 0, dostaneme algoritmus prohledávání se stejnoměrnou cenou popsaný výše. Pokud bychom položili g(n) = h(n) = 0, výsledkem je náhodné prohledávání stavového prostoru.

Algoritmus A*

Ve většině případů neznáme cenu optimální cesty ze stavu n do cíle, takže hodnota h(n) je jen heuristickým odhadem. Pro efektivitu prohledávání je důležité, aby tento odhad měl určité vlastnosti. Základní je tato: funkce h(n) se nazývá přípustná heuristická funkce, pokud platí 0 ≤ h(n) ≤ h*(n), kde h*(n) je optimální (nejmenší) cena cesty ze stavu n do cíle. Přípustná heuristika je tedy optimistická - odhad ceny do cíle nesmí převýšit skutečnou cenu. Všimněte si, že oba odhady ceny zmíněné v úvodu do informovaných metod tuto podmínku splňují. Platí totiž následující tvrzení:

Algoritmus uspořádaného prohledávání s funkcí f(n) = g(n) + h(n), kde h(n) je  přípustná heuristická funkce, najde vždy optimální (nejlevnější) cestu do cílového stavu, pokud existuje.

Pozn. výše uvedené značení h(n) a h*(n) je použito v monografii Russel & Norvig, v prezentacích a na těchto stránkách e-learningu. Bohužel česká monografie Mařík a kol. používá značení přesně opačné, tedy heuristický odhad ceny je značen h*(n) a skutečná optimální cena jako h(n).

Pokud funkce h(n) splňuje navíc silnější podmínku tzv. monotonicity (viz [4] str. 49), pak je možné algoritmus uspořádaného prohledávání zjednodušit a urychlit. Totéž platí pro algoritmus uspořádaného prohledávání v [5] na str. 84, který je optimální i pro přípustné heuristiky. 

Heuristické prohledávání s omezenou pamětí

Hlavní nevýhodou algoritmu A* je jeho vysoká spotřeba paměti, protože si udržuje informace o všech dosud ohodnocených uzlech. To je často je příčinou nenalezení řešení, když algoritmus vyčerpá veškerou dostupnou paměť. Existuje řada variant prohledávání s heuristickou funkcí h(n) , které se snaží spotřebu paměti omezit. Stručně zmíníme dva z nich.

Algoritmus IDA* (iterative deepening A*) vychází z iterativního prohledávání do hloubky popsaného výše. Jediný rozdíl je v tom, že namísto omezení na hloubku uzlu v prohledávacím stromu používá omezení na hodnotu funkce f(n) prohledávaného uzlu. 

Algoritmus SMA* (simplified memory-bounded A*, [5] kap. 3.5.3) se snaží, zjednodušeně řečeno, omezit spotřebu paměti tím, že pokud se zaplní dostupná paměť a nelze už expandovat další uzly, tak odstraní informace o uzlu s nejhorší hodnotou f(n). Navíc ještě uchovává v rodiči tohoto zapomenutého uzlu informace o jeho ceně, která může být později použita.

Systémy GPS, STRIPS a PLANNER 

Softwarové systémy umělé inteligence GPS (General Problem Solver, 1959), STRIPS (Stanford Research Institute Problem Solver, 1971) a PLANNER (vyvinut na MIT, 1971) představovaly první implementace prohledávání stavového prostoru a plánování akcí v něm. Přestože nedosáhly komerčního významu, umožnily pochopit řadu obtíží automatického řešení problémů ve stavovém prostoru, které byly později využity v komerčních řešeních. Pro podrobnosti odkazujeme na  [4] díl (1) kap. 2.3.

Ověření znalostí

  1. Vysvětlete vlastními slovy pojmy použité v této kapitole: stav, stavový prostor, prohledávací strom, cíl, akce.
  2. Vytvořte stavový prostor úlohy "opice-banán" ze systému STRIPS na Wikipedii (popište množinu všech stavů a seznam možných akcí nad nimi). Prohledejte tento prostor do hloubky a do šířky až k nalezení řešení, v obou případech zapište posloupnost stavů a akcí.
  3. Řešte úlohu úniku robota z bludiště s pravoúhlými chodbami na plánu o rozměru n x n políček. Na začátku je robot v centru bludiště a je otočen na sever.  Předpokládejte, že všechna políčka bludiště jsou nějakou cestou dostupná. Můžete robota natočit na východ, jih, západ nebo sever, a udělat krok vpřed na sousední políčko. Pokud je ve směru pohybu zeď, robot zůstane na místě. Ilustrace bludiště (kredit MFF UK Praha): 
    • Popište formálně stavový prostor robota a množinu možných akcí. Jak velký je stavový prostor? Uveďte počet stavů.
    • Při pohybu v bludišti má smysl robota otáčet pouze na křižovatce cest nebo když je před ním zeď. Označme k počet takových míst v bludišti. Zjednodušte stavový prostor (popište stavy, akce) s ohledem na tuto informaci. Jaká je jeho velikost nyní?
    • Namísto akce "udělej krok vpřed" dáme robotovi akci "běž vpřed na nejbližší místo otáčení." Opět zjednodušte stavový prostor, jaká je teď jeho velikost?
    • V úvodní formulaci problému jsme zjednodušili reálný svět a fyzického robota, ve smyslu zanedbání detailů  (bludiště nemusí být úplně přesně pravoúhlé a čtvercové) a zjednodušení akcí (pohyby a natáčení robota nemusí být přesné). Popište možné důsledky těchto zjednodušení, případné akce k nápravě, a jak by pak vypadal reálný stavový prostor?
    Nápovědu k příkladu najdete níže pod ikonou s klíčem.
  4. Které z následujících heuristik h(n) jsou přípustné v hlavolamu Lišák (neboli 8-puzzle)? (a) počet kamenů na nesprávné pozici; (b) dvojnásobek počtu kamenů na nesprávné pozici; (c) počet kamenů na správné pozici; (d) vzdálenost (v manhattanské pravoúhlé metrice) nejvzdálenějšího z kamenů od jeho správné pozice; (e) součet vzdáleností všech kamenů od jejich správných pozic. U odpovědí ANO zdůvodněte. U odpovědí NE najděte protipříklad = konfiguraci Lišáka, ve které heuristika dá větší hodnotu než počet tahů k vyřešení.
  5. Nechť cena každé akce v úloze přelévání vody (Mařík, díl 1, kap. 2) je rovna jedné. Vymyslete přípustnou heuristiku h(n), která může nabývat nejméně tří různých hodnot.
  6. Vyřešte příklad 3.9 na str. 115 v knize Russel & Norvig (2010).
  7. Naprogramujte řešení úlohy prohledávání bludiště na webu univerzity v Illinois
    Nápovědu k příkladu najdete níže pod ikonou s klíčem.

Nápověda k příkladu 3

  • V základní variantě je stav dán (a) pozicí robota na kterémkoli z n2 políček, a (b) jeho natočením do 4 možných směrů. Stavový prostor je tvořen kombinací všech těchto možností - kolik jich je?
  • Po prvním zjednodušení může robot být stále na kterémkoli z n2 políček, ale pouze na některém z míst k otáčení může být natočen v libovolném směru. Na ostatních má na výběr jen ze dvou natočení, podle toho, kterým směrem danou cestu prochází.
  • Po dalším zjednodušení už bude stavový prostor obsahovat jen k možných pozic robota na místech k otáčení, v kombinaci s libovolným natočením na každé z nich. Ostatní políčka míjí, takže už je do stavového prostoru nezahrnujeme. Průchod mezi dvěma místy k otáčení bereme jako jednu akci.

Pro každý z těchto tří popsaných případů spočtěte celkový počet stavů a možné akce robota. A pak samozřejmě poslední bod - fyzikální zjednodušení, například představte si, že ovládáte motory robota povely typu "zapni rotaci na x vteřin", jdi vpřed y vteřin" atd, a přemýšlejte, co by se dík nepřesným akcím motorů v reálném bludišti mohlo dít.

Nápověda k příkladu 7

Pseudokód algoritmu použitelný pro Breadth-first search najdete v Russel & Norvig na obr. 3.11, str. 82. Pro Depth-first search stačí nahradit frontu FIFO frontou LIFO. Pseudokód pro Greedy best-first search a A* search najdete tamtéž na obr. 3.14, str. 84, s tím, že se pro tyto dva algoritmy jen musí změnit klíč uspořádání prioritní fronty, tak jak je to popsáno na str. 92. Metodu CHILD-NODE použitou v těchto kódech najdete v kapitole 3.3.1 tamtéž. Nenechte se zmást množstvím parametrů v metodách, je to psáno velmi obecně, pro náš případ je třeba STEP-COST vždy roven jedné apod.

Pod následujícím odkazem je ukázka kódu pro načtení bludiště ze souboru a prohledávání BFS, jež využívá obousměrnou frontu. Nechybí výpis výsledného bludiště s vyznačením navštívených bodů a číselných charakteristik řešení (délka cesty, počet prohledaných uzlů). Zbývá tedy dodělat algoritmy DFS, Greedy Search a A*, jež jsou analogické a liší se jen organizací fronty Open. 

Program vždy načte pouze jeden typ bludiště, takže pro splnění zadání je třeba ho spustit 3x a v kódu vždy odkomentovat název souboru s bludištěm a rozměry bludiště. Samozřejmě můžete kód vylepšit, aby otevřel postupně všechna tři bludiště :-). 

Úloha: stavový prostor bludiště. Čas na odevzdání:1 týden
Vyřešte příklad 3 ze sekce "Ověření znalostí". Max 8 bodů.
Úloha: průchod bludištěm. Čas na odevzdání:1+1 týden
Vypracujte úlohu č. 7 ze sekce "Ověření znalostí" - jen část zadání 1.1 na webu univerzity v Illinois. Prosím POZORNĚ si přečtěte, co má obsahovat odevzdané řešení - viz oddíl Report Checklist. Nekompletní řešení nebudou uznána. Max. 20 bodů.
Literatura a zdroje

Základní:

  • [5] RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 3.1 - 3.5, + kapitola 3.7 porovnávající probírané metody

Doporučená:

Užitečné odkazy:

Prezentace MFF UK - témata "Řešení problémů prohledáváním", "Informované prohledávání"

Prezentace Illinois - "Search intro", "Uninformed search", "Informed search"

Lokální a online prohledávání

Lokální a online prohledávání

Content not published.

Hledání s omezujícími podmínkami

 Cíle

  • Rozpoznat úlohy, k jejichž řešení je vhodné hledání s omezujícími podmínkami
  • Identifikovat stavové proměnné úlohy, příp. zvolit je co nejefektivnějším způsobem
  • Umět sestavit omezující podmínky a graf závislosti proměnných
  • Aplikovat metody hledání s omezujícími podmínkami, včetně vylepšení uzpůsobených konkrétní úloze

 Klíčová slova

Omezující podmínky, ohodnocení stavových proměnných, graf závislosti proměnných, konzistence podmínek, dopředná kontrola

Shrnutí kapitoly

Problémy založené na splňování podmínek (Constraint Satisfaction Problems) představují častou reprezentaci praktických problémů (třeba rozvrhovacích). Jednoduchým příkladem je Sudoku - rozvrhnout čísla tak, aby splňovala podmínky. Popis problému obsahuje:

  • proměnné s jejich doménami = povolenými hodnotami; (Sudoku: každé políčko = proměnná, domény jsou {1,2,...,9})
  • množina podmínek na těchto proměnných; (Sudoku: proměnné v každém čtverci 3x3, v každém sloupci a v každém řádku musejí mít různé hodnoty). 

Úkolem je najít ohodnocení proměnných splňující všechny podmínky, někdy se také optimalizuje hodnotící funkce (mohou existovat "lepší" a "horší" řešení). 

Na rozdíl od klasického prohledávání stavového prostoru, kde je důležitá cena cesty do koncového stavu, v tomto případě na délce cesty k řešení nezáleží (většinou jsou stejné), ale rozhodující je najít řešení samotné a přitom prohledat co nejméně stavů. Soustava podmínek umožňuje často výrazně omezit prohledávanou část stavového prostoru. Omezující podmínky určují graf závislosti jednotlivých proměnných (např. u Sudoku jsou vzájemně závislé proměnné v každém čtverci, pak v každém sloupci a v každém řádku.

Příklad podmínek pro problém N dam

Rozmístěte N dam na šachovnici N x N, aby se vzájemně neohrožovaly (viz prezentace Illinois):

Proměnné:  X_{ij},1≤ i,jN

Domény: 0,1

Význam:  X_{ij} =1→ na políčku se souřadnicemi (i,j) je dáma,  X_{ij} =0 → na políčku není dáma

Podmínky:

\sum_{i,j} X_{ij} = N  Počet dam, tj. políček s  X_{ij} =1 na šachovnici musí být N

i,j,k, j ≠ k: (X_{ij}X_{ik}) ∈ {(0,0),(0,1),(1,0)}  Na žádné dvojici políček se souřadnicemi (i,j) a (i,k), tj. ležících v jednom řádku, nejsou dvě dámy, čili dvojice hodnot (1,1)

i,j,k, i ≠ k: (X_{ij}X_{kj}) ∈ {(0,0),(0,1),(1,0)}  V žádném sloupci nejsou dvě dámy

i,j,k, 1 ≤ k ≤ N−1: (X_{ij}X_{i+k,j+k}) ∈ {(0,0), (0,1), (1,0)}  Na žádné diagonále rovnoběžné s hlavní diagonálou nejsou dvě dámy

i,j,k, 1 ≤ k ≤ N−1: (X_{ij} ) ∈ {(0,0), (0,1), (1,0)}  Na žádné diagonále rovnoběžné s vedlejší diagonálou nejsou dvě dámy

Postup řešení:

Prohledávání stavového prostoru, kde každý stav je (částečné) ohodnocení proměnných. Akce (přechod mezi stavy) je ohodnocení jedné prázdné proměnné tak, že neporuší žádnou podmínku. Cílový stav = úplné přiřazení proměnných. 

Pak víme, že při n proměnných se řešení nachází vždy v hloubce prohledávacího stromu, a navíc nezáleží na pořadí přiřazení do proměnných. Lze tedy použít jednoduché prohledávání do hloubky s návratem (Backtracking search) - víme, že hloubky stromu je vždy omezená. Je to ale neinformovaná a neefektivní metoda.

Informované metody - vyšší efektivita prohledávání:

  • Nejprve ohodnocovat nejvíce omezenou proměnnou, tedy tu s nejmenším počtem zbývajících přípustných hodnot. V případě rovnosti se volí proměnná svázaná nejvíce podmínkami s doposud neohodnocenými proměnnými. 
  • Vybírat k přiřazení hodnoty, které nejspíše patří do řešení, například ty, které nejméně omezují ostatní doposud neohodnocené proměnné. Určení takových hodnot závisí na konkrétním problému.
  • Dopředná kontrola – při přiřazení hodnoty se podíváme na podmínky dalších proměnných spojené s přiřazenou proměnnou, a odstraníme jejich hodnoty, které podmínky nesplňují.
  • Konzistence podmínek – pokud se odfiltrují některé nepřípustné hodnoty z domén, lze pomocí grafu závislosti omezit i hodnoty dalších proměnných, a tím zmenšit prohledávanou část stavového prostoru. 
  • V případě grafu závislosti proměnných bez cyklů existuje rychlý algoritmus, který vždy najde řešení; dá se použít i tehdy, pokud je cyklů jen málo a přiřazením některých proměnných se dají cykly odstranit.

Ověření znalostí
  1. Vysvětlete, proč je dobrou strategií vybírat nejdříve nejvíce omezené proměnné, ale k přiřazení používat nejméně omezující hodnoty.
  2. Kolik řešení má problém barvení mapy na obrázku 6.1 v Russel & Norvig (2010)? Kolik bude řešení pro čtyři barvy? Pro dvě barvy?
  3. Uvažujte problém vytvoření křížovky, máte-li zadán její plán (rozměry, rozmístění šedých políček, která oddělují slova), a je zadán slovník možných slov. Navrhněte řešení pomocí omezujících podmínek. Co zvolíte jako proměnné jednotlivých stavů, písmena nebo slova? Proč?
  4. Naformulujte pomocí omezujících podmínek následující úlohy:
    (a) Plnění kontejneru tvaru kvádru zadanou množinou krabic - kvádrů daných rozměrů. Jak rozmístit krabice, aby se všechny vešly do kontejneru?
    (b) Rozvrhování výuky: je dána množina profesorů a místností, množina přednášek a časový interval (pracovní dny 8-20), kdy je možno učit. Každý profesor má zadánu množinu přednášek, které může učit.
    (c) Problém Hamiltonovské cesty.
  5. Uvažujte problém umístění K králů na šachovnici N x N tak, že se žádní dva neohrožují, kde K≤ N2.
    (a) Zvolte vhodně proměnné a jejich domény pro popis problém pomocí omezujících podmínek. 
    (b) Nyní zformulujte omezující podmínky - zapište je přesně matematicky pomocí vztahů mezi zvolenými proměnnými.
    (c) Uvažujte variantu, kdy máte umístit na šachovnici N x N největší možný počet králů. Vytvořte rozumnou formulaci problému a hodnotící funkci.
Úloha: problém K králů na šachovnici. Čas na odevzdání:1 týden
Vyřešte příklad 5, části a), b) ze sekce Ověření znalostí. Inspirujte se příkladem s dámami, omezující podmínky však budou zcela jiné. Max 5 bodů.
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 6.1 - 6.3.

Užitečné odkazy:

(jen po Local search, to už ne, ale užitečné je shrnutí na konci)

Prezentace MFF UK - téma "Splňování omezujících podmínek"

(jen po algoritmus AC3, ten už ne)

Stavový prostor ve hrách, herní strategie

 Cíle

  • Dokázat sestavit prohledávací strom pro multiagentní hry
  • Aplikovat v něm algoritmus Minimax a alfa-beta ořezávání
  • Seznámit se s příklady a metodami heuristického ohodnocení uzlů

 Klíčová slova

Hra s nulovým součtem, hra s nenulovým součtem, algoritmus Minimax, alfa-beta ořezávání, heuristické ohodnocení uzlů

Shrnutí kapitoly

Teorie her je rozsáhlou oblastí matematiky s řadou hlubokých výsledků. Zahrnuje složité hry s mnoha paralelně konajícími hráči, s komplikovanými vzájemnými vazbami zisků/ztrát a s řadou neznámých faktorů. Omezíme se pro začátek na jednoduché hry s dvěma hráči, kteří se střídají. Rovněž začneme se zjednodušujícím předpokladem, že stav hry je v každém okamžiku znám všem hráčům (jako šachy, na rozdíl od většiny karetních her). Konečně půjde o hry s nulovým součtem, tedy výhra jednoho znamená porážku druhého. Hráč označíme jako MAX a MIN, koncové stavy ohodnotíme např. +1 (výhra MAX), -1 (výhra MIN), 0 (remíza). 

Algoritmus Minimax:

Jde v podstatě o prohledávání stavového prostoru do hloubky s omezením hloubky. Klíčový je způsob ohodnocení jednotlivých uzlů. Listy stromu jsou ohodnoceny, jak bylo popsáno výše. Každý vnitřní uzel je ohodnocen následovně:  

  • Pokud je na tahu MAX, bere se maximum z hodnoty všech přímých potomků.
  • Pokud je na tahu MIN, bere se minimum  z hodnoty všech přímých potomků.

Východiskem je úvaha, že protihráč vybere pro něj nejlepší možný tah. I když to neudělá, popsaný postup nalezne vyhrávající strategii, pokud existuje.

Alfa-beta ořezávání

Slabinou algoritmu Minimax je fakt, že stavový prostor je obrovský, s rychlým větvením možných tahů, takže je algoritmus pomalý. Jak se dá zefektivnit? Princip minimaxu umožňuje některé větve prohledávacího stromu ignorovat, jakmile se ukáže, že nemůžou ovlivnit ohodnocení aktuálního uzlu.


Obr. 1. Příklad alfa-beta ořezávání. Zdroj: Wikimedia Commons, Jez9999 at the English language Wikipedia.


Na obr. 1 je příklad stromu prohledávání stavového prostoru. Po prohledání levého a prostředního podstromu víme, že hodnota kořene bude nejméně 6. Nyní prohledáváme pravý podstrom a narazíme v poduzlu na hodnotu 5. Jelikož poduzel má úroveň MIN, víme, že další prohledávání pravého šedého podstromu tuto hodnotu jedině sníží, ale určitě nezvýší. Tím pádem neovlivní hodnotu 6 v kořeni úrovně MAX. Proto pravý šedý podstrom odřízneme.

Heuristické ohodnocování uzlů

I s využitím alfa-beta ořezávání se dá většinou stavový prostor v rozumném čase prohledat jen do malé hloubky a ne až k listům, jak to vyžaduje algoritmus Minimax. Co teď? Je nutno prohledávání zastavit na určité hloubce a ohodnotit nejhlubší dosažené uzly nějakou heuristikou. Existuje řada možností, například:

  • odhad podílu vyhrávajících a prohrávajících stavů v podstromu daného uzlu;
  • "materiální" ohodnocení, např. hodnotou figur v šachách anebo jednotlivých karet (a jejich kombinací) v ruce

Vesměs ale je taková heuristika závislá na konkrétní hře a její kvalita je zásadní pro herní algoritmus. Častá strategie je vybrat slibné nebo naopak nejisté vrcholy, které mohou nejspíše ovlivnit výsledek, a ty pak prohledat do větší hloubky.

Ověření znalostí

  1. Předpokládejte, že máte k dispozici orákulum, které v každé herní pozici předpoví tah protihráče. Definujte hru jako problém prohledávání stavového prostoru jedním agentem a popište vítěznou strategii.
  2. Uvažujte následující hru: jsou paralelně rozehrány dvě sady hlavolamu Lišák (8-puzzle). Hráči se střídají. Hráč na tahu hodí mincí, která určí, na kterém hlavolamu má táhnout. Vyhrává hráč, který jako první sestaví některý hlavolam.
    (a) Jak velký je stavový prostor? Vyčíslete přesně počet stavů.
    (b) Popište algoritmus pro určení optimálního tahu.
  3. Popište stavový prostor a ohodnocení cílových stavů v dámě.  Najděte co nejlepší heuristickou ohodnocující funkci pro necílové pozice.
  4. Popište stavový prostor v piškvorkách na plánu rozměru 19x19. Zformulujte pomocí série IF-THEN-ELSE heuristickou ohodnocující funkci pro necílové pozice, která bere v potaz nejméně 8 různých standardních situací. Můžete využít nápovědu níže.
  5. Popište stavový prostor a ohodnocení cílových stavů v pokeru Texas hold'em. Najděte co nejlepší heuristickou ohodnocující funkci pro necílové stavy.
  6. Implementujte na počítači algoritmy pro hry z úloh 3 a 4.
  7. Jak se změní algoritmy Minimax a alfa-beta ořezávání, pokud nejde o hru s nulovým součtem, každý hráč má vlastní hodnotící funkci koncových stavů, a oba hráči je vzájemně znají? Je v obecném případě vůbec možné použít alfa-beta ořezávání na některý uzel? Co když se účelová funkce obou hráčů liší v všech uzlech nejvýše o konstantu k, což mění hru na (téměř) kooperativní?
  1. V takové situaci se každá dvojice tahů (můj a soupeřův) redukuje na jeden "dvojitý" tah, protože soupeřova reakce je známá. Tím se hloubka prohledávacího stromu  redukuje na polovinu.-Jde nám o nalezení kteréhokoli vítězného řešení (cílového stavu), nezajímá nás  délka cesty k němu. Proto se vítězná strategie shoduje s použitím některého z algoritmů  lokálního prohledávání, viz též kapitola 4.1 v knize Russel & Norvig. Prohledávání můžeme urychlit použitím heuristické hodnotící funkce pro jednotlivé stavy, tak jak byly popsány na slajdech Illinois na příkladu šachů.
  2. (a) Hlavolam má v základní verzi 181 440 stavů (9!/2). Počet kombinací možných stavů obou hlavolamů bude tedy 181 4402 = 32 920 473 600. Hod mincí určuje, které přechody mezi stavy (tahy) jsou aktuálně dostupné.  Alternativně by bylo možno chápat hod mincí jako součást stavu, tím by se jejich počet zdvojnásobil. (b) Podle principu minimaxu je nutno se vyhýbat stavům, v nichž může soupeř jedním tahem vyhrát (dokončit jeden z hlavolamů). Proto je nutno oba dva udržovat nejméně 2 tahy před dokončením a čekat na chybu soupeře. Pokud tuto strategii použijí oba hráči, hra nikdy neskončí.
  3. Předpokládejme českou variantu dámy s 8 kameny na každé straně. Stavový prostor obsahuje teoreticky všechna možná rozložení 16 a méně kamenů (některé mohou být vzaty během hry)  na černých polích, plus možné kombinace s dámami. Některé stavy však jsou nedostupné hrou podle pravidel. Ohodnocení cílových stavů vychází z pravidel: všechny stavy, kdy soupeř je na tahu a nemůže žádný udělat (a já mám nejméně jeden kámen) jsou pro mě vítězné. Remíza nastává pokud "je teoreticky nemožné vzít soupeři při jeho optimální hře žádnou další figuru", například pokud každému z hráčů zbývá jen jedna dáma.  Najít co nejlepší heuristickou ohodnocující funkci je otázka tvořivého myšlení, jistě tu bude hrát roli materiál (počet mých kamenů oproti soupeři), ale ještě více možnost udělat si dámu...
  4. Hodnota herní pozice záleží na tom, jaké jsou v ní posloupností X a O délky 3-5, spolu s případnými volnými políčky na okrajích nebo uvnitř posloupnosti. Každou posloupnost ve kterémkoli ze 4 možných směrů popište sekvencí znaků, například _XXX_, _X_XX_, _XXXX_, OXXXX_, __XX_, _OOO_ a podobně, ve všech 4 směrech. Pak uvažujte následovně, třeba v roli hráče X, který je na tahu:
    • přítomnost jakých posloupností znamená, že mohu vyhrát v jednom tahu?
    • přítomnost jakých posloupností znamená, že prohraji v dalším soupeřově tahu, bez ohledu na to, jak potáhnu?
    • přítomnost jakých posloupností znamená, že mohu vyhrát ve dvou tazích, bez ohledu na to, co udělá soupeř?
    • přítomnost jakých posloupností znamená, že prohraji ve dvou soupeřových tazích, bez ohledu na to, jak potáhnu?
    • Přítomnost jakých posloupností mne udrží v útoku, tzn. soupeř musí dělat vynucené tahy?
    • Přítomnost jakých posloupností mne nutí se bránit a dělat vynucené tahy?
    Navrhněte hodnoty pozic podle této logiky, popište ohodnocující funkci jako sekvenci IF-THEN-ELSE, ve smyslu
    IF jsou přítomny jisté posloupnosti THEN hodnota pozice = a
    ELSE IF jsou přítomny jiné posloupnosti THEN hodnota pozice = b
    ELSE atd.
  5. Tuto úlohu ponecháváme laskavému čtenáři, který by v případě nalezení nejlepší heuristické funkce mohl navíc velmi zbohatnout.
  6. Pro implementaci bych volil nejspíše Python, případně Javu nebo C#.
  7. Odpověď je znázorněna na slajdu č. 13 v prezentaci Illinois, kde hráči mají navzájem nezávislé hodnotící funkce. Algoritmus Je podobný původnímu Minimaxu, ale nyní je to spíše MaxMax - v každém tahu předpokládáme, že soupeř bude volit tah, který maximalizuje jeho zisk. To však neumožňuje použít α-β ořezávání, které je založeno na předpokladu nulového součtu, tedy že soupeř volí tahy minimalizující můj zisk. Pokud soupeř má možnost tahu snižujícího můj zisk pod hodnotu α, pak v dalších větvích téhož podstromu jistě nezvolí tah, který by mi umožnil zisk vyšší než α, protože tím by snížil vlastní zisk, a mohu tyto větve odřezat. To však v tomto případě neplatí - můj a soupeřův zisk jsou nezávislé, nejde o hru s nulovým součtem.
Úloha: piškvorky
Vyřešte příklad 4 ze sekce Ověření znalostí. Připomínám, že výsledkem by měla být funkce/algoritmus určující hodnotu pozice pro hráče X, v závislosti na tom, jaké posloupnosti X a O pozice obsahuje. Max 8 bodů.
Literatura a zdroje

Základní:

  • MAŘÍK, V. a kol. Umělá inteligence, díl I, kap. 2.4.
  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 5.1 - 5.4.

Užitečné odkazy:

Strojové učení

 Cíle

  • Popsat jednotlivé typy učení a umět je rozlišit v konkrétních úlohách. 
  • Seznámit se s nejjednoduššími technikami strojového učení, viz klíčová slova
  • Navrhovat adekvátní techniku učení pro konkrétní typy úloh

 Klíčová slova

Učení s učitelem, učení bez učitele, posilující učení, rozhodovací stromy, regresní modely, neparametrické modely

Shrnutí kapitoly

K čemu potřebujeme strojové učení? Proč vývojáři nenaprogramují v umělé inteligenci rovnou optimální postupy vedoucí k nejlepším řešením? (Mimochodem v 60. letech 20. století si mnozí vědci mysleli, že to bude brzy možné.)

  • nemohou předvídat/brát v potaz všechny situace, v nichž se agent může ocitnout;
  • nemohou předvídat budoucí změny podmínek a zadání, k nimž u většiny úloh UI dochází, protože se týkají situací v reálném světě, který se vyvíjí;
  • mnohdy optimální algoritmy (při omezeném času a výpočetní kapacitě) pro řešení úloh nejsou známy, a v UI je to dokonce typické. Exemplárními případy je rozpoznávání obličejů, analýza řeči, nebo agenty hrající strategické hry, 

Symbolem dominance strojového učení nad jinými přístupy v UI je drtivé vítězství stroje AlphaZero v šachách nad dosud nejsilnějším programem Stockfish v roce 2017. Stockfish je založen na klasickém "minimaxu" a alfa-beta ořezávání a hraje spíše "mechanicky", využívá standardní zahájení, koncovky a postupy. Naproti tomu AlphaZero se naučil za několik hodin hrát zcela sám bez pomoci lidských expertů, a jeho herní styl připomíná lidského velmistra, ovšem na daleko vyšší úrovni.

Typy učení

  • Učení s učitelem - k dispozici je množina tréninkových dat - vzorových zadání úlohy, spolu se vzorovým řešením ke každému zadání.
  • Zpětnovazební (posilující) učení - nejsou poskytnuta detailní řešení tréninkových úloh, pouze hodnocení správně/chybně, nebo odměna/trest.
  • Učení bez učitele - nejsou k dispozici žádná data o správných řešeních, agent většinou vychází ze vzájemných podobností vzorových úloh (typická úloha je rozdělení tréninkové množiny do kategorií).

V dalším se zaměříme na učení s učitelem. Tréninková data budou ve formě množiny {(x1y1), (x2y2), ... , (xNyN)}, kde xi je zadání/vstup popsané vektorem atributů (číselných/logických/textových aj. hodnot) a yi je obdobně zadané řešení/výstup. Agent se má naučit přiřazovat zadáním správná řešení, tedy najít funkci (hypotézu) h tak, že h(xi) = yi pro všechna 1 ≤ i ≤ N. Samozřejmě bychom rádi, aby po natrénování uměl zobecňovat - najít správná řešení i pro podobné vstupy, které ale nebyly v tréninkové množině.

Rozhodovací stromy

Jsou založeny na postupném vyhodnocení podmínek týkajících se vstupních atributů. Například pokud se rozhodujeme, zda zůstaneme v restauraci, do které jsme právě vešli, bereme v úvahu atributy jako počet hostů, odhadovanou čekací dobu, ceny, očekávanou kvalitu, zda venku prší apod. Každou z podmínek vyhodnotíme do dvou nebo nejvýše několika málo případů (ceny: nízké/střední/vysoké/astronomické). Každá podmínka je uzel v rozhodovacím stromu, její vyhodnocení jsou hrany do dceřiných uzlů. V listech stromu jsou pak výstupy/řešení úlohy (zůstat v restauraci / odejít).

Každý strom tudíž představuje jednu možnou hypotézu. Jak nyní na základě tréninkové množiny sestavit nejlepší strom? Chceme přirozeně, aby byl co nejmenší, kvůli úspoře paměti i času při jeho průchodech, a současně aby hypotéza bylo pokud možno platná pro celou tréninkovou množinu. 

  • Začínáme s nejvíce informativními atributy, které co nejlépe rozdělí tréninkovou množinu s ohledem na správné výstupy. Atributy vybíráme pomocí entropie.
  • Pokud je strom příliš velký, můžeme ho prořezávat odstraněním irelevantních podmínek, které nejsou pro výsledek podstatné (pro výběr auta nebude hrát roli, zda je mokré či suché).
  • Dodatečné problémy mohou být způsobeny např. chybějícími daty (hodnoty některých atributů občas nejsou známy), mnohahodnotovými nebo těžce porovnatelnými atributy ("každý pes jiná ves") atd.

Jak poznáme, které atributy jsou více informativní než jiné? Výpočet informačního zisku atributu je popsán v prezentaci MFF UK a v monografii [5]. Výpočet si předvedeme na příkladu atributu Patrons v prezentaci. 

Atribut Patrons je aplikován na boolovskou proměnnou Wait ("budeme čekat?") v posledním sloupci tabulky, která má 6 hodnot pozitivních (p=6) a 6 negativních (n=6). Její entropie tedy je

B(p/(p+n)) = B(6/12) = –0,5*log2(0,5) – (1–0,5)*log2(1–0,5) = – 0,5 * (-1) - 0,5 * (–1) = 1

Počty pozitivních a negativních výsledků pro jednotlivé hodnoty atributu Patrons jsou (viz slajd č. 5 v prezentaci):

  1. None: p1 = 0, n1 = 2
  2. Some: p2 = 4, n2 = 0
  3. Full: p3 = 2, n3 = 4

Očekávaná entropie po testu atributu po dosazení do vzorce:

Remainder(Patrons) = Σk=1,2,3 B(pk /(pk +nk)) * (pk +nk)/(p+n) = B(0/2) * 2/12 + B(4/4) * 4/12 + B(2/6) * 6/12 = 0 + 0 + B(1/3) * 1/2 = 0,459

Platí totiž, že B(0) = B(1) = 0; při výpočtu se objeví 0 * log20 = 0 * –∞, což lze vypočíst limitou lim(0 * log20) = 0. Intuitivně je to dáno tím, že jde o entropii náhodných jevů, jejichž výsledek je vždy negativní (None), resp. vždy pozitivní (Some). Takový jev tedy vlastně vůbec není náhodný a jeho entropie = míra nejistoty je nulová. Výpočet B(1/3) se provede stejně jako v předchozím odstavci, kde jsme počítali B(6/12).

Výsledný informační zisk atributu

Gain(Patrons) = B(p/(p+n)) - Remainder(Patrons) = 1 - 0,459 = 0,541.

Regresní modely

Co když jsou vstupní i výstupní atributy spojité a jejich dělení do malého počtu kategorií nedává smysl? Pak budou prostor hypotéz tvořit spojité funkce mapující vektor vstupů na vektor výstupů. Hledáme takovou, která vstupy na výstupy mapuje "co nejlépe". Bohužel neexistuje (a nemůže existovat) žádné jednoznačné kritérium, co znamená "co nejlépe". Často se pracuje např. s kvadratickou chybou (požadovaný minus skutečný výstup, to celé na druhou), kterou rozhodovací funkce udělá v součtu na všech tréninkových vzorech. 

Jelikož hledání spojitých funkcí může být docela složité, začneme s lineárními funkcemi, pro něž existují známé a ověřené metody. Ty umožní jednoznačně najít nejlepší hypotézu - funkci h s nejmenší kvadratickou chybou.

Pro složitější úlohy ale často lineární hypotézy nestačí - nejsou dost přesné, nepostihují dobře charakter problému (příkladem je už problém XOR). V tom případě hledáme co nejlepší hypotézu heuristicky - zvolíme nějaký tvar funkce a manipulujeme s jejími parametry tak, aby chyba pokud možno klesala. Často se používají gradientní metody.

Neparametrické modely

použijeme v případě, že tréninková množina není příliš veliká, takže není nutno ji modelovat pomocí nějaké funkce - hypotézy. Namísto toho můžeme, při řešení nového zadání, hledat v tréninkové množině "co nejpodobnější" případy, a z jejich vzorových řešení nějak slepíme odpověď. A samozřejmě si na to vezmeme vhodný matematický aparát.

Ověření znalostí
  1. Představte si situaci dítěte, které se má naučit mluvit a rozumět jazyku. zařaďte situaci do obecného rámce učení a určete typy učení, které dítě absolvuje. Popište vstupy a výstupy těchto učení a tréninkovou množinu.
  2. Řešte stejnou úlohu jako předchozí pro případ tenisu nebo jiného sportu, který znáte.
  3. V rozhodovacím stromě pro návštěvu restaurace (vzorce viz Russel & Norvig, kap. 18, nebo prezentace MFF UK) spočtěte informační zisk atributu "WaitEstimate". Příklad výpočtu je uveden výše v panelu "Shrnutí kapitoly".
  4. Acyklický rozhodovací graf je zobecněním rozhodovacího stromu, kde může uzel obecně mít více rodičů. Uvažujte funkci XOR tří binárních atributů, kde výstup má být 1 tehdy a jen tehdy, když lichý počet vstupů má hodnotu 1.
    (a) Nakreslete minimální rozhodovací strom pro tento problém.
    (b) Nakreslete minimální rozhodovací graf pro tento problém.
  5. Standardní rozhodovací stromy si neporadí s případy, kdy hodnota některého atributu je neznámá. Když tedy narazíme na uzel v rozhodovacím stromu, který tento atribut využívá, nevíme jak dál. Řešte problém tak, že nejprve vezmete všechny tréninkové vzory se známou hodnotou atributu, při jejichž klasifikaci dojdeme k tomuto uzlu, a zapamatujeme si frekvenci každého rozhodnutí v uzlu.  Když pak do uzlu dorazí vstup s neznámou hodnotou atributu, musí algoritmus projít všechny cesty vedoucí z tohoto uzlu, ale u každé si pamatuje dříve spočítanou frekvenci. Pokud tato situace nastane na cestě k listům víckrát za sebou, jednotlivé frekvence se násobí. Výsledný list bude ten, do kterého dorazíme s nejvyšším součinem. Upravte v tomto smyslu rozhodovací algoritmus pro stromy popsaný v Russel & Norvig (2010).
Úloha: rozhodovací strom
Spočtěte příklad 3 ze sekce Ověření znalostí. Odevzdejte dokument anebo sken s detailním řešením včetně mezivýpočtů. Max 6 bodů.
Literatura a zdroje

Základní:

  • MAŘÍK a kol. Umělá inteligence, díl I, kap. 7

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 18, části 1, 2, 3, 6, 8.

Doporučená:

Užitečné odkazy:

Prezentace Illinois - Machine Learning

Prezentace MFF UK - Úvod do strojového učení

Support Vector Machines

 Cíle

  • Pochopit princip support vector machines pro klasifikační úlohy s dvěma třídami
  • Seznámit se s metodou kvadratického programování
  • Aplikovat v SVM nelineární transformace vstupního prostoru
  • Objasnit si úlohu jádrové funkce (kernel function) v SVM

 Klíčová slova

Support vector machines, podpůrné vektory, lineárně separabilní třídy, nelineární transformace, jádrová funkce

Shrnutí kapitoly

Základním principem SVM je jednoduchý lineární klasifikátor, který rozděluje tréninkovou množinu do dvou kategorií/tříd oddělených nadrovinou. Pokud jsou prvky z obou tříd rozmístěny tak, že je lze nadrovinou oddělit, dá se úloha řešit jednoduše metodou kvadratického programování. Přitom chceme, aby dělící nadrovina měla co největší vzdálenost od jí blízkých bodů obou tříd. Právě tyto body se nazývají podpůrné vektory (support vectors) a na obrázcích níže leží na čárkovaných hranicích dělicího pruhu mezi třídami (margin).

Kernel

Obr. 1. Ilustrace principu SVM. Zdroj: Wikipedia,  User:Zirguezi.

Co ale v případě, že obě třídy nejsou lineárně separabilní? Zde se uplatní hlavní princip SVM - nelineární transformace dat ze vstupního prostoru do jiného, zpravidla vícerozměrného prostoru, v němž už tyto třídy separabilní budou, Postup je ilustrován na obr. 1.

Transformace se provádí pomocí tzv. jádrových funkcí, které jako parametr využívají právě výše zmíněné podpůrné vektory. Časté jsou například polynomy anebo tzv. Gaussovy funkce

Mezi výhody SVM patří zaručené nalezení globálního optima klasifikace (minimální chyby) a poměrně jednoduchá konstrukce modelu s nepříliš mnoha parametry. Nevýhodami může být například někdy obtížná volba jádrové funkce a vysoká výpočetní náročnost u velkých tréninkových množin (miliony prvků)

Ověření znalostí
  1. Vytvořte SVM pro klasifikaci následující tréninkové množiny:
    x-2-112
    y+1-1-1
    kde hodnoty y = -1/+1 odlišují dvě kategorie. Namapujte vstup x do prostoru se souřadnicemi [xx2]. Nakreslete v tomto prostoru čtyři uvedené body tréninkové množiny a jejich nejlepší lineární separátor (přímku). Polohu separační přímky určete graficky. Kolik činí její okraj (margin)? 
  2. Vytvořte SVM pro výpočet funkce XOR. Použijte pro vstupy a výstupy hodnoty +1 / -1. Namapujte vstup [x1x2] do prostoru se souřadnicemi [x1x2x1]. Nakreslete v tomto prostoru čtyři možné body tréninkové množiny a jejich maximální lineární separátor, který určete graficky. Kolik činí jeho okraj? Nyní překreslete separační přímku zpět do původního prostoru (kde už nebude přímkou). 
  3. Vyřešte příklad 18.25 v knize Russel & Norvig (3. vydání).
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 18, část 9.

Doporučená:

Užitečné odkazy:


Prezentace MFF UK - Úvod do strojového učení

Hluboké učení

 Cíle

  • Seznámit se se základními principy a modely hlubokého učení
  • Pochopit princip gradientních metod učení, přípravy dat a nastavení tréninkového algoritmu
  • Umět využívat základní funkce knihovny Tensorflow (anebo obdobné)

 Klíčová slova

Umělá neuronová síť, gradientní učení, Backpropagation, tenzor, prostředí Tensorflow

Shrnutí kapitoly

Hluboké učení využívající umělé neuronové sítě se spolu s dalšími probranými metodami (SVM, evoluční algoritmy) řadí do skupiny "měkkých výpočtů" (soft computing) - metod určených k přibližnému řešení problémů, které neumíme (nebo dokonce není v principu možno) vyřešit optimálně a řešení logicky odůvodnit. Často je tomu i proto, že popis problému je sám o sobě vágní ("udělej k večeři něco dobrého") nebo přesná data nejsou k dispozici (naučte tým robotů hrát fotbal tak, aby porazil protivníka).

Umělé neuronové sítě reprezentují poznatky formou (a) signálů cirkulujících v síti - ty odpovídají krátkodobé paměti, (b) topologií sítě - počtem vrstev, počtem neuronů ve vrstvách, jejich typem a jejich vzájemným propojením, a (c) silou (vahami) těchto propojů - analogie dlouhodobé paměti. Trénink sítě spočívá v tom, že jí postupně předkládáme příklady vstupů reprezentující problém, na jehož řešení chceme síť natrénovat, a je-li to možné, ihned porovnáváme výsledky sítě se správnými výstupy. Příklad - síť klasifikující obrázky z kamery autonomního vozidla do kategorií jako "chodec", "strom", "pes", "protijedoucí auto", "stín", "semafor" a podobně. Vstupy = bitové mapy z kamery, výstupy = objekty v obraze a jejich kategorie. Během tréninku se nastavují váhy sítě (a někdy i její propojení) tak, aby se dosáhlo co největšího podílu správných výstupů.

Neuron3.png
Obr.1: Biologický neuron. By Prof. Loc Vu-Quoc - Own work, CC BY-SA 4.0, Link



Obr. 2 Matematický model neuronu, tzv. perceptron, nejčastěji používaný v umělých neuronových sítích.

Nejčastěji citovanou úvodní studií o umělých neuronových sítích McCulloch-Pittsův model neuronu z roku 1943, který je schematicky znázorněn na obr. 2. Autoři si byli sami vědomi, že tento model sám o sobě má velmi limitovanou kapacitu a navrhovali, že pro složité problémy bude třeba (po vzoru mozku) vytvořit vrstevnatou síť neuronů, popřípadě i se zpětnými vazbami. Problémem bylo, že nikdo neuměl takovou síť natrénovat, a to až do roku 1985 (později se ukázalo že řešení bylo známo z jiných oborů už dříve, ale nikoho nenapadlo je použít). Z pohledu obecného strojového učení jde jednoduše o nelineární regresi... 

Základem učení (hlubokých) neuronových sítí, pro někoho možná překvapivě, je jednak lineární algebra, hlavně počítání s vektorymaticemi a obecně s tenzory, a dále diferenciální počet, konkrétně gradientní metody. Aplikací gradientních metod pro vícevrstvou neuronovou síť vznikl algoritmus Backpropagation.


Obr. 3. Vícevrstvá neuronová síť architektury m-n-o-p. 

Tento algoritmus (a další, vycházející z podobných principů) je dnes používán ve většině aplikací umělých neuronových sítí. V poslední době zaznamenávají fenomenální úspěch hluboké neuronové sítě, které jsou klasickou implementací obecnějšího principu hlubokého učení (deep learning). Mívají běžně i více než deset skrytých vrstev (viz obr. 3) a používají se pro ně, oproti perceptronům, vylepšené aktivační funkce a tréninkové algoritmy. Tato vylepšení jsou poměrně jednoduchá, opět ale trvalo přes 20 let, než byla nalezena a prověřena. Přestože se vynakládá značné úsilí na matematický popis neuronových sítí, ve snaze zjednodušit a zautomatizovat jejich návrh, stále je nutno s řadou jejich nastavení (tzv. hyperparametrů ručně experimentovat, aby se dosáhly kvalitní výsledky učení. 

Hluboké učení dnes často předčí člověka v disciplínách jako jsou strategické hry, počítačové vidění, řízení autonomních vozidel a podobně. Pro zajímavé aplikace navštivte například Wikipedii, web firmy Google DeepMind, nebo stránky projektu Tensorflow rovněž od Google. Zde existují jednoduše použitelné softwarové knihovny, které umožňují konstruovat a spouštět sítě hlubokého učení online i bez důkladné znalosti jejich matematické teorie, a bez nutnosti mít výkonné GPU pro jejich trénink. Pro experimenty s hlubokým učením je vynikající začít knihou F. Chollet: Deep learning v jazyku Python, kde jsou základní principy a experimenty vysvětleny hned v úvodních třech kapitolách.

Ověření znalostí
  1. Zkonstruujte ručně umělou neuronovou síť počítající funkci XOR se dvěma vstupy. Uveďte, jakou přechodovou funkci jste použili.
  2. Existuje celkem 2 na 2n (dvě na dvě na n) různých logických funkcí s n vstupy a jedním výstupem. Kolik z nich lze realizovat jediným perceptronem s funkcí "ostrá nelinearita"?
  3. Z hlediska teorie pravděpodobnosti má v některých případech smysl trénovat síť na minimum funkce log (f(w)) , kde f je logistická sigmoida. Najděte derivaci funkce log (f(w)) vzhledem ke každé váze wi
  4. Zopakujte předchozí úlohu pro derivaci funkce log (1–f(w)).
  5. Uvažujte síť s neurony s lineární aktivační funkcí, kde výstup neuronu je konstanta krát vnitřní potenciál.
    (a) Pro síť s jednou skrytou vrstvou spočtěte vektor výstupů sítě y jako funkci matice vah W a vstupů sítě x, tak aby se ve výpočtu nikde neobjevovaly výstupy neuronů skryté vrstvy. Ukažte, že lze sestavit síť bez skryté vrstvy, která počítá stejnou funkci.
    (b) Zobecněte výsledek pro libovolný počet skrytých vrstev. 
  6. Tréninková množina pro algoritmus Backpropagation má 100 vzorků se stejným vstupem. U 80 z nich je požadovaný výstup sítě 1, ve zbývajících 20 je to 0. Uvažujte, že síť se naučí na globální minimum chyby. Jaký bude výstup sítě pro daný vzorový vstup? Nápověda: spočtěte derivaci chybové funkce pro danou tréninkovou množinu a položte ji rovnu nule.
Úloha: jednoduchá neuronová síť. Čas na odevzdání:1 týden
Na https://playground.tensorflow.org/ si zvolte dataset "Spiral". Manipulujte s hyperparametry sítě, až se vám podaří (během max. 3000 tréninkových epoch) dosáhnout trénovací i testovací chyby (Training loss / Test loss) nanejvýš 0.01. Můžete použít nejvýše 8 skrytých neuronů. Vysvětlení k principům a parametrům modelu sítě najdete v úvodních kapitolách knihy F. Chollet: Deep learning v jazyku Python. Odevzdejte odkaz na playground, který v sobě obsahuje veškeré parametry sítě. Max 8 bodů.
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 18.7.

  • Chollet, F.: Deep learning v jazyku Python. Grada, Praha, 2019.

Doporučená:

  • Goodfellow, I., Bengio, Y., Courville, A.: Deep Learning, MIT Press, 2016. Dostupné online.

Užitečné odkazy:

Kam pokračovat dál...

 Cíle

  • Orientovat se v dalších oblastech umělé inteligence, které přesahují náplň předmětu
  • Umět dohledat knižní prameny a webové zdroje pro aktuální stav těchto disciplín
  • Držet krok se současným vývojem v UI a průběžně si doplňovat znalosti

 Klíčová slova

Přístupy "neat" a "scruffy" v UI, plánování, rozvrhování, fuzzy metody, expertní systém, znalostní systém

Shrnutí kapitoly

Obor umělá inteligence je slepencem řady témat a různorodých matematických / algoritmických nástrojů které se často v úspěšných technologiích dneška kombinují. Od začátku historie disciplíny spolu soupeří dva přístupy: 

  • "neat" - metodiky s propracovaným matematickým aparátem, který dává jasné odpovědi na to, proč je za určitých podmínek daný postup nejlepší možný;
  • "scruffy" - heuristicky odvozené / odzkoušené postupy, často založené na intuici a zkušenosti experimentátorů, které v praxi většinou fungují, aniž by bylo plně objasněno, proč.

Mnohá z probraných témat se dají řadit spíše do oblasti  "scruffy" (vyjma těch, která jsou postavená na logice). Z technik založených na logice a prohledávání jsme vynechali například automatické plánování a rozvrhování

Z toho, co se do přednášky nevešlo, je však zřejmě nejdůležitější téma zpracování neurčité informace. Statisticképravděpodobnostní a fuzzy metody využívají svůj matematický aparát k práci s nepřesnými daty, k hledání přibližných řešení a maximalizaci jejich míry správnosti. Pro základní přehled odkazují názvy metod v textu výše na Wikipedii, kde je také řada dalších zdrojů a odkazů. Podstatný rozdíl mezi pravděpodobnostními a fuzzy přístupy je tento: 

  • U pravděpodobnostních metod nějaký fakt X buďto platí nebo ne, ale v daný moment to nevíme jistě, pouze s určitou pravděpodobností. Dalším zjišťováním se dá eventuálně dojít až k jistotě.
  • U fuzzy metod je daný fakt platný v určité míře (modrozelený odstín je do jisté míry zelený a do jisté modrý) a žádné zjišťování dalších faktů na tom nic nezmění.

Pro implementaci UI jsou zásadní také programovací jazyky umělé inteligence, z nichž alespoň některé jsou dostupné formou volitelných předmětů.

Literatura a zdroje

Doporučená:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach.