Článek ve formátu PDF je možné stáhnout
zde.
Nové postupy umožňují používat metodu deep learning také v oboru analýzy jednorozměrných údajů, signálů a časových řad.
Metoda deep learning (popř. Deep learning či Deep Learning, učení do hloubky) je technika z oboru umělé inteligence, při níž je s použitím mnohovrstvých nelineárních výpočetních modelů získávána užitečná informace přímo z výchozích údajů. V klasifikačních úlohách dosahuje metoda deep learning velké přesnosti, kterou může předčit lidské schopnosti. Softwarový nástroj Matlab, vývojové prostředí pro vědeckotechnické výpočty, nabízí v oboru deep learning mnoho různých algoritmů a podporuje jejich použití při řešení reálných úloh.
Souhrnně o metodě deep learning
„Umělá inteligence (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“, viz http://cs.wikipedia.org.
Metoda deep learning spadá do podoboru umělé inteligence zvaného strojové učení. Cílem je řešit klasifikační úlohy, kdy je údajů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 množiny označených údajů, u níž je předem známa správná hodnota výsledku. Naučený model je následně použit ke zpracování nové množiny údajů, u které se výsledek hledá.
Základem struktur modelů pro deep learning jsou tzv. hluboké neuronové sítě (deep networks). Tyto sítě se skládají z mnoha za sebou seřazených vrstev s různým významem. Nejjednodušší sítě mají okolo deseti vrstev, zatímco aktuální výkonné modely mohou obsahovat i stovky vrstev uspořádaných do sério-paralelních struktur.
Technika deep learning nachází využití v mnoha směrech, zejména v úlohách:
- klasifikace obrazových údajů, 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 podle významu,
- predikce a klasifikace signálů a časových řad.
Učení modelů deep learning
Přesnost modelu deep learning závisí z velké části na množství údajů použitých k jeho naučení. Mají-li modely být skutečně co nejpřesnější, vyžadují ke svému naučení tisíce, či dokonce miliony vzorků. Naučení takového modelu může trvat i velmi dlouhou dobu.
Učení metodou transfer learning
Naučení celé hluboké neuronové sítě z jejího výchozího nastavení je úloha náročná na čas i množství trénovacích údajů. Alternativním přístupem je využít předem naučenou (tzv. předučenou) síť, která již byla naučena pro jinou klasifikační nebo regresní úlohu a která ze vstupních údajů sama extrahuje charakteristické rysy. V tomto případě stačí síť „doučit“ pro novou úlohu.
Vychází se ze skutečnosti, že počáteční vrstvy sítě extrahují z údajů základní obecné rysy, jež jsou pro většinu úloh společné. Tyto počáteční vrstvy lze tedy využít opakovaně. Doučit stačí pouze vrstvy blíže ke konci sítě, které již extrahují rysy specifické pro konkrétní úlohu. Tento přístup, označovaný jako transfer learning, je pohodlnou cestou použití metody deep learning s využitím omezeného množství údajů a relativně krátkou dobou do naučení. V současné době existuje mnoho volně dostupných předučených sítí, které je možné v praxi využít.
Rozpoznávání obrazu
K rozpoznávání objektů na snímcích se využívají tzv. konvoluční neuronové sítě (Convolutional Neural Network – CNN), jejichž jádrem jsou konvoluční vrstvy. Výpočetní algoritmus CNN je založen na konvoluci mezi vstupními údaji a filtry, které reprezentují hledané charakteristické rysy (obr. 1). Síť CNN využívá dvourozměrné (2D) konvoluční vrstvy, a je tedy vhodná pro zpracování 2D souborů údajů, jako jsou obrázky. Mezi konvoluční vrstvy bývají vsazeny vrstvy pro úpravu dílčích výstupů, např. normalizaci, sdružování (pooling) apod. Za sadu 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. 1. Princip fungování konvoluční neuronové sítě (CNN)
Metoda deep learning a Matlab
Software 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. Se sítěmi CNN se v prostředí Matlab pracuje velmi pohodlně. Jsou zde připraveny funkce pro vytvoření více než dvaceti různých typů vrstev, jejichž parametry může uživatel sám nastavovat. Poté uživatel vrstvy pospojuje, síť natrénuje a využije ke klasifikaci či predikci hodnot s novými údaji.
Typická klasifikační CNN se může skládat 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. Příslušný zápis v programovém kódu je následující:
vrstvy = [imageInputLayer(velikost_obr);
convolution2dLayer(velikost_filtru,pocet);
batchNormalizationLayer;
reluLayer;
maxPooling2dLayer(okno,‘Stride‘,krok);
fullyConnectedLayer(pocet_trid);
softmaxLayer;
classificationLayer];
volby = trainingOptions(‚sgdm‘);
cnn = trainNetwork(obrazky,vrstvy,volby);
vysledek = classify(cnn,novy_obrazek);
vysledek = classify(cnn,novy_obrazek);
K práci s CNN lze s výhodou využívat výpočty v grafických procesorech (GPU). Prostředí Matlab nabízí ke stažení a využívání oblíbené předučené sítě, jako např. AlexNet, GoogLeNet nebo ResNet.
Sítě CNN je možné vytvářet a editovat též v grafickém nástroji Deep Network Designer (obr. 2).
Obr. 2. Nástroj Deep Network Designer
Signály a časové řady
Jak využít potenciál a výkonnost konvolučních neuronových sítí při práci s jednorozměrnými signály a časovými řadami? Jednou z možností je převést s použitím časově-frekvenční transformace signály na „obrázky“. Výsledkem transformace je obrázek změn rozložení frekvencí v signálu v čase. Může jít o spektrogram, který využívá Fourierovu transformaci, nebo scalogram, který využívá vlnkovou (wavelet) transformaci. Konvoluční neuronová síť je poté použita ke zpracování transformovaných údajů stejným způsobem, jako by pracovala s běžnými obrázky.
Ukázka použití CNN: klasifikace EKG
Příkladem použití metody deep learning k práci s jednorozměrnými (1D) signály je klasifikace elektrokardiogramů (EKG). Dále použité údaje jsou veřejně dostupné na webových stránkách PhysioNet (https://physionet.org/). Na obr. 3 jsou signály srdečního rytmu ze tří situací: srdeční arytmie, městnavé srdeční selhání a normální srdeční rytmus. Cílem bylo naučit hlubokou neuronovou síť tyto tři situace rozpoznat.
Obr. 3. Typické elektrokardiogramy srdeční činnosti (EKG)
Aby bylo možné využít sílu konvolučních neuronových sítí, byly úseky záznamů srdečního rytmu převedeny s využitím spojité vlnkové transformace na scalogramy (obr. 4).
Ke klasifikaci byla využita předučená síť AlexNet složená z 25 vrstev. Síť AlexNet je natrénována na 1,2 milionu obrázků a rozpoznává 1 000 druhů objektů (druhy zvířat, kancelářské předměty atd.). K 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 údajích reprezentovaných ve 130 scalogramech elektrokardiogramů zahrnujících tři sledované kategorie srdečního rytmu. Fungování naučené sítě bylo ověřeno s použitím validační sady údajů, když síť dosáhla úspěšnosti větší než 93 %.
Obr. 4. Scalogram elektrokardiogramu se záznamem srdeční arytmie
Alternativa: sítě LSTM
Alternativou k použití konvolučních neuronových sítí jsou sítě LSTM (Long Short-Term Memory), které jsou přímo navrženy pro práci s jednorozměrnými signály a časovými řadami. Hlavní složkou těchto sítí jsou tzv. vrstvy LSTM, přičemž vrstva LSTM je rekurentní neuronová síť (Recurrent Neural Network – RNN), schopná naučit se dlouhodobé závislosti v signálech, tj. závislosti ze vzdálených časových kroků. Sítě LSTM lze využít ke stejným účelům jako sítě konvoluční (CNN), tedy k řešení klasifikačních a regresních úloh.
Typická klasifikační síť LSTM v prostředí Matlab může být vytvořena sestavením vhodných vrstev a dále trénována a volána příkazy trainNetwork, classify a predict, stejně jako sítě konvoluční, takto:
vrstvy = [sequenceInputLayer(kanaly);
lstmLayer(delka_vnitrni_pameti);
fullyConnectedLayer(pocet_trid);
softmaxLayer;
classificationLayer];;
Závěr
Časově-frekvenční transformace signálů ve spojení s „obrázkovými“ konvolučními neuronovými sítěmi (CNN) a využití sítí LSTM zavádí metodu deep learning do oblasti jednorozměrných údajů, signálů a časových řad. Uplatnění nachází jak v technických oborech, tak i např. v lékařství, biologii a finančnictví.
Jaroslav Jirkovský, Humusoft, s. r. o.