Ahoj všichni, v této sérii prozkoumáme strojové učení
s neuronovými sítěmi.
Konkrétně se budeme snažit,
aby naše neuronová síť rozpoznala ručně psané číslice.
V tomto prvním videu chci uvést neuronové sítě
jednoduchým příkladem.
Představte si, že máme dva druhy rostlin.
Jeden s červenými květy a druhý s fialovými.
A jednoho dne se rozhodneme změřit délku a šířku jejich okvětních lístků.
Pro jednoduchost nazvu tyto vlastnosti x1 a x2
Protože máme jen dvě vlastnosti,
můžeme rozmístit data do dvou rozměrů.
Vidíme, jak červené a fialové květiny
vytvořily dvě oddělené skupiny.
Můžeme nakreslit přímku, která je rozdělí.
Ta se nazývá "rozhodovací hranice".
Pokud dostaneme nová data a nachází se na jedné straně hranice,
předpovídáme, že to je červená květina.
Na druhé straně by šlo o fialovou.
Tuto hranici chceme po naší neuronové síti spočítat.
Začneme vytvořením jednoduché sítě.
Bude mít dva vstupní neurony x1, x2 pro naše dvě vlastnosti.
A dva výstupní neurony, které ukáží pravděpodobnost,
že květina je červená, respektive fialová.
Poté můžeme spojit vstupní neurony s prvním výstupním.
A síly (nebo váhy) těchto spojů
budou w1 a w2.
Potom r, pravděpodobnost, že květina bude červená,
je dána rovnicí x1 krát w1
+ x2 krát w2.
Také můžeme spojit druhý výstupní neuron se vstupními,
abychom spočítali p,
které je rovné x1 krát w3
+ x2 krát w4.
Zpět ke grafu - obarvím si oblast,
kde r je větší než p červeně
a kde p je větší než r fialově.
Parametr váhy určuje sklon
"rozhodovací hranice".
Abychom správně oddělili červené květiny od fialových,
hranice musí být schopná vertikálního posunu.
Zpět k naší síti.
Přidáme posuvník ke každému z výstupních neuronů.
Váhy a posuvníky dohromady
dokáží spolehlivé rozdělit data.
Avšak je tu veliké omezení.
Naše hranice je vždy přímka.
Pro tento příklad to je v pořádku,
ale teď ukáži něco,
co nemůže být rozděleno přímkou.
Pro toto budeme potřebovat pokročilejší sít.
V naší síti vložíme
novou vrstvu, nazývanou "schovaná vrstva".
Můžeme spojit první schovaný neuron ke vstupní vrstvě
a dostaneme a1, rovné x1*w1
+ x2*w2 + b1,
což je naše staré r.
Můžeme udělat to samé pro zbývající dva skryté neurony,
abychom dostali a2 a a3.
Dále spojíme první výstupní neuron k schované vrstvě.
Dostaneme výstup a1*w7
+ a2*w8 + a3*w9
+ b4.
To samé i pro druhý výstupní neuron.
Nyní máme více vah a posuvníků,
se kterými si mohu hrát.
Ale pořád mohu vytvářet jen přímky.
To je protože pořád jen
přidáváme lineární rovnice,
jejichž výsledkem je další lineární rovnice.
Takže musíme najít způsob, jak vytvořit nelineární.
Jedno řešení je použít nějakou sigmoidální funkci.
Na obrazovce vidíte tuto
 
Pro malé hodnoty je
funkční hodnota nulová,
pro velké hodnoty je funkční hodnota jedna.
Zapojíme toto do naší sítě
prohnáním hodnot v skryté
a výstupní vrstvě touto funkcí.
Mimochodem, toto se nazývá
aktivační funkce.
nyní změna váhy jediného neuronu
změní sklon aktivační funkce
a změna posuvníku posunuje
funkci do stran.
V grafu aktivační funkce
dokázala vytvořit křivku.
 
Se správnou hodnotou vah a posuvníků
lze rozdělit červené
a fialové květiny.
Samozřejmě teď měním hodnoty ručně,
ale smysl neuronové sítě je
aby přišla na správné hodnoty automaticky.
Můžete to vidět zde.
Podávíme se, jak toto funguje trochu později v této sérii.
Pro teď je důležité chápat,
jak váhy a posuvníky
rozhodnou, které oblasti
náleží červeným a
fialovým květinám v tomto příkladu tak,
aby mohla roztřídit nová data,
když nevíme, kam patří.
Uvědomte si, že pracujeme pouze s dvěma vlastnostmi.
Proto pracujeme ve dvou dimenzích.
Kdybychom měli třetí vlastnost,
není těžké si  představit hranici
nebo povrch, jestli chcete, ve třech dimenzích.
Se čtyřmi a více vlastnostmi
už to není tak lehké na představení si,
ale koncept zůstává stejný.
Doufám, že vám toto video pomohlo
pochopit strukturu neuronové sítě
s vstupní, skrytou a výstupní vrstvou,
váhami, posuvníky a aktivační funkcí,
a obecné chápání,
co se síť učí pro rozdělení,
konkrétně rozhodovací hranici.
V příštím díle budeme vytvářet síť v Pythonu,
takže zatím, ahoj.
