Algoritmus na trénovanie viacvrstvovej neurónovej siete metódou backpropagation. Metóda spätného šírenia: matematika, príklady, kód

Prihlásiť sa na odber
Pripojte sa ku komunite „koon.ru“!
V kontakte s:

Metóda spätného šírenia

Metóda spätného šírenia je metóda na trénovanie viacvrstvového perceptrónu, jedna z možností učenia pod dohľadom. Túto metódu prvýkrát opísal Paul J. Verbos. Ďalej výrazne rozvinuli v roku 1986 David I. Rumelhart, J. E. Hinton a Ronald J. Williams. Ide o iteračný gradientový algoritmus, ktorý sa používa na minimalizáciu prevádzkovej chyby viacvrstvového perceptrónu a získanie požadovaného výstupu.

Hlavnou myšlienkou tejto metódy je šírenie chybových signálov z výstupov siete na jej vstupy v smere opačnom k ​​priamemu šíreniu signálov v normálnej prevádzke. Bartsev a Okhonin sa okamžite ponúkli všeobecná metóda(„princíp duality“), použiteľný na širšiu triedu systémov vrátane oneskorených systémov, distribuovaných systémov atď.

Metóda je modifikáciou klasický spôsob gradientný zostup.

Algoritmus spätného šírenia

Majme viacvrstvovú doprednú sieť s náhodnými váhovými koeficientmi. Existuje nejaký tréningový set pozostávajúci z párov sieťový vstup - požadovaný výstup. Nech Y označuje skutočnú výstupnú hodnotu našej siete, ktorá je na začiatku takmer náhodná kvôli náhodnosti váhových koeficientov.

Tréning pozostáva z výberu váhových koeficientov takým spôsobom, aby sa minimalizovala nejaká objektívna funkcia. Ako objektívnu funkciu zvážte súčet štvorcových chýb siete pomocou príkladov z trénovacej množiny.

kde je skutočný výstup N-tej výstupnej vrstvy siete pre p-tý neurón na j-tom tréningovom príklade, požadovaný výstup. To znamená, že minimalizovaním takéhoto funkcionálu získame riešenie metódou najmenších štvorcov.

Keďže váhové koeficienty vstupujú do závislosti nelineárne, na nájdenie minima použijeme metódu najstrmšieho zostupu. To znamená, že v každom kroku učenia zmeníme váhové koeficienty podľa vzorca

kde je váhový koeficient j-tého neurónu n-tej vrstvy pre komunikáciu s i-tým neurónom (n-1) vrstvy.

Parameter sa nazýva parameter rýchlosti učenia.

Preto je potrebné určiť parciálne derivácie cieľovej funkcie E nad všetkými váhovými koeficientmi siete. Podľa pravidiel diferenciácie komplexná funkcia

kde je výstup a je vážený súčet vstupov j-tého neurónu n-tej vrstvy. Všimnite si, že ak poznáme aktivačnú funkciu, môžeme vypočítať. Napríklad pre sigmoid sa táto hodnota bude rovnať

Tretí faktor / nie je nič iné ako výstup i-tého neurónu (n-1)-tej vrstvy, tj.

Čiastočné derivácie cieľovej funkcie vzhľadom na váhy neurónov výstupnej vrstvy sa teraz dajú ľahko vypočítať. Budeme mať rozlišovanie (1) a berúc do úvahy (3) a (5).

Predstavme si notáciu

Potom pre neuróny výstupnej vrstvy

Pre váhy neurónov vnútorné vrstvy nemôžeme okamžite zapísať, čomu sa rovná prvý faktor z (4), ale môžeme ho znázorniť takto:

Všimnite si, že v tomto vzorci prvé dva faktory nie sú ničím iným. Pomocou (9) je teda možné vyjadriť hodnoty pre neuróny n-tej vrstvy ako neuróny (n+1)-tej vrstvy. Keďže pre poslednú vrstvu je ľahké vypočítať pomocou (8), je možné použiť rekurzívny vzorec

získať hodnoty pre všetky neuróny všetkých vrstiev.

Nakoniec je možné do formulára zapísať vzorec (2) na úpravu váhových koeficientov

Kompletný algoritmus na trénovanie neurónovej siete pomocou algoritmu spätného šírenia je teda skonštruovaný nasledovne.

Všetkým váhovým koeficientom siete priraďujeme náhodné počiatočné hodnoty. V tomto prípade sieť vykoná určitú náhodnú transformáciu vstupných signálov a hodnoty cieľovej funkcie (1) budú veľké.

Priveďte jeden zo vstupných vektorov z trénovacej množiny na vstup siete. Vypočítajte výstupné hodnoty siete a zapamätajte si výstupné hodnoty každého z neurónov.

Upravte váhy siete:

Hodnotenie výkonnosti siete

V prípadoch, keď je možné vyhodnotiť výkon siete, môžu byť trénovacie neurónové siete reprezentované ako optimalizačný problém. Hodnotiť znamená kvantitatívne naznačiť, či sieť rieši zadané úlohy dobre alebo zle. Na tento účel je skonštruovaná hodnotiaca funkcia. Spravidla závisí explicitne od výstupných signálov siete a implicitne (prostredníctvom prevádzky) od všetkých jej parametrov. Najjednoduchším a najbežnejším príkladom hodnotenia je súčet štvorcových vzdialeností od výstupných signálov siete k ich požadovaným hodnotám:

kde je požadovaná hodnota výstupného signálu.

Metóda najmenších štvorcov nie je vždy najlepšia voľba hodnotenia. Starostlivý návrh hodnotiacej funkcie umožňuje zvýšiť efektivitu sieťového tréningu o rádovo, ako aj získať Ďalšie informácie- „úroveň dôvery“ siete v danú odpoveď.

Nevýhody algoritmu

Napriek početným úspešných aplikácií backpropagation nie je všeliek. Najviac problémov prináša nekonečne dlhý proces učenia. IN komplexné úlohy Natrénovanie siete môže trvať dni alebo dokonca týždne, alebo sa nemusí učiť vôbec. Dôvodom môže byť jeden z dôvodov popísaných nižšie.

Paralýza siete

Počas procesu sieťového tréningu môžu byť hodnoty hmotnosti v dôsledku korekcie veľmi veľké. To môže viesť k tomu, že všetky alebo väčšina neurónov bude pracovať pri veľmi vysokých hodnotách OUT v oblasti, kde je derivácia funkcie kontrakcie veľmi malá. Keďže chyba odoslaná späť počas procesu učenia je úmerná tejto derivácii, proces učenia môže prakticky zamrznúť. Z teoretického hľadiska je tento problém zle pochopený. Tomu sa zvyčajne predíde znížením veľkosti kroku h, ale tým sa zvýši čas tréningu. Na prevenciu alebo zotavenie sa z paralýzy sa použili rôzne heuristiky, ale zatiaľ ich možno považovať len za experimentálne.

Miestne minimá

Spätné šírenie využíva formu zostupu gradientu, to znamená, že klesá po chybovej ploche a plynule upravuje váhy smerom k minimu. Chybový povrch komplexnej siete je vysoko členitý a pozostáva z kopcov, údolí, záhybov a roklín vo vysokorozmernom priestore. Sieť môže spadnúť do miestneho minima (plytké údolie), keď je v blízkosti oveľa hlbšie minimum. V miestnom minimálnom bode všetky smery smerujú nahor a sieť z neho nemôže uniknúť. Hlavným problémom pri trénovaní neurónových sietí sú práve metódy opúšťania lokálnych miním: pri každom opustení lokálneho minima sa opäť hľadá ďalšie lokálne minimum pomocou rovnakej metódy spätného šírenia chýb, až kým z neho už nie je možné nájsť cestu von. .

Veľkosť kroku

Dôkladné preskúmanie dôkazu konvergencie ukazuje, že korekcie hmotnosti sa považujú za nekonečne malé. Je jasné, že to v praxi nie je možné, pretože to vedie k nekonečnému času učenia. Veľkosť kroku by sa mala brať ako konečná. Ak je veľkosť kroku pevná a veľmi malá, potom je konvergencia príliš pomalá, ak je fixná a príliš veľká, môže dôjsť k paralýze alebo neustálej nestabilite. Účinné je zvyšovať krok, kým sa zlepšenie odhadu v danom smere antigradientu nezastaví a znižovať, ak k takémuto zlepšeniu nedôjde. P. D. Wasserman opísal adaptívny algoritmus výberu krokov, ktorý automaticky upravuje veľkosť kroku počas procesu učenia. Kniha A. N. Gorbana navrhuje rozsiahlu technológiu na optimalizáciu učenia.

Treba tiež poznamenať, že sieť je možné preškoliť, čo je s najväčšou pravdepodobnosťou výsledkom chybného návrhu jej topológie. Kedy tiež veľké množstvá neurónmi, stráca sa schopnosť siete zovšeobecňovať informácie. Sieť sa naučí celú sadu obrázkov poskytnutých na školenie, ale akékoľvek iné obrázky, dokonca aj veľmi podobné, môžu byť klasifikované nesprávne.

Vývojové prostredie a dôvody jeho výberu

Aplikácia bude vyvinutá v programovacom jazyku C# s rámcom .NETFramework4.0 vo vývojovom prostredí MicrosoftVisualStudio 2010 Fragmenty kódu vyžadujúce rozsiahle výpočty sú vyvíjané v C++. MSVisualStudio 2010 obsahuje komplexnú sadu nových a vylepšených funkcií, ktoré zjednodušujú každý krok procesu vývoja od návrhu až po nasadenie.

MicrosoftVisualStudio 2010 Ultimate – integrované prostredie nástrojov a serverová infraštruktúra, ktorá zjednodušuje celkový proces vývoja aplikácií. Podnikové aplikácie sa vytvárajú pomocou efektívnych, predvídateľných a prispôsobiteľných procesov. Podrobná analýza zvyšuje transparentnosť a sledovateľnosť všetkého životný cyklus aplikácie. Či už vytvárate nové riešenia alebo zdokonaľujete existujúce, vývoj je k dispozícii pomocou výkonných prototypov, návrhov architektúry a vývojových nástrojov, ktoré vám umožňujú vyvíjať aplikácie pre rôzne platformy a technológie, ako je cloud computing a paralelné spracovanie. Pokročilé koordinačné schopnosti spoločné aktivity spolu s integrovanými, inovatívnymi testovacími a ladiacimi nástrojmi zlepšia tímovú produktivitu a poskytnú vysokokvalitné a lacné riešenia.

Vývoj aplikácií v MicrosoftVisualStudio2010 Ultimate v C# s rámcom .NETFramework4.0 prebieha pomocou objektovo orientovaného programovania a vizuálneho programovania.

Chyby z výstupov siete na jej vstupy, v smere opačnom k ​​doprednému šíreniu signálov pri normálnej prevádzke. Bartsev a Okhonin okamžite navrhli všeobecnú metódu („princíp duality“) použiteľnú na širšiu triedu systémov vrátane systémov s oneskorením, distribuovaných systémov atď.

Aby bolo možné použiť metódu spätného šírenia, musí byť prenosová funkcia neurónov diferencovateľná. Metóda je modifikáciou klasickej metódy gradientového zostupu.

Funkcie aktivácie sigmatu

Najčastejšie používané aktivačné funkcie sú nasledujúce typy sigmoid:

Fermiho funkcia (exponenciálny sigmoid):

Racionálny sigmoid:

Hyperbolická dotyčnica:

,

kde s je výstup sčítačky neurónov a je ľubovoľná konštanta.

Výpočet racionálneho sigmoidu vyžaduje najmenej procesorového času v porovnaní s inými sigmoidmi. Výpočet hyperbolickej tangens vyžaduje najviac cyklov procesora. V porovnaní s funkciami aktivácie prahu sa sigmoidy počítajú veľmi pomaly. Ak po sčítaní v prahovej funkcii môžete okamžite začať porovnávať s určitou hodnotou (prah), potom v prípade funkcie aktivácie sigmatu musíte vypočítať sigmoid (čas strávený v najlepší možný scenár do troch operácií: prevzatie modulu, sčítanie a delenie) a až potom ho porovnajte s prahovou hodnotou (napríklad nulou). Ak predpokladáme, že všetky najjednoduchšie operácie vypočíta procesor v približne rovnaký čas, potom bude práca sigmoidálnej aktivačnej funkcie po sčítaní (ktorá bude trvať rovnaký čas) pomalšia ako funkcia prahovej aktivácie ako 1:4.

Funkcia vyhodnocovania siete

V prípadoch, keď je možné vyhodnotiť výkon siete, môžu byť trénovacie neurónové siete reprezentované ako optimalizačný problém. Hodnotiť znamená kvantitatívne naznačiť, či sieť rieši zadané úlohy dobre alebo zle. Na tento účel je skonštruovaná hodnotiaca funkcia. Spravidla závisí explicitne od výstupných signálov siete a implicitne (prostredníctvom prevádzky) od všetkých jej parametrov. Najjednoduchším a najbežnejším príkladom hodnotenia je súčet štvorcových vzdialeností od výstupných signálov siete k ich požadovaným hodnotám:

,

kde je požadovaná hodnota výstupného signálu.

Popis algoritmu

Viacvrstvová perceptrónová architektúra

Algoritmus spätného šírenia sa aplikuje na viacvrstvový perceptrón. Sieť má veľa vstupov, veľa výstupov a veľa vnútorných uzlov. Prečíslujme všetky uzly (vrátane vstupov a výstupov) číslami od 1 do N (priebežné číslovanie bez ohľadu na topológiu vrstiev). Označme závažím stojacim na hrane spájajúcej i-tý a j-tý uzol a výstupom i-tého uzla. Ak poznáme príklad tréningu (správne odpovede siete), potom chybová funkcia získaná metódou najmenších štvorcov vyzerá takto:

Ako upraviť váhy? Zavedieme stochastický gradientový zostup, to znamená, že po každom tréningovom príklade upravíme váhy a tým sa „pohybujeme“ v multidimenzionálnom priestore váh. Aby sme sa „dostali“ na minimálnu chybu, musíme sa „pohnúť“ v smere opačnom k ​​gradientu, to znamená na základe každej skupiny správnych odpovedí pridať ku každej váhe

,

kde je multiplikátor, ktorý udáva rýchlosť „pohybu“.

Derivát sa vypočíta nasledovne. Najprv nech vstúpi do neurónu poslednej úrovne váha, ktorá nás zaujíma. Najprv si všimneme, že ovplyvňuje výstup siete len ako súčasť súčtu, kde súčet preberá vstupy j-tého uzla. Preto

Podobne ovplyvňuje celkovú chybu iba v rámci výstupu j-tého uzla (nezabudnite, že ide o výstup celej siete). Preto

Ak j-tý uzol- nie na poslednej úrovni, potom má východy; označme ich Deti(j). V tomto prípade

, .

No - toto je presne podobná oprava, ale vypočítaná pre uzol ďalšej úrovne, označíme ju - od nej sa líši absenciou násobiteľa. Keďže sme sa naučili počítať korekciu pre uzly poslednej úrovne a vyjadrovať korekciu pre uzol viac nízky level pomocou vyšších opráv už môžete napísať algoritmus. Algoritmus sa nazýva práve kvôli tejto vlastnosti výpočtu korekcií algoritmus spätného šírenia(spätná propagácia). Krátke zhrnutie vykonanej práce:

  • pre uzol poslednej úrovne
  • pre interný sieťový uzol
  • pre všetky uzly

Výsledný algoritmus je uvedený nižšie. Ako vstup do algoritmu je okrem špecifikovaných parametrov potrebné zadať aj štruktúru siete v nejakom formáte. V praxi je to veľmi dobré výsledky ukázať siete pomerne jednoduchej štruktúry, pozostávajúce z dvoch úrovní neurónov - skrytej úrovne (skryté jednotky) a výstupných neurónov (výstupné jednotky); každý vstup siete je pripojený ku všetkým skrytým neurónom a výsledok práce každého skrytého neurónu sa privádza na vstup každého z výstupných neurónov. V tomto prípade stačí ako vstup dodať počet neurónov skrytej úrovne.

Algoritmus

Algoritmus: BackPropagation

kde je zotrvačný koeficient pre vyhladenie ostrých skokov pri pohybe po povrchu účelovej funkcie

Matematická interpretácia tréningu neurónovej siete

Pri každej iterácii algoritmu spätného šírenia sa upravia váhy neurónovej siete, aby sa zlepšilo riešenie jedného príkladu. Počas procesu učenia sa teda cyklicky riešia problémy optimalizácie jedného kritéria.

Tréning neurónovej siete je charakterizovaný štyrmi špecifickými obmedzeniami, ktoré odlišujú trénovanie neurónovej siete od všeobecných optimalizačných problémov: astronomický počet parametrov, potreba vysokej paralelnosti počas trénovania, multikriteriálna povaha riešených problémov a potreba nájsť dostatočne široká oblasť, v ktorej sa hodnoty všetkých minimalizovaných funkcií blížia k minimu. V opačnom prípade môže byť problém učenia vo všeobecnosti formulovaný ako problém minimalizácie skóre. Opatrnosť v predchádzajúcej fráze („zvyčajne“) je spôsobená tým, že v skutočnosti nepoznáme a nikdy nebudeme poznať všetky možné úlohy pre neurónové siete a možno niekde v neznámom prostredí existujú úlohy, ktoré sa nedajú zredukovať na minimalizáciu odhadnúť. Minimalizácia odhadu je zložitý problém: existuje astronomický počet parametrov (pre štandardné príklady implementované na PC - od 100 do 1 000 000), adaptívny reliéf (vyhodnocovací graf ako funkcia upravených parametrov) je zložitý a môže obsahovať veľa miestnych miním.

Nevýhody algoritmu

Napriek početným úspešným aplikáciám spätnej propagácie nie je všeliekom. Najviac problémov prináša nekonečne dlhý proces učenia. V zložitých problémoch môže trénovanie siete trvať dni alebo dokonca týždne, alebo sa nemusí učiť vôbec. Dôvodom môže byť jeden z dôvodov popísaných nižšie.

Paralýza siete

Počas procesu sieťového tréningu môžu byť hodnoty hmotnosti v dôsledku korekcie veľmi veľké. To môže viesť k tomu, že všetky alebo väčšina neurónov bude pracovať pri veľmi vysokých hodnotách OUT v oblasti, kde je derivácia funkcie kontrakcie veľmi malá. Keďže chyba odoslaná späť počas procesu učenia je úmerná tejto derivácii, proces učenia môže prakticky zamrznúť. Z teoretického hľadiska je tento problém zle pochopený. Tomu sa zvyčajne predíde zmenšením veľkosti kroku η, ale tým sa zvýši čas tréningu. Na prevenciu alebo zotavenie sa z paralýzy sa použili rôzne heuristiky, ale zatiaľ ich možno považovať len za experimentálne.

Miestne minimá

Spätné šírenie využíva formu zostupu gradientu, to znamená, že klesá po chybovej ploche a plynule upravuje váhy smerom k minimu. Chybový povrch komplexnej siete je vysoko členitý a pozostáva z kopcov, údolí, záhybov a roklín vo vysokorozmernom priestore. Sieť môže spadnúť do miestneho minima (plytké údolie), keď je v blízkosti oveľa hlbšie minimum. V miestnom minimálnom bode všetky smery smerujú nahor a sieť z neho nemôže uniknúť. Hlavným problémom pri trénovaní neurónových sietí sú práve metódy úniku z lokálnych miním: pri každom opustení lokálneho minima sa opäť hľadá ďalšie lokálne minimum pomocou rovnakej metódy spätného šírenia chýb, až kým už nie je možné nájsť cestu von. to.

Veľkosť kroku

Dôkladné preskúmanie dôkazu konvergencie ukazuje, že korekcie hmotnosti sa považujú za nekonečne malé. Je jasné, že to v praxi nie je možné, pretože to vedie k nekonečnému času učenia. Veľkosť kroku by sa mala brať ako konečná. Ak je veľkosť kroku pevná a veľmi malá, potom je konvergencia príliš pomalá, ak je fixná a príliš veľká, môže dôjsť k paralýze alebo neustálej nestabilite. Účinné je zvyšovať krok, kým sa zlepšenie odhadu v danom smere antigradientu nezastaví a znižovať, ak k takémuto zlepšeniu nedôjde. P. D. Wasserman opísal adaptívny algoritmus výberu krokov, ktorý automaticky upravuje veľkosť kroku počas procesu učenia. Kniha A. N. Gorbana navrhuje rozsiahlu technológiu na optimalizáciu učenia.

Treba tiež poznamenať, že sieť je možné preškoliť, čo je s najväčšou pravdepodobnosťou výsledkom chybného návrhu jej topológie. S príliš veľkým počtom neurónov sa stráca schopnosť siete zovšeobecňovať informácie. Sieť sa naučí celú sadu obrázkov poskytnutých na školenie, ale akékoľvek iné obrázky, dokonca aj veľmi podobné, môžu byť klasifikované nesprávne.

pozri tiež

  • Algoritmus rýchlostného gradientu

Literatúra

  1. Wasserman F. Neurocomputing: teória a prax. - M.: "Mir", 1992.
  2. Khaikin S. Neurónové siete: Kompletný kurz. Za. z angličtiny N. N. Kussul, A. Yu. 2. vydanie, rev. - M.: Williams Publishing House, 2008, 1103 s.

Odkazy

  1. Koposov A. I., Shcherbakov I. B., Kislenko N. A., Kislenko O. P., Varivoda Yu a kol.. - M.: VNIIGAZ, 1995.

Vo viacvrstvových neurónových sieťach sú optimálne výstupné hodnoty neurónov všetkých vrstiev okrem poslednej spravidla neznáme, troj- alebo viacvrstvový perceptrón už nie je možné trénovať, vedený iba chybovými hodnotami na sieťových výstupoch

Jednou z možností riešenia tohto problému je vývoj množín výstupných signálov zodpovedajúcich vstupným signálom pre každú vrstvu neurónovej siete, čo je, samozrejme, veľmi náročná operácia a nie je vždy realizovateľná dynamicky upravovať váhové koeficienty synapsií, pri ktorých sa spravidla najslabšie spoje menia o malú mieru jedným alebo druhým smerom a ukladajú sa len tie zmeny, ktoré vedú k zníženiu chyby na výstupe Je zrejmé, že táto metóda napriek

zdanlivá jednoduchosť, vyžaduje ťažkopádne rutinné výpočty A napokon treťou, prijateľnejšou možnosťou je šírenie chybových signálov z výstupov neurónovej siete na jej vstupy, a to v smere opačnom ako je priame šírenie signálov pri bežnej prevádzke Algoritmus sa nazýva postup spätného šírenia (spätné šírenie chýb). Je to on, kto je popísaný nižšie

Algoritmus spätného šírenia je iteračný algoritmus učenia gradientu, ktorý sa používa na minimalizáciu štandardnej odchýlky prúdu od požadovaných výstupov viacvrstvových neurónových sietí so sériovým pripojením.

Podľa metódy najmenších štvorcov je cieľovou chybovou funkciou neurónovej siete, ktorá sa má minimalizovať, hodnota

kde je skutočný výstupný stav neurónu na výstupnej vrstve neurónovej siete, keď je na jej vstupy privádzaný obraz, požadovaný výstupný stav tohto neurónu

Sumácia sa vykonáva nad všetkými neurónmi výstupnej vrstvy a nad všetkými snímkami spracovávanými sieťou. Minimalizácia pomocou metódy gradientového zostupu zabezpečuje úpravu váhových koeficientov nasledovne

kde je váhový koeficient synaptického spojenia spájajúceho vrstvový neurón s vrstvovým neurónom - koeficient rýchlosti učenia,

V súlade s pravidlom diferenciácie komplexných funkcií

kde je vážený súčet vstupných signálov neurónu a argument aktivačnej funkcie Keďže derivácia aktivačnej funkcie musí byť určená na celej osi x, nie je vhodná funkcia jednotkového skoku a iné aktivačné funkcie s nehomogenitami. uvažované neurónové siete Používajú nasledovné hladké funkcie, ako hyperbolický tangens alebo klasický sigmoid s exponenciálkou (pozri tabuľku 1 1) Napríklad v prípade hyperbolického tangensu

Tretí multiplikátor sa rovná výstupu neurónu predchádzajúcej vrstvy

Pokiaľ ide o prvý faktor v (1.11), možno ho jednoducho rozšíriť takto:

Tu sa sumarizácia vykonáva medzi neurónmi vrstvy zavedením novej premennej:

získame rekurzívny vzorec na výpočet hodnôt vrstvy z hodnôt staršej vrstvy

Pre výstupnú vrstvu:

Teraz môžeme písať (1.10) v rozšírenej forme:

Niekedy, aby proces korekcie hmotnosti mal určitú zotrvačnosť, sa vyhladenie ostrých skokov pri pohybe po povrchu cieľovej funkcie (1.17) doplní o hodnotu zmeny hmotnosti pri predchádzajúcej iterácii.

kde je koeficient zotrvačnosti; aktuálne číslo iterácie.

Kompletný algoritmus na trénovanie neurónovej siete pomocou postupu spätného šírenia je teda skonštruovaný nasledovne.

KROK 1. Aplikujte jeden z možných obrázkov na vstupy siete a v režime normálnej prevádzky neurónovej siete, keď sa signály šíria zo vstupov na výstupy, vypočítajte ich hodnoty. Pripomeňme, že:

kde je počet neurónov vo vrstve, berúc do úvahy neurón s konštantným výstupným stavom, ktorý nastavuje odchýlku; vstup neurónov vo vrstve

kde je sigmoid,

kde je vektorová zložka vstupného obrázka.

KROK 4. Upravte všetky váhy v neurónovej sieti:

KROK 5. Ak je chyba siete závažná, prejdite na krok 1. V opačnom prípade ukončite.

V kroku 1 je sieť prezentovaná striedavo v náhodnom poradí so všetkými trénovacími obrázkami, aby sieť, obrazne povedané, nezabudla niektoré, keď si zapamätá iné.

Z výrazu (1.17) vyplýva, že keď výstupná hodnota smeruje k nule, efektivita učenia výrazne klesá. Pri binárnych vstupných vektoroch sa v priemere polovica váh neupraví, takže región možné hodnoty Je žiaduce posunúť výstupy neurónov v medziach, čo sa dosiahne jednoduchými úpravami logistických funkcií. Napríklad sigmoid s exponenciálou sa prevedie do tvaru:

Zoberme si otázku kapacity neurónovej siete, t. j. počtu obrázkov prezentovaných na jej vstupoch, ktoré sa dokáže naučiť rozpoznávať. Pre siete s viac ako dvoma vrstvami zostáva táto otázka otvorená. Pre siete s dvoma vrstvami sa deterministická kapacita siete odhaduje takto:

kde je počet nastaviteľných váh, je počet neurónov vo výstupnej vrstve.

Tento výraz bol získaný pri zohľadnení niektorých obmedzení. Po prvé, počet vstupov a neurónov v skrytej vrstve musí spĺňať nerovnosť Po druhé, vyššie uvedený odhad sa však urobil pre siete s prahovými aktivačnými funkciami neurónov a kapacitou sietí s funkciami hladkej aktivácie, napríklad (1.23), je zvyčajne väčšia. Okrem toho termín deterministický znamená, že výsledný odhad kapacity je vhodný pre všetky vstupné vzory, ktoré môžu byť reprezentované vstupmi. V skutočnosti má rozloženie vstupných vzorov určitú pravidelnosť, čo umožňuje neurónovej sieti zovšeobecňovať a tým zvyšovať jej skutočnú kapacitu. Keďže distribúcia obrázkov vo všeobecnom prípade nie je vopred známa, môžeme o skutočnej kapacite hovoriť len predbežne, ale zvyčajne je dvakrát väčšia ako deterministická kapacita.

Otázka kapacity neurónovej siete úzko súvisí s otázkou požadovaného výkonu výstupnej vrstvy siete, ktorá vykonáva konečnú klasifikáciu obrázkov. Napríklad na rozdelenie súboru vstupných obrázkov do dvoch tried postačuje jeden výstupný neurón. V tomto prípade bude každá logická úroveň určovať samostatnú triedu. Na dvoch výstupných neurónoch s funkciou prahovej aktivácie možno zakódovať štyri triedy. Na zvýšenie spoľahlivosti klasifikácie je žiaduce zaviesť redundanciu priradením ku každej triede jeden neurón vo výstupnej vrstve alebo ešte lepšie niekoľko, pričom každý z nich je trénovaný tak, aby určil, či obrázok patrí do triedy s vlastným stupňom dôvera, napríklad: vysoká, stredná a nízka. Takéto neurónové siete umožňujú klasifikovať vstupné obrázky kombinované do fuzzy (rozmazaných alebo pretínajúcich sa) množín. Táto vlastnosť približuje takéto siete k reálnym prevádzkovým podmienkam biologických neurónových sietí.

Predmetná neurónová sieť má niekoľko úzkych miest. Po prvé, v tomto procese môžu veľké kladné alebo záporné hodnoty váh posunúť pracovný bod na sigmoidoch neurónov do oblasti nasýtenia. Malé hodnoty derivácie logistickej funkcie povedú v súlade s (1.15) a (1.16) k zastaveniu učenia, ktoré paralyzuje sieť. Po druhé, použitie metódy gradientového zostupu nezaručuje nájdenie globálneho minima cieľovej funkcie. S tým úzko súvisí aj otázka výberu miery učenia. Prírastky hmotnosti a teda aj rýchlosť učenia na nájdenie extrému musia byť nekonečne malé, ale v tomto prípade bude učenie

prebieha neprijateľne pomaly. Na druhej strane príliš veľké úpravy váh môžu viesť k trvalej nestabilite v procese učenia. Preto sa ako koeficient rýchlosti učenia 1] zvyčajne volí číslo menšie ako 1 (napríklad 0,1), ktoré sa počas procesu učenia postupne znižuje. Okrem toho, aby sa vylúčili náhodné zásahy do siete v lokálnych minimách, niekedy sa po stabilizácii hodnôt váhových koeficientov na krátky čas výrazne zvýši 7, aby sa začal gradient zostupu z nového bodu. Ak opakovanie tohto postupu niekoľkokrát privedie sieť do rovnakého stavu, môžeme predpokladať, že bolo nájdené globálne minimum.

Existuje ďalšia metóda na odstránenie lokálnych miním a paralýzy siete, ktorou je použitie stochastických neurónových sietí.

Uveďme vyššie uvedený geometrický výklad.

V algoritme spätného šírenia sa vypočíta gradientový vektor chybovej plochy. Tento vektor označuje smer najkratšieho zostupu pozdĺž povrchu z aktuálneho bodu, pohyb pozdĺž ktorého vedie k zníženiu chyby. Postupnosť klesajúcich krokov povedie k minimu jedného alebo druhého typu. Problémom je tu otázka výberu dĺžky krokov.

Pri veľkej veľkosti kroku bude konvergencia rýchlejšia, ale existuje nebezpečenstvo preskočenia riešenia alebo v prípade zložitý tvar chybové plochy idú nesprávnym smerom, napríklad pohybujú sa pozdĺž úzkej rokliny s strmé svahy, skákanie z jednej strany na druhú. Naopak, s malým krokom a správnym smerom bude potrebných veľa iterácií. V praxi sa veľkosť kroku považuje za úmernú strmosti svahu, takže algoritmus sa spomalí blízko minima. Správna voľba rýchlosť učenia závisí od konkrétnej úlohy a zvyčajne sa vykonáva experimentálne. Táto konštanta môže závisieť aj od času, ktorý sa s postupom algoritmu znižuje.

Typicky je tento algoritmus upravený tak, aby zahŕňal prvok hybnosti (alebo zotrvačnosti). To podporuje postup v pevnom smere, takže ak bolo urobených niekoľko krokov rovnakým smerom, algoritmus zvýši rýchlosť, čo vám niekedy umožní vyhnúť sa miestnemu minimu, ako aj rýchlejšie prejsť rovinatými oblasťami.

V každom kroku algoritmu sa všetky príklady školenia postupne privedú na vstup siete, skutočné výstupné hodnoty siete sa porovnajú s požadovanými hodnotami a vypočíta sa chyba. Hodnota chyby, ako aj gradient chybovej plochy

slúži na nastavenie váh, po ktorom sa všetky akcie zopakujú. Proces učenia sa zastaví buď po uplynutí určitého počtu epoch, alebo keď chyba dosiahne určitú malú úroveň, alebo keď chyba prestane klesať.

Pozrime sa podrobnejšie na problémy zovšeobecnenia a preškolenia neurónovej siete. Zovšeobecnenie je schopnosť neurónovej siete urobiť presnú predpoveď o údajoch, ktoré nepatria do pôvodnej trénovacej množiny. Overfitting je preťaženie, ku ktorému dochádza, keď trénovací algoritmus trvá príliš dlho a sieť je príliš zložitá pre danú úlohu alebo množstvo dostupných údajov.

Demonštrujme si problémy zovšeobecňovania a rekvalifikácie na príklade aproximácie určitej závislosti nie neurónovou sieťou, ale pomocou polynómov, pričom podstata javu bude absolútne rovnaká.

Polynomické grafy môžu mať iný tvar a čím vyšší je stupeň a počet termínov, tým zložitejšia môže byť táto forma. Pre počiatočné údaje môžete vybrať polynomickú krivku (model) a získať tak vysvetlenie existujúcej závislosti. Dáta môžu byť zašumené, takže sa to nedá predpokladať najlepší model prechádza presne cez všetky dostupné body. Polynóm nízkeho rádu môže lepšie vysvetliť vzťah, ale nemusí byť dostatočne flexibilný na to, aby sa zmestil na údaje, zatiaľ čo polynóm vysokého rádu môže byť príliš flexibilný, ale bude pozorne sledovať údaje, pričom nadobudne spletitý tvar, ktorý nemá nič spoločné s údajmi. skutočný vzťah.

Neurónové siete čelia rovnakým problémom. Siete s väčšou váhou modelujú zložitejšie funkcie, a preto sú náchylné na preťaženie. Siete s malým počtom váh nemusia byť dostatočne flexibilné na modelovanie existujúcich závislostí. Napríklad sieť bez skrytých vrstiev modeluje iba obyčajnú lineárnu funkciu.

Ako zvoliť správny stupeň zložitosti siete? Takmer vždy zložitejšia sieť vytvára menšiu chybu, čo však nemusí naznačovať dobrá kvalita modelu, ale o preškolení siete.

Riešením je použiť krížovú validáciu benchmarkov. Na tento účel je vyhradená časť trénovacej vzorky, ktorá slúži nie na trénovanie siete pomocou algoritmu backpropagation, ale na nezávislú kontrolu výsledku počas algoritmu. Na začiatku práce sa vyskytla chyba siete na školení a

kontrolné sady budú rovnaké. Ako je sieť trénovaná, trénovacia chyba klesá, rovnako ako chyba na riadiacej súprave. Ak chyba kontroly prestal klesať alebo dokonca začal rásť, to naznačuje, že sieť sa začala príliš približovať k údajom (pretrénovala sa) a tréning by sa mal zastaviť. Ak k tomu dôjde, potom by sa mal znížiť počet skrytých prvkov a/alebo vrstiev, pretože sieť je na túto úlohu príliš výkonná. Ak obe chyby (tréning a krížová validácia) nedosiahnu dostatočne malú úroveň, tak k rekvalifikácii prirodzene nedošlo a sieť naopak nie je dostatočne výkonná na modelovanie existujúcej závislosti.

Popísané problémy vedú k tomu, že keď praktická práca S neurónovými sieťami musíte experimentovať s veľkým množstvom rôznych sietí, niekedy každú z nich niekoľkokrát precvičiť a výsledky porovnať. Hlavným ukazovateľom kvality výsledku je chyba kontroly. Zároveň v súlade s celosystémovým princípom dvoch sietí s približne rovnakými chybami riadenia má zmysel vybrať si tú, ktorá je jednoduchšia.

Potreba opakovaných experimentov vedie k tomu, že kontrolná zostava začína hrať kľúčovú úlohu pri výbere modelu a stáva sa súčasťou procesu učenia. To oslabuje jeho úlohu ako nezávislého kritéria kvality modelu. O veľké číslo experimentoch, existuje vysoká pravdepodobnosť výberu úspešnej siete, ktorá dáva dobrý výsledok na kontrolnom súbore. Aby však výsledný model získal náležitú spoľahlivosť, často (keď to objem tréningových príkladov dovoľuje) robia nasledovné: rezervujú si testovaciu sadu príkladov. Konečný model sa testuje na údajoch z tohto súboru, aby sa zabezpečilo, že výsledky dosiahnuté na tréningových a testovacích súboroch príkladov sú skutočné a nie artefakty vzdelávacieho procesu. Samozrejme, aby plnila svoju úlohu dobre, testovacia sada by sa mala použiť iba raz: ak sa znova použije na úpravu procesu učenia, efektívne sa zmení na kontrolnú sadu.

Aby sa urýchlil proces trénovania siete, boli navrhnuté početné modifikácie algoritmu spätného šírenia chýb, spojené s použitím rôznych chybových funkcií, procedúr na určenie smeru a veľkostí krokov.

1) Chybové funkcie:

Integrálna chybová funkcia v celej skupine príkladov školenia;

Chybové funkcie celých a zlomkových mocnín

2) Postupy na určenie veľkosti kroku pri každej iterácii

Dichotómia;

Zotrvačné vzťahy (pozri vyššie);

3) Postupy na určenie smeru kroku.

Použitie matice derivátov druhého rádu (Newtonova metóda);

Použitie pokynov v niekoľkých krokoch (metóda partan).

Ciele spätného šírenia sú jednoduché: upravte každú váhu v pomere k tomu, ako veľmi prispieva k celkovej chybe. Ak iteračne znížime chybu každej váhy, nakoniec budeme mať sadu váh, ktoré robia dobré predpovede.

Aktualizácia pravidla reťazca

Možno si to predstaviť ako dlhý rad vnorených rovníc. Ak takto uvažujete o šírení dopredu, potom spätné šírenie je len aplikácia reťazové pravidlá(diferenciácia komplexnej funkcie) na nájdenie derivácií strát vzhľadom na akúkoľvek premennú vo vnorenej rovnici. Berúc do úvahy funkciu šírenia dopredu:

F(x)=A(B(C(x)))

A, B a C sú na rôznych vrstvách. Pomocou reťazového pravidla môžeme ľahko vypočítať deriváciu f(x) vzhľadom na x:

F′(x)=f′(A)⋅A′(B)⋅B′(C)⋅C′(x)

Čo s derivátom vzhľadom na B? Ak chcete nájsť derivát vzhľadom na B, môžete predstierať, že B(C(x)) je konštanta, nahraďte ju zástupnou premennou B a pokračujte v hľadaní derivátu vzhľadom na Bštandardná.

F′(B)=f′(A)⋅A′(B)

Táto jednoduchá metóda sa rozširuje na akúkoľvek premennú v rámci funkcie a umožňuje nám presne určiť vplyv každej premennej k celkovému výsledku.

Použitie reťazového pravidla

Použime reťazové pravidlo na výpočet derivácie straty vzhľadom na akúkoľvek váhu v sieti. Pravidlo reťazenia nám pomôže určiť, do akej miery každá váha prispieva k našej celkovej chybe a smer, ktorým by sa mala každá váha aktualizovať, aby sa chyba znížila. Tu sú rovnice, ktoré potrebujete na vytvorenie prognózy a výpočet celkovej chyby alebo straty:

Vzhľadom na sieť pozostávajúcu z jedného neurónu možno celkovú stratu neurónovej siete vypočítať ako:

Cena=C(R(Z(XW)))

Pomocou reťazového pravidla môžeme ľahko nájsť deriváciu straty vzhľadom na hmotnosť W.

C′(W)=C′(R)⋅R′(Z)⋅Z′(W)=(y^−y)⋅R′(Z)⋅X

Teraz, keď máme rovnicu na výpočet derivácie straty vzhľadom na akúkoľvek váhu, pozrime sa na príklad neurónovej siete:

Aký je derivát straty vzhľadom na Wo?

C′(WO)=C′(y^)⋅y^′(ZO)⋅Z′O(WO)=(y^−y)⋅R′(ZO)⋅H

A o čo ide Wh? Aby sme to zistili, jednoducho sa neustále vraciame do našej funkcie, rekurzívne aplikujeme pravidlo reťazenia, kým sa nedostaneme k funkcii, ktorá má prvok Wh.

C′(Wh)=C′(y^)⋅O′(Zo)⋅Z′o(H)⋅H′(Zh)⋅Z′h(Wh)=(y^−y)⋅R′(Zo )⋅Wo⋅R′(Zh)⋅X

A len pre zaujímavosť, čo keby naša sieť mala 10 skrytých vrstiev. Aká je derivácia straty pre prvú váhu w1?

C(w1)=(dC/dy^)⋅(dy^/dZ11)⋅(dZ11/dH10)⋅(dH10/dZ10)⋅(dZ10/dH9)⋅(dH9/dZ9)⋅(dZ9/dH8)⋅( dH8/dZ8)⋅(dZ8/dH7)⋅(dH7/dZ7)⋅(dZ7/dH6)⋅(dH6/dZ6)⋅(dZ6/dH5)⋅(dH5/dZ5)⋅(dZ5/dH4)⋅(dZ5/dH4)⋅ dZ4)⋅(dZ4/dH3)⋅(dH3/dZ3)⋅(dZ3/dH2)⋅(dH2/dZ2)⋅(dZ2/dH1)⋅(dH1/dZ1)⋅(dZ1/dW1)

Všimli ste si vzor? Množstvo výpočtov potrebných na výpočet odvodených strát sa zvyšuje, keď sa naša sieť prehlbuje. Tiež si všimnite redundancia v našich derivačných výpočtoch. Derivácia straty každej vrstvy pridáva dva nové prvky k prvkom, ktoré už boli vypočítané vrstvami nad ňou. Čo ak existuje nejaký spôsob, ako zachrániť našu prácu a vyhnúť sa týmto opakovaným výpočtom?

Úspora práce s memoovaním

Zapamätanie je termín v informatike, ktorý má jednoduchý význam: nepočítaj stále tie isté veci. Pri memoizácii ukladáme predtým vypočítané výsledky, aby sme sa vyhli prepočítavaniu rovnakej funkcie. To je užitočné na urýchlenie rekurzívnych funkcií, z ktorých jedna je spätné šírenie. Venujte pozornosť vzoru v derivačných rovniciach nižšie.

Každá z týchto vrstiev prepočítava rovnaké deriváty! Namiesto zapisovania dlhých derivačných rovníc pre každú váhu môžeme použiť memoizáciu, aby sme si ušetrili prácu, keď vraciame chybu cez sieť. Aby sme to dosiahli, definujeme 3 rovnice (nižšie), ktoré spolu vyjadrujú v krátka forma všetky výpočty potrebné na spätné šírenie. Matematika je rovnaká, ale rovnice poskytujú peknú skratku, ktorú môžeme použiť na sledovanie výpočtov, ktoré sme už vykonali, a ukladanie našej práce pri pohybe späť po sieti.

Najprv vypočítame chyba výstupnej vrstvy a výsledok odovzdajte skrytej vrstve pred ňou. Po výpočte chyby skrytej vrstvy prenesieme jej hodnotu späť do predchádzajúcej skrytej vrstvy. A tak ďalej a tak ďalej. Pri návrate cez sieť použijeme 3. vzorec na každú vrstvu na výpočet derivácie straty vzhľadom na váhy tejto vrstvy. Tento derivát nám hovorí ktorým smerom upravíme svoju váhu znížiť celkové straty.

Poznámka: termín chyba vrstvy odkazuje na derivát strát vzhľadom na vchod do vrstva. Odpovedá na otázku: ako sa zmení výstup stratovej funkcie, keď sa zmení vstup do tejto vrstvy?

Chyba výstupnej vrstvy

Na výpočet chyby výstupnej vrstvy je potrebné nájsť deriváciu straty vzhľadom na vstup do výstupnej vrstvy, Zo. To odpovedá na otázku: ako ovplyvňujú váhy poslednej vrstvy celkovú chybu v sieti? Potom je derivát:

C′(Zo)=(y^−y)⋅R′(Zo)

Aby bolo nahrávanie jednoduchšie, praktici MO zvyčajne nahrádzajú sekvenciu (y^−y)∗R"(zo) termín Eo. Takže náš vzorec pre chybu výstupnej vrstvy je:

Eo=(y^−y)⋅R′(Zo)

Chyba skrytej vrstvy

Ak chcete vypočítať chybu skrytej vrstvy, musíte nájsť deriváciu straty vzhľadom na vstup skrytej vrstvy, Zh.

Eh=Eo⋅Wo⋅R′(Zh)

Tento vzorec je základom spätného šírenia. Vypočítame chybu aktuálnej vrstvy a prenesieme váženú chybu späť do predchádzajúcej vrstvy a pokračujeme v procese, kým nedosiahneme našu prvú skrytú vrstvu. Popri tom aktualizujeme váhy pomocou derivácie straty vzhľadom na každú váhu.

Derivát straty vzhľadom na akúkoľvek hmotnosť

Vráťme sa k nášmu vzorcu pre deriváciu strát vzhľadom na hmotnosť výstupnej vrstvy Wo.

C′(WO)=(y^−y)⋅R′(ZO)⋅H

Vieme, že prvú časť môžeme nahradiť rovnicou pre chybu výstupnej vrstvy Eh. H predstavuje aktiváciu skrytej vrstvy.

C'(Wo)=Eo⋅H

Aby sme teda našli deriváciu straty vzhľadom na akúkoľvek váhu v našej sieti, jednoducho vynásobíme chybu zodpovedajúcej vrstvy jej vstupom (výstupom predchádzajúcej vrstvy).

C′(w)=CurrentLayerError⋅CurrentLayerInput

Poznámka: vchod sa vzťahuje na aktiváciu z predchádzajúcej vrstvy, nie na vážený vstup, Z.

Zhrnutie

Tu sú posledné 3 rovnice, ktoré spolu tvoria základ spätného šírenia.

Tu je proces vizualizovaný pomocou nášho príkladu neurónovej siete vyššie:

Backpropagation: Vzorový kód

def relu_prime(z): ak z > 0: vrátiť 1 vrátiť 0 def cena (yHat, y): vrátiť 0,5 * (yHat - y)**2 def cost_prime(yHat, y): vrátiť yHat-y def backprop(x, y, Wh, Wo, lr): yHat = feed_forward(x, Wh, Wo) # Chyba vrstvy Eo = (yHat - y) * relu_prime(Zo) Eh = Eo * Wo * relu_prime(Zh) # Nákladová derivácia pre váhy dWo = Eo * H dWh = Eh * x # Aktualizujte váhy Wh -= lr * dWh Wo -= lr * dWo

Chyby z výstupov siete na jej vstupy, v smere opačnom k ​​doprednému šíreniu signálov pri normálnej prevádzke. Bartsev a Okhonin okamžite navrhli všeobecnú metódu („princíp duality“) použiteľnú na širšiu triedu systémov vrátane systémov s oneskorením, distribuovaných systémov atď.

Aby bolo možné použiť metódu spätného šírenia, musí byť prenosová funkcia neurónov diferencovateľná. Metóda je modifikáciou klasickej metódy gradientového zostupu.

Funkcie aktivácie sigmatu

Ako aktivačné funkcie sa najčastejšie používajú tieto typy sigmoidov:

Fermiho funkcia (exponenciálny sigmoid):

Racionálny sigmoid:

Hyperbolická dotyčnica:

,

kde s je výstup sčítačky neurónov a je ľubovoľná konštanta.

Výpočet racionálneho sigmoidu vyžaduje najmenej procesorového času v porovnaní s inými sigmoidmi. Výpočet hyperbolickej tangens vyžaduje najviac cyklov procesora. V porovnaní s funkciami aktivácie prahu sa sigmoidy počítajú veľmi pomaly. Ak po sčítaní v prahovej funkcii môžete okamžite začať porovnávať s určitou hodnotou (prahom), potom v prípade funkcie aktivácie sigmatu musíte vypočítať sigmoid (v najlepšom prípade stráviť čas tromi operáciami: modul, sčítanie a delenie) a až potom porovnanie s prahovou hodnotou (napríklad nula). Ak predpokladáme, že všetky najjednoduchšie operácie vypočíta procesor približne za rovnaký čas, potom bude činnosť sigmoidálnej aktivačnej funkcie po sčítaní (ktorá bude trvať rovnako dlho) pomalšia ako funkcia prahovej aktivácie o faktor 1:4.

Funkcia vyhodnocovania siete

V prípadoch, keď je možné vyhodnotiť výkon siete, môžu byť trénovacie neurónové siete reprezentované ako optimalizačný problém. Hodnotiť znamená kvantitatívne naznačiť, či sieť rieši zadané úlohy dobre alebo zle. Na tento účel je skonštruovaná hodnotiaca funkcia. Spravidla závisí explicitne od výstupných signálov siete a implicitne (prostredníctvom prevádzky) od všetkých jej parametrov. Najjednoduchším a najbežnejším príkladom hodnotenia je súčet štvorcových vzdialeností od výstupných signálov siete k ich požadovaným hodnotám:

,

kde je požadovaná hodnota výstupného signálu.

Popis algoritmu

Viacvrstvová perceptrónová architektúra

Algoritmus spätného šírenia sa aplikuje na viacvrstvový perceptrón. Sieť má veľa vstupov, veľa výstupov a veľa vnútorných uzlov. Prečíslujme všetky uzly (vrátane vstupov a výstupov) číslami od 1 do N (priebežné číslovanie bez ohľadu na topológiu vrstiev). Označme závažím stojacim na hrane spájajúcej i-tý a j-tý uzol a výstupom i-tého uzla. Ak poznáme príklad tréningu (správne odpovede siete), potom chybová funkcia získaná metódou najmenších štvorcov vyzerá takto:

Ako upraviť váhy? Zavedieme stochastický gradientový zostup, to znamená, že po každom tréningovom príklade upravíme váhy a tým sa „pohybujeme“ v multidimenzionálnom priestore váh. Aby sme sa „dostali“ na minimálnu chybu, musíme sa „pohnúť“ v smere opačnom k ​​gradientu, to znamená na základe každej skupiny správnych odpovedí pridať ku každej váhe

,

kde je multiplikátor, ktorý udáva rýchlosť „pohybu“.

Derivát sa vypočíta nasledovne. Najprv nech vstúpi do neurónu poslednej úrovne váha, ktorá nás zaujíma. Najprv si všimneme, že ovplyvňuje výstup siete len ako súčasť súčtu, kde súčet preberá vstupy j-tého uzla. Preto

Podobne ovplyvňuje celkovú chybu iba v rámci výstupu j-tého uzla (nezabudnite, že ide o výstup celej siete). Preto

Ak j-tý uzol nie je na poslednej úrovni, potom má výstupy; označme ich Deti(j). V tomto prípade

, .

No - toto je presne podobná oprava, ale vypočítaná pre uzol ďalšej úrovne, označíme ju - od nej sa líši absenciou násobiteľa. Keďže sme sa naučili počítať korekciu pre uzly poslednej úrovne a vyjadrovať korekciu pre uzol nižšej úrovne cez korekcie vyššej, môžeme už napísať algoritmus. Algoritmus sa nazýva práve kvôli tejto vlastnosti výpočtu korekcií algoritmus spätného šírenia(spätná propagácia). Krátke zhrnutie vykonanej práce:

  • pre uzol poslednej úrovne
  • pre interný sieťový uzol
  • pre všetky uzly

Výsledný algoritmus je uvedený nižšie. Ako vstup do algoritmu je okrem špecifikovaných parametrov potrebné zadať aj štruktúru siete v nejakom formáte. V praxi veľmi dobré výsledky vykazujú siete pomerne jednoduchej štruktúry, pozostávajúce z dvoch úrovní neurónov - skrytej úrovne (skryté jednotky) a výstupných neurónov (výstupné jednotky); každý vstup siete je pripojený ku všetkým skrytým neurónom a výsledok práce každého skrytého neurónu sa privádza na vstup každého z výstupných neurónov. V tomto prípade stačí ako vstup dodať počet neurónov skrytej úrovne.

Algoritmus

Algoritmus: BackPropagation

kde je zotrvačný koeficient pre vyhladenie ostrých skokov pri pohybe po povrchu účelovej funkcie

Matematická interpretácia tréningu neurónovej siete

Pri každej iterácii algoritmu spätného šírenia sa upravia váhy neurónovej siete, aby sa zlepšilo riešenie jedného príkladu. Počas procesu učenia sa teda cyklicky riešia problémy optimalizácie jedného kritéria.

Tréning neurónovej siete je charakterizovaný štyrmi špecifickými obmedzeniami, ktoré odlišujú trénovanie neurónovej siete od všeobecných optimalizačných problémov: astronomický počet parametrov, potreba vysokej paralelnosti počas trénovania, multikriteriálna povaha riešených problémov a potreba nájsť dostatočne široká oblasť, v ktorej sa hodnoty všetkých minimalizovaných funkcií blížia k minimu. V opačnom prípade môže byť problém učenia vo všeobecnosti formulovaný ako problém minimalizácie skóre. Opatrnosť v predchádzajúcej fráze („zvyčajne“) je spôsobená tým, že v skutočnosti nepoznáme a nikdy nebudeme poznať všetky možné úlohy pre neurónové siete a možno niekde v neznámom prostredí existujú úlohy, ktoré sa nedajú zredukovať na minimalizáciu odhadnúť. Minimalizácia odhadu je zložitý problém: existuje astronomický počet parametrov (pre štandardné príklady implementované na PC - od 100 do 1 000 000), adaptívny reliéf (vyhodnocovací graf ako funkcia upravených parametrov) je zložitý a môže obsahovať veľa miestnych miním.

Nevýhody algoritmu

Napriek početným úspešným aplikáciám spätnej propagácie nie je všeliekom. Najviac problémov prináša nekonečne dlhý proces učenia. V zložitých problémoch môže trénovanie siete trvať dni alebo dokonca týždne, alebo sa nemusí učiť vôbec. Dôvodom môže byť jeden z dôvodov popísaných nižšie.

Paralýza siete

Počas procesu sieťového tréningu môžu byť hodnoty hmotnosti v dôsledku korekcie veľmi veľké. To môže viesť k tomu, že všetky alebo väčšina neurónov bude pracovať pri veľmi vysokých hodnotách OUT v oblasti, kde je derivácia funkcie kontrakcie veľmi malá. Keďže chyba odoslaná späť počas procesu učenia je úmerná tejto derivácii, proces učenia môže prakticky zamrznúť. Z teoretického hľadiska je tento problém zle pochopený. Tomu sa zvyčajne predíde zmenšením veľkosti kroku η, ale tým sa zvýši čas tréningu. Na prevenciu alebo zotavenie sa z paralýzy sa použili rôzne heuristiky, ale zatiaľ ich možno považovať len za experimentálne.

Miestne minimá

Spätné šírenie využíva formu zostupu gradientu, to znamená, že klesá po chybovej ploche a plynule upravuje váhy smerom k minimu. Chybový povrch komplexnej siete je vysoko členitý a pozostáva z kopcov, údolí, záhybov a roklín vo vysokorozmernom priestore. Sieť môže spadnúť do miestneho minima (plytké údolie), keď je v blízkosti oveľa hlbšie minimum. V miestnom minimálnom bode všetky smery smerujú nahor a sieť z neho nemôže uniknúť. Hlavným problémom pri trénovaní neurónových sietí sú práve metódy úniku z lokálnych miním: pri každom opustení lokálneho minima sa opäť hľadá ďalšie lokálne minimum pomocou rovnakej metódy spätného šírenia chýb, až kým už nie je možné nájsť cestu von. to.

Veľkosť kroku

Dôkladné preskúmanie dôkazu konvergencie ukazuje, že korekcie hmotnosti sa považujú za nekonečne malé. Je jasné, že to v praxi nie je možné, pretože to vedie k nekonečnému času učenia. Veľkosť kroku by sa mala brať ako konečná. Ak je veľkosť kroku pevná a veľmi malá, potom je konvergencia príliš pomalá, ak je fixná a príliš veľká, môže dôjsť k paralýze alebo neustálej nestabilite. Účinné je zvyšovať krok, kým sa zlepšenie odhadu v danom smere antigradientu nezastaví a znižovať, ak k takémuto zlepšeniu nedôjde. P. D. Wasserman opísal adaptívny algoritmus výberu krokov, ktorý automaticky upravuje veľkosť kroku počas procesu učenia. Kniha A. N. Gorbana navrhuje rozsiahlu technológiu na optimalizáciu učenia.

Treba tiež poznamenať, že sieť je možné preškoliť, čo je s najväčšou pravdepodobnosťou výsledkom chybného návrhu jej topológie. S príliš veľkým počtom neurónov sa stráca schopnosť siete zovšeobecňovať informácie. Sieť sa naučí celú sadu obrázkov poskytnutých na školenie, ale akékoľvek iné obrázky, dokonca aj veľmi podobné, môžu byť klasifikované nesprávne.

pozri tiež

  • Algoritmus rýchlostného gradientu

Literatúra

  1. Wasserman F. Neurocomputing: teória a prax. - M.: "Mir", 1992.
  2. Khaikin S. Neurónové siete: Kompletný kurz. Za. z angličtiny N. N. Kussul, A. Yu. 2. vydanie, rev. - M.: Williams Publishing House, 2008, 1103 s.

Odkazy

  1. Koposov A. I., Shcherbakov I. B., Kislenko N. A., Kislenko O. P., Varivoda Yu a kol.. - M.: VNIIGAZ, 1995.

Návrat

×
Pripojte sa ku komunite „koon.ru“!
V kontakte s:
Už som prihlásený na odber komunity „koon.ru“