Strojové učení a prostředí MATLAB

Strojové učení dnes nalézá uplatnění v nejrůznějších oblastech lidské činnosti počínaje ekonomií a energetikou přes průmyslovou automatizaci, robotiku a automobilový průmysl až po biomedicínu či oblast zábavního průmyslu a multimédií. MATLAB, jakožto inženýrský nástroj s jazykem a interaktivním prostředím pro vědecké a technické výpočty, nabízí v oblasti strojového učení množství algoritmů a usnadní jejich aplikaci při řešení praktických úkolů.

Přehled základních nástrojů programu MATLAB pro strojové učení najdete zde.

Strojové učení je podoblastí umělé inteligence, zabývající se algoritmy a technikami, které umožňují počítačovému systému „učit se“. Strojové učení se značně prolíná s oblastmi statistiky a dobývání znalostí a má široké uplatnění. (http://cs.wikipedia.org).

Příkladem využití strojového učení v praxi jsou oblasti výpočetních financí (úvěrové bodování, algoritmické obchodování), výpočetní biologie (výzkum léků, sekvenování DNA), energetika (předpovídání spotřeby a vývoje cen), počítačové rozpoznání obrazu, reklama a propagace, a mnoho dalších (obrázek 1).

Aplikace strojového učení

Obrázek 1: Obvyklé oblasti aplikace strojového učení

Co je strojové učení

Strojové učení používá data a vytváří program k plnění zadaného úkolu. Jádrem výsledného programu je matematický model, který vyhodnocuje výstupy na základě vstupních dat. Úkolem strojového učení je nastavit parametry modelu tak, aby vyhodnocení výstupů probíhalo s maximální přesností a minimem chybných výsledků.

Strojové učení lze rozdělit do dvou skupin. Učení s učitelem vyžaduje sadu trénovacích dat, kde je vstupním datům explicitně přiřazen správný výstup. Algoritmus strojového učení využije trénovací data k naučení vnitřního modelu. Naučený model je následně využíván k odhadu výstupu pro nové hodnoty vstupů. Pokud nejsou trénovací data k dispozici, je možné využít přístup učení bez učitele.

Základními úlohami strojového učení jsou klasifikace, regrese a shluková analýza. Klasifikace využívá matematický model k rozdělení objektů popsaných vstupními daty do dvou či více tříd. Regrese spočívá v odhadu spojité výstupní veličiny na základě vstupních dat. Shluková analýza hledá v datech přirozená seskupení na základě podobných vlastností.

Zatímco klasifikace a regrese spadají do oblasti učení s učitelem, shluková analýza je typickým příkladem učení bez učitele (obrázek 2).

Strojové učení

Obrázek 2: Rozdělení strojového učení podle typu úlohy

Strojové učení a MATLAB

MATLAB je inženýrský nástroj a interaktivní prostředí pro vědecké a technické výpočty, analýzu dat, vizualizaci a vývoj algoritmů. Poskytuje funkce pro všechny hlavní úlohy v oblasti strojového učení, klasifikaci, regresi i shlukovou analýzu (obrázek 3).

Metody strojového učení

Obrázek 3: Metody strojového učení v prostředí MATLAB

a) Klasifikace

Cílem klasifikace je zařazení objektů do disjunktních tříd. Objekty jsou popsány datovými hodnotami (vlastnosti objektu), které jsou vstupem do klasifikačního algoritmu, klasifikátoru.

MATLAB poskytuje celou škálu klasifikačních algoritmů. Jsou to rozhodovací stromy, diskriminační analýza (LDA, QDA), algoritmus podpůrných vektorů (support vector machines – SVM), naivní bayesovský klasifikátor či algoritmus k-nejbližších sousedů. Dále lze využít obecnější přístupy, jako neuronové sítě, fuzzy logiku a další.

Práce s klasifikátory v MATLABu je velmi snadná, protože ačkoliv se jedná a značně odlišné algoritmy, MATLAB nad nimi poskytuje jednotné rozhraní. Uživatel si nejprve vybere typ klasifikátoru. Klasifikátor vytvoří a naučí funkcí fit doplněnou jménem klasifikátoru (např. fitctree pro klasifikační strom). Klasifikační model je vytvořen jako objekt v pracovním prostoru MATLABu. Pro následnou klasifikaci nových dat slouží funkce predict, bez ohledu na typ klasifikátoru. Samozřejmostí je možnost nastavení různých parametrů, které chování klasifikačních algoritmů ovlivňují.

Classification Learner

Obrázek 4: Grafická aplikace Classification Learner pro učení a správu klasifikátorů

MATLAB navíc poskytuje intuitivní grafickou aplikaci, Classification Learner App (obrázek 4). Aplikace umožní výběr dat, volbu klasifikátorů, jejich nastavení i učení. Také poskytuje přehlednou vizualizaci výsledků včetně metrik pro porovnání jednotlivých klasifikátorů mezi sebou. Takto lze projít celým procesem učení klasifikátoru až po výběr nejlepšího kandidáta bez nutnosti programování. Výsledný klasifikátor lze pak snadno aplikovat na nová vstupní data.

b) Regrese

Cílem regresní analýzy je odhad spojité výstupní veličiny na základě vstupních dat. MATLAB poskytuje algoritmy pro lineární regresi, nelineární regresi a zobecněnou lineární regresi (lineární regresní model doplněný nelineární spojovací funkcí).

Pro vytvoření a učení regresních modelů lze využít funkce fitlm, fitnlm a fitglm, případně funkci stepwise pro regresi s postupným přidáváním členů. Odhad výstupu z nových vstupních dat opět zajišťuje funkce predict. Pro snadnou tvorbu regresních modelů MATLAB poskytuje grafickou aplikaci Regression Learner App.

c) Shluková analýza

Cílem shlukové analýzy je rozdělení dat do skupin na základě podobných vlastností (obrázek 5). MATLAB poskytuje funkce, jako je hierarchická shluková analýza, algoritmus k-means, směs Gaussových rozdělení, samo-organizující se sítě, algoritmus fuzzy c-means, skryté Markovovy modely a další.

Shluková analýza

Obrázek 5: Cílem shlukové analýzy je najít seskupení v datech

Strojové učení a deep learning

Deep learning je samostatnou kapitolou strojového učení, kde je za pomoci hlubokých neuronových sítí (konvoluční neuronové sítě – CNN) získávána užitečná informace přímo z dat. V klasifikačních úlohách dosahují deep learning modely vysoké přesnosti, která může předčít lidské schopnosti. CNN jsou založeny na 2-D konvoluci a jsou vhodné zejména pro zpracování 2-D dat, jako jsou obrázky či spektrogramy.

MATLAB poskytuje pro deep learning velké množství funkcí, kterým budou věnovány samostatné články.

Strojové učení krok za krokem

Aplikace využívající strojové učení obvykle sestávají ze dvou fází – fáze učení, kdy je určen výsledný model pro klasifikaci či regresi, a fázi predikce, kdy je model nasazen na nová data pro odhad výstupu nebo zařazení nových dat do správné kategorie (obrázek 6).

Posloupnost kroků

Obrázek 6: Posloupnost kroků při strojovém učení

Aplikace metod strojového učení však nespočívá pouze v hledání samotného klasifikátoru či regresního modelu, ale také ve vhodné přípravě dat. Data se nejprve vhodným způsobem upraví a teprve poté jsou předána na vstup klasifikačního nebo regresního modelu. Surová neupravená data lze přímo využívat jen zřídka.

V některých případech postačuje data před vstupem do modelu filtrovat a zbavit je tak nežádoucího šumu. Pokud data sestávají z nadměrného množství veličin, je možné využít analýzu hlavních komponent (PCA) a převést mnoharozměrová data do jednodušší podoby. Také není vždy nutné, aby model pracoval se všemi datovými vzorky, postačí použít souhrnné statistické údaje za stanovený časový úsek nebo provést shlukovou analýzu.

Protože je výsledný model naučen na upravená data, je nezbytné stejnou úpravu dat provádět i ve fázi predikce. Pokud má predikce probíhat v reálném čase, musí být úprava dat dostatečně rychlá a je třeba s tímto faktem počítat už ve fázi návrhu a učení modelu.

Optimalizace modelů

Modely využívané pro klasifikaci a regresi obsahují řadu tzv. hyperparametrů. Jedná se o vnitřní parametry modelu, které určují počet členů v modelu nebo tvar jeho rovnice. Vhodné nastavení hyperparametrů lze hledat automaticky pomocí Bayesovské optimalizace, která je v MATLABu k dispozici přímo ve funkcích pro učení modelů.

Embedded systémy

Mnohé z klasifikačních a regresních modelů v MATLABu lze automaticky převést do formy použitelné v rámci embedded zařízení. To umožní nasazení naučených modelů do provozního prostředí v rámci inteligentních koncových zařízení, využívaných v konceptu nositelné elektroniky a internetu věcí.

Big Data

Termínem „big data“ se rozumí taková data, která svým rozsahem či složitostí přesahují možnosti standardních výpočetních prostředků. Pro jejich analýzu a zpracování je třeba mít k dispozici specializované funkce, které s takovým rozsahem dokáží pracovat. Aplikace v oblasti strojového učení se s problematikou rozsáhlých dat často setkávají.

MATLAB poskytuje celou řadu prostředků, jak s rozsáhlými daty pracovat. Od speciálních datových proměnných typu talltable, přes distribuovaná data, paralelní a GPU výpočty až po zpracování obrazu po blocích či streamovací algoritmy.

Jaroslav Jirkovský (HUMUSOFT), 17.8.2018