Jak začít se strojovým učením?

Snahy o vytvoření strojů s inteligencí přesahující lidskou nejsou žádnou novinkou.

Jedním z prvních a nejvýraznějších pokusů počítačové vědy o překonání lidských kognitivních schopností bylo šachové klání. Šachy byly (nebo bychom spíše měli říci, že byly) vnímány mnoha lidmi jako nejvyšší test lidského intelektu a kreativity. V 60. a 70. letech minulého století se v počítačové vědě objevovaly různé pohledy na tuto problematiku.

Někteří odborníci se domnívali, že je jen otázkou času, kdy počítače překonají lidské schopnosti v šachové hře, zatímco jiní byli přesvědčeni, že k tomu nikdy nedojde.

Kasparov proti Deep Blue

Jedním z nejznámějších střetnutí mezi člověkem a strojem se stal šachový zápas v roce 1996, kde proti sobě stanuli tehdejší mistr světa Garry Kasparov (mnohými považovaný za nejlepšího šachistu historie) a superpočítač Deep Blue, který byl speciálně vyvinut společností IBM pro tuto událost.

Obrazový kredit: Wikipedie

Stručně řečeno, Kasparov v roce 1996 s přehledem zvítězil (4-2), avšak v odvetném zápase v roce 1997 prohrál (4,5-3,5). Tento výsledek byl doprovázen mnoha kontroverzemi a přímými obviněními ze strany Kasparova o podvádění ze strany IBM.

Ať už to bylo jakkoliv, éra, kdy šachy představovaly vrchol inteligence, skončila. Počítače tak nabyly nárok na to být chytřejší, než kterýkoliv žijící člověk. IBM, spokojena s dosaženým úspěchem, Deep Blue rozebrala a pokračovala dál ve své činnosti.

V současnosti není možné, aby jakýkoliv velmistr porazil běžný šachový program spuštěný na standardním počítačovém vybavení.

Co není strojové učení?

Než se hlouběji ponoříme do tématu strojového učení, je důležité vyvrátit několik mylných představ. Strojové učení v žádném případě není snahou o napodobení lidského mozku. Navzdory senzačním prohlášením, která šíří lidé jako Elon Musk, výzkumníci z oblasti počítačových věd tvrdí, že nemají za cíl tuto svatou metu dosáhnout, a že se k ní ani zdaleka nepřibližují.

Jednoduše řečeno, strojové učení spočívá v aplikaci procesů učení se z příkladů na počítače. To se liší od tradičního přístupu, kdy programátor vytváří veškeré možné scénáře a pevně kóduje pravidla do systému.

Jádrem strojového učení je poskytování obrovského množství dat počítači, aby se učil z příkladů (pokus → omyl → porovnání → zlepšení), namísto spoléhání se na zdrojový kód.

Použití strojového učení

Pokud strojové učení není žádná černá magie, která vyvolává Terminátory, k čemu je tedy dobré?

Strojové učení nachází uplatnění v případech, kdy tradiční programování selhává, a tyto případy obvykle spadají do jedné ze dvou kategorií.

Jak již samotný název napovídá, klasifikace se zaměřuje na správné označování věcí, zatímco predikce se snaží předpovídat budoucí vývoj s využitím velkého souboru dat minulých hodnot.

Mezi zajímavé aplikace strojového učení patří:

Filtrování spamu

E-mailový spam je všudypřítomný, ale snaha o jeho zastavení může být velmi komplikovaná. Jak se spam vlastně definuje? Je to přítomnost konkrétních klíčových slov? Nebo je to způsob, jakým je napsán? Vytvořit kompletní soubor pravidel pro programové řešení je téměř nemožné.

Proto se v této oblasti využívá strojové učení. Systému jsou předloženy miliony spamových a nespamových zpráv a on se sám učí, jak je rozpoznávat. Toto je tajemství vynikajících filtrů nevyžádané pošty od Gmailu, které způsobily revoluci v osobní e-mailové komunikaci na začátku 21. století!

Doporučení

Dnes má každá významná společnost provozující e-commerce robustní systémy doporučování produktů. Jejich schopnost navrhovat věci, které by nás „mohly“ zajímat, je občas neuvěřitelně přesná, a to i když jsme na danou položku nikdy předtím neklikli.

Náhoda? Rozhodně ne!

Strojové učení se zde plně angažuje a zpracovává terabajty dat, aby dokázalo předvídat naše proměnlivé nálady a preference.

Chatboti

Už jste se setkali se zákaznickou podporou, která se vám zdála zvláštně robotická, a přesto dokázala vést zajímavé konverzace?

Pokud ano, tak jste narazili na strojové učení!

Učení se z konverzací a rozhodování o tom, co a kdy říci, je slibnou a dynamickou oblastí aplikace chatbotů.

Odstraňování plevele

V zemědělství se roboti řízení strojovým učením používají k selektivnímu postřikování plevele a nežádoucích rostlin mezi plodinami.

Tato činnost by se jinak musela provádět ručně, nebo by byla neefektivní, protože by postřik zasáhl i samotné plodiny!

Hlasové vyhledávání

Hlasová interakce s počítačovými systémy už dávno není sci-fi. Dnes máme digitální asistenty jako Alexa, Siri a Google Home, kteří dokážou přijímat verbální pokyny a nezmatkují (nebo aspoň téměř!).

Někteří lidé mohou tvrdit, že se jedná o vynález, kterému je lepší se vyhnout, protože lidská rasa se díky němu stává línější než dříve, ale o jeho efektivitě se nedá pochybovat.

Lékařská diagnostika

V medicínské diagnostice se blížíme revoluci, protože systémy založené na strojovém učení začínají překonávat zkušené lékaře v diagnostikování pomocí rentgenových snímků a dalších metod.

Důležité je zdůraznit, že to neznamená, že lékaři brzy nebudou potřební, ale kvalita zdravotní péče se významně zlepší a náklady na ni klesnou (pokud tomu obchodní kartely nezabrání!).

Toto je pouze několik příkladů využití strojového učení. V dnešní době se také rozvíjí vývoj samořídících aut, robotů pro strategické hry, strojů na skládání oblečení, řešení captchy a vybarvování černobílých fotografií.

Typy strojového učení

Metody strojového učení se dělí na dva základní typy.

Učení s učitelem (Supervised Learning), kde je systém řízen lidským hodnocením, a Učení bez učitele (Unsupervised Learning), kde je systém ponechán, aby se učil sám. Dalším způsobem, jak to vyjádřit, je, že v učení s učitelem máme k dispozici datový soubor obsahující vstupy i očekávané výstupy, které systém používá k porovnávání a opravování. V učení bez učitele ale není žádný existující výstup, podle kterého by se dalo měřit, proto se výsledky mohou velmi lišit.

Jaký je vzrušující a zároveň děsivý příklad použití učení bez učitele?

Mohou to být například boti hrající deskové hry, kde se program naučí herní pravidla a podmínky vítězství, a poté je ponechán svému osudu. Program pak hraje miliony her sám proti sobě, učí se ze svých chyb a upevňuje výhodná rozhodnutí.

Na dostatečně výkonném počítači lze vytvořit umělou inteligenci špičkové úrovně během několika hodin!

Následující obrázky stručně ilustrují tyto myšlenky (zdroj: Medium):

Zdroje pro začátek se strojovým učením

Pokud vás strojové učení nadchlo a uvažujete, jak vám může pomoci dobýt svět, kde byste měli začít?

Níže uvádím několik skvělých zdrojů z webu, které vám mohou pomoci dosáhnout pokročilé znalosti strojového učení, aniž byste museli získat doktorát z informatiky! I pokud nejste expertem na strojové učení, zjistíte, že je tato oblast stejně praktická a zábavná jako programování obecně.

Proto se nebojte a bez ohledu na vaši současnou úroveň můžete, stejně jako dobrý program strojového učení, se učit a zdokonalovat. 😛

#1. Programování

Prvním požadavkem pro vstup do světa strojového učení je naučit se programovat. Je to proto, že systémy strojového učení se objevují ve formě knihoven pro různé programovací jazyky.

Nejčastěji se doporučuje Python, částečně proto, že se s ním snadno pracuje, a částečně proto, že má obrovský ekosystém knihoven a zdrojů.

Oficiální průvodce pro začátečníky je skvělým místem, kde začít, i pokud s Pythonem už máte nějaké zkušenosti. Nebo si můžete vyzkoušet tento Bootcamp kurz a stát se expertem od základů.

#2. Statistické myšlení

Jakmile zvládnete základy Pythonu, doporučuji vám prostudovat si dvě výborné knihy. Obě jsou 100% zdarma a jsou k dispozici ke stažení ve formátu PDF. Think Stats a Think Bayes jsou dvě moderní klasiky, které by si měl osvojit každý budoucí inženýr strojového učení.

#3. Udemy

V tomto okamžiku bych doporučil absolvovat několik kurzů na Udemy. Interaktivní formát vám pomůže se v problematice orientovat a budovat si potřebné sebevědomí.

Před začátkem si nezapomeňte prohlédnout ukázku kurzu, recenze (zejména ty negativní!) a celkový dojem z kurzu.

Skvělé návody zdarma můžete také najít na YouTube. Senddex je jedním z kanálů, které můžu doporučit, kde se vždy děje spousta zajímavých věcí, i když jeho přístup nemusí být pro úplné začátečníky nejvhodnější.

#4. Andrew Ng

Kurz vedený Andrewem Ngem na Coursera je pravděpodobně nejpopulárnějším studijním materiálem pro základy strojového učení.

I když se používá programovací jazyk R, zůstává kurz bezkonkurenční svým přístupem k tématu a srozumitelnými vysvětleními. Díky tomuto kurzu získal Andrew Ng v komunitě ML téměř božský status a lidé se na něj obracejí s žádostí o moudrost (a to není vtip!).

Nejedná se o kurz pro úplné začátečníky, ale pokud už máte zkušenosti s datovou analýzou a nevadí vám nějaké dodatečné studium, tak je tento kurz tou nejlepší volbou.

#5. Udacity

Staňte se inženýrem strojového učení díky tomuto nanodegree od Udacity.

Dokončení tohoto kurzu vám zabere přibližně 3 měsíce a na jeho konci byste měli mít dobrý přehled o algoritmech strojového učení, o tom, jak je modelovat a implementovat.

Závěr

Zdroje na internetu jsou téměř nevyčerpatelné a na začátku se v nich můžete snadno ztratit. Většina tutoriálů a diskusí je buď matematicky náročná, nebo postrádá strukturu, což vám může zničit sebedůvěru ještě před začátkem studia.

Rád bych vás tedy varoval před sebezničujícími tendencemi: začněte skromně a postupujte malými krůčky. Strojové učení není něco, co byste zvládli za jeden nebo dva dny, ale brzy vás začne bavit a kdo ví, možná dokonce vytvoříte něco úžasného!

Přeji vám hodně zábavy! 🙂