Deep learning vs. signály a časové řady

Deep learning je metoda umělé inteligence, kde je za pomoci mnohovrstvých nelineárních výpočetních modelů získávána užitečná informace přímo z dat. V klasifikačních úlohách dosahuje deep learning vysoké přesnosti, která může předčít lidské schopnosti. MATLAB, jakožto vývojové prostředí pro vědeckotechnické výpočty, nabízí v oblasti deep learningu množství algoritmů a usnadní jejich aplikaci při řešení praktických úkolů.

„Umělá inteligence (anglicky Artificial intelligence, AI) je obor informatiky zabývající se tvorbou strojů vykazujících známky inteligentního chování. Definice pojmu „inteligentní chování“ je stále předmětem diskuse, nejčastěji se jako etalon inteligence užívá lidský rozum.“ (http://cs.wikipedia.org).

Deep learning spadá do podoblasti umělé inteligence zvané strojové učení. Cílem je vykonávat klasifikační úlohy, kde je datům přiřazena klasifikační kategorie (např. druh zvířete na obrázku), nebo úlohy regresní, kde je výstupem hodnota spojité veličiny (např. odhadovaná cena nemovitosti). Jádrem algoritmů strojového učení jsou matematické modely, které jsou „učeny“ s využitím označených dat, u kterých předem známe správnou hodnotu výsledku. Naučený model je následně použit na nová data, u kterých výsledek hledáme.

Architektura modelů pro deep learning je postavená na hlubokých neuronových sítích (deep networks). Tyto sítě se skládají z množství za sebou seřazených vrstev s různým významem. Nejjednodušší sítě mají kolem 10 vrstev, zatímco aktuální výkonné modely mohou obsahovat stovky vrstev uspořádaných do sériovo-paralelních struktur.

Deep learning nachází využití v mnoha oblastech, zejména pak v úlohách:

• klasifikace obrazových dat, rozpoznávání objektů na snímcích
• lokalizace objektů na snímcích
• sémantická segmentace snímků, rozdělení snímku na části dle významu
• predikce a klasifikace signálů a časových řad

Učení deep learning modelů

Přesnost deep learning modelu závisí z velké části na množství dat použitých k jeho učení. Nejpřesnější modely vyžadují tisíce, či dokonce miliony vzorků. Učení takového modelu může trvat velmi dlouhou dobu.

Učení metodou transfer learning

Naučení celé hluboké neuronové sítě z výchozího nastavení je úloha náročná na čas i množství trénovacích dat. Alternativním přístupem je využití před-učené sítě, která již byla naučena pro jinou klasifikační nebo regresní úlohu. V tomto případě stačí síť „doučit“ pro úlohu novou.

Vycházíme ze skutečnosti, že počáteční vrstvy sítě extrahují z dat natolik obecné rysy, které jsou pro většinu úloh společné. Lze je tedy opakovaně využít. Doučit stačí pouze vrstvy blíže ke konci sítě, které již extrahují rysy specifické pro konkrétní úkol. Tento přístup, označovaný termínem transfer learning, je pohodlnou cestou aplikace deep learningu s využitím omezeného množství dat a relativně krátkou dobou učení. V současné době existuje celá řada před-učených volně dostupných sítí, které je možné využít.

Rozpoznávání obrazu

K rozpoznávání objektů na snímcích se využívají tzv. konvoluční neuronové sítě (CNN), jejichž jádrem jsou konvoluční vrstvy. Výpočetní algoritmus CNN je založen na konvoluci mezi vstupními daty a filtry, které reprezentují hledané charakteristické rysy (obrázek 1). CNN využívá dvourozměrné 2-D konvoluční vrstvy a je tedy vhodná pro zpracování 2-D dat, jako jsou obrázky. Za sadou konvolučních vrstev jsou napojeny vrstvy klasifikační nebo regresní, jejichž výstupem je pravděpodobnost přiřazení klasifikačních tříd (objektů) ke vstupnímu obrázku nebo predikovaná hodnota.


Obrázek 1: Princip fungování konvoluční neuronové sítě

Deep learning 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, vývoj algoritmů, modelování a simulace. S CNN se v prostředí MATLAB pracuje velmi pohodlně. Jsou zde připraveny funkce pro vytvoření 30 různých typů vrstev, u kterých může uživatel nastavovat parametry. Poté vrstvy pospojuje, síť natrénuje a využije ke klasifikaci či predikci hodnot s novými daty.

Typická klasifikační CNN může sestávat z vrstvy ImageInput pro vstup obrázků, jedné nebo několika za sebou zapojených skupin vrstev Convolution2D + BatchNormalization + ReLU + MaxPooling2D a navazujících klasifikačních vrstev FullyConnected + Softmax + ClassificationOutput.

vrstvy = [imageInputLayer(velikost_obrazku);
      convolution2dLayer(velikost_filtru,pocet_filtru);
      batchNormalizationLayer;
      reluLayer;
      maxPooling2dLayer(okno,'Stride',krok);
      fullyConnectedLayer(pocet_klasifikacnich_trid);
      softmaxLayer;
classificationLayer];
nastaveni = trainingOptions('sgdm');
cnn = trainNetwork(trenovaci_obrazky,vrstvy,nastaveni);
vysledek = classify(cnn,novy_obrazek);

K práci s CNN lze s výhodou využívat GPU výpočty. MATLAB nabízí stažení a využívání oblíbených před-učených sítí, např. sítě AlexNet, GoogLeNet nebo ResNet.

Signály a časové řady

Jak využít potenciál a výkonnost konvolučních neuronových sítí pro jednorozměrné signály a časové řady? Jednou z možností je převést signály na „obrázky“ pomocí časově-frekvenční transformace. Výsledkem transformace je obrázek změn rozložení frekvencí signálu v čase. Může se jednat o spektrogram, který využívá Fourierovu transformaci, nebo scalogram, který využívá vlnkovou (wavelet) transformaci. Konvoluční neuronová síť je aplikována na transformovaná data stejným způsobem, jako by pracovala s běžnými obrázky.

Ukázka: klasifikace EKG

Příkladem nasazení metody deep learning na 1-D signály je klasifikace záznamů EKG. Použitá data jsou veřejně dostupná na webových stránkách PhysioNet (https://physionet.org/). Na obrázku 2 jsou signály srdečního rytmu ze tří situací: srdeční arytmie, městnavé srdeční selhání a normální sinusový rytmus. Cílem bylo naučit hlubokou neuronovou síť rozpoznat tyto tři situace.

Obrázek 2: Srdeční rytmus ze záznamu EKG

Aby bylo možné využít sílu konvolučních neuronových sítí, byly úseky naměřeného srdečního rytmu převedeny na scalogramy s využitím spojité vlnkové transformace (obrázek 3).

Obrázek 3: Scalogram záznamu EKG při srdeční arytmii

Pro klasifikaci byla využita před-učená síť AlexNet, složená z 25 vrstev. Síť AlexNet je natrénována na 1,2 milionu obrázků a rozpoznává 1000 druhů objektů (druhy zvířat, kancelářské předměty, atd.). Pro rozpoznání srdečního rytmu byla téměř celá síť ponechána v originální podobě, pouze poslední klasifikační vrstvy byly nahrazeny novými „čistými“ vrstvami. Síť byla poté doučena na datech 130 scalogramů EKG ze 3 sledovaných kategorií srdečního rytmu. Její fungování bylo testováno s validační sadou údajů, kde síť dosáhla úspěšnosti přes 93%.

LSTM sítě

Alternativním přístupem k využití konvolučních neuronových sítí jsou sítě LSTM, které jsou přímo navrženy pro práci s 1-D signály a časovými řadami. Jejich hlavní složkou jsou LSTM vrstvy (long short-term memory). LSTM vrstva je rekurentní neuronová síť (RNN) schopná naučit se dlouhodobé závislosti v signálech, tj. závislosti ze vzdálených časových kroků. LSTM sítě lze využít ke stejným účelům, jako sítě konvoluční, tedy k řešení klasifikačních a regresních úloh.

Typická klasifikační LSTM síť v prostředí MATLAB může být vytvořena sestavením vhodných vrstev (viz. níže) a dále trénována a volána příkazy trainNetwork, classify a predict, stejně jako sítě konvoluční.

vrstvy = [sequenceInputLayer(pocet_kanalu_signalu);
      lstmLayer(pocet_vnitrnich_lstm_jednotek);
      fullyConnectedLayer(pocet_klasifikacnich_trid);
      softmaxLayer;
      classificationLayer];

Závěr

Časově frekvenční transformace signálů ve spojení s „obrázkovými“ konvolučními neuronových sítěmi a využití LSTM sítí přináší deep learning do oblasti jednorozměrných dat, signálů a časových řad. Uplatnění nachází jak v technických oborech, tak oblastech medicíny, biologie a finančnictví.

Distributor produktů společnosti MathWorks v České republice a na Slovensku:
HUMUSOFT s. r. o.
http://www.humusoft.cz

Exotická fyzika neutronových hvězd: jaderné těstoviny a odkapávání protonů

Neutronové hvězdy jsou extrémní objekty, do jejichž nitra nevidíme. S poloměrem kolem 12 kilometrů mohou …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *