- View
Z hodín biológie viete, že bunka je základnou jednotkou štruktúry a funkcie všetkých živých vecí. Z pohľadu umelej inteligencie a učenia sú najzaujímavejšie mozgové bunky. Nazývajú sa neuróny. Neuróny pozostávajú z tela s jadrom a dlhšími a kratšími predĺženiami, ktoré sa nazývajú axóny a dendrity. Rozšírenia umožňujú neurónom spojiť sa s inými neurónmi. Tieto spojovacie body neurónov sa nazývajú synapsie. Umožňujú signály, t. j. elektrické impulzy generované jedným neurónom sa prenášajú do iného neurónu. Zaujímavé je, že jeden neurón môže byť spojený s miliónmi ďalších neurónov. To znamená, že prijíma a spracováva signály prichádzajúce z množstva iných neurónov a na základe svojich vnútorných mechanizmov dolaďuje signál, ktorý vysiela iným neurónom. Je bežné, že tento stav sa nazýva stav aktivácie neurónov. Trvá len zlomok sekundy, ale umožňuje jemné výpočty a generuje signál, ktorý sa prenáša celým nervovým systémom.

Neurón, s ktorým sa stretávame v umelej inteligencii, je matematickou abstrakciou mozgových neurónov. Je opísaná ako funkcia viacerých premenných \(f(x_1,x_2,...,x_n)\), kde každá z premenných \(x_1, x_2, ..., x_n\) zodpovedá jednému signálu, ktorý sa dostane do neurónu. Keďže nie všetky signály sú rovnako dôležité pre neurónovú aktivitu, spájajú ich váhy \(w_1, w_2, ..., w_n\), ktoré by mali naznačovať ich dôležitosť. Vyššie hodnoty týchto čísel naznačujú, že signál je dôležitejší a nižšie hodnoty naznačujú, že signál je menej dôležitý. Celková stimulácia neurónov teda zodpovedá hmotnostnému súčtu \(w_1x_1 + w_2x_2 +...+ w_nx_n\). Aby sa ovplyvnilo ďalšie správanie neurónov, k tomuto súčtu sa pripočíta jeden voľný člen b, takže celková stimulácia neurónu je v skutočnosti \(w_1x_1 + w_2x_2 +...+ w_nx_n + b\). Tá sa potom prenáša na takzvanú aktivačnú funkciu φ, ktorá má za úlohu vypočítať výstup neurónu. V závislosti od výberu aktivačnej funkcie budú závisieť aj získané výstupné hodnoty. Ak si teraz všetko systematicky zapíšeme, dostaneme, že pre prijaté signály \(x_1, x_2, ..., x_n\) je výstup neurónu \(y = φ(w_1x_1 + w_2x_2 +...+ w_nx_n + b\). Môžete tiež postupovať podľa postupu, ktorý sme opísali na obrázku nižšie.

Matematická abstrakcia neurónov
Pozrime sa bližšie na význam parametra b. Prirodzený neurón je charakterizovaný takzvaným aktivačným prahom - ak je celkový signál prijatý neurónom vyšší ako hodnota aktivačného prahu, aktivuje sa, spracuje signál a výsledok spracovania postúpi ďalej iným neurónom. Podobnú úlohu v matematickom modeli neurónov zohráva parameter b. Ak je celkový signál vyšší ako prah aktivácie b, t. j. ak \(w_1x_1 + w_2x_2 +...+ w_nx_n>b\), neurón sa aktivuje. Preto nám parameter b ponecháva možnosť ovplyvniť ďalšie správanie neurónov. Výraz \(w_1x_1 + w_2x_2 +...+ w_nx_n>b\) možno zapísať aj ako \(w_1x_1 + w_2x_2 +...+ w_nx_n-b>0\), a v tomto zmysle je parameter b tiež neoddeliteľnou súčasťou súčtu.
Keď sú neuróny navzájom prepojené, máme neurónovú sieť. Neurónová sieť sa zvyčajne skladá z vrstiev, najmä pridružených skupín neurónov.

Vrstvy neurónovej siete
Vstupná vrstva je vrstva, ktorá sa nachádza na vstupe neurónovej siete. Vstupné signály \(x1, x2, ..., xn\) tejto vrstvy súvisia s hodnotami atribútov, ktoré máme v dátovom súbore, a tak pristupujeme k praktickej aplikácii neurónových sietí. Ak máme napríklad súbor údajov obsahujúci tri atribúty, teplotu, vlhkosť a atmosférický tlak, vstupná vrstva bude mať tri neuróny: prvý bude zodpovedať prvému atribútu, teplote, druhý bude zodpovedať druhému atribútu, vlhkosti a tretí neurón tretiemu atribútu, teda atmosférickému tlaku. Pre jeden konkrétny príklad súboru údajov s hodnotami teploty, vlhkosti a atmosférického tlaku vo výške 19 °C, 77 % a 1011,2 mb budeme mať hodnoty signálu \(x1 = 19, x2 = 77\) a \(x3 = 1011,2\). V duchu predchádzajúceho príbehu prvý neurón vstupnej vrstvy prijíma a spracováva iba signál x1 tak, že ho prechádza bez akejkoľvek úpravy (to je možné pri výbere aktivačnej funkcie \(φ(x)= x\) a hodnoty \(w_1 = 1\) a \(b = 0\)). Platné sú aj ďalšie dva neuróny a ich signály \(x_2\) a \(x_3\). To by znamenalo, že vstupná vrstva nám umožňuje vstúpiť do siete.
Výstupná vrstva je vrstva, ktorá sa nachádza na výstupe neurónovej siete. Ako asi tušíte, umožňuje nám čítať výsledky, ktoré nám neurónová sieť vypočítala. V závislosti od riešenej úlohy bude závisieť aj počet neurónov v tejto vrstve.
V regresných úlohách, keďže ako výsledok očakávame jednu číselnú hodnotu (množstvo zrážok alebo niečo podobné), stačí jeden neurón. Jeho výsledok by mal zodpovedať predpovedi, ktorú očakávame. Pri klasifikačnej úlohe zvážme binárnu klasifikáciu a klasifikáciu viacerých tried samostatne. Keďže binárna klasifikácia očakáva dve hodnoty, 0 alebo 1, vaša prvá myšlienka môže byť, že potrebujeme dva neuróny. Ak sa však nad tým zamyslíte, všimnete si, že stačí aj jeden neurón: ak jeho výstup prekročí prahovú hodnotu, preddefinovanú hodnotu, môžeme ho brať ako výsledok 1, alebo inak ako výsledok 0. V prípade multitriednej klasifikácie môžeme mať niekoľko tried, preto je praktické zaviesť jeden neurón pre každú triedu.
Budete súhlasiť s tým, že v úlohe klasifikácie viacerých tried očakávame, že všetky výstupy neurónov výstupnej vrstvy budú 0, okrem jedného, ktorý má hodnotu 1 - takže budeme presne vedieť, o akú triedu ide.
Vrstvy neurónovej siete, ktoré sa nachádzajú medzi vstupnou a výstupnou vrstvou, sa nazývajú skryté vrstvy. Neurónové siete, ktoré majú viac ako jednu skrytú vrstvu, sa bežne označujú ako hlboké neurónové siete. Odtiaľ pochádza názov hlboké učenie . Hlboké učenie je oblasť strojového učenia, ktorá ich študuje, známa aj ako plytké učenie. Plytké učenie je forma učenia.
Plne prepojené neurónové siete sú siete, v ktorých je každý neurón predchádzajúcej vrstvy pripojený ku každému neurónu ďalšej vrstvy. Obrázok zobrazujúci vrstvy neurónovej siete tiež ukazuje jednu plne prepojenú neurónovú sieť, pretože všetky neuróny vstupnej vrstvy sú pripojené ku všetkým neurónom prvej skrytej vrstvy, potom sú všetky neuróny prvej skrytej vrstvy pripojené ku všetkým neurónom druhej skrytej vrstvy a nakoniec, Všetky neuróny druhej skrytej vrstvy sú spojené so všetkými neurónmi (iba jedným na našom obrázku) výstupnej vrstvy. Spôsoby, akými sú neuróny vrstiev navzájom prepojené, určujú architektúru neurónových sietí a niektoré špecifické vlastnosti sietí, ktoré ďalej určujú, v ktorých oblastiach sa dajú použiť. V ďalšej lekcii spoznáme niektorých z týchto chlapcov.
Teraz sa pozrime na to, čo sme vlastne získali zo zavedenia neurónov a neurónových sietí. Predpokladajme, že máme tri atribúty \(x_1, x_2\) a \(x3\). Lineárny vzťah medzi atribútom a cieľovou premennou je matematicky opísaný rovnicou \(y = β_0 + β_1x_1 + β_2x_2 + β_3x_3\). Ak namiesto parametrov β napíšeme w a namiesto β0, napíšeme b a posunieme ho na koniec, v skutočnosti dostaneme váhový súčet \(w_1x_1 + w_2x_2 + w_3x_3 + b\) vypočítaný jedným neurónom pre signály, ktoré prijíma. To znamená, že ak by neexistovala žiadna aktivačná funkcia, \(φ\) a neurón by modelovali lineárny vzťah medzi atribútmi (signálmi) a výstupmi. To môže byť tiež graficky znázornené sieťou pozostávajúcou iba zo vstupnej vrstvy s tromi neurónmi a výstupnej vrstvy s jedným neurónom, ako na obrázku nižšie.
.

Ak by aktivačná funkcia neexistovala, z pohľadu modelovania závislostí, pridanie novej skrytej vrstvy by zmenilo? Nech je to vrstva žltej farby na nasledujúcom obrázku.

Teraz každý neurón skrytej vrstvy vypočíta nejakú lineárnu kombináciu atribútov a neurón výstupnej vrstvy vypočíta nejakú lineárnu kombináciu hodnôt skrytej vrstvy. To by znamenalo, že náš neurón výstupnej vrstvy opäť počíta nejakú lineárnu kombináciu atribútov a že sme sa príliš nepohli od reprezentácie niektorých zložitejších vzťahov medzi atribútmi a výstupmi. Navyše by sme sa nepohli ani pridaním 100 skrytých vrstiev - vždy by sme modelovali lineárnu závislosť.
Preto zahrnutie aktivačnej funkcie do výpočtov neurónov výrazne mení súbor možností, ktoré máme. Ak použijeme nelineárnu aktivačnú funkciu, budeme schopní modelovať niektoré nelineárne vzťahy medzi atribútom a cieľovou premennou. Existencia nelineárnej aktivačnej funkcie v skrytej vrstve z predchádzajúceho príkladu teda umožňuje neurónu výstupnej vrstvy vypočítať nejakú nelineárnu kombináciu atribútov. V tomto svetle dáva pridávanie nových vrstiev oveľa väčší zmysel. Kombináciou nelinearít viacerých vrstiev môžeme modelovať zložité vzťahy medzi atribútmi a výstupmi.
Aby sa všetky kocky zmestili dohromady, zostáva diskutovať o tom, aké sú nelineárne aktivačné funkcie, ktoré sú populárne v strojovom učení. Toto sú sigmoidné funkcie, ktoré sme spoznali v príbehu o logistickej regresii, hyperbolických tenges, rektifikovanej lineárnej jednotke (Rectified Linear Unit - ReLU) a deravej rektifikovanej lineárnej jednotke (Leaky ReLU). Vzorce, podľa ktorých sa tieto funkcie vypočítavajú, a ich grafy sú znázornené na obrázku nižšie. Ako vidíte, tieto funkcie nie sú v skutočnosti lineárne - ich grafika nie je skutočná.

Najbežnejšie možnosti aktivačných funkcií
Aby sme dokončili príbeh kombinácie rôznych aktivačných funkcií, pozrime sa na funkcie \(f(x)= 2x\) a \(g(x)= 1 − x\). Vidíme, že obe funkcie lineárnej funkcie sú premenné. Ich kombináciou, zložením funkcií, získame funkciu \(g(f(x))= 1 − 2x\), ktorá je tiež lineárnou funkciou premennej. Grafiku všetkých troch funkcií môžete vidieť na obrázku nižšie.

Uvažujme teraz o funkciách \(f(x)= ReLU(2x)\) a \(g(x)= ReLU(1 − x)\), ktoré sa líšia od predchádzajúcich funkcií tým, že obsahujú aktivačnú funkciu usmernenej lineárnej jednotky. Preto sú obe funkcie nelineárne. Ich kombináciou, t.j. ich zložením, získame funkciu \(g(f(x))= ReLU(1 − ReLU(2x))\), ktorá je tiež nelineárna a ktorá má novú "formu": umožňuje nám vyjadriť trochu iný vzťah medzi vstupnou premennou a výstupom.

Výber vhodnej aktivačnej funkcie závisí od povahy úlohy a niektorých vlastností, ktoré by neurónová sieť mala mať počas trénovania. Ako sa to robí, vysvetlíme v ďalšej lekcii.