Ako funguje neurónová sieť. Algoritmy, výcvik, aktivácia a strata

Ako funguje neurónová sieť

Pod a neurónová sieť rozumieme pokus čiastočne reprodukovať prácu ľudského mozgu s cieľom vypracovať mechanizmy s umelou inteligenciou.

Na dosiahnutie týchto cieľov je potrebný tréningový súbor (dátový súbor). V ideálnom prípade sa táto sada skladá z príkladov so skutočnými hodnotami: značky, triedy, miery.

Napríklad, ak cvičná veta analyzuje tonalitu textu, je potrebný zoznam viet s príslušnými emocionálnymi hodnotami. Označme vety ako X a značky ako Y.. Funkcia určuje vzťah medzi nimi. V prípade analýzy tonality textu ide o prvky, ako sú slová, frázy, štruktúra vety, vďaka ktorým je veta negatívna alebo pozitívna.

V minulosti sa tieto funkcie generovali manuálne, tento proces sa nazýva vytváranie funkcií alebo vytváranie funkcií. V posledných rokoch bol tento proces automatizovaný neurónovou sieťou.

sieť

Tri najdôležitejšie komponenty umelej neurónovej siete sú:

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

Výcvik neurónových sietí prebieha v dvoch fázach:

  • Priame šírenie
  • Spätné šírenie

Pri priamom šírení sa predpovedá odpoveď. Zvláštnosťou spätnej stránky je minimalizácia chyby medzi skutočnou odpoveďou a predpovedanou.

Priame šírenie

Počiatočné váhy dajme náhodne:

  • w1
  • w2

Potom vynásobme vstupné údaje váhami a vytvoríme skrytú vrstvu:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Nelineárna funkcia (aktivačná funkcia) prenáša výstupné údaje zo skrytej vrstvy, aby získala sieťový výstup:

  • y_ = fn (h1, h2, h3)

Spätné šírenie

  • Celková chyba (total_error) je rozdiel medzi očakávanou hodnotou „y“ (z tréningovej množiny) a získanou hodnotou „y_“ (t. J. Je vypočítaná vo fáze priameho šírenia), ktorou prechádza stratová funkcia (nákladová funkcia).
  • Pre každú váhu sa počíta čiastočná derivácia chyby. Tieto čiastočné diferenciály sa považujú za vyjadrenie podielu každej váhy na celkovej chybe (total_loss).
  • V ďalšej fáze sa tieto diferenciály vynásobia číslom, ktoré sa nazýva rýchlosť učenia alebo rýchlosť učenia (η).

Nakoniec sa výsledok odpočíta od zodpovedajúcich vážení.

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

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

Tu je potrebné si všimnúť rozpor: hoci sa váhy predpokladajú a inicializujú náhodne, dávajú presné odpovede. To neznie celkom rozumne, ale stále to funguje dobre.

Spätné šírenie možno porovnať s Taylorovými sériami: konečné výsledky sú rovnaké. Rozdiel je však v tom, že optimalizovaný nie je nekonečný riadok, ale jeho prvý člen.

Posunutia sú váhy, ktoré sa pridajú k skrytým vrstvám. Rovnako sa náhodne inicializujú a aktualizujú ako skrytá vrstva. Ako sa však líšia? Úlohou skrytej vrstvy je určiť tvar základnej funkcie v dátach. Úlohou posunutia je na druhej strane vyrovnať hlavnú funkciu tak, aby sa čiastočne zhodovala s výstupnou funkciou.

Čiastočné deriváty

Môžu sa vypočítať čiastočné deriváty. Preto je známy príspevok k chybe pre každú váhu. Potreba derivácií je zrejmá. Ako príklad možno uviesť neurónovú sieť, ktorá sa pokúša určiť optimálnu rýchlosť bezpilotného vozidla. Ak auto zistí, že jazdí rýchlejšie alebo pomalšie ako je požadovaná rýchlosť, neurónová sieť upraví rýchlosť zrýchlením alebo spomalením. Čo sa zrýchľuje/spomaľuje? Odvodené rýchlosti.

Uvádza sa niekoľko príkladov na analýzu potreby čiastkových derivácií.

Napríklad deti dostanú za úlohu hodiť šíp na cieľ mierením na stred. Tu sú výsledky:

Keď sa zistí bežná chyba, ktorá sa jednoducho odpočíta od všetkých váh, chyby, ktoré urobilo každé dieťa, sa zovšeobecnia. Predpokladajme, že dieťa bolo hodené príliš nízko, aj keď boli všetky deti vyzvané, aby sa pokúsili zasiahnuť cieľ. To vedie k nasledujúcim výsledkom:

Chyba niektorých detí sa dá znížiť, ale celková chyba sa stále zvyšuje.

Ak sa nájdu čiastočné deriváty, dajú sa identifikovať chyby, ktoré zodpovedajú jednotlivo každej váhe. Ak sa váhy upravia náhodne, získa sa tento výsledok:

Hyperparametre

Neurónová sieť sa používa na automatizáciu výberu funkcií. Niektoré parametre sa však nastavujú manuálne.

Miera učenia

Rýchlosť učenia je jedným z veľmi dôležitých hyperparametrov. Ak je rýchlosť učenia nízka, neurónová sieť nedosahuje optimálne výsledky ani po nepretržitom tréningu. Výsledky môžu byť prezentované takto:

Na druhej strane neurónová sieť dáva odpovede veľmi rýchlo, ak je rýchlosť učenia vysoká. Tu sú výsledky:

Aktivačná funkcia

Aktivačná funkcia je jedným z najsilnejších nástrojov, pretože ovplyvňuje výkon priradený neurónovým sieťam. Čiastočne určuje, ktoré neuróny sú aktivované; H. aké informácie sa odovzdávajú následným zmenám.

Bez aktivačných funkcií hlboké siete strácajú veľkú časť svojej schopnosti učiť sa. Pretože nelinearita týchto funkcií je zodpovedná za zvýšenie stupňa voľnosti, možno problémy vysokej dimenzie zovšeobecniť na nižšie dimenzie. Nasledujú príklady bežných aktivačných funkcií:

Stratová funkcia

Stratová funkcia je v strede 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ť tieto chyby. Týmto spôsobom stratová funkcia účinne približuje neurálnu sieť k tomuto cieľu.

Stratová funkcia meria „ako dobrá“ je neurónová sieť vo vzťahu k týmto tréningovým údajom a očakávaným reakciám. Môže tiež závisieť od premenných, ako sú váhy a posuny.

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

Niektoré známe stratové funkcie sú:

  • Kvadratická (priemerná štvorcová odchýlka)
  • Krížová entropia
  • Exponenciály (AdaBoost/Adaptive Boosting)
  • Kullback-Leiblerova divergencia alebo získanie informácií.

Odchýlka druhej mocniny je najjednoduchšia a najčastejšie používaná stratová funkcia. Je nastavený takto:

Existujú dve podmienky, ktoré musí stratová funkcia v neurónovej sieti spĺňať:

  • Stratová funkcia sa zobrazuje ako priemer.
  • Funkcia straty nezávisí od žiadnych aktivačných hodnôt neurónovej siete. Výnimkou sú hodnoty, ktoré sú výstupom na výstupe.

Hlboké neurónové siete

Hlboké učenie sa týka triedy algoritmov strojového učenia, ktoré sú trénované s cieľom hlbšie (abstraktnejšie) porozumieť údajom. Nasledujúca schéma predstavuje populárne algoritmy neurónovej siete s hlbokým učením:

Niektoré podrobnosti o hlbokom učení:

  • Kaskáda sa používa na extrakciu a transformáciu prvkov z mnohých procesných vrstiev (nelineárnych), t. J. Potrubia ako sekvenčne prenášaného toku.
  • Hlboké učenie je založené na vlastnostiach učenia (zastúpenie informácií) v dátach bez učenia pod dohľadom. Funkcie vyššej úrovne, ktoré sú v posledných vrstvách, sa získavajú z funkcií nižšej úrovne, ktoré sú v počiatočných vrstvách.
  • Hlboké učenie skúma vrstvené reprezentácie, ktoré zodpovedajú rôznym úrovniam abstrakcie. Tieto úrovne tvoria hierarchiu zobrazení.

príklad

Ďalej je znázornená neurónová sieť s jednou vrstvou:

Je potrebné poznamenať, že v tomto prípade sa trénuje iba prvá vrstva (zelené neuróny), ktorá sa jednoducho odovzdá východu.

Zatiaľ čo v prípade dvojvrstvovej neurónovej siete sa bez ohľadu na to, ako sa zelená skrytá vrstva trénuje, prenáša do modrej skrytej vrstvy, kde výcvik pokračuje:

Podľa toho možno vyvodiť nasledujúci záver: čím vyšší je počet skrytých vrstiev, tým väčšie sú možnosti tréningu v sieti.

Nesmie sa zamieňať so širokou neurónovou sieťou, kde veľké množstvo neurónov vo vrstve nespôsobuje hlboké pochopenie údajov, ale vedie k poznaniu väčšieho počtu funkcií.

Keď sa učíte nemeckú gramatiku, musíte ovládať rôzne výrazy. V tomto prípade má väčší zmysel použiť jednovrstvovú širokú neurónovú sieť ako hlbokú neurónovú sieť, ktorá je oveľa menšia.

Keď sa učíme Fourierovu transformáciu, musí byť neurónová sieť hlboká, pretože ich nie je toľko, aby sme ich vedeli poznať, ale každý z nich je dosť komplikovaný a vyžaduje hlboké porozumenie.

Najdôležitejšia je rovnováha

Pre každú úlohu je veľmi užitočné použiť hlboké a široké neurónové siete. Tu je niekoľko dôvodov, prečo to nie je vždy dobrý nápad:

  • Pre obe siete je na dosiahnutie požadovanej minimálnej presnosti potrebné na zaškolenie oveľa väčšie množstvo údajov.
  • Exponenciálna zložitosť je typická pre obe siete.
  • Príliš hlboká neurónová sieť sa pokúsi zničiť základné pojmy. Pritom urobí nesprávne predpovede a nájde pseudo-závislosti, ktoré vôbec neexistujú.
  • Príliš široká neurónová sieť sa pokúsi nájsť viac funkcií, ako je k dispozícii. Rovnako ako hlboká sieť vytvorí nepravdivé predpovede o údajoch.

Prekliatie dimenzionality

Prekliatie dimenzie je termín používaný na označenie rôznych javov pri analýze a organizovaní údajov vo viacrozmerných priestoroch (často so stovkami alebo tisíckami dimenzií). Nevyskytuje sa v nízkodimenzionálnych situáciách.

Gramatika nemeckého jazyka má veľké množstvo atribútov, ktoré ho ovplyvňujú. V strojovom učení sú reprezentované ako prvky vo forme poľa/matice konečných a výrazne kratšej dĺžky ako počet existujúcich funkcií. Za týmto účelom siete tieto charakteristiky zovšeobecňujú. To vedie k dvom problémom:

  • Nesprávne predpoklady spôsobujú posuny. Vysoký posun môže viesť k tomu, že si algoritmus nevšimne podstatný vzťah medzi charakteristikami a cieľovými premennými. Tento jav sa nazýva nedostatočné školenie.
  • Malé odchýlky vo veľkom počte tréningových údajov zväčšujú rozptyl, pretože charakteristiky nie sú dostatočne naučené. Vysoká variancia spôsobuje pretrénovanie, chyby sú vnímané ako spoľahlivé informácie.

Kompromis

V počiatočnej fáze výcviku je posun veľký, pretože výstup zo siete nie je ani zďaleka potrebný výsledok. A odchýlka je príliš malá kvôli momentálne nízkemu vplyvu údajov.

Na konci školenia je posun malý, pretože hlavná funkcia bola nájdená v dátach zo siete. Vďaka ďalšiemu tréningu sieť tiež skúma šum, ktorý je typický pre túto množinu údajov. To spôsobuje veľký rozptyl výsledkov pri testovaní na rôzne väčšiny, pretože šum sa mení od množiny údajov k množine údajov.

V skutočnosti sú algoritmy veľkého posunu zvyčajne založené na jednoduchých modeloch, ktoré nie sú náchylné na pretrénovanie. Môžu však byť nedostatočne vyškolení a nedokážu určiť dôležité zákonitosti alebo vlastnosti prvkov. Modely s malým posunom a veľkou odchýlkou ​​majú tendenciu byť zložitejšie, pokiaľ ide o ich štruktúru, čo umožňuje presnejšie znázornenie cvičnej množiny. Pretože dokážu z tréningovej sady zmapovať veľa šumu, sú ich predpovede aj napriek ich zložitosti menej presné.

Z toho možno vyvodiť záver, že súčasná existencia malého posunu a malej odchýlky je zvyčajne nemožná.

V dnešnej dobe existuje veľa nástrojov, ktoré uľahčujú vytváranie komplikovaných modelov strojového učenia, pričom pretrénovanie je na prvom mieste. Keď sieť prijíma nedostatočné informácie, dôjde k posunu. Čím viac príkladov sa trénuje, tým viac variantov závislostí a premenných v týchto koreláciách vzniká.