Umělá inteligence

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í