Umělá inteligence – 6. díl

9. 12. 2020 Azure, Programming

Z minulého dílu víme, jak AI funguje, vytvořili jsme si velice jednoduchou lineární regresi k predikci cen automobilů. Nicméně, obvykle se u AI setkáváme s pojmem neuronové sítě (neural networks), o kterých bude tento, již šestý díl seriálu.

Teorie

Neuronová síť (NN)

Stejně jako lineární regrese, i neuronové sítě jsou jedním z modelů pro AI. Správně by se mělo říkat umělá neuronová síť (ANN – artificial neural network), protože neuronovou síť nalezneme u každého z nás v hlavě, ale obvykle se to zkracuje, jakmile se mluví o AI.

Neuronová síť je nejvíce využívaným druhem AI, protože se nejvíce podobá lidskému myšlení a dokáže najít různé, složité souvislosti ve velkých datech – obdobně jako to dělá náš mozek, aniž bychom o tom více věděli.

Princip

Schématické zobrazení neuronové sítě
obecné zjednodušené schéma NN

Neuronové sítě se obvykle znázorňují pomocí zjednodušených schémat jako je na obrázku.

Každý kruh označuje jeden samostatný neuron (ten si představte jako libovolné reálné číslo mezi 0 a 1 včetně – v odborné literatuře se to označuje jako aktivace daného neuronu). Každá čára spojuje přesně dva neurony – tento spoj se nazývá synapse a má určitou váhu (weight). Každý spoj je různě významný (čím vyšší je váha, tím významnější je) – na obrázku znázorněno pomocí tloušťky jednotlivých čar.

Rozlišujeme dva typy NN podle jejich spojení:

Každá NN musí mít vstupní a výstupní vrstvu o libovolném počtu neuronů (na obrázku jsou dva vstupní neurony – modré, a jeden výstupní – zelený). U složitějších / komplexnějších problémů najdeme také jednu až několik vrstev skrytých (na obrázku červeně) – skryté se jim říká proto, že jejich výsledek není přímo výsledkem NN. Jakmile máme skrytých vrstev hodně, mluvíme o tzv. deep neural network.

Důležité je také zmínit, že počet neuronů a vrstev v schématu a v realitě se může lišit. Zjednodušuje se to proto, že často NN mají na vstupu i několik set až tisíc neuronů a schéma by pak bylo zbytečně obrovské.

Experiment

V experimentu níže budeme mít sadu obrázků s rozlišením 28×28 pixelů. Na nich jsou ručně psaná čísla od 0 do 9 a cílem NN bude přiřadit ke každému obrázku „nálepku“ podle čísla, které na něm je, a následně určit relativní přesnost.

Několik ukázek položek (ručněpsaných čísel) z MNIST datasetu společně s cedulkou čísla.
ukázka položek z MNIST datasetu | zdroj: towardsdatascience.com

Celý experiment v Azure MLS bude vypadat následovně:

Screenshot z MLS, na kterém je vidět celý experiment.
ukázka experimentu v MLS | zdroj: studio.azureml.net

Na první pohled se může zdát příliš komplikovaný, ovšem pokud se podíváte podrobněji, zjistíte, že to jsou čtyři téměř totožné části spojené dohromady. Síť rozdělíme na čtyři části:

Screenshot z MLS, na kterém je vidět první rozdělení experimentu.
rozdělení na 4 části | zdroj: studio.azureml.net

Pro potřeby tohoto dílu jsem spojil čtyři jednotlivé NN (označené jako A, B, C, D) do jednoho experimentu:

1. části pouze importujeme dva MNIST datasety, které obsahují 60 tisíc, resp. 10 tisíc obrázků ručně psaných čísel s „nálepkou“.
Z pohledu tohoto dílu seriálu bude 2. část tou nejzajímavější, a hlavně úplně novou. Jednotlivé bloky obsahují různé nastavení NN, které si projdeme později v tomto díle.
S bloky v 3. části jsme se již seznámili v minulých dílech, a proto se jimi nebudeme zabývat.
A v poslední 4. části, pouze sjednotíme výsledky různých NN do jednoho výsledného datasetu pro přehlednost.

Screenshot z MLS, na kterém je vidět druhé rozdělení experimentu (jednotlivé neuronové sítě).
oddělení 4 různých NN | zdroj: studio.azureml.net

Tyto NN si můžete uložit jako jednotlivé experimenty do svého Workspace z následujících odkazů:
NN A – https://gallery.azure.ai/Experiment/4b8f1f17e02d4b9ca60486fd56c0fba6
NN B – https://gallery.azure.ai/Experiment/b5aa6d21e8b24357a9dae21a5b05bfaf
NN C – https://gallery.azure.ai/Experiment/5c93ce4cf5924d349df42593a4da8928
NN D – https://gallery.azure.ai/Experiment/7d3f74981b5b42cd9687370671c86696

Každá z následujících NN má ve vstupní vrstvě 784 neuronů (pro každý pixel obrázku 1 – tj. 28×28) a 10 neuronů ve výstupní vrstvě (tj. pravděpodobnosti pro jednotlivá čísla 0-9). Liší se však počtem skrytých vrstev a uspořádáním.

Multi-class Neural Network

Neuronová síť A

Tato NN je tou nejjednodušší ze všech v experimentu, má pouze 1 skrytou vrstvu, která je tvořena 100 neurony. Ze všech 4 různých NN je tato tou nejméně přesnou, ale zato tou nejrychlejší. S přesností se dostáváme na skvělých 97,75 % (resp. relativní chyba je 2,25 %), jak můžete vyčíst z obrázku níže.

Screenshot z MLS, na kterém je výsledek 1. neuronové sítě.
výsledek NN A | zdroj: studio.azureml.net
Zjednodušené schéma neuronové sítě A.
schéma NN A | zdroj: gallery.azure.ai

Neuronová síť B

Pokud zvýšíme počet skrytých vrstev na dvě a počet skrytých neuronů na 200 (v každé vrstvě), umožníme NN najít mnohem komplexnější souvislosti a díky tomu i zajistit lepší výsledky. Přesnost se nám zvýší na 98,1 % (relativní chyba je 1,9 %).

Screenshot z MLS, na kterém je výsledek 2. neuronové sítě.
výsledek NN B | zdroj: studio.azureml.net
Zjednodušené schéma neuronové sítě B.
schéma NN B | zdroj: gallery.azure.ai

Neuronová síť C

Tentokrát již nebudeme navyšovat počty skrytých vrstev a neuronů jako u NN B, ale použijeme trochu matematiky, abychom se dostali k ještě přesnějším výsledkům. Tou matematickou operací bude tzv. konvoluce. Co to znamená? Každý konvoluční neuron v síti se zabývá pouze svou určitou oblastí (tzv. receptivním polem), pro kterou se vyhodnocuje jeho aktivační funkce. Představte si to třeba na obrázku – když uděláme z originálního velkého obrázku výřez, může to představovat receptivní pole. Jakmile nějaká NN obsahuje konvoluci, říkáme těmto sítím CNN (resp. ConvNet, Convolutional Neural Network). S přesností se zde dostáváme na 98,41 % (relativní chyba je 1,59 %).

Zjednodušené znázornění jednotlivých vrstev konvoluční neuronové sítě.
zjednodušená ukázka CNN | zdroj: medium.com
Screenshot z MLS, na kterém je výsledek 3. neuronové sítě.
výsledek NN C | zdroj: studio.azureml.net
Zjednodušené schéma neuronové sítě C.
schéma NN C | zdroj: gallery.azure.ai

Neuronová síť D

Konvolucí ovšem naše možnosti nekončí, ještě tu máme tzv. max-pooling (maximální sdružování). Max-pooling nám umožňuje z neuronových shluků dostat pouze jeden neuron (čímž se zmenší počet neuronů pro výstupní vrstvu) a to buď na základě maximální hodnoty ze shluku (max-pooling), který se používá nejčastěji, nebo na základě průměru z hodnot ve shluku (average pooling). Pro nás bude tento typ NN (sdružovací konvoluční neuronová síť) tím nejpřesnějším, avšak také nejpomalejším – training může trvat až hodinu. Přesnost zde dosahuje již pěkných 98,83 % (relativní chyba je 1,17 %).

Ukázka max- a average poolingu (sdružování) na konkrétním příkladu.
konkrétní příklad sdružování (pooling) | zdroj: towardsdatascience.com
Screenshot z MLS, na kterém je výsledek 4. neuronové sítě.
výsledek NN D | zdroj: studio.azureml.net
Zjednodušené schéma neuronové sítě D.
schéma NN D | zdroj: gallery.azure.ai

Závěr

V tomto díle seriálu jste se seznámili s trochu pokročilejší částí neuronových sítí. Podívali jsme se na základní teorii, která za neuronovými sítěmi stojí. Proč základní? Protože k pochopení AI je prvně potřeba pochopit matematiku vysokoškolské úrovně, jelikož pomocí ní se všechno definuje – pokud to přesto chcete zkusit, podívejte se na videa od 3b1b, které naleznete níže. Můžete se podívat i na ostatní videa, které vám mohou pomoct lépe pochopit neuronové sítě, díky propracovaným animacím a ucelenému výkladu.

Doporučená videa

Welch labs: https://www.youtube.com/playlist?list=PLiaHhY2iBX9hdHaRr6b7XevZtgZRa1PoU

giant_neural_network: https://www.youtube.com/playlist?list=PLxt59R_fWVzT9bDxA76AHm3ig0Gg9S3So

3b1b: https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi

Microsoft STC – Erik Stoklasa: https://www.youtube.com/watch?v=Ji6IleR1Lmo

Nastavení souborů Cookies

1. Co jsou soubory cookies

Soubory cookies jsou krátké textové soubory, které internetová stránka odešle do vašeho prohlížeče. Umožňují internetové stránce zaznamenat informace o vaší návštěvě, například zvolený jazyk a podobně. Následující návštěva stránek tak pro vás může být snazší a příjemnější. Soubory cookies jsou důležité, neboť bez nich by procházení sítě Internet bylo mnohem složitější. Soubory cookies umožňují lepší využití naší internetové stránky a přizpůsobení jejího obsahu vašim potřebám. Soubory cookies používá téměř každá internetová stránka na světě.

2. Druhy souborů cookies

Relační (tedy dočasné) soubory cookies nám umožňují propojovat vaše jednotlivé aktivity po dobu prohlížení těchto internetových stránek. V okamžiku otevření okna vašeho prohlížeče se tyto soubory vytvoří a po zavření okna vašeho prohlížeče se odstraní.

Trvalé soubory cookies nám pomáhají váš počítač identifikovat, jestliže opětovně navštívíte naši internetovou stránku.

3. Využívání souborů cookies

V souladu s ustanovením § 89 odst. 3 zák. č. 127/2005 Sb., o elektronických komunikacích, v účinném znění, si vás tímto dovolujeme informovat, že naše internetové stránky využívají pro svoji činnost soubory cookies, tedy vaše soubory cookies, včetně trvalých, zpracováváme.

Internetové prohlížeče obvykle obsahují správu souborů cookies. V rámci nastavení vašeho prohlížeče tak pravděpodobně můžete jednotlivé soubory cookies ručně mazat, blokovat či zcela zakázat jejich používání. Pro více informací použijte nápovědu vašeho internetového prohlížeče. Jsou-li cookies povoleny, lze toto nastavení internetového prohlížeče považovat za souhlas se zpracováním osobních údajů.

4. Účel použití souborů cookies

K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookies. Informace o tom, jak náš web používáte, sdílíme se svými partnery působícími v oblasti sociálních médií, inzerce a analýz. Používáním internetových stránek vyjadřujete souhlas propojením následujících služeb: Google Analytics, Google Tag Manager, Facebook Pixel, Microsoft Clarity.

Soubory cookies využíváme, kromě účelu uvedeného v předchozím odstavci, pouze pro měření návštěvnosti webové stránky.

5. Správce osobních údajů

Provozovatelem webové stránky studuj.digital a správcem osobních údajů je společnost: pg-sec s.r.o., sídlem Rybná 716/24, Staré Město, 110 00 Praha 1, identifikační číslo 09580905, zapsaná v obchodním rejstříku Městského soudu v Praze, oddíl C, vložka 338028.

​6. Zásady ochrany osobních údajů

Podrobnější informace o souborech cookies a zpracování tvých osobních údajů najdete v našich Zásadách ochrany osobních údajů.

Nezbytné

Tyto soubory cookie jsou nutné pro základní funkce stránky, a jsou proto vždy povolené. Mezi ně patří soubory cookie, které stránce umožňují si vás zapamatovat při procházení stránky v rámci jedné relace nebo, pokud o ně požádáte, mezi relacemi.

Volitelné

Výkon

Tyto soubory cookie nám pomáhají vylepšovat funkce stránek sledováním využití této webové stránky. V některých případech zrychlují zpracování vašeho požadavku a umožňují nám zapamatovat si vaše vybrané předvolby na stránce. Pokud soubory cookie zakážete, může se tím zhoršit přesnost našich doporučení a zpomalit funkčnost stránek.

Sociální média a relamy

Díky souborům cookies sociálních médií si můžete připojit ke svým sociálním sítím a prostřednictvím sociálních médií sdílet obsah z naší webové stránky. Reklamní soubory cookie (třetích stran) shromažďují informace pro lepší přizpůsobení reklamy tvým zájmům, a to na webových stránkách studuj.digital i mimo ně. V některých případech tyto soubory cookies zpracovávají vaše osobní údaje. Pokud chcete získat více informací o zpracování osobních údajů, přečtěte si naše Zásady ochrany osobních údajů. Pokud zakážete soubory cookies, mohou se zobrazovat reklamy, které méně souvisejí s vašimi zájmy, nebo nebudete moci účinně používat odkazy na Facebook, Instagram či jiné sociální sítě anebo nebudete moci sdílet obsah na sociálnch médiích.