Strojové učení ve firemním IT

30. 12. 2018

Sdílet

 Autor: © REIMUSS - Fotolia.com
Strojové učení může hluboce ovlivnit fungování vaší firmy, ale v této oblasti je stále spousta zmatků. Přinášíme vysvětlení toho, co strojové učení skutečně je a jak ho lze v současné době ve firmě využít.

Strojové učení transformuje fungování firem. I přes pokroky této technologie však firmy stále zápasí s tím, jak využít její výhody, a to převážně proto, že nerozumějí, jak lze strojové učení strategicky implementovat ve službách firemních cílů.

Humbuk nepomohl a zasel zmatek kolem toho, co přesně strojové učení je, jak dobře funguje a co dokáže poskytnout vaší společnosti. Přinášíme srozumitelné vysvětlení toho, co strojové učení je a jak ho lze v současné době využívat.

 

Co je strojové učení?

Strojové učení je podskupina umělé inteligence (AI, Artificial Intelligence), která systémům umožňuje učit se a předvídat výsledky bez výslovného naprogramování. Často se používá zaměnitelně s pojmem AI, protože je to metoda AI, která má dosud největší vliv v reálném světě – možná ji už ve své firmě nějak používáte.

Chatboty, doporučení k produktům, spamové filtry, auta schopná řídit sama sebe a řada dalších systémů využívajících strojové učení, stejně jako „inteligentní asistentky“ jako Siri a Cortana.

Namísto psaní algoritmů a pravidel, která činí rozhodnutí přímo, nebo pokusů naprogramovat počítač, tak aby byl „inteligentní“ pomocí sad pravidel, výjimek a filtrů, strojové učení učí počítačové systémy dělat rozhodnutí na základě učení se z velkých množin dat.

Systémy založené na pravidlech se rychle stávají nestabilními, když musejí zohledňovat složitost reálného světa, zatímco strojové učení může vytvářet modely, které reprezentují a zobecňují vzory v datech, jež jim předložíte k jejich výcviku, a může tyto modely využít k interpretaci a analýze nových informací.

Strojové učení je vhodné pro klasifikaci, která zahrnuje schopnost rozpoznávat text a objekty v obrazech a videích, stejně jako vyhledávat souvislosti v datech a rozdělovat data do skupin (např. hledání skupin zákazníků).

Strojové učení je také kandidátem pro předpovědi, jako jsou výpočet pravděpodobnosti událostí nebo prognózy výsledků.

Strojové učení lze také použít ke generování chybějících dat. Například nejnovější verze aplikace CorelDraw používá strojové učení k interpolaci hladkého tahu, který se pokoušíte kreslit, z několika přibližných tahů, jež děláte digitálním perem.

Srdcem strojového učení jsou algoritmy. Některé, jako jsou regrese, k-průměry shluků a podpůrné vektorové stroje, se používají po celá desetiletí. Například podpůrné vektorové stroje užívají matematické metody k reprezentaci toho, jak může být vykreslena dělicí čára mezi položkami, které patří do oddělených kategorií.

Klíčem k efektivnímu využití strojového učení je ale nalezení algoritmu vhodného pro vaši problematiku.

 

Neuronové sítě

Neuronová síť je algoritmus pro strojové učení založený na síti vzájemně propojených uzlů, které fungují dobře pro úkoly, jako je rozpoznávání vzorů.

Neuronové sítě nejsou novým algoritmem, ale dostupnost velkých datových sad a výkonnější zpracování – zejména grafické procesory (GPU), které dokážou paralelně zpracovávat velké datové toky, teprve nedávno zajistily jejich využitelnost v praxi.

Navzdory svému jménu jsou neuronové sítě založené tak, že jsou biologickým neuronům podobné jen přibližně. Každý uzel v neuronové síti má spojení s dalšími uzly, které jsou spouštěné pomocí vstupů.

Při spuštění přidá každý uzel váhu na svůj vstup, aby označil pravděpodobnost, že odpovídá, nebo neodpovídá funkci tohoto uzlu. Uzly jsou uspořádané ve fixních vrstvách, kterými protékají data, na rozdíl od mozku, jenž tvoří, odstraňuje a reorganizuje spojení synapsí pravidelně.

 

Hluboké učení

Hluboké učení je podmnožinou strojového učení a je založené na hlubokých neuronových sítích, které mají mnoho vrstev pro učení se ve více krocích. Složité hluboké neuronové sítě často vykonávají rozpoznávání obrazu zpracováním hierarchie vlastností, kde každá vrstva vyhledává další složité objekty.

Například první vrstva hluboké sítě, která rozpoznává plemena psů, by mohla být vytrénovaná tak, aby našla tvar psa v obraze, druhá vrstva by se mohla podívat na textury jako srst a zuby, další vrstvy by rozpoznávaly uši, oči, ocasy a další charakteristiky a poslední úroveň by rozlišovala různá plemena.

Rekurzivní hluboké neuronové sítě se zase používají k rozpoznávání řeči a zpracování přirozeného jazyka, kde jsou důležité sekvence a kontext.

Existuje mnoho nástrojů open source pro hluboké učení, které můžete použít k vytvoření vlastních systémů. Theano, Torch a Caffe jsou populární varianty a Google TensorFlow a Microsoft Cognitive Toolkit vám umožní používat více serverů k vytváření výkonnějších systémů s více vrstvami ve vaší síti.

Microsoft Distributed Machine Learning Toolkit obsahuje několik těchto nástrojů pro hluboké učení s dalšími knihovnami pro strojové učení. Jak platforma AWS, tak i Azure nabízejí virtuální stroje s předinstalovanými nástroji pro hluboké učení.

 

Strojové učení v praxi

Výsledky strojového učení představují procentuální jistotu, že data, na která se díváte, odpovídají tomu, co je váš model strojového učení naučený hledat.

Hluboká síť naučená identifikovat emoce z fotografií a videí lidských tváří by mohla zaznamenat obraz jako „97,6 % štěstí, 0,1 % smutek, 5,2 % překvapení, 0,5 % neutrální, 0,2 % hněv, 0,3 % pohrdání, 0,01 % znechucení a 12 % strach“. Použití těchto informací znamená pracovat s pravděpodobnostmi a nejistotou, ne přesnými výsledky.

Pravděpodobnostní strojové učení používá koncept pravděpodobnosti, který vám umožňuje používat strojové učení naprosto bez psaní algoritmů.

Namísto nastavených hodnot proměnných ve standardním programování mají některé proměnné v pravděpodobnostním programování hodnoty, které spadají do známého rozsahu a jiné mají neznámé hodnoty.

Zpracovávejte data, kterým chcete porozumět, jako kdyby to byl výstup tohoto kódu, a můžete pracovat pozpátku, abyste vyplnili, jaké by tyto neznámé hodnoty musely být pro dosažení takového výsledku. S menším rozsahem kódování můžete udělat více prototypů a experimentovat.

Pravděpodobnostní strojové učení se také snáze ladí. Je to metoda, kterou používá funkce Clutter v aplikaci Outlook k filtrování zpráv, u nichž je méně pravděpodobné, že vás zajímají, na základě toho, jaké zprávy jste si přečetli, odpověděli na ně a odstranili je v minulosti.

Byla vytvořena s využitím technologie Infer.Net, což je framework .Net, který můžete použít k vytvoření svých vlastních pravděpodobnostních systémů.

Kognitivní zpracování datje pojem, který používá IBM pro své nabídky technologie Watson, protože v roce 2011, kdy starší verze vyhrála soutěž Jeopardy, nebyl pojem AI oblíbený. Po desetiletích, kdy se na umělé inteligenci pracovalo, prošla střídavými obdobími humbuku i nezájmu.

Watson není jednotlivý nástroj. Je to kombinace modelů a rozhraní API, které můžete získat také od jiných dodavatelů, jako jsou například Salesforce, Twilio, Google a Microsoft.

Ty vám poskytují takzvané kognitivní služby, jako je rozpoznávání obrazu včetně rozpoznávání obličeje, rozpoznávání řeči (a mluvčího), porozumění přirozenému jazyku, analýzy nálady, názorů a stanovisek a další rozpoznávací rozhraní API, která fungují podobně jako lidské kognitivní schopnosti.

Ať už jsou to Watson nebo Microsoft Cognitive Services, platí, že pojem „kognitivní“ je skutečně jen marketingová značka omotaná kolem sbírky (velmi užitečných) technologií.

Pomocí těchto rozhraní API můžete vytvořit chatbota z existující stránky s častými dotazy, který dokáže odpovídat na textové dotazy a rozpoznávat fotografie produktů, aby poskytl správné informace podpory, nebo využívat fotografie štítků v regálu ke kontrole úrovně zásob.

Mnoho „kognitivních“ rozhraní API využívá hluboké učení, ale nemusíte vědět, jak jsou vytvořená, protože mnoho z nich funguje jako rozhraní REST API, která voláte ze své vlastní aplikace.

Některá vám umožní vytvářet vlastní modely z vašich dat. Salesforce Einstein má vlastní službu rozpoznávání obrazu a kognitivní rozhraní API Microsoftu vám umožňují vytvářet vlastní modely pro text, řeč, obrázky a video.

To je usnadněno přenosem učení, což je méně metoda a více užitečný vedlejší efekt hlubokých sítí. Hluboká neuronová síť, která byla naučená, aby udělala jednu věc, jako například překlady mezi angličtinou a mandarínštinou, se při učení druhého úkolu, například překládání mezi angličtinou a francouzštinou, učí efektivněji.

Může to být i proto, že velmi dlouhá čísla, která například reprezentují matematické vztahy mezi anglickými slovy „big“ a „large“, jsou do určité míry mezi jazyky společná, ale pravdu neznáme.

Přenos učení se zatím nepodařilo dobře pochopit, ale může vám umožnit získat dobré výsledky z menšího rozsahu učení. Služba Microsoft Custom Vision využívá přenosové učení k natrénování rozpoznávání obrázků během několika minut pomocí 30 až 50 snímků na každou kategorii namísto tisíců, které by obvykle byly potřebné pro přesné výsledky.

 

Vytvoření vlastního systému

Nechcete-li předem vytvořená rozhraní API a máte-li data, se kterými můžete pracovat, existuje velká řada nástrojů pro vytváření systémů strojového učení, počínaje skripty v jazycích R a Python přes prediktivní analytiku s využitím technologií Spark a Hadoop až po specifické nástroje a frameworky AI.

Spíše než k vytvoření vlastní infrastruktury můžete využít služby strojového učení v cloudu k vytváření datových modelů. Při využití cloudových služeb nemusíte instalovat řadu nástrojů. Tyto služby navíc mají v sobě použity další odborné znalosti potřebné k dosažení úspěšných výsledků.

Služba Amazon Machine Learning nabízí několik modelů strojového učení, které můžete použít s daty uloženými v systémech S3, Redshift a R3, ale modely nelze exportovat a velikost výukové množiny je spíše omezená.

Microsoft Azure ML Studio má širší řadu algoritmů včetně hlubokého učení, navíc balíky pro jazyky R a Python a grafické uživatelské rozhraní pro práci s nimi.

Nabízí také možnost použití služby Azure Batch (dávky) k pravidelnému načítání extrémně rozsáhlých výukových sad a vytrénované modely můžete využívat jako rozhraní API pro volání z vašich vlastních programů a služeb.

K dispozici jsou také funkce pro strojové učení jako například rozpoznávání obrazu vestavěné do cloudových databází, jako je například SQL Azure Data Lake, takže můžete praktikovat strojové učení tam, kde jsou vaše data přímo uložená.

 

Učení s učitelem

Mnoho metod strojového učení využívá učení s učitelem (supervised), při kterém je funkce odvozena z označených tréninkových dat. Vývojáři zvolí a označí sadu tréninkových dat, vyhradí část těchto dat na testování a vyhodnocují výsledky ze systému strojového učení za účelem zlepšování.

Tréninkový proces může být složitý a výsledky jsou často pravděpodobnostní, přičemž systém si je např. na 30 % jistý, že poznal v obraze psa, na 80 % věří, že našel kočku, a možná tam mohou dokonce být 2 %, že našel bicykl.

Zpětná vazba, kterou dávají vývojáři systému, je jako skóre mezi jedničkou a nulou, což indikuje, jak blízko je odpověď správnému výsledku.

Je důležité netrénovat systém příliš přesně na tréninková data, což se nazývá nadměrnost (overfitting) a způsobovalo by to, že by systém nedokázal zobecňovat a zvládnout nové vstupy.

Pokud se údaje v průběhu času výrazně změní, budou muset vývojáři přeškolit systém kvůli tomu, co někteří výzkumníci označují za „ML degeneraci (ML rot)“.

 

Algoritmy strojového učení

Pokud už víte, jaké jsou popisy všech položek ve vaší sadě dat, je přidělování popisů novým příkladům problém klasifikace.

Jestliže se snažíte odhadnout výsledek, jako je prodejní cena domu na základě jeho velikosti, je to problém regrese, protože cena domu může být libovolná a není to diskrétní kategorie. (Předvídat, zda se dům prodá za více nebo méně, než je požadovaná cena, je problém klasifikace, protože jde o dvě odlišné kategorie.)

Pokud neznáte všechny popisy, nemůžete je použít pro trénink. Namísto toho vyhodnotíte výsledky a necháte svůj systém vymyslet pravidla, která dávají smysl pro odpovědi, jež jsou správné, nebo špatné, v procesu známém jako učení bez učitele (unsupervised).

Nejčastějším algoritmem učení bez učitele je shlukování (clustering), které odvozuje strukturu vašich dat z toho, jaké jsou vztahy mezi proměnnými v datech.

Systém doporučení produktu, který nabízí Amazon a jenž vás informuje o tom, co také koupili lidé, kteří si už vámi prohlíženou položku pořídili, využívá učení bez učitele.

U zpětnovazebného (reinforcement) učení (někdy označováno také jako učení posilováním) se systém učí tím, že se dozvídá, co se stane. Nastavili jste jasnou sadu odměn, aby systém mohl posoudit, jak úspěšné jeho akce jsou.

Zpětnovazebné učení je vhodné pro hraní her, protože zde existují zřetelné odměny. Google DeepMind AlphaGo využívá zpětnovazebné učení k naučení se hry Go, systém Microsoft Project Malmo umožňuje výzkumníkům používat Minecraft jako zpětnovazební tréninkové prostředí a bot vytvořený pomocí zpětnovazebního učícího se algoritmu OpenAI nedávno porazil několik vynikajících hráčů ve hře Valve Dota 2.

Složitost vytváření přesných a užitečných odměn omezila použití zpětnovazebného učení, ale Microsoft používal specifickou formu zpětnovazebného učení s názvem kontextuální bandité (na základě konceptu vícenásobně vybaveného prodejního automatu), aby výrazně zvýšil míru prokliků na MSN. Tento systém je nyní k dispozici jako rozhraní Microsoft Custom Decision Service API.

Microsoft také využívá systém zpětnovazebného učení v pilotním projektu, kde chatboty zákaznické služby monitorují, jak užitečné jsou jejich automatizované odpovědi, a nabízejí předání skutečné osobě, pokud informace neodpovídají vašim potřebám – lidský agent také hodnotí bota, aby se mohl zlepšovat.

 

Kombinace algoritmů

Často se nejlepších výsledků dosáhne při použití více než jedné metody učení. Systémy využívající kombinaci několika metod strojového učení se označují jako ensemble learning.

Například systém DeepMind, který porazil profesionální lidské hráče ve hře Go, využívá nejen zpětnovazebné učení, ale také hluboké učení s učitelem, aby se tak učil z tisíců zaznamenaných zápasů Go mezi lidskými hráči. Tato kombinace se někdy označuje jako semi-supervised learning (kombinace učení s učitelem a bez učitele).

Podobně systém strojového učení, který používá produkt Microsoft Kinect k rozpoznání lidských pohybů, byl vytvořen v kombinaci diskriminačního systému (k vytvoření si Microsoft zapůjčil z Hollywoodu sadu pro záznam pohybu, extrahoval pozici kostry a označil jednotlivé části těla pro klasifikaci, jaká ze známých pozic to byla) a systému generativního, který používal model charakteristik každé pozice k výrobě tisíců dalších obrázků, aby poskytl systému dostatečně velkou množinu dat, z nichž se mohl učit.

Prediktivní analytika často kombinuje různé metody strojového učení a statistické metody. Jeden model může hodnotit, s jakou pravděpodobností bude chtít skupina zákazníků odejít, a další model předvídá, jaký kanál byste měli použít ke kontaktu jednotlivých osob s nabídkou, která by je jako klienty mohla udržet.

 

Nevýhody strojového učení

Protože systémy strojového učení nejsou explicitně naprogramované k řešení problémů, je obtížné zjistit, jak systém dosáhl svých výsledků. To je známé jako problém „černé skříňky“ a může to mít důsledky, zejména v regulovaných oborech.

Protože se strojové učení používá státe častěji, budete muset vysvětlit, proč vaše systémy poháněné strojovým učením dělají to, co dělají. Některé trhy – bydlení, finanční rozhodování a zdravotní péče – totiž už mají předpisy, které vyžadují, abyste podávali vysvětlení svých rozhodnutí.

Můžete také chtít tzv. algoritmickou průhlednost, abyste mohli dělat audit chování strojového učení. Podrobnosti o tréninkových datech a používaných algoritmech nestačí.

Uvnitř hluboké sítě existuje mnoho vrstev nelineárního zpracování, takže je velmi obtížné pochopit, proč hluboká síť udělala konkrétní rozhodnutí. Obvyklou metodou je použít jiný systém strojového učení k popisu chování systému prvního.

Také musíte dát pozor na nebezpečí algoritmické předpojatosti, například když systém strojového učení posiluje předpojatost v datové množině, která spojuje muže se sportem a ženy s domácími činnostmi, protože všechny jeho příklady sportovních aktivit mají obrázky mužů a všichni lidé v kuchyni jsou ženy.

Nebo když systém, který koreluje nezdravotní informace, dělá rozhodnutí, jež znevýhodní lidi s určitým zdravotním stavem.

Strojové učení může být stejně dobré jako data, která ho trénují při vytváření jeho modelu, a data, jež zpracovává, takže je důležité podrobně zkoumat údaje, jež používáte.

Strojové učení také nerozumí datům a koncepcím, které jsou za nimi, způsobem, jak by jim mohl rozumět člověk. Výzkumníci například mohou vytvořit obrázky, jež vypadají jako náhodný chaos, ale mohou být rozpoznané jako konkrétní objekty.

Existuje mnoho problémů s rozpoznáváním a klasifikací, které strojové učení dokáže řešit rychleji a efektivněji než lidé, ale pro dohlednou budoucnost je dobré strojové učení považovat za sadu nástrojů podporující lidi při práci, než že by je nahrazovalo.

 

bitcoin_skoleni

Tento příspěvek vyšel v Computerworldu 10/2017. Časopis (starší čísla i předplatné těch nadcházejících) si můžete objednat na adrese našeho vydavatelství.