Metódy trénovania neurónových sietí. Tréning neurónovej siete

  • 21.07.2019

Teraz, keď je jasné, čo presne chceme vybudovať, môžeme prejsť k otázke „ako vybudovať takúto neurónovú sieť“. Táto problematika sa rieši v dvoch etapách: 1. Výber typu (architektúry) neurónovej siete. 2. Výber váh (trénovanie) neurónovej siete. V prvej fáze by ste si mali vybrať nasledovné: * ktoré neuróny chceme použiť (počet vstupov, prenosové funkcie); * ako ich spojiť; * čo brať ako vstupy a výstupy neurónovej siete. Na prvý pohľad sa táto úloha javí ako nesmierna, ale, našťastie, nemusíme vymýšľať neurónovú sieť „od nuly“ – existuje niekoľko desiatok rôznych architektúr neurónových sietí a účinnosť mnohých z nich bola dokázaná matematicky. Najpopulárnejšie a najštudovanejšie architektúry sú viacvrstvový perceptrón, všeobecná regresná neurónová sieť, Kohonenove neurónové siete a iné. Všetky tieto architektúry budú čoskoro dostupné vo vyhradenej časti tohto návodu.

V druhej fáze by sme mali vybranú neurónovú sieť „trénovať“, to znamená zvoliť také hodnoty jej váh, aby fungovala požadovaným spôsobom. Netrénovaná neurónová sieť je ako dieťa – dá sa naučiť čokoľvek. V neurónových sieťach používaných v praxi môže byť počet závaží aj niekoľko desiatok tisíc, takže tréning je naozaj náročný proces. Pre mnohé architektúry boli vyvinuté špeciálne učiace algoritmy, ktoré vám umožňujú určitým spôsobom upraviť váhy neurónovej siete. Najpopulárnejším z týchto algoritmov je metóda Error Back Propagation, ktorá sa používa napríklad na trénovanie perceptrónu.

Tréning neurónovej siete

Trénovať neurónovú sieť znamená povedať jej, čo od nej chceme. Tento proces je veľmi podobný výučbe dieťaťa abecedu. Keď sme dieťaťu ukázali obrázok písmena „A“, pýtame sa ho: „Aké písmeno je toto?“ Ak je odpoveď nesprávna, povieme dieťaťu odpoveď, ktorú by sme od neho chceli dostať: "Toto je písmeno A." Dieťa si zapamätá tento príklad spolu so správnou odpoveďou, to znamená, že v jeho pamäti nastanú nejaké zmeny správnym smerom. Proces uvádzania písmen budeme opakovať stále dokola, kým si všetkých 33 písmen pevne nezapamätáme. Tento proces sa nazýva „učenie pod dohľadom“.

Pri tréningu neurónovej siete konáme úplne rovnako. Máme nejakú databázu obsahujúcu príklady (súbor ručne písaných listov). Predložením obrázku písmena „A“ na vstup neurónovej siete z neho dostaneme nejakú odpoveď, nie nutne správnu. Poznáme aj správnu (žiadanú) odpoveď – v tomto prípade by sme chceli, aby úroveň signálu bola maximálna na výstupe neurónovej siete s označením „A“. Zvyčajne sa množina (1, 0, 0, ...) berie ako požadovaný výstup v klasifikačnom probléme, kde 1 stojí na výstupe označenom "A" a 0 - na všetkých ostatných výstupoch. Výpočtom rozdielu medzi požadovanou odozvou a skutočnou odozvou siete dostaneme 33 čísel - vektor chyby. Algoritmus spätného šírenia chýb je súbor vzorcov, ktorý umožňuje vypočítať požadované korekcie pre váhy neurónovej siete z chybového vektora. To isté písmeno (ako aj rôzne obrázky toho istého písmena) môžeme neurónovej sieti prezentovať mnohokrát. Učenie je v tomto zmysle skôr opakovaním cvičenia v športe – tréningu.

Ukazuje sa, že po viacnásobnom prezentovaní príkladov sa váhy neurónovej siete ustália a neurónová sieť dáva správne odpovede na všetky (alebo takmer všetky) príklady z databázy. V tomto prípade hovoria, že „neurónová sieť sa naučila všetky príklady“, „neurónová sieť je natrénovaná“ alebo „neurónová sieť je natrénovaná“. V softvérových implementáciách môžete vidieť, že v procese učenia sa veľkosť chyby (súčet druhých mocnín chýb na všetkých výstupoch) postupne klesá. Keď chyba dosiahne nulu alebo prijateľnú nízku úroveň, trénovanie sa zastaví a výsledná neurónová sieť sa považuje za trénovanú a pripravenú na použitie na nové údaje. Je dôležité poznamenať, že všetky informácie, ktoré má neurónová sieť o úlohe, sú obsiahnuté v súbore príkladov. Kvalita trénovania neurónovej siete teda priamo závisí od počtu príkladov v trénovacej množine, ako aj od toho, nakoľko tieto príklady popisujú danú úlohu.

Napríklad nemá zmysel používať neurónovú sieť na predpovedanie finančnej krízy, ak v tréningovej vzorke nie sú zastúpené krízy. Predpokladá sa, že na plnohodnotné trénovanie neurónovej siete je potrebných aspoň niekoľko desiatok (alebo lepšie stovky) príkladov. Zopakujme si ešte raz, že trénovanie neurónových sietí je zložitý a vedomostne náročný proces. Algoritmy na trénovanie neurónových sietí majú rôzne parametre a nastavenia, ktoré si vyžadujú pochopenie ich vplyvu na riadenie.


Keď je neurónová sieť natrénovaná, môžeme ju použiť na riešenie užitočných problémov. Najdôležitejšou črtou ľudského mozgu je to, že akonáhle sa naučí určitý proces, môže správne konať v situáciách, v ktorých nebol v procese učenia. Dokážeme napríklad prečítať takmer akýkoľvek rukopis, aj keď ho vidíme prvýkrát v živote. Rovnako tak neurónová sieť, správne natrénovaná, dokáže s najväčšou pravdepodobnosťou správne reagovať na nové dáta, ktoré jej neboli predložené skôr. Napríklad môžeme nakresliť písmeno „A“ iným rukopisom a potom požiadať našu neurónovú sieť, aby klasifikovala nový obrázok. Váhy trénovanej neurónovej siete ukladajú množstvo informácií o podobnostiach a rozdieloch medzi písmenami, takže sa môžete spoľahnúť na správnu odpoveď pre novú verziu obrázka. Príklady hotových neurónových sietí

Vyššie opísané procesy pre učenie a aplikáciu neurónových sietí možno vidieť v akcii práve teraz. Spoločnosť Ward Systems Group pripravila niekoľko jednoduchých programov, ktoré sú napísané na báze knižnice NeuroWindows. Každý z programov umožňuje užívateľovi samostatne definovať množinu príkladov a trénovať na tejto množine konkrétnu neurónovú sieť. Potom môžete tejto neurónovej sieti ponúknuť nové príklady a sledovať jej prácu.

V kapitole sme sa zoznámili s pojmami ako umelá inteligencia, strojové učenie, umelé neurónové siete.

V tejto kapitole podrobne popíšem model umelého neurónu, porozprávam sa o prístupoch k trénovaniu siete a tiež popíšem niektoré známe typy umelých neurónových sietí, ktoré budeme študovať v ďalších kapitolách.

Zjednodušenie

V poslednej kapitole som neustále hovoril o niektorých vážnych zjednodušeniach. Dôvodom pre zjednodušenia je, že to nedokážu žiadne moderné počítače rýchlo simulovať také zložité systémy, ako je náš mozog. Navyše, ako som už povedal, náš mozog je plný rôznych biologických mechanizmov, ktoré nesúvisia so spracovaním informácií.

Potrebujeme model na transformáciu vstupného signálu na výstup, ktorý potrebujeme. Všetko ostatné nás netrápi. Začíname zjednodušovať.

Biologická štruktúra → diagram

V predchádzajúcej kapitole ste si uvedomili, aké zložité sú biologické neurónové siete a biologické neuróny. Namiesto zobrazovania neurónov ako príšer s chápadlami si nakreslíme diagramy.

Vo všeobecnosti existuje niekoľko spôsobov, ako graficky zobraziť neurónové siete a neuróny. Tu budeme zobrazovať umelé neuróny vo forme kruhov.

Namiesto zložitého prelínania vstupov a výstupov použijeme šípky, ktoré označujú smer pohybu signálu.

Umelá neurónová sieť môže byť teda reprezentovaná ako súbor kruhov (umelých neurónov) spojených šípkami.

Elektrické signály → čísla

V skutočnej biologickej neurónovej sieti sa elektrický signál prenáša zo vstupov siete na výstupy. V procese prechodu cez neurónovú sieť sa môže meniť.

Elektrický signál bude vždy elektrickým signálom. Koncepčne sa nič nemení. Ale čo sa potom zmení? Veľkosť tohto elektrického signálu sa mení (silnejší/slabší). A akékoľvek množstvo môže byť vždy vyjadrené ako číslo (viac / menej).

V našom modeli umelej neurónovej siete absolútne nepotrebujeme implementovať správanie elektrického signálu, keďže na jeho implementácii aj tak nebude nič závisieť.

Na vstupy siete dodáme nejaké čísla symbolizujúce veľkosť elektrického signálu, ak nejaký bol. Tieto čísla sa budú pohybovať po webe a nejakým spôsobom sa meniť. Na výstupe siete dostaneme nejaké výsledné číslo, ktoré je odozvou siete.

Pre pohodlie budeme stále volať na naše čísla kolujúce v signáloch siete.

Synapsie → váhy odkazov

Pripomeňme si obrázok z prvej kapitoly, na ktorom boli farebne znázornené spojenia medzi neurónmi – synapsiami. Synapsie môžu zosilniť alebo zoslabiť elektrický signál, ktorý nimi prechádza.

Charakterizujme každé takéto spojenie určitým číslom, nazývaným váha tohto spojenia. Signál prechádzajúci týmto spojom sa vynásobí váhou zodpovedajúceho spoja.

Toto je kľúčový bod v koncepte umelých neurónových sietí, vysvetlím ho podrobnejšie. Pozrite sa na obrázok nižšie. Teraz každá čierna šípka (odkaz) na tomto obrázku zodpovedá nejakému číslu \ (w_i \) (váha odkazu). A keď signál prejde týmto spojením, jeho hodnota sa vynásobí hmotnosťou tohto spojenia.

Na obrázku vyššie nie je každý odkaz vážený len preto, že nie je priestor na označenia. V skutočnosti má každý \ (i \) -tý odkaz svoju vlastnú \ (w_i \) -tu váhu.

Umelý neurón

Teraz sa obraciame na skúmanie vnútornej štruktúry umelého neurónu a na to, ako transformuje signál prichádzajúci na jeho vstupy.

Obrázok nižšie zobrazuje úplný model umelého neurónu.

Nebojte sa, nie je tu nič zložité. Pozrime sa na všetko podrobne zľava doprava.

Vstupy, váhy a totalizér

Každý neurón, vrátane umelého, musí mať nejaké vstupy, cez ktoré prijíma signál. Už sme zaviedli koncept váh, ktorými sa násobia signály prechádzajúce komunikáciou. Na obrázku vyššie sú závažia zobrazené ako kruhy.

Signály prijaté na vstupoch sa vynásobia ich váhami. Signál prvého vstupu \ (x_1 \) sa vynásobí zodpovedajúcou váhou \ (w_1 \). Výsledkom je \ (x_1w_1 \). A tak ďalej až do \ (n \) -tej položky. Výsledkom je, že na poslednom vstupe dostaneme \ (x_nw_n \).

Všetky produkty sa teraz prenesú do sčítača. Už podľa názvu môžete pochopiť, čo robí. Jednoducho spočíta všetky vstupné signály vynásobené ich príslušnými váhami:

\ [x_1w_1 + x_2w_2 + \ cdots + x_nw_n = \ súčet \ limity ^ n_ (i = 1) x_iw_i \]

Odkaz na matematiku

Sigma - Wikipedia

Keď je potrebné krátko napísať veľký výraz pozostávajúci zo súčtu opakujúcich sa / rovnakého typu, použije sa znak sigma.

Zvážte najjednoduchší spôsob písania:

\ [\ súčet \ limity ^ 5_ (i = 1) i = 1 + 2 + 3 + 4 + 5 \]

Premennej počítadla \ (i \) teda od spodnej časti sigmy priradíme počiatočnú hodnotu, ktorá sa bude zvyšovať, až kým nedosiahne hornú hranicu (v príklade vyššie je to 5).

Horná hranica môže byť tiež variabilná. Uvediem príklad takéhoto prípadu.

Povedzme, že máme \ (n \) obchodov. Každý obchod má svoje vlastné číslo: od 1 do \ (n \). Každý obchod má zisk. Zoberme si nejaký (bez ohľadu na to, aký) \ (i \) -tý obchod. Zisk z toho je \ (p_i \).

\ [P = p_1 + p_2 + \ cdots + p_i + \ cdots + p_n \]

Ako vidíte, všetci členovia tohto súčtu sú rovnakého typu. Potom ich možno stručne zapísať takto:

\ [P = \ súčet \ limity ^ n_ (i = 1) p_i \]

Slovami: "Zosumarizujte zisky všetkých obchodov, počnúc prvým a končiac \ (n \) -tým". Vo forme vzorca je to oveľa jednoduchšie, pohodlnejšie a krajšie.

Sčítačka vytvorí číslo nazývané vážený súčet.

Vážené množstvo(Vážená suma) (\ (Net \)) - súčet vstupných signálov vynásobený príslušnými váhami.

\ [netto = \ súčet \ limity ^ n_ (i = 1) x_iw_i \]

Úloha sčítačky je zrejmá – agreguje všetky vstupné signály (ktorých môže byť veľa) do jedného jediného čísla – váženého súčtu, ktorý charakterizuje signál prijatý neurónom ako celok. Ďalší vážený súčet môže byť vyjadrený ako stupeň všeobecnej excitácie neurónu.

Príklad

Na pochopenie úlohy poslednej zložky umelého neurónu – aktivačnej funkcie – uvediem prirovnanie.

Poďme sa pozrieť na jeden umelý neurón. Jeho úlohou je rozhodnúť, či pôjde na dovolenku k moru. Za týmto účelom dodávame do jeho vstupov rôzne údaje. Nech má náš neurón 4 vstupy:

  1. Náklady na cestu
  2. Aké je počasie na mori
  3. Aktuálne pracovné prostredie
  4. Bude na pláži reštaurácia

Všetky tieto parametre budeme charakterizovať ako 0 alebo 1. Podľa toho, ak je počasie na mori dobré, potom tomuto vstupu pošleme 1. A tak so všetkými ostatnými parametrami.

Ak má neurón štyri vstupy, potom musia existovať štyri váhy. V našom príklade môžu byť váhy reprezentované ako indikátory dôležitosti každého vstupu, ktoré ovplyvňujú celkové rozhodnutie neurónu. Váhy vstupov rozdeľujeme takto:

Je ľahké vidieť, že faktory nákladov a počasia na mori (prvé dva vstupy) zohrávajú veľmi dôležitú úlohu. Budú tiež hrať rozhodujúcu úlohu pri rozhodovaní neurónu.

Pošlime nasledujúce signály na vstupy nášho neurónu:

Váhy vstupov vynásobíme signálmi zodpovedajúcich vstupov:

Vážená suma pre túto množinu vstupných signálov je 6:

\ [netto = \ súčet \ limity ^ 4_ (i = 1) x_iw_i = 5 + 0 + 0 + 1 = 6 \]

Tu vstupuje do hry aktivačná funkcia.

Aktivačná funkcia

Nemá zmysel zadať len váženú sumu na výstup. Neurón to musí nejako spracovať a vygenerovať adekvátny výstupný signál. Na tieto účely slúži aktivačná funkcia.

Premení vážený súčet na nejaké číslo, ktoré je výstupom neurónu (výstup neurónu označujeme premennou \ (out \)).

Rôzne typy umelých neurónov využívajú širokú škálu aktivačných funkcií. Vo všeobecnosti sa označujú pomocou \ (\ phi (net) \). Zadanie váženého signálu v zátvorkách znamená, že aktivačná funkcia berie ako parameter vážený súčet.

Aktivačná funkcia (Aktivačná funkcia) (\ (\ Phi (netto) \)) je funkcia, ktorá berie ako argument vážený súčet. Hodnota tejto funkcie je výstup neurónu (\ (out \)).

Funkcia jedného skoku

Najjednoduchší druh aktivačnej funkcie. Výstup neurónu môže byť iba 0 alebo 1. Ak je vážený súčet väčší ako určitá prahová hodnota \ (b \), potom je výstup neurónu 1. Ak je nižší, potom 0.

Ako ho môžete použiť? Predpokladajme, že ideme k moru iba vtedy, keď je vážený súčet väčší alebo rovný 5. Náš prah je teda 5:

V našom príklade bol vážený súčet 6, čo znamená, že výstupný signál nášho neurónu je 1. Ideme teda k moru.

Ak by však počasie na mori bolo zlé a cesta bola veľmi drahá, ale bola by tam reštaurácia a normálne pracovné prostredie (vstupy: 0011), potom by vážený súčet bol 2, čo znamená, že výstup neurónu by bol 0. Takže nikam nejdeme.

Vo všeobecnosti sa neurón pozerá na vážený súčet a ak sa ukáže, že je väčší ako jeho prah, potom neurón vydá výstupný signál rovný 1.

Táto aktivačná funkcia môže byť graficky znázornená nasledovne.

Vodorovná os obsahuje hodnoty váženého súčtu. Zvislá os sú hodnoty výstupného signálu. Ako je ľahko vidieť, možné sú len dve hodnoty výstupného signálu: 0 alebo 1. Navyše, 0 bude vždy na výstupe od mínus nekonečna až po určitú hodnotu váženého súčtu, nazývanú prah. Ak je vážený súčet rovný alebo väčší ako prah, funkcia vráti 1. Všetko je veľmi jednoduché.

Teraz napíšme túto aktivačnú funkciu matematicky. Takmer určite ste sa už stretli s takým pojmom ako zložená funkcia. A to vtedy, keď pod jednu funkciu spojíme viacero pravidiel, podľa ktorých sa vypočíta jej hodnota. Ako zložená funkcia by funkcia unit hop vyzerala takto:

\ [out (netto) = \ begin (cases) 0, net< b \\ 1, net \geq b \end{cases} \]

Na tomto vstupe nie je nič zložité. Výstup neurónu (\ (out \)) závisí od váženého súčtu (\ (netto \)) takto: ak je \ (netto \) (vážený súčet) menšie ako určitá prahová hodnota (\ (b \ )), potom \ (out \) (výstup neurónu) sa rovná 0. A ak \ (net \) je väčšie alebo rovné prahu \ (b \), potom \ (out \) sa rovná 1 ...

Sigmoidálna funkcia

V skutočnosti existuje celá rodina sigmoidálnych funkcií, z ktorých niektoré sa používajú ako aktivačné funkcie v umelých neurónoch.

Všetky tieto funkcie majú niektoré veľmi užitočné vlastnosti, kvôli ktorým sa používajú v neurónových sieťach. Tieto vlastnosti budú zrejmé, keď uvidíte grafy týchto funkcií.

Takže ... najčastejšie používaný sigmoid v neurónových sieťach je logistická funkcia.

Graf tejto funkcie vyzerá dosť jednoducho. Ak sa pozriete pozorne, môžete vidieť nejaké zdanie anglického písmena \ (S \), odtiaľ názov rodiny týchto funkcií.

A takto sa to analyticky píše:

\ [out (netto) = \ frac (1) (1+ \ exp (-a \ cdot net)) \]

Čo je parameter \ (a \)? Toto je nejaké číslo, ktoré charakterizuje stupeň strmosti funkcie. Nižšie sú uvedené logistické funkcie s iným parametrom \ (a \).

Spomeňme si na náš umelý neurón, ktorý rozhoduje o tom, či ísť k moru. V prípade funkcie unit jump bolo všetko samozrejmé. Buď ideme k moru (1) alebo nie (0).

Tu je však prípad bližšie k realite. Nie sme si úplne istí (najmä ak ste paranoidní) - oplatí sa ísť? Potom použitie logistickej funkcie ako aktivačnej funkcie povedie k tomu, že dostanete číslicu medzi 0 a 1. Navyše, čím väčší je vážený súčet, tým bližšie bude výstup k 1 (ale nikdy sa nebude presne rovnať). Naopak, čím menší je vážený súčet, tým bližšie bude výstup neurónu k 0.

Napríklad výstup nášho neurónu je 0,8. To znamená, že verí, že ísť k moru sa stále oplatí. Ak by bol jeho výkon 0,2, znamená to, že je takmer určite proti plavbe na more.

Aké sú pozoruhodné vlastnosti logistickej funkcie?

  • je to "kompresná" funkcia, to znamená, že bez ohľadu na argument (vážený súčet) bude výstupný signál vždy v rozsahu od 0 do 1
  • je flexibilnejšia ako funkcia unit jump - jej výsledkom môže byť nielen 0 a 1, ale aj ľubovoľné číslo medzi tým
  • vo všetkých bodoch má deriváciu a táto derivácia môže byť vyjadrená tou istou funkciou

Práve kvôli týmto vlastnostiam sa logistická funkcia najčastejšie používa ako aktivačná funkcia v umelých neurónoch.

Hyperbolická dotyčnica

Je tu však ešte jedna sigmata – hyperbolická tangenta. Biológovia ju používajú ako aktivačnú funkciu pre realistickejší model nervovej bunky.

Táto funkcia vám umožňuje získať na výstupe hodnoty rôznych znakov (napríklad od -1 do 1), čo môže byť užitočné pre množstvo sietí.

Funkcia je napísaná takto:

\ [von (netto) = \ tanh \ vľavo (\ frac (netto) (a) \ vpravo) \]

Vo vyššie uvedenom vzorci parameter \ (a \) tiež určuje strmosť grafu tejto funkcie.

A takto vyzerá graf tejto funkcie.

Ako vidíte, vyzerá to ako graf logistických funkcií. Hyperbolický tangens má všetky užitočné vlastnosti, ktoré má aj logistická funkcia.

Čo sme sa naučili?

Teraz máte úplné pochopenie vnútornej štruktúry umelého neurónu. Ešte raz vám stručne popíšem, ako to funguje.

Neurón má vstupy. Dostávajú signály vo forme čísel. Každý vstup má svoju váhu (aj číslo). Vstupné signály sa vynásobia príslušnými váhami. Získame množinu „vážených“ vstupných signálov.

Vážená suma sa potom prevedie aktivačná funkcia a dostaneme výstup neurónov.

Sformulujme teraz najkratší popis činnosti neurónu – jeho matematický model:

Matematický model umelého neurónu so vstupmi \ (n \):

kde
\ (\ Phi \) - aktivačná funkcia
\ (\ súčet \ limity ^ n_ (i = 1) x_iw_i \)- vážený súčet ako súčet \ (n \) súčinov vstupných signálov zodpovedajúcimi váhami.

Typy ANN

Zistili sme štruktúru umelého neurónu. Umelé neurónové siete sa skladajú zo súboru umelých neurónov. Vynára sa logická otázka - ako usporiadať / spojiť tieto rovnaké umelé neuróny navzájom?

Spravidla sa vo väčšine neurónových sietí vyskytuje tzv vstupná vrstva, ktorý vykonáva iba jednu úlohu - distribúciu vstupných signálov do zvyšku neurónov. Neuróny tejto vrstvy nevykonávajú žiadne výpočty.

Jednovrstvové neurónové siete

V jednovrstvových neurónových sieťach sú signály zo vstupnej vrstvy okamžite privádzané do výstupnej vrstvy. Vykonáva potrebné výpočty, ktorých výsledky sú okamžite privádzané do výstupov.

Jednovrstvová neurónová sieť vyzerá takto:

Na tomto obrázku je vstupná vrstva označená krúžkami (nepočíta sa ako vrstva neurónovej siete) a vpravo je vrstva obyčajných neurónov.

Neuróny sú navzájom spojené šípkami. Nad šípkami sú váhy príslušných prepojení (koeficienty hmotnosti).

Jednovrstvová neurónová sieť (Jednovrstvová neurónová sieť) - sieť, v ktorej sú signály zo vstupnej vrstvy okamžite privádzané do výstupnej vrstvy, ktorá konvertuje signál a okamžite dáva odpoveď.

Viacvrstvové neurónové siete

Takéto siete sa okrem vstupných a výstupných vrstiev neurónov vyznačujú aj skrytou vrstvou (vrstvami). Je ľahké pochopiť ich umiestnenie - tieto vrstvy sa nachádzajú medzi vstupnou a výstupnou vrstvou.

Táto štruktúra neurónových sietí kopíruje viacvrstvovú štruktúru určitých častí mozgu.

Nie je náhoda, že skrytá vrstva dostala svoje meno. Faktom je, že len relatívne nedávno boli vyvinuté metódy na trénovanie neurónov skrytej vrstvy. Predtým si poradili len s jednovrstvovými neurónovými sieťami.

Viacvrstvové neurónové siete sú oveľa výkonnejšie ako jednovrstvové neurónové siete.

Prácu skrytých vrstiev neurónov možno prirovnať k práci veľkej továrne. Produkt (výstupný signál) sa v závode montuje postupne. Po každom stroji sa získa nejaký medzivýsledok. Skryté vrstvy tiež konvertujú vstupné signály na niektoré medzivýsledky.

Viacvrstvová neurónová sieť (Viacvrstvová neurónová sieť) je neurónová sieť pozostávajúca zo vstupu, výstupu a jednej (niekoľko) skrytých vrstiev neurónov umiestnených medzi nimi.

Priame distribučné siete

Na obrázkoch neurónových sietí v príkladoch vyššie môžete vidieť jeden veľmi zaujímavý detail.

Vo všetkých príkladoch idú šípky striktne zľava doprava, to znamená, že signál v takýchto sieťach ide striktne zo vstupnej vrstvy na výstup.

Priame distribučné siete (Dopredná neurónová sieť) (feedforward networks) - umelé neurónové siete, v ktorých sa signál šíri striktne zo vstupnej vrstvy do výstupnej vrstvy. Opačným smerom sa signál nešíri.

Takéto siete sú široko používané a celkom úspešne riešia určitú triedu problémov: prognózovanie, klastrovanie a rozpoznávanie.

Signálom však nikto nezakazuje ísť do protismeru.

Siete spätnej väzby

V sieťach tohto typu môže ísť signál opačným smerom. Aká je výhoda?

Faktom je, že v dopredných sieťach je výstup siete určený vstupným signálom a váhami pre umelé neuróny.

A v sieťach so spätnou väzbou sa výstupy neurónov môžu vrátiť na vstupy. To znamená, že výstup neurónu je určený nielen jeho váhami a vstupným signálom, ale aj predchádzajúcimi výstupmi (keďže sa opäť vrátili na vstupy).

Schopnosť signálov cirkulovať v sieti otvára neurónovým sieťam nové, úžasné možnosti. Pomocou takýchto sietí je možné vytvárať neurónové siete, ktoré obnovujú alebo dopĺňajú signály. Inými slovami, takéto neurónové siete majú vlastnosti krátkodobej pamäte (ako u ľudí).

Siete spätnej väzby (Rekurentná neurónová sieť) - umelé neurónové siete, v ktorých môže byť výstup neurónu opäť privádzaný na jeho vstup. Vo všeobecnosti to znamená, že signál sa môže šíriť z výstupov na vstupy.

Tréning neurónovej siete

Teraz sa pozrime bližšie na problematiku trénovania neurónovej siete. Čo to je? A ako sa to stane?

Čo je sieťové učenie?

Umelá neurónová sieť je súbor umelých neurónov. Teraz si vezmime napríklad 100 neurónov a spojíme ich navzájom. Je jasné, že keď na vstup privedieme signál, na výstupe dostaneme niečo nezmyselné.

Musíme teda zmeniť niektoré parametre siete, kým sa vstupný signál neprevedie na výstup, ktorý potrebujeme.

Čo môžeme zmeniť v neurónovej sieti?

Zmena celkového počtu umelých neurónov je nezmyselná z dvoch dôvodov. Po prvé, zvýšenie počtu výpočtových prvkov ako celku len robí systém ťažkopádnejším a nadbytočným. Po druhé, ak nazbierate 1 000 bláznov namiesto 100, stále nebudú schopní správne odpovedať na otázku.

Sčítačku nie je možné zmeniť, pretože vykonáva jednu pevne špecifikovanú funkciu - sčítať. Ak ho niečím nahradíme alebo ho dokonca úplne odstránime, potom to už vôbec nebude umelý neurón.

Ak zmeníme aktivačnú funkciu pre každý neurón, získame príliš pestrú a nekontrolovanú neurónovú sieť. Okrem toho sú vo väčšine prípadov neuróny v neurónových sieťach rovnakého typu. To znamená, že všetky majú rovnakú aktivačnú funkciu.

Zostáva len jedna možnosť - zmeniť hmotnosti väzieb.

Tréning neurónovej siete (školenie)- hľadanie takej množiny váhových koeficientov, pri ktorej sa vstupný signál po prechode sieťou premení na nami potrebný výstup.

Tento prístup k pojmu „tréning neurónovej siete“ zodpovedá biologickým neurónovým sieťam. Náš mozog pozostáva z obrovského množstva vzájomne prepojených neurónových sietí. Každý z nich jednotlivo pozostáva z neurónov rovnakého typu (aktivačná funkcia je rovnaká). Učíme sa zmenou synapsií – prvkov, ktoré zosilňujú/zoslabujú vstupný signál.

Je tu však ešte jeden dôležitý bod. Ak trénujete sieť iba pomocou jedného vstupného signálu, potom si sieť jednoducho „zapamätá správnu odpoveď“. Zvonku sa bude zdať, že sa „naučila“ veľmi rýchlo. A akonáhle dáte mierne upravený signál v očakávaní, že uvidíte správnu odpoveď, sieť vydá nezmysly.

Prečo vlastne potrebujeme sieť, ktorá identifikuje tvár iba na jednej fotografii. Očakávame, že sieť bude schopná zovšeobecňovať niektoré znaky a rozpoznávanie tvárí aj na iných fotografiách.

Práve na tento účel tréningové vzorky.

Tréningová vzorka (Tréningová súprava) je konečná množina vstupných signálov (niekedy spolu so správnymi výstupnými signálmi), podľa ktorých sa trénuje sieť.

Po natrénovaní siete, teda keď sieť produkuje správne výsledky pre všetky vstupné signály z trénovacej vzorky, je možné ju použiť v praxi.

Pred spustením čerstvo upečenej neurónovej siete do boja však často posudzujú kvalitu jej práce na tzv. skúšobná vzorka.

Skúšobný aport (Testovacia sada) - konečný súbor vstupných signálov (niekedy spolu so správnymi výstupnými signálmi), ktoré sa používajú na hodnotenie kvality siete.

Pochopili sme, čo je „sieťový tréning“ – výber správnej zostavy závaží. Teraz vyvstáva otázka - ako môžete trénovať sieť? V najvšeobecnejšom prípade existujú dva prístupy, ktoré vedú k rôznym výsledkom: vyučovanie s učiteľom a vyučovanie bez učiteľa.

Učenie pod dohľadom

Podstatou tohto prístupu je, že dáte signál na vstup, pozriete sa na odozvu siete a potom ju porovnáte s už pripravenou správnou odpoveďou.

Dôležitý bod. Nezamieňajte správne odpovede a známy algoritmus riešenia! Môžete obkresliť tvár na fotografii prstom (správna odpoveď), ale nemôžete povedať, ako ste to urobili (známy algoritmus). Tu je rovnaká situácia.

Potom pomocou špeciálnych algoritmov zmeníte váhy spojení neurónovej siete a znova jej dáte vstupný signál. Porovnajte jej odpoveď so správnou a opakujte tento proces, kým sieť nezačne reagovať s prijateľnou presnosťou (ako som povedal v kapitole 1, sieť nemôže poskytnúť jednoznačné presné odpovede).

Učenie pod dohľadom (Učenie pod dohľadom) je typ sieťového tréningu, pri ktorom sa menia jeho váhy tak, aby sa odpovede siete minimálne líšili od už pripravených správnych odpovedí.

Kde môžem získať správne odpovede?

Ak chceme, aby sieť rozpoznávala tváre, môžeme vytvoriť trénovaciu sadu 1000 fotografií (vstupných signálov) a nezávisle na nej vyberať tváre (správne odpovede).

Ak chceme, aby sieť predpovedala rast/pokles cien, potom musí byť trénovacia vzorka vytvorená na základe údajov z minulosti. Ako vstupné signály možno brať konkrétne dni, všeobecné podmienky na trhu a ďalšie parametre. A ako správne odpovede - rast a pokles ceny v tých dňoch.

Stojí za zmienku, že učiteľ, samozrejme, nie je nevyhnutne osoba. Faktom je, že niekedy musí byť sieť trénovaná hodiny a dni, pričom sa robia tisíce a desaťtisíce pokusov. V 99% prípadov túto úlohu zohráva počítač alebo skôr špeciálny počítačový program.

Učenie bez učiteľa

Učenie bez dozoru sa používa vtedy, keď nemáme správne odpovede na vstupné signály. V tomto prípade celá tréningová vzorka pozostáva zo súboru vstupných signálov.

Čo sa stane s takýmto sieťovým tréningom? Ukazuje sa, že pri takomto "tréningu" sieť začína rozlišovať triedy signálov dodávaných na vstup. Stručne povedané, sieť sa začne klastrovať.

Napríklad zobrazujete siete cukroviniek, pečiva a koláčov. Prevádzku siete nijako neregulujete. Jednoducho vložíte údaje o tomto objekte do jeho vstupov. Postupom času začne sieť vysielať signály troch rôznych typov, ktoré sú zodpovedné za objekty pri vchode.

Učenie bez učiteľa (Učenie bez dozoru) je typ sieťového tréningu, v ktorom sieť nezávisle klasifikuje vstupné signály. Správne (referenčné) výstupné signály sa nezobrazujú.

závery

V tejto kapitole ste sa naučili všetko o štruktúre umelého neurónu, ako aj úplné pochopenie toho, ako funguje (a jeho matematický model).

Navyše teraz viete o rôznych typoch umelých neurónových sietí: jednovrstvové, viacvrstvové, dopredné a spätnoväzbové siete.

Dozvedeli ste sa tiež o sieťovom učení pod dohľadom a bez dozoru.

Potrebnú teóriu už poznáte. Nasledujúce kapitoly - úvahy o špecifických typoch neurónových sietí, špecifických algoritmoch na ich trénovanie a programovanie.

Otázky a úlohy

Materiál v tejto kapitole by ste mali veľmi dobre poznať, keďže obsahuje základné teoretické informácie o umelých neurónových sieťach. Uistite sa, že získate sebavedomé a správne odpovede na všetky otázky a úlohy uvedené nižšie.

Popíšte zjednodušenia ANN v porovnaní s biologickými neurónovými sieťami.

1. Zložitá a zložitá štruktúra biologických neurónových sietí je zjednodušená a prezentovaná vo forme diagramov. Zostáva len model spracovania signálu.

2. Charakter elektrických signálov v neurónových sieťach je rovnaký. Jediný rozdiel je v ich veľkosti. Odstránime elektrické signály a namiesto toho použijeme čísla, ktoré označujú veľkosť prenášaného signálu.

Aktivačná funkcia sa často označuje ako \ (\ phi (net) \).

Napíšte matematický model umelého neurónu.

Umelý neurón so vstupmi \ (n \) konvertuje vstupný signál (číslo) na výstupný signál (číslo) takto:

\ [von = \ phi \ vľavo (\ súčet \ limity ^ n_ (i = 1) x_iw_i \ vpravo) \]

Aký je rozdiel medzi jednovrstvovými a viacvrstvovými neurónovými sieťami?

Jednovrstvové neurónové siete pozostávajú z jednej výpočtovej vrstvy neurónov. Vstupná vrstva privádza signály priamo do výstupnej vrstvy, ktorá konvertuje signál a okamžite odošle výsledok.

Viacvrstvové neurónové siete majú okrem vstupnej a výstupnej vrstvy aj skryté vrstvy. Tieto skryté vrstvy vykonávajú určité interné prechodné transformácie, ako sú fázy výroby produktov v továrni.

Aký je rozdiel medzi doprednými sieťami a sieťami spätnej väzby?

Dopredné siete umožňujú, aby sa signál šíril iba jedným smerom – od vstupov k výstupom. Siete so spätnou väzbou nemajú tieto obmedzenia a výstupy neurónov môžu byť privádzané späť do vstupov.

Čo je to tréningová vzorka? aký je jeho význam?

Pred použitím siete v praxi (napríklad na riešenie aktuálnych problémov, na ktoré nemáte odpovede) si musíte zozbierať zbierku problémov s hotovými odpoveďami, na ktorých môžete sieť trénovať. Táto kolekcia sa nazýva tréningová vzorka.

Ak zbierate príliš malú množinu vstupných a výstupných signálov, potom si sieť jednoducho zapamätá odpovede a cieľ učenia sa nedosiahne.

Čo znamená sieťový tréning?

Tréning siete je chápaný ako proces zmeny váhových koeficientov umelých neurónov v sieti s cieľom zvoliť takú kombináciu, ktorá premení vstupný signál na správny výstupný signál.

Čo je učenie pod dohľadom a pod dohľadom?

Keď je sieť trénovaná s učiteľom, signály sa dávajú na jej vstupy a potom sa jej výstup porovnáva s predtým známym správnym výstupom. Tento proces sa opakuje, kým sa nedosiahne požadovaná presnosť odpovedí.

Ak siete poskytujú iba vstupné signály bez toho, aby ich porovnávali s pripravenými výstupmi, potom sieť začne tieto vstupné signály nezávisle klasifikovať. Inými slovami, vykonáva zhlukovanie vstupných signálov. Tento druh učenia sa nazýva učenie bez dozoru.

Vyžaduje školenie, inak je nepravdepodobné, že sa dosiahne správny výsledok. Existuje niekoľko metód na trénovanie neurónovej siete.

Napriek tomu sa medzi nimi rozlišujú tri z najzaujímavejších metód, sú to metódy spätného a elastického rozmnožovania, ako aj genetická analýza. Povedzme si o nich podrobnejšie.

Táto metóda je hlavná a má iný názov - Backpropagation, pretože používa algoritmus gradientového zostupu. To znamená, že pohybom po gradiente sa vypočíta lokálne minimum a maximum funkcie. Pochopenie tejto metódy uľahčí ďalšiu.

Ak znázorníme funkciu vo forme grafu, ktorý určuje závislosť chyby na váhe synapsie, tak na tomto grafe je potrebné nájsť bod s minimálnou hodnotou chyby a s maximálnou. Navyše každá váha musí mať svoje grafické znázornenie a pre každú z nich je potrebné vypočítať globálne minimum.

Samotný gradient je vektorová hodnota, ktorá určuje smer a strmosť svahu. Gradient sa nájde pomocou derivácie funkcie v požadovanom bode. Akonáhle je v určitom bode s náhodne rozloženou hodnotou hmotnosti, vypočíta sa gradient a určí sa smer pohybu zostupu, a tak ďalej v každom ďalšom bode, kým sa nedosiahne lokálne minimum, ktoré neumožňuje ďalší zostup.

Aby ste sa s týmto problémom vyrovnali, je potrebné nastaviť požadovanú hodnotu krútiaceho momentu, ktorá vám umožní prekonať časť plánu a dosiahnuť požadovaný bod. Ak je táto hodnota nedostatočná, potom nebude možné vydutie prekonať, v prípade nastavenia vyššej hodnoty ako je potrebné je šanca na prestrelenie globálneho minima.

Okrem momentu zrýchlenia existuje aj koncept, ktorý určuje celkovú rýchlosť učenia siete. Táto hodnota, rovnako ako predchádzajúca, je hyperparametrom a je vybraná metódou pokus-omyl. Optimálna možnosť nie je nikdy vopred známa, môžete sa ju naučiť iba vykonaním niekoľkých školení a nastavením hodnoty vždy správnym smerom.

Teraz môžete prejsť priamo na metódu výučby a definovať, čo to je. V procese prijímania informácií ich neurónová sieť postupne prenáša z jedného neurónu na druhý prostredníctvom synapsií, až kým sa informácia neobjaví na výstupnej vrstve a následne sa nevydá. Toto sa nazýva dopredný prenos.

Po prijatí výsledku sa vypočíta chyba a na jej základe vykonáme postback. Podstatou ktorej je postupná zmena hmotnosti synapsií počnúc výstupom a smerom k vstupnej vrstve. V tomto prípade sa hodnota hmotnosti mení smerom k lepšiemu výsledku.

Pre túto metódu učenia sú vhodné iba aktivačné funkcie, ktoré sa dajú diferencovať. Keďže spätné šírenie sa vypočítava výpočtom rozdielu vo výsledkoch a jeho vynásobením deriváciou funkcie vstupnej hodnoty.

Pre úspešné vedenie tréningu je potrebné spropagovať vzniknutú chybu na celú váhu siete. Po vypočítaní chyby na výstupnej úrovni a tiež tam môžete vypočítať deltu, ktorá sa bude postupne prenášať medzi neurónmi.

Potom musíte vypočítať gradient pre každý odchádzajúci odkaz. Potom, keď máme všetky potrebné údaje, je potrebné aktualizovať váhy a vypočítať, vďaka funkcii MOP, hodnotu, ktorá sa stane veľkosťou zmeny.

Zároveň nezabúdajte na moment a rýchlosť učenia.

Jedna iterácia MPA poskytuje malé percento zníženia chýb, takže sa musia opakovať znova a znova, kým sa indikátor chyby nepriblíži k 0.

Elastická metóda šírenia

Ďalšou metódou na trénovanie siete je Resilient propagation alebo Rprop. Predchádzajúca tréningová metóda uvedená vyššie má nevýhodu vo forme veľkých časových nákladov na tréningový proces, nevhodných v prípade potreby na dosiahnutie rýchleho výsledku.

Na urýchlenie procesu bolo navrhnutých mnoho ďalších algoritmov na urýchlenie procesu. Jednou z nich je súčasná metóda.

Tento algoritmus používa učenie podľa epoch ako základ a na úpravu váhových koeficientov používa iba znamienka derivátov konkrétneho prípadu. Používa sa určité pravidlo, podľa ktorého sa vypočíta hodnota korekcie váhového koeficientu.

Ak v tejto fáze výpočtov derivát zmení svoje znamienko, znamená to, že zmena bola príliš veľká a miestne minimum sa minulo a je potrebné vykonať rollback, to znamená, že váha by sa mala vrátiť na opačnú pozíciu a množstvo zmeny by sa mali znížiť.

Ak sa znamienko derivácie nezmenilo, potom sa hodnota zmeny hmotnosti naopak zvyšuje pre väčšiu konvergenciu.

Ak sú hlavné parametre korekcie hmotnosti pevné, je možné sa vyhnúť nastaveniu globálnych parametrov. A to bude ďalšia výhoda súčasnej metódy oproti predchádzajúcej. Pre tieto parametre sú odporúčané hodnoty, avšak na ich výber nie sú kladené žiadne obmedzenia.

Aby váha nenabrala príliš veľké alebo malé hodnoty, používajú sa nastavené limity korekčnej hodnoty. Korekčná hodnota sa tiež vypočíta podľa určitého pravidla.

To znamená, že ak derivácia funkcie v určitom bode zmení znamienko z plus na mínus, znamená to, že chyba sa zväčšuje a váha vyžaduje korekciu a klesá, inak sa zvyšuje.

Postupnosť akcií je v tomto prípade nasledovná: inicializuje sa korekčná hodnota, vypočítajú sa parciálne derivácie, vypočíta sa nová korekčná hodnota hodnôt váh, váhy sa opravia, ak nie je podmienka na zastavenie algoritmu splnené, proces pokračuje k výpočtu derivátov a cyklus sa znova opakuje. Tento prístup umožňuje dosiahnuť konvergenciu neurónovej siete niekoľkonásobne rýchlejšie, na rozdiel od predchádzajúcej možnosti trénovania.

Genetický algoritmus

Tretím najzaujímavejším algoritmom učenia pre umelé neurónové siete je genetický algoritmus. Ide o zjednodušenú interpretáciu prirodzeného algoritmu na základe výsledkov kríženia. To znamená, že sa skrížia výsledky, vyberú sa tí najlepší a na ich základe sa vytvorí nová generácia.

Ak výsledok nie je uspokojivý, algoritmus sa opakuje, kým sa generovanie nestane ideálnym. Algoritmus môže skončiť bez dosiahnutia požadovaného výsledku, ak je vyčerpaný počet pokusov alebo je vyčerpaný čas na mutáciu. Tento algoritmus je aplikovateľný na proces optimalizácie hmotnosti neurónovej siete vzhľadom na predvolenú topológiu.

V tomto prípade je váha zakódovaná v binárnom kóde a každý výsledok je určený kompletnou sadou váh. Kvalita sa hodnotí výpočtom výstupnej chyby.

Ďalšie varianty tréningu

Okrem vyššie uvedených metód existujú aj odrody s učiteľom a bez neho. Učenie pod dohľadom sa najčastejšie aplikuje na regresie a klasifikácie.

V tomto prípade vystupuje tréner ako učiteľ a vytvorená sieť ako študent. Tréner nastaví vstupné dáta, respektíve požadovaný výsledok, sieť pochopí, o aký výsledok je potrebné sa pri daných parametroch snažiť.

Učenie bez učiteľa je trochu iné a menej bežné. V tejto situácii neurónová sieť nedosahuje požadovaný výsledok. Takéto školenie je vhodné pre siete, ktorých úlohou je zoskupovať dáta podľa daných parametrov. To znamená, že po analýze veľkého množstva vstupných údajov ich sieť rozdelí do kategórií podľa určitých kritérií.

Posilňovacie učenie sa používa, keď je možné vyhodnotiť konečný výsledok vytvorený sieťou.

To znamená, že určitým povzbudením neurónovej siete vždy, keď sa získaný výsledok bude čo najviac blížiť želanému, dáme jej príležitosť hľadať akékoľvek spôsoby riešenia problému, pokiaľ poskytuje požadované výsledky. .

To umožní sieti hľadať najlepšie spôsoby na dosiahnutie cieľa bez údajov od školiteľa.

Existuje niekoľko ďalších metód výučby:

  • stochastickú metódu možno stručne opísať nasledovne, bola nájdená hodnota aktualizácie, čo znamená, že je okamžite potrebné aktualizovať zodpovedajúcu váhu;
  • dávková metóda sčítava hodnoty všetkých hodnôt v konkrétnom cykle a až po dokončení vykoná aktualizáciu, čo výrazne šetrí čas, ale presnosť trpí;
  • minidávková metóda spája výhody vyššie uvedených metód, váhy sú voľne rozdelené medzi vybrané skupiny a menia sa o súčet korekčného faktora pre všetky váhy v skupine.

V procese akéhokoľvek tréningu musíte použiť hyperparametre, ktorých výber sa vykonáva manuálne, pričom nejde o premenné v určitej rovnici. To je pointa a rýchlosť učenia už spomenutá vyššie.

Medzi tieto parametre patrí aj počet skrytých vrstiev, počet neurónov vo vrstve, prítomnosť vytesňovacích neurónov alebo naopak ich absencia. Prítomnosť hyperparametrov je primárne určená typom umelej neurónovej siete. Správny výber ich hodnôt priamo ovplyvňuje konvergenciu siete.

V prípade oneskorenia procesu učenia existuje riziko situácie, kedy bude potrebné preškolenie siete. Spravidla sa to deje v čase, keď je sieť presýtená dátami a začína sa nie učiť, ale jednoducho si pamätať výsledky pre určitú sadu vstupných parametrov. A keď sa použijú nové parametre, objavia sa zvuky, ktoré ovplyvňujú výsledok.

Aby sa predišlo takejto potrebe, školenie sa musí vykonávať na rôznych vstupných údajoch, ktoré majú medzi sebou značné rozdiely.

Neurónové siete sú veľmi sľubnou oblasťou rozvoja. Po vytvorení neurónovej siete sa toho môžete veľa naučiť, najmä to, čo je človek zvyknutý robiť nevedome, a preto mu nie je známy algoritmus.

Predpokladá sa, že neurónové siete sú analogické s ľudským mozgom, možno je to tak, ale stojí za to pripomenúť, že ide len o kópiu, ktorá sa nejasne podobá svojmu prototypu.

Algoritmy na učenie sa neurónových sietí

V štádiu tréningu sa synaptické koeficienty počítajú v procese riešenia konkrétnych problémov neurónovou sieťou. Riadené učenie neurónovej siete možno považovať za riešenie optimalizačného problému. Jeho účelom je minimalizovať chybové funkcie (rezíduá) na danom súbore príkladov výberom hodnôt váh W.

Existujú dva typy vyučovania: s učiteľom a bez učiteľa. Riadené učenie zahŕňa prezentáciu sekvencie tréningových párov (Xi, D i) sieti, kde Xi je tréningový príklad, D i je štandard, ktorý musí byť získaný na výstupe siete. Pre každé X i sa vypočíta y i a porovná sa s D i. Rozdiel sa používa na korekciu synaptickej matrice. Učenie bez dozoru predpokladá len vyučovanie príkladov X i. Synaptická matica je upravená tak, aby podobné vstupné vektory zodpovedali rovnakým výsledným vektorom.

Na proces učenia sa možno pozerať ako na diskrétny proces opísaný rovnicami konečných rozdielov. Väčšina vyučovacích metód využíva Hubbovu myšlienku opakovania zapamätaného príkladu. Synaptická hmotnosť sa zvyšuje, ak sú aktivované dva neuróny – zdrojový a cieľový. Prírastok hmotnosti je určený súčinom úrovní excitácie dvoch neurónov, ktorý možno zapísať takto:

kde sú hodnoty váhy spojenia z i-tého neurónu na j-tý v predchádzajúcej a aktuálnej iterácii tréningu;

- rýchlosť učenia ();

- výstup neurónu i, ktorý je vstupom pre j-tý neurón v 0-tej iterácii;

- výstup neurónu j v 0. iterácii.

Proces učenia neurónovej siete je považovaný za problém minimalizácie nejakej funkcie F (W) min, kde W je synaptická matica siete.

Na vyriešenie takéhoto problému možno použiť rôzne metódy nelineárneho programovania: gradient, kvázi-newtonské náhodné vyhľadávanie atď.

Spoločné pre metódy trénovania siete je nasledovné: pre nejaký počiatočný stav synaptickej matice sa určí smer poklesu cieľovej funkcie F (W) a v tomto smere sa nájde jej minimum. Pre získaný bod sa opäť vypočíta smer poklesu funkcie a vykoná sa jednorozmerná optimalizácia. Vo všeobecnosti môže byť algoritmus reprezentovaný ako

kde je veľkosť kroku v štádiu 0;

Smer hľadania vo fáze 0.

Najpokročilejšou tréningovou metódou je algoritmus spätného šírenia. Neexistujú žiadne obmedzenia týkajúce sa počtu vrstiev a topológie siete. Jedinou požiadavkou je, aby bola budiaca funkcia všade diferencovateľná. Typicky sa používa sigmoidná (logistická) funkcia. Backpropagation je metóda učenia pod dohľadom (obrázok 6.5).

Ryža. 6.5. Tréningová schéma neurónovej siete s učiteľom

Algoritmus spätného šírenia je vývojom zovšeobecneného pravidla delta a je to algoritmus zostupu gradientu, ktorý minimalizuje celkovú druhú druhú chybu. Hlavným cieľom je vypočítať citlivosť sieťovej chyby na zmeny váh.

Nech neurónová sieť zodpovedá schéme na obr. 6.2. Potom je možné opísať algoritmus učenia:

1. Nastavte synaptické matice W, W *.

2. Pre každý tréningový pár (X i, D i) vykonajte nasledujúce akcie:

odovzdať ďalšiu sadu trénovacích údajov na vstup skrytej vrstvy;

vypočítajte výstup skrytej vrstvy:

;

vypočítajte výstup výstupnej vrstvy:

.

medzi získanými výstupnými hodnotami siete a referenčnými hodnotami;

pre neuróny skrytej vrstvy.

Opakujte kroky 2 a 3, kým nebudú chyby prijateľné.

Príklad 6.3. Nech neurónová sieť zodpovedá schéme na obr. 6.2. V tomto prípade n = 2, m = 2, k = 1 (obr. 6.6). Učebná množina = (1; 2), D = 3. Je potrebné trénovať neurónovú sieť na sčítanie čísel 1 a 2. Všetky neuróny sú excitované sigmoidnou funkciou. Synaptické matice pre skrytú vrstvu v prvej iterácii sú špecifikované:

a vektor pre výstupnú vrstvu

Ryža. 6.6. Neurónová sieť s jednou skrytou vrstvou

Vypočítajte vážený súčet

Vážený vstup pre výstupnú vrstvu

Súčasne požadovaná hodnota y (1), prevedená funkciou budenia

D = F(3) = 0,952.

Preto stredná kvadratická chyba (RMSE):

Skutočný výstup a požadovaný výstup sa nezhodujú, takže synaptické váhy by sa mali zmeniť. K tomu je potrebné zistiť, ako tieto zmeny ovplyvnia veľkosť chyby. Analýza podľa algoritmu spätného šírenia sa vykonáva od výstupnej vrstvy siete smerom k vstupu:

1) najprv zistite, ako zmeny výstupu ovplyvňujú chybu siete. Na to stačí určiť rýchlosť zmeny chyby pri danej výstupnej hodnote. Rýchlosť sa určuje pomocou derivácie. Diferenciácia sa vykonáva na argumente y (1).

Prijatá odozva rýchlosti zmeny chyby pri danej hodnote výstupu je negatívna, čo naznačuje potrebu zvýšenia hodnoty na výstupe;

2) určiť, ako každý z
vstupy výstupnej vrstvy. Aby sme to dosiahli, určíme rýchlosť zmeny sieťovej chyby pri zmene váženého priemerného vstupu výstupnej vrstvy V * (1):

Hodnota EQ udáva, že rýchlosť zmeny chyby v
proces zmeny váženého priemerného vstupu výstupného neurónu je výrazne nižší v porovnaní s rýchlosťou odozvy siete na zmenu jej výstupu.

Neurónová sieť- pokus použiť matematické modely na reprodukciu práce ľudského mozgu pri vytváraní mašiniek.

Umelá neurónová sieť zvyčajne vyučovaný s učiteľom. To znamená prítomnosť trénovacej sady (dataset), ktorá obsahuje príklady so skutočnými hodnotami: značky, triedy, indikátory.

Na trénovanie neurónových sietí sa používajú aj neoznačené súpravy, ale tým sa tu nebudeme zaoberať.

Napríklad, ak chcete vytvoriť neurónovú sieť na vyhodnotenie sentimentu textu, súbor údajov bude zoznam návrhov s emocionálnym hodnotením zodpovedajúcim každému. Určuje sa tonalita textu znamenia(slová, frázy, štruktúra vety), ktoré dávajú negatívnu alebo pozitívnu konotáciu. Závažia vlastnosti pri konečnom hodnotení sentimentu textu (pozitívny, negatívny, neutrálny) závisia od matematickej funkcie, ktorá sa počíta pri trénovaní neurónovej siete.

Ľudia zvykli vytvárať vlastnosti ručne. Čím viac funkcií a čím presnejšie sú vybrané váhy, tým presnejšia je odpoveď. Neurónová sieť tento proces zautomatizovala.

Umelá neurónová sieť pozostáva z troch komponentov:

  • Vstupná vrstva;
  • Skryté (výpočtové) vrstvy;
  • Výstupná vrstva.

Prebieha v dvoch etapách:

  • chyby.

Počas dopredného šírenia chyby sa robí predpoveď odpovede. Spätné šírenie minimalizuje chybu medzi skutočnou odozvou a predpovedanou odozvou.


Priama distribúcia

Nastavme počiatočné váhy náhodným spôsobom:

Vynásobme vstupné údaje váhami, aby sme vytvorili skrytú vrstvu:

  • h1 = (x1 * š1) + (x2 * š1)
  • v2 = (x1 * š2) + (x2 * š2)
  • v3 = (x1 * š3) + (x2 * š3)

Výstup zo skrytej vrstvy prechádza cez nelineárnu funkciu (), aby sa získal výstup siete:

  • y_ = fn (h1, h2, h3)

Spätná propagácia

  • Celková chyba (total_error) sa vypočíta ako rozdiel medzi očakávanou hodnotou "y" (z trénovacej množiny) a získanou hodnotou "y_" (vypočítanou pri doprednom šírení chyby), prechádzajúcou cez nákladovú funkciu.
  • Parciálna derivácia chyby sa vypočíta pre každú váhu (tieto parciálne rozdiely odrážajú príspevok každej váhy k celkovej strate).
  • Tieto rozdiely sa potom vynásobia číslom nazývaným rýchlosť učenia alebo rýchlosť učenia (η).

Výsledok sa potom odpočíta od zodpovedajúcich váh.

Výsledkom budú nasledujúce aktualizované váhy:

  • w1 = w1 - (η * ∂ (chyba) / ∂ (w1))
  • w2 = w2 - (η * ∂ (chyba) / ∂ (w2))
  • w3 = w3 - (η * ∂ (chyba) / ∂ (w3))

Skutočnosť, že váhy predpokladáme a inicializujeme náhodne a tie budú dávať presné odpovede, neznie úplne rozumne, no napriek tomu to funguje dobre.


Populárny meme o tom, ako sa Carlson stal vývojárom Data Science

Ak poznáte Taylorovu sériu, spätné šírenie chyby má rovnaký konečný výsledok. Len namiesto nekonečného radu sa snažíme optimalizovať len jeho prvý člen.

Offsety sú váhy pridané do skrytých vrstiev. Tiež sú náhodne inicializované a aktualizované rovnako ako skrytá vrstva. Úlohou skrytej vrstvy je definovať tvar základnej funkcie v dátach, zatiaľ čo úlohou offsetu je odsunúť nájdenú funkciu nabok tak, aby sa prekrývala s pôvodnou funkciou.

Parciálne deriváty

Čiastočné derivácie sa dajú vypočítať, takže je známe, aký bol príspevok k chybe pre každú váhu. Potreba derivátov je zrejmá. Predstavte si neurónovú sieť, ktorá sa snaží nájsť optimálnu rýchlosť pre autonómne vozidlo. Ak auto zistí, že ide rýchlejšie alebo pomalšie, než je požadovaná rýchlosť, neurónová sieť zmení rýchlosť, pričom auto zrýchli alebo spomalí. Čo je zrýchľovanie / spomaľovanie súčasne? Deriváty rýchlosti.

Pozrime sa na potrebu parciálnych derivácií na príklade.

Predpokladajme, že deti sú požiadané, aby hádzali šípku na cieľ a mierili do stredu. Tu sú výsledky:

Ak teraz nájdeme všeobecnú chybu a jednoducho ju odpočítame od všetkých váh, zhrnieme chyby, ktorých sa dopustila každá z nich. Povedzme teda, že dieťa zasiahlo príliš nízko, ale žiadame všetky deti, aby sa snažili zasiahnuť cieľ, potom to povedie k nasledujúcemu obrázku:

Chyba viacerých detí sa môže znížiť, ale celková chyba sa stále zvyšuje.

Po nájdení parciálnych derivácií zistíme chyby zodpovedajúce každej váhe samostatne. Ak selektívne opravíte váhy, môžete získať nasledovné:

Hyperparametre

Neurónová sieť sa používa na automatizáciu výberu funkcií, ale niektoré parametre sa konfigurujú manuálne.

Miera učenia

Rýchlosť učenia je veľmi dôležitý hyperparameter. Ak je rýchlosť učenia príliš nízka, potom aj po dlhodobom trénovaní neurónovej siete bude mať k optimálnym výsledkom ďaleko. Výsledky budú vyzerať asi takto:

Na druhej strane, ak je rýchlosť učenia príliš vysoká, sieť bude reagovať veľmi rýchlo. Výsledok je nasledujúci:

Aktivačná funkcia

Aktivačná funkcia je jedným z najsilnejších nástrojov, ktoré ovplyvňujú silu pripisovanú neurónovým sieťam. Čiastočne určuje, ktoré neuróny budú aktivované, inými slovami, a aké informácie sa budú prenášať do nasledujúcich vrstiev.

Bez aktivačných funkcií strácajú hlboké siete veľkú časť svojej schopnosti učiť sa. Nelinearita týchto funkcií je zodpovedná za zvýšenie stupňa voľnosti, čo umožňuje zovšeobecnenie vysokorozmerných problémov v nižších dimenziách. Nasledujú príklady bežných aktivačných funkcií:

Stratová funkcia

Stratová funkcia je v centre neurónovej siete. Používa sa na výpočet chyby medzi skutočnými a prijatými odpoveďami. Naším globálnym cieľom je minimalizovať túto chybu. Stratová funkcia teda efektívne približuje tréning neurónovej siete k tomuto cieľu.

Stratová funkcia meria, „aká dobrá“ je neurónová sieť pre danú trénovaciu množinu a očakávané reakcie. Môže tiež závisieť od premenných, ako sú váhy a odchýlky.

Stratová funkcia je jednorozmerná a nie vektorová, pretože odhaduje, ako dobre funguje neurónová sieť ako celok.

Niektoré významné stratové funkcie:

  • Štvorec (štandardná odchýlka);
  • krížová entropia;
  • Exponenciálny (AdaBoost);
  • Kullback – Leiblerova vzdialenosť alebo zisk informácií.

Štandardná odchýlka je najjednoduchšia a najčastejšie používaná funkcia straty. Nastavuje sa takto:

Stratová funkcia v neurónovej sieti musí spĺňať dve podmienky:

  • Stratová funkcia by mala byť napísaná ako priemer;
  • Stratová funkcia by nemala závisieť od žiadnych aktivačných hodnôt neurónovej siete, okrem hodnôt uvedených na výstupe.

Hlboké neurónové siete

(deep learning) je trieda algoritmov, ktoré sa učia chápať údaje hlbšie (abstraktnejšie). Populárne algoritmy pre hlboké učenie sa neurónových sietí sú uvedené v diagrame nižšie.

Populárne algoritmy neurónových sietí (http://www.asimovinstitute.org/neural-network-zoo)

Formálnejšie v hlbokom učení:

  • Kaskáda (potrubie, ako sekvenčne prenášaný tok) sa používa zo súboru vrstiev spracovania (nelineárnych) na extrahovanie a transformáciu prvkov;
  • Na základe štúdia vlastností (prezentácia informácií) v dátach bez riadeného učenia. Funkcie vyššej úrovne (ktoré sú v posledných vrstvách) sa získavajú z funkcií nižšej úrovne (ktoré sú vo vrstvách počiatočných vrstiev);
  • Skúma vrstvené pohľady, ktoré zodpovedajú rôznym úrovniam abstrakcie; úrovne tvoria prezentačnú hierarchiu.

Príklad

Zvážte jednovrstvovú neurónovú sieť:

Tu sa trénuje prvá vrstva (zelené neuróny), jednoducho sa prenáša na výstup.

Zatiaľ čo v prípade dvojvrstvovej neurónovej siete, bez ohľadu na to, ako je trénovaná zelená skrytá vrstva, je potom odovzdaná modrej skrytej vrstve, kde pokračuje v trénovaní:

Preto čím väčší je počet skrytých vrstiev, tým väčšie sú možnosti učenia pre sieť.

Nezamieňať so širokou neurónovou sieťou.

V tomto prípade veľký počet neurónov v jednej vrstve nevedie k hlbokému pochopeniu dát. To však vedie k štúdiu ďalších funkcií.

Príklad:

Štúdium anglickej gramatiky si vyžaduje poznať obrovské množstvo pojmov. V tomto prípade jednovrstvová široká neurónová sieť funguje oveľa lepšie ako hlboká neurónová sieť, ktorá je oveľa menšia.

V prípade štúdia Fourierovej transformácie musí byť študent (neurónová sieť) hlboký, pretože nie je veľa pojmov, ktoré je potrebné poznať, ale každý z nich je dosť zložitý a vyžaduje si hlboké pochopenie.

Hlavná vec je rovnováha

Je veľmi lákavé používať hlboké a široké neurónové siete na každú úlohu. Ale to môže byť zlý nápad, pretože:

  • Obidve vyžadujú podstatne viac tréningových dát na dosiahnutie minimálnej požadovanej presnosti;
  • Oba majú exponenciálnu zložitosť;
  • Príliš hlboká neurónová sieť sa pokúsi prelomiť základné koncepty, no vytvorí chybné predpoklady a pokúsi sa nájsť pseudozávislosti, ktoré neexistujú;
  • Neurónová sieť, ktorá je príliš široká, sa pokúsi nájsť viac funkcií, ako je. Začne teda podobne ako ten predchádzajúci vytvárať nesprávne predpoklady o údajoch.

Dimenzionálna kliatba

Prekliatie dimenzionality sa vzťahuje na rôzne javy, ktoré vznikajú pri analýze a organizovaní údajov vo viacrozmerných priestoroch (často so stovkami alebo tisíckami dimenzií) a nevyskytujú sa v nízkorozmerných situáciách.

Anglická gramatika má obrovské množstvo atribútov, ktoré ju ovplyvňujú. V strojovom učení ich musíme reprezentovať ako prvky vo forme poľa / matice s konečnou a výrazne kratšou dĺžkou (ako je počet existujúcich prvkov). Na tento účel siete zovšeobecňujú tieto funkcie. To spôsobuje dva problémy:

  • V dôsledku nesprávnych predpokladov dochádza k zaujatosti. Vysoká odchýlka môže spôsobiť, že algoritmu chýba významný vzťah medzi funkciami a cieľovými premennými. Tento jav sa nazýva underlearning.
  • Rozptyl sa zvyšuje z malých odchýlok v trénovacej množine v dôsledku nedostatočného naučenia funkcií. Vysoká odchýlka vedie k nadmernej montáži, chyby sú vnímané ako spoľahlivé informácie.

Kompromis

V počiatočných štádiách učenia je zaujatosť veľká, pretože výstup zo siete je ďaleko od želania. A rozptyl je veľmi malý, keďže údaje majú zatiaľ malý vplyv.

Na konci tréningu je odchýlka malá, pretože sieť identifikovala hlavnú funkciu v údajoch. Ak je však školenie príliš dlhé, sieť sa naučí aj šum, ktorý je súčasťou tohto súboru údajov. To vedie k veľkým rozdielom vo výsledkoch pri testovaní na rôznych súboroch, pretože šum sa mení z jedného súboru údajov na druhý.

naozaj,

Algoritmy s veľkým skreslením sú zvyčajne založené na jednoduchších modeloch, ktoré nie sú náchylné na nadmernú montáž, ale môžu podliezať a nedokážu odhaliť dôležité vzory alebo vlastnosti prvkov. Modely s nízkym skreslením a vysokým rozptylom sú zvyčajne zložitejšie z hľadiska ich štruktúry, čo im umožňuje presnejšie reprezentovať tréningovú množinu. Môžu však zobraziť veľa hluku z tréningovej súpravy, vďaka čomu sú ich predpovede menej presné napriek ich zvýšenej zložitosti.

Preto je vo všeobecnosti nemožné mať súčasne malú odchýlku a malý rozptyl.

Teraz existuje veľa nástrojov, pomocou ktorých môžete ľahko vytvárať zložité modely strojového učenia, rekvalifikácia je ústredná. Pretože skreslenie sa objaví, keď sieť nedostane dostatok informácií. Ale čím viac príkladov je, tým viac variant závislostí a variability sa objavuje v týchto koreláciách.