Všeobecný úvod do umelej inteligencie

Ako sa stroje učia

Autori textu: Eva Nečasová, Vojtěch Jindra, odborný garant: Pavel Kordík

Strojové učenie je jeden z najpoužívanejších prístupov v oblasti umelej inteligencie. Cieľom jeho metód je odhaliť vzory vyskytujúce sa v dátach. Namiesto toho, aby sme stroju presne popisovali nejaký postup, ukážeme mu veľké množstvo príkladov, z ktorých sa sám naučí, ako vykonávať konkrétnu úlohu.

Čo vlastne strojové učenie znamená?

Rovnako ako sa človek dokáže učiť z príkladov a skúseností, sú toho schopné aj človekom vytvorené stroje. Rozdiel je v tom, že metódy strojového učenia nemajú prehľad o okolitom svete a dokážu sa zatiaľ učiť len z dát, ktoré im boli predložené.

Ľudia sa občas strácajú v pojmoch strojové učenie a umelá inteligencia. Mnoho systémov umelej inteligencie je postavených práve pomocou strojového učenia, ale nejde o jediný spôsob. Vzťah medzi týmito pojmami ilustruje nasledujúci obrázok.

Strojové učenie prináša zásadnú zmenu v spôsobe, akým vytvárame stroje. Namiesto toho, aby sme im presne popisovali nejaký postup (algoritmus), ukážeme im veľké množstvo príkladov (alebo ich necháme metódou pokus/omyl získavať spätnú väzbu a posilňovať stratégie), z ktorých sa samy naučia, ako vykonávať konkrétne úlohy.

Predstavte si to na príklade robotov, ktorých by sme chceli naučiť hrať futbal. Ak by sme sa snažili napísať presný postup pomocou algoritmov, ktorý by popisoval všetky situácie na ihrisku a ako na ne majú roboti reagovať, bolo by to veľmi zdĺhavé, ak nie nemožné. A tak namiesto toho vytvoríme pre robotov program, ktorý je schopný sa z mnohých príkladov naučiť hrať futbal sám. Napríklad takto:

Pokus a omyl

Stroje sa však nemusia učiť iba tým, že im ukážeme príklady. Môžu sa tiež učiť „samy“ metódou pokus/omyl. A potrebujú na to mnoho a mnoho pokusov (a najmä omylov). Pozrite sa na nasledujúcu simuláciu. Cieľom robotov je dobehnúť preteky na 100 metrov do 60 sekúnd. Robotom však nikto nedal postup, ako to majú dosiahnuť — a tak teda skúšajú metódou pokus/omyl a samy si vytvárajú stratégie na dosiahnutie cieľa.

Model strojového učenia

Takto sa nazýva program, ktorý sa z mnohých príkladov učí, ako riešiť rôzne úlohy. Trénovanie prebieha v dvoch fázach — trénovanie a testovanie. V trénovacej fáze ukazujeme modelu množstvo príkladov (videá, obrázky, texty…), na ktorých sa trénuje tým, že vyhľadáva vzory (podobnosti). V testovacej fáze ukazujeme modelu príklady, ktoré ešte nikdy nevidel, a zisťujeme, ako dobre funguje.

Čo je potrebné na vytvorenie modelu

Na natrénovanie modelu vždy potrebujeme dáta. Pod pojmom dáta si môžete predstaviť napríklad tabuľku, priečinok obrázkov, priečinok textov. Vo väčšine prípadov obsahujú dáta človekom priradenú výstupnú hodnotu (tzv.  anotáciu). Pri fotografiách mačiek a psov môže ísť o informáciu, kde na fotografii je mačka a kde pes. Môžeme mať rôzne veľké množstvo dát, spravidla však platí, že s väčším množstvom (kvalitných) dát rastie kvalita fungovania modelu.

Dátami sa snažíme pokryť všetky možné scenáre, s ktorými sa model neskôr vo svojom životnom cykle môže stretnúť. To pomáha modelu k takzvanej generalizácii, tzn. schopnosti modelu predikovať skôr nevidené dáta.

Pre jednoduché modely nám stačí niekoľko desiatok dátových vzoriek. Zložitejšie modely, napríklad neurónové siete, sú bežne trénované aj na tabuľkách s miliónmi riadkov. Nie je ľahké spoznať, či model funguje (generalizuje) správne. V niektorých oblastiach už modely človeka prekonali.

Typy strojového učenia

Strojové učenie — teda spôsob, ako sa algoritmy samy zlepšujú na základe dát a spätnej väzby — môžeme rozdeliť do troch základných prístupov. V prvom (učenie s učiteľom) ľudia vopred označia správne odpovede, v druhom (učenie bez učiteľa) model sám hľadá vzory v neoznačených dátach a v treťom (posilňované učenie) sa systém učí metódou pokus/omyl a spätnej väzby. Každý z nich sa hodí pre iné situácie a úlohy. Podrobnosti rozvádzame nižšie.

Učení s učitelem

Pokud bychom chtěli vytvořit pomocí tohoto typu strojového učení aplikaci, která rozpoznává psy a kočky, museli bychom nejdříve systému umělé inteligence říci, na kterých obrázcích jsou kočky a na kterých psi (tzv. anotovat data). Lidé tedy plní úlohu učitelů, podle čehož se tento přístup nazývá.​

Po rozdělení obrázků na kočky a psy bychom natrénovali model strojového učení a poté bychom mu ukazovali obrázky koček a psů, které ještě nikdy neviděl.

Sledovali bychom, zda zvíře určil správně. Pokud ne, vylepšili bychom datovou sadu a natrénovali model znovu.​

Učení bez učitele

Někdy může být velmi zdlouhavé, nákladné či přímo nemožné všechna data anotovat. V takových případech využíváme strojové učení bez učitele.

Tento typ programu si vyhledává podobnosti (vzory) sám a vstupní data poté dokáže rozdělit do shluků (anglicky cluster), abychom se v datech my lidé lépe vyznali — a především pak snadno určili, co který shluk znamená.​

Posilované učení

Někdy necháme stroje, aby něco zkoušely samy (metodou pokus/omyl), a následně jim dáváme zpětnou vazbu skrze tzv. politiky. Stroje si na základě zpětné vazby (skrze politiky) vyvíjejí strategie chování.