• Trénink neuronových sítí. Algoritmus zpětného šíření

    V kapitole jsme se seznámili s takovými pojmy, jako je umělá inteligence, strojové učení a umělé neuronové sítě.

    V této kapitole podrobně popíšu model umělého neuronu, pohovořím o přístupech k trénování sítí a také popíšu některé známé typy umělých neuronových sítí, které budeme studovat v následujících kapitolách.

    Zjednodušení

    V minulé kapitole jsem neustále mluvil o některých vážných zjednodušeních. Důvodem pro zjednodušení je, že ne moderní počítače nemůže rychle takový model komplexní systémy jako náš mozek. Navíc, jak jsem řekl, náš mozek je plný různých biologických mechanismů, které se zpracováním informací nesouvisejí.

    Potřebujeme model pro převod vstupního signálu na výstup, který potřebujeme. Všechno ostatní se nás netýká. Začněme zjednodušovat.

    Biologická struktura → schéma

    V předchozí kapitole jste si uvědomili, jak složité jsou biologické neuronové sítě a biologické neurony. Místo zobrazování neuronů jako nestvůr s chapadly, pojďme si nakreslit diagramy.

    Obecně lze říci, že existuje několik způsobů grafický obrázek neuronové sítě a neurony. Zde znázorníme umělé neurony jako kruhy.

    Místo složitého prolínání vstupů a výstupů použijeme šipky označující směr pohybu signálu.

    Umělou neuronovou síť lze tedy znázornit jako soubor kruhů (umělých neuronů) spojených šipkami.

    Elektrické signály → čísla

    Ve skutečné biologické nervová síť elektrický signál je přenášen ze síťových vstupů na výstupy. V procesu průchodu neuronovou sítí se může měnit.

    Elektrický signál bude vždy elektrickým signálem. Koncepčně se nic nemění. Ale co se potom mění? Velikost tohoto elektrického signálu se mění (silnější/slabší). A jakákoliv hodnota může být vždy vyjádřena jako číslo (větší/menší).

    V našem modelu umělé neuronové sítě absolutně nepotřebujeme implementovat chování elektrického signálu, protože na jeho implementaci stejně nebude nic záviset.

    Na síťové vstupy použijeme nějaká čísla, symbolizující velikost elektrického signálu, pokud by byla. Tato čísla se budou pohybovat sítí a nějakým způsobem se měnit. Na výstupu sítě dostaneme nějaké výsledné číslo, které je odezvou sítě.

    Pro pohodlí budeme stále volat na naše čísla kolující v signálech sítě.

    Synapse → váhy spojení

    Připomeňme si obrázek z první kapitoly, na kterém byly barevně znázorněny spojnice mezi neurony – synapse. Synapse mohou zesílit nebo zeslabit elektrický signál, který jimi prochází.

    Charakterizujme každé takové spojení určitým číslem, kterému se říká váha tohoto spojení. Signál prošel skrz toto spojení, se vynásobí hmotností odpovídajícího spojení.

    To je klíčový bod v konceptu umělých neuronových sítí, vysvětlím to podrobněji. Podívejte se na obrázek níže. Nyní každá černá šipka (odkaz) na tomto obrázku odpovídá nějakému číslu ​\(w_i \)​ (váha odkazu). A když signál prochází tímto spojením, jeho velikost se násobí váhou tohoto spojení.

    Na výše uvedeném obrázku nemá každý odkaz váhu, protože zde není místo pro popisky. Ve skutečnosti má každý ​\(i \) ​tý odkaz svou vlastní ​\(w_i \) ​tou váhu.

    umělý neuron

    Nyní přejdeme k úvahám o vnitřní struktuře umělého neuronu a o tom, jak transformuje signál přicházející na jeho vstupy.

    Níže uvedený obrázek ukazuje kompletní model umělý neuron.

    Nebojte se, není zde nic složitého. Podívejme se na vše podrobně zleva doprava.

    Vstupy, váhy a totalizér

    Každý neuron, včetně umělého, musí mít nějaké vstupy, kterými přijímá signál. Již jsme si představili koncept vah, kterými se násobí signály procházející spojením. Na obrázku výše jsou závaží znázorněna kruhy.

    Signály přijaté na vstupech se násobí jejich váhami. Signál prvního vstupu ​\(x_1 \) ​ se vynásobí odpovídající váhou ​\(w_1 \) ​. V důsledku toho dostaneme ​\(x_1w_1 \) . A tak dále až do ​\(n \) ​tého vstupu. V důsledku toho na poslední přihlášení dostaneme ​\(x_nw_n \) .

    Nyní jsou všechny produkty převedeny do sčítačky. Již podle názvu můžete pochopit, co dělá. Jednoduše sečte všechny vstupy vynásobené jejich příslušnými váhami:

    \[ x_1w_1+x_2w_2+\cdots+x_nw_n = \sum\limits^n_(i=1)x_iw_i \]

    Nápověda k matematice

    Sigma - Wikipedie.

    Když je potřeba krátce zapsat velký výraz sestávající ze součtu opakujících se / členů stejného typu, použije se znak sigma.

    Zvážit nejjednodušší varianta záznamy:

    \[ \sum\limits^5_(i=1)i=1+2+3+4+5 \]

    Tedy zespodu sigma přiřadíme proměnné čítače ​\(i \)​ počáteční hodnotu, která se bude zvyšovat, dokud nedosáhne horní hranice (ve výše uvedeném příkladu je to 5).

    Horní hranice může být také variabilní. Uvedu příklad takového případu.

    Řekněme, že máme ​\(n\) obchody. Každý obchod má své vlastní číslo: od 1 do ​\(n\)​. Každý obchod má zisk. Vezměme si nějaký (nezáleží na tom který) ​\(i \) ​tý obchod. Zisk z toho je ​\(p_i \) ​.

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

    Jak vidíte, všechny členy tohoto součtu jsou stejného typu. Pak je lze stručně zapsat takto:

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

    Slovy: "Sečtěte zisky všech obchodů, počínaje prvním a konče ​\(n \) ​tým." Ve formě vzorce je to mnohem jednodušší, pohodlnější a krásnější.

    Výsledkem sčítačky je číslo zvané vážený součet.

    Vážený součet(vážený součet) (​\(netto \) ​) je součet vstupů vynásobený jejich příslušnými váhami.

    \[ net=\sum\limits^n_(i=1)x_iw_i \]

    Role sčítačky je zřejmá – agreguje všechny vstupní signály (kterých může být mnoho) do jediného čísla – váženého součtu, který charakterizuje signál přijatý neuronem jako celek. Další vážený součet může být reprezentován jako stupeň obecné excitace neuronu.

    Příklad

    Pro pochopení role poslední složky umělého neuronu – aktivační funkce – uvedu přirovnání.

    Vezměme si jeden umělý neuron. Jeho úkolem je rozhodnout, zda půjde odpočívat na moře. K tomu přivádíme na jeho vstupy různá data. Nechť má náš neuron 4 vstupy:

    1. Náklady na cestu
    2. Jaké je počasí na moři
    3. Aktuální pracovní situace
    4. Bude na pláži snack bar

    Všechny tyto parametry budou charakterizovány 0 nebo 1. Pokud je tedy počasí na moři dobré, použijeme na tento vstup 1. A tak se všemi ostatními parametry.

    Pokud má neuron čtyři vstupy, pak musí existovat čtyři váhy. V našem příkladu lze váhové faktory považovat za indikátory důležitosti každého vstupu, ovlivňujícího společné rozhodnutí neuron. Váhy vstupů rozdělujeme následovně:

    Je snadné vidět, že faktory nákladů a počasí na moři (první dva vstupy) hrají velmi důležitou roli. Budou také hrát rozhodující roli při rozhodování neuronu.

    Odešleme následující signály na vstupy našeho neuronu:

    Váhy vstupů vynásobíme signály odpovídajících vstupů:

    Vážený součet pro tuto sadu vstupů je 6:

    \[ net=\sum\limits^4_(i=1)x_iw_i = 5 + 0 + 0 + 1 =6 \]

    Zde přichází na řadu aktivační funkce.

    Aktivační funkce

    Jen dávat váženou částku do výstupu je celkem zbytečné. Neuron to musí nějak zpracovat a vytvořit adekvátní výstupní signál. K tomuto účelu slouží aktivační funkce.

    Převede vážený součet na nějaké číslo, které je výstupem neuronu (výstup neuronu označujeme proměnnou ​\(out \) ).

    Pro odlišné typy nejvíce využívají umělé neurony různé funkce aktivace. Obecně se označují symbolem ​\(\phi(net) \) . Zadání váženého signálu v závorkách znamená, že aktivační funkce bere vážený součet jako parametr.

    Aktivační funkce (aktivační funkce)(​\(\phi(net) \)​) je funkce, která jako argument bere vážený součet. Hodnota této funkce je výstupem neuronu (\(out \) ).

    Funkce jednoho skoku

    Nejjednodušší druh aktivační funkce. Výstup neuronu může být pouze 0 nebo 1. Pokud je vážený součet větší než určitá prahová hodnota ​\(b \) , pak je výstup neuronu 1. Pokud je nižší, pak 0.

    Jak se dá použít? Předpokládejme, že jdeme k moři pouze tehdy, když je vážený součet větší nebo roven 5. Náš práh je tedy 5:

    V našem příkladu byl vážený součet 6, což znamená, že výstup našeho neuronu je 1. Takže jedeme k moři.

    Pokud by však počasí na moři bylo špatné a cesta byla velmi drahá, ale byl by tam občerstvení a normální pracovní prostředí (vstupy: 0011), pak by vážený součet byl 2, což znamená, že výstup neuronu by být 0. Takže nikam nepůjdeme.

    Obecně platí, že neuron se dívá na vážený součet a pokud je větší než jeho práh, pak neuron produkuje výstup rovný 1.

    Graficky lze tuto aktivační funkci znázornit následovně.

    Hodnoty váženého součtu jsou umístěny na vodorovné ose. Na svislé ose jsou hodnoty výstupního signálu. Jak je dobře vidět, jsou možné pouze dvě hodnoty výstupního signálu: 0 nebo 1. Navíc 0 bude vždy vydávána od mínus nekonečna až do nějaké hodnoty váženého součtu, nazývané práh. Pokud je vážený součet roven nebo větší než práh, pak funkce vrátí 1. Vše je extrémně jednoduché.

    Nyní tuto aktivační funkci zapišme matematicky. Téměř jistě jste se již setkali s konceptem složené funkce. To když spojíme více pravidel pod jednu funkci, podle kterých se vypočítá její hodnota. Ve formě složené funkce bude funkce unit hop vypadat takto:

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

    Na tomto vstupu není nic složitého. Výstup neuronu (​\(out \)​) závisí na váženém součtu (​\(net \)​) následovně: jestliže ​\(net \)​ (vážený součet) je menší než nějaký práh (​ \(b \ ) ​), pak ​\(out \) ​ (výstup neuronu) je 0. A pokud ​\(net \) ​ je větší nebo roven prahu ​\(b \) ​, pak se ​\(out \)​ rovná 1.

    Sigmoidní funkce

    Ve skutečnosti existuje celá rodina sigmoidálních funkcí, z nichž některé se používají jako aktivační funkce v umělých neuronech.

    Všechny tyto vlastnosti mají některé velmi užitečné vlastnosti, pro které se používají v neuronových sítích. Tyto vlastnosti se projeví poté, co uvidíte grafy těchto funkcí.

    Takže ... nejčastěji používaný sigmoid v neuronových sítích je logistická funkce.

    Graf této funkce vypadá celkem jednoduše. Když se podíváte pozorně, můžete vidět určitou podobnost anglický dopis​\(S \) ​, odkud pochází název rodiny těchto funkcí.

    A takto se to analyticky píše:

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

    Co je parametr \(a \)? Toto je nějaké číslo, které charakterizuje stupeň strmosti funkce. Níže jsou uvedeny logistické funkce s jiným parametrem ​\(a \) ​.

    Připomeňme si náš umělý neuron, který rozhoduje, zda jet k moři. V případě funkce unit jump bylo vše jasné. Buď pojedeme k moři (1), nebo ne (0).

    Zde je případ blíže realitě. Nejsme si úplně jisti (zejména pokud jste paranoidní) - má cenu jít? Potom pomocí logistické funkce jako aktivační funkce získáte číslo mezi 0 a 1. A čím větší je vážený součet, tím více se výstup bude blížit 1 (ale nikdy nebude přesně rovný). Naopak, čím menší je vážený součet, tím blíže bude výstup neuronu 0.

    Například výstup našeho neuronu je 0,8. To znamená, že věří, že stále stojí za to jet k moři. Pokud by jeho výstup byl 0,2, znamenalo by to, že by byl téměř jistě proti plavbě na moře.

    Jaké jsou pozoruhodné vlastnosti logistické funkce?

    • je to funkce "squeezing", to znamená, že bez ohledu na argument (vážený součet) bude výstupní signál vždy mezi 0 a 1
    • je flexibilnější než funkce jednotkového skoku – jejím výsledkem může být nejen 0 a 1, ale libovolné číslo mezi tím
    • ve všech bodech má derivaci a tuto derivaci lze vyjádřit stejnou funkcí

    Právě kvůli těmto vlastnostem je logistická funkce nejčastěji využívána jako aktivační funkce v umělých neuronech.

    Hyperbolická tečna

    Existuje však další sigmoid - hyperbolická tečna. Je používán jako aktivační funkce biology pro realističtější model nervové buňky.

    Taková funkce umožňuje získat hodnoty různých znamének na výstupu (například od -1 do 1), což může být užitečné pro řadu sítí.

    Funkce je napsána následovně:

    \[ out(net) = \tanh\left(\frac(net)(a)\right) \]

    Ve výše uvedeném vzorci parametr ​\(a \) ​také určuje, jak strmý je graf této funkce.

    A zde je graf této funkce.

    Jak vidíte, vypadá to jako graf logistické funkce. Hyperbolická tečna má všechny užitečné vlastnosti, které má logistická funkce.

    co jsme se naučili?

    Nyní máte úplné pochopení vnitřní struktury umělého neuronu. Přinesu znovu Stručný popis jeho díla.

    Neuron má vstupy. Jsou jim dány signály ve formě čísel. Každý vstup má svou váhu (také číslo). Vstupní signály se násobí odpovídajícími váhami. Získáme sadu „vážených“ vstupních signálů.

    Potom se převede vážený součet aktivační funkce a dostaneme výstup neuronů.

    Zformulujme nyní nejkratší popis práce neuronu – jeho matematický model:

    Matematický model umělého neuronu se vstupy ​\(n\)​:

    Kde
    ​\(\phi \) ​ – aktivační funkce
    \(\součet\limity^n_(i=1)x_iw_i \) je vážený součet jako součet ​\(n\)​ součinů vstupních signálů a odpovídajících vah.

    Typy INS

    Přišli jsme na strukturu umělého neuronu. Umělé neuronové sítě se skládají z kolekce umělých neuronů. Nabízí se logická otázka – jak tyto velmi umělé neurony mezi sebou uspořádat / propojit?

    Zpravidla ve většině neuronových sítí existuje tzv vstupní vrstva, která plní pouze jeden úkol – distribuci vstupních signálů do dalších neuronů. Neurony této vrstvy neprovádějí žádné výpočty.

    Jednovrstvé neuronové sítě

    V jednovrstvých neuronových sítích jsou signály ze vstupní vrstvy okamžitě přiváděny do výstupní vrstvy. Provádí potřebné výpočty, jejichž výsledky jsou okamžitě přiváděny do výstupů.

    Jednovrstvá neuronová síť vypadá takto:

    Na tomto obrázku je vstupní vrstva označena kroužky (nepovažuje se za vrstvu neuronové sítě) a vpravo je vrstva obyčejných neuronů.

    Neurony jsou vzájemně propojeny šipkami. Nad šipkami jsou váhy odpovídajících spojnic (váhové koeficienty).

    Jednovrstvá neuronová síť (jednovrstvá neuronová síť) - síť, ve které jsou signály ze vstupní vrstvy okamžitě přiváděny do výstupní vrstvy, která signál převádí a okamžitě dává odpověď.

    Vícevrstvé neuronové sítě

    Takové sítě se kromě vstupní a výstupní vrstvy neuronů vyznačují také skrytou vrstvou (vrstvami). Pochopení jejich umístění je snadné – tyto vrstvy jsou mezi vstupní a výstupní vrstvou.

    Tato struktura neuronových sítí kopíruje vícevrstvou strukturu určitých částí mozku.

    Název skryté vrstvy nebyl náhodný. Faktem je, že metody pro trénink neuronů ve skryté vrstvě byly vyvinuty teprve relativně nedávno. Předtím si vystačili pouze s jednovrstvými neuronovými sítěmi.

    Vícevrstvé neuronové sítě jsou mnohem výkonnější než jednovrstvé.

    Práci skrytých vrstev neuronů lze přirovnat k práci velké továrny. Produkt (výstupní signál) v závodě se montuje po etapách. Po každém stroji se získá nějaký mezivýsledek. Skryté vrstvy také převádějí vstupní signály na některé mezivýsledky.

    Vícevrstvá neuronová síť (vícevrstvá neuronová síť) - neuronová síť sestávající ze vstupu, výstupu a jedné (několika) skrytých vrstev neuronů umístěných mezi nimi.

    Sítě přímého šíření

    Na obrázcích neuronových sítí v příkladech výše si můžete všimnout jednoho velmi zajímavého detailu.

    Ve všech příkladech jdou šipky striktně zleva doprava, to znamená, že signál v takových sítích jde striktně ze vstupní vrstvy do výstupní vrstvy.

    Sítě přímého šíření (Dopředná neuronová síť) (feedforward networks) - umělé neuronové sítě, ve kterých se signál šíří striktně ze vstupní vrstvy do výstupní. Opačným směrem se signál nešíří.

    Takové sítě jsou široce používány a docela úspěšně řeší určitou třídu problémů: predikci, shlukování a rozpoznávání.

    Nikdo však nezakazuje signál jít opačná strana.

    Zpětnovazební sítě

    V sítích tohoto typu může signál jít opačným směrem. Jaká je výhoda?

    Faktem je, že v sítích přímého šíření je výstup sítě určen vstupním signálem a váhovými koeficienty pro umělé neurony.

    A v sítích s zpětná vazba výstupy neuronů mohou být přiváděny zpět na vstupy. To znamená, že výstup neuronu je určen nejen jeho váhami a vstupním signálem, ale také předchozími výstupy (protože se opět vrátily na vstupy).

    Schopnost signálů cirkulovat v síti otevírá nové, úžasné možnosti pro neuronové sítě. Pomocí takových sítí můžete vytvářet neuronové sítě, které obnovují nebo doplňují signály. Jinými slovy, takové neuronové sítě mají vlastnosti krátkodobá paměť(jako člověk).

    Zpětnovazební sítě (Rekurentní neuronová síť) - umělé neuronové sítě, ve kterých může být výstup neuronu přiváděn zpět na jeho vstup. V obecnějším případě to znamená možnost šíření signálu z výstupů na vstupy.

    Trénink neuronové sítě

    Nyní se blíže podíváme na problematiku trénování neuronové sítě. co to je? A jak se to stane?

    Co je síťové učení?

    Umělá neuronová síť je sbírka umělých neuronů. Nyní vezmeme například 100 neuronů a spojíme je navzájem. Je jasné, že když se na vstup přivede signál, dostaneme na výstupu něco nesmyslného.

    Musíme tedy změnit některé síťové parametry až do vstupní signál nebudou převedeny na výstup, který potřebujeme.

    Co můžeme v neuronové síti změnit?

    Změna celkového počtu umělých neuronů je nesmyslná ze dvou důvodů. Za prvé, zvýšení počtu výpočetních prvků jako celku pouze činí systém těžším a nadbytečným. Za druhé, pokud nasbíráte 1000 bláznů místo 100, stále nebudou schopni správně odpovědět na otázku.

    Sčítačku nelze změnit, protože provádí jednu pevně zakódovanou funkci - přidat. Pokud ho něčím nahradíme nebo úplně odstraníme, pak to už vůbec nebude umělý neuron.

    Pokud změníme aktivační funkci pro každý neuron, získáme příliš pestrou a neřízenou neuronovou síť. Navíc ve většině případů jsou neurony v neuronových sítích stejného typu. To znamená, že všechny mají stejnou aktivační funkci.

    Zbývá jen jedna možnost - změnit váhy odkazů.

    Trénink neuronové sítě (výcvik)- hledat takovou sadu váhových koeficientů, ve které se vstupní signál po průchodu sítí převede na výstup, který potřebujeme.

    Tento přístup k pojmu „trénink neuronové sítě“ také odpovídá biologickým neuronovým sítím. Náš mozek se skládá z obrovského množství vzájemně propojených neuronových sítí. Každý z nich se jednotlivě skládá z neuronů stejného typu (aktivační funkce je stejná). Učíme se změnou synapsí, prvků, které zesilují/snižují vstupní signál.

    Je tu však ještě jeden důležitý bod. Pokud trénujete síť pouze pomocí jednoho vstupního signálu, pak si síť jednoduše „pamatuje správnou odpověď“. Zvenčí se bude zdát, že se „naučila“ velmi rychle. A jakmile dáte trochu pozměněný signál s očekáváním, že uvidíte správnou odpověď, pak síť bude chrlit nesmysly.

    Proč vlastně potřebujeme síť, která detekuje obličej pouze na jedné fotografii. Od sítě očekáváme schopnost zevšeobecnit některé znaky a rozpoznávat tváře i na jiných fotografiích.

    Právě pro tento účel jsou vytvořeny tréninkové ukázky.

    Tréninkový set (tréninkový set) je konečná množina vstupních signálů (někdy spolu se správnými výstupními signály), na kterých je síť trénována.

    Poté, co byla síť natrénována, tj. když síť produkuje správné výsledky pro všechny vstupní signály z trénovacího vzorku, může být použita v praxi.

    Než však čerstvě upečenou neuronovou síť vypustí do boje, často hodnotí kvalitu její práce na tzv. zkušební vzorek.

    testovací sada (testovací sada) - konečná množina vstupních signálů (někdy spolu se správnými výstupními signály), které slouží k hodnocení kvality sítě.

    Pochopili jsme, co je „síťové učení“ – výběr správné sady závaží. Nyní vyvstává otázka – jak lze síť trénovat? V nejobecnějším případě existují dva přístupy, které vedou k různým výsledkům: učení pod dohledem a učení bez dozoru.

    Učení s učitelem

    Podstatou tohoto přístupu je, že dáte signál na vstup, podíváte se na odezvu sítě a poté ji porovnáte s již připravenou správnou odpovědí.

    Důležitý bod. Nezaměňujte správné odpovědi a známý algoritmus řešení! Obličej na fotografii můžete vysledovat prstem (správná odpověď), ale nemůžete říct, jak to bylo provedeno (známý algoritmus). Zde je stejná situace.

    Poté pomocí speciálních algoritmů změníte váhy spojů neuronové sítě a znovu jí dáte vstupní signál. Porovnejte její odpověď se správnou a tento postup opakujte, dokud síť nezačne odpovídat s přijatelnou přesností (jak jsem řekl v kapitole 1, síť nemůže dát jednoznačně přesné odpovědi).

    Učení s učitelem (Učení pod dohledem) je typ síťového tréninku, při kterém se mění jeho váhy tak, aby se odpovědi sítě minimálně lišily od již připravených správných odpovědí.

    Kde mohu získat správné odpovědi?

    Pokud chceme, aby síť rozpoznávala obličeje, můžeme vytvořit cvičný vzorek 1000 fotek (vstupů) a nezávisle z něj extrahovat obličeje (správné odpovědi).

    Pokud chceme, aby síť předpovídala růst/pokles cen, musí být trénovací vzorek vytvořen na základě minulých dat. Jako vstupní signály můžete vzít určité dny, celkový stav trhu a další parametry. A jako správné odpovědi - vzestup a pokles ceny v těch dnech.

    Stojí za zmínku, že učitel samozřejmě nemusí být nutně osoba. Faktem je, že někdy musí být síť trénována hodiny a dny, což znamená tisíce a desetitisíce pokusů. V 99% případů tuto roli plní počítač, nebo spíše speciální počítačový program.

    Učení bez učitele

    Učení bez dozoru se používá, když nemáme správné odpovědi na vstupní signály. V tomto případě se celý tréninkový vzorek skládá ze sady vstupních signálů.

    Co se při takovém tréninku sítě děje? Ukazuje se, že při takovém „trénování“ síť začíná rozlišovat třídy signálů dodávaných na vstup. Stručně řečeno, síť se začne shlukovat.

    Můžete například předvést řetězce cukrovinek, pečiva a dortů. Síť nijak neregulujete. Jednoduše vkládáte data do jeho vstupů o daný objekt. Postupem času začne síť generovat signály tří různých typů, které jsou zodpovědné za vstupní objekty.

    Učení bez učitele (Učení bez dozoru) je typ síťového učení, ve kterém síť nezávisle klasifikuje vstupní signály. Správné (referenční) výstupní signály se nezobrazují.

    závěry

    V této kapitole jste se dozvěděli vše o struktuře umělého neuronu, stejně jako úplné pochopení toho, jak funguje (a jeho matematického modelu).

    Navíc teď víte o různé typy umělé neuronové sítě: jednovrstvé, vícevrstvé, dopředné sítě a sítě se zpětnou vazbou.

    Dozvěděli jste se také o síťovém učení pod dohledem a bez dozoru.

    Potřebnou teorii už znáte. Následující kapitoly jsou diskusí o konkrétních typech neuronových sítí, konkrétních algoritmech pro jejich trénování a programování.

    Otázky a úkoly

    Materiál této kapitoly by měl být velmi dobře znám, protože obsahuje základní teoretické informace o umělých neuronových sítích. Ujistěte se, že získáte sebevědomé a správné odpovědi na všechny níže uvedené otázky a úkoly.

    Popište zjednodušení ANN ve srovnání s biologickými neuronovými sítěmi.

    1. Složitá a složitá struktura biologických neuronových sítí je zjednodušena a prezentována ve formě diagramů. Ponechte pouze model zpracování signálu.

    2. Povaha elektrických signálů v neuronových sítích je stejná. Rozdíl je pouze v jejich velikosti. Odstraňujeme elektrické signály, a místo nich používáme čísla označující velikost procházejícího signálu.

    Aktivační funkce je často označována jako \(\phi(net) \) .

    Napište matematický model umělého neuronu.

    Umělý neuron se vstupy ​\(n \)​ převádí vstupní signál (číslo) na výstupní signál (číslo) následovně:

    \[ out=\phi\left(\sum\limits^n_(i=1)x_iw_i\right) \]

    Jaký je rozdíl mezi jednovrstvými a vícevrstvými neuronovými sítěmi?

    Jednovrstvé neuronové sítě se skládají z jedné výpočetní vrstvy neuronů. Vstupní vrstva posílá signály přímo do výstupní vrstvy, která signál převádí a okamžitě dává výsledek.

    Vícevrstvé neuronové sítě mají kromě vstupní a výstupní vrstvy také skryté vrstvy. Tyto skryté vrstvy provádějí jakési vnitřní přechodné transformace, jako jsou fáze výroby produktů v továrně.

    Jaký je rozdíl mezi dopřednými sítěmi a zpětnovazebními sítěmi?

    Dopředné sítě umožňují tok signálu pouze jedním směrem – od vstupů k výstupům. Sítě se zpětnou vazbou tato omezení nemají a výstupy neuronů mohou být přiváděny zpět na vstupy.

    Co je to tréninkový vzorek? jaký je jeho význam?

    Před použitím sítě v praxi (například pro řešení aktuálních problémů, na které nemáte odpovědi) je potřeba shromáždit sbírku problémů s hotovými odpověďmi, na kterých síť trénovat. Tato kolekce se nazývá tréninková sada.

    Pokud shromažďujete příliš malou sadu vstupních a výstupních signálů, pak si síť jednoduše zapamatuje odpovědi a cíle učení nebude dosaženo.

    Co znamená síťové učení?

    Síťové učení je chápáno jako proces změny váhových koeficientů umělých neuronů v síti s cílem vybrat takovou jejich kombinaci, která převede vstupní signál na správný výstup.

    Co je učení pod dohledem a bez dozoru?

    Při trénování sítě s učitelem jsou signály předávány jejím vstupům a poté je její výstup porovnáván s dříve známým správným výstupem. Tento proces se opakuje, dokud není dosaženo požadované přesnosti odpovědí.

    Pokud sítě dodávají pouze vstupní signály, aniž by je porovnávaly s připravenými výstupy, pak síť začne tyto vstupní signály samostatně klasifikovat. Jinými slovy, provádí shlukování vstupních signálů. Takovému učení se říká učení bez dozoru.

    Nyní, když je jasné, co přesně chceme vybudovat, můžeme přejít k otázce „jak takovou neuronovou síť postavit“. Tento problém je řešen ve dvou fázích: 1. Výběr typu (architektury) neuronové sítě. 2. Výběr vah (trénování) neuronové sítě. Prvním krokem je vybrat si následující: * které neurony chceme použít (počet vstupů, přenosové funkce); * jak je propojit; * co brát jako vstupy a výstupy neuronové sítě. Na první pohled se tento úkol zdá zdrcující, ale naštěstí nemusíme vymýšlet neuronové sítě od nuly – existuje několik desítek různých architektur neuronových sítí a účinnost mnoha z nich byla matematicky prokázána. Nejoblíbenější a nejstudovanější architektury jsou vícevrstvý perceptron, obecná regresní neuronová síť, Kohonenovy neuronové sítě a další. Všechny tyto architektury si brzy přečteme ve speciální části tohoto tutoriálu.

    Ve druhé fázi bychom měli vybranou neuronovou síť „natrénovat“, tedy vybrat takové hodnoty jejích vah, aby fungovala podle potřeby. Netrénovaná neuronová síť je jako dítě – lze ji naučit cokoli. V neuronových sítích používaných v praxi může být počet závaží i několik desítek tisíc, takže trénink je opravdu složitý proces. Pro mnoho architektur byly vyvinuty speciální učící algoritmy, které umožňují upravit váhy neuronové sítě určitým způsobem. Nejpopulárnějším z těchto algoritmů je metoda zpětné šíření chyby (Error Back Propagation), používané např. k trénování perceptronu.

    Trénink neuronových sítí

    Trénovat neuronovou síť znamená sdělit jí, čeho se z ní snažíme dosáhnout. Tento proces je velmi podobný učení dítěte abecedu. Ukazujeme dítěti obrázek písmene "A" a ptáme se ho: "Co je to za písmeno?" Pokud je odpověď špatná, řekneme dítěti odpověď, kterou bychom od něj rádi dostali: "Toto je písmeno A." Dítě si tento příklad pamatuje spolu se správnou odpovědí, to znamená, že v jeho paměti nastanou určité změny správným směrem. Postup předkládání písmen budeme opakovat znovu a znovu, dokud si všech 33 písmen pevně nezapamatujeme. Tento proces se nazývá „učení pod dohledem“.

    Při trénování neuronové sítě jednáme úplně stejně. Máme nějakou databázi obsahující příklady (soubor ručně psaných obrázků dopisů). Předložením obrázku písmene "A" na vstup neuronové sítě z něj dostaneme nějakou odpověď, která nemusí být nutně správná. Známe i správnou (chtěnou) odpověď - in tento případ chtěli bychom, aby úroveň signálu byla maximální na výstupu neuronové sítě označené "A". Obvykle je množina (1, 0, 0, ...) brána jako požadovaný výstup v klasifikační úloze, kde 1 je na výstupu označeném "A" a 0 je na všech ostatních výstupech. Výpočtem rozdílu mezi požadovanou odezvou a skutečnou odezvou sítě dostaneme 33 čísel - vektor chyby. Algoritmus zpětného šíření chyb je sada vzorců, která umožňuje vypočítat požadované korekce pro váhy neuronové sítě z chybového vektoru. Stejné písmeno (stejně jako různé obrázky stejného písmene) můžeme neuronové síti prezentovat mnohokrát. V tomto smyslu trénink připomíná spíše opakování cviků ve sportu – tréninku.

    Ukazuje se, že po opakované prezentaci příkladů se váhy neuronové sítě stabilizují a neuronová síť dává správné odpovědi na všechny (nebo téměř všechny) příklady z databáze. V tomto případě říkáme, že „neuronová síť se naučila všechny příklady“, „neuronová síť byla natrénována“ nebo „neuronová síť byla natrénována“. V softwarové implementace je vidět, že během procesu učení se hodnota chyby (součet druhých mocnin pro všechny výstupy) postupně snižuje. Když chybová hodnota dosáhne nuly nebo přijatelné nízké úrovně, trénování se zastaví a výsledná neuronová síť je považována za trénovanou a připravenou k použití na nových datech. Je důležité poznamenat, že všechny informace, které má neuronová síť o úloze, jsou obsaženy v sadě příkladů. Kvalita trénování neuronové sítě tedy přímo závisí na počtu příkladů v trénovací sadě a také na tom, jak plně tyto příklady danou úlohu popisují.

    Nemá tedy například smysl používat neuronovou síť k předpovídání finanční krize, pokud v tréninkovém vzorku žádné krize nejsou. Předpokládá se, že pro plnohodnotné trénování neuronové sítě je zapotřebí alespoň několik desítek (a lepší než stovky) příklady. Ještě jednou opakujeme, že trénování neuronových sítí je složitý a vědecky náročný proces. Tréninkové algoritmy neuronové sítě mají různé parametry a nastavení, která vyžadují pochopení jejich vlivu na řízení.


    Jakmile je neuronová síť natrénována, můžeme ji použít k řešení užitečných problémů. Nejdůležitější vlastností lidského mozku je, že jakmile se naučí určitý proces, může správně jednat v situacích, ve kterých nebyl v procesu učení. Můžeme například číst téměř jakýkoli rukopis, i když jej vidíme poprvé v životě. Podobně neuronová síť, správně natrénovaná, může s největší pravděpodobností správně reagovat na nová data, která jí dosud nebyla předložena. Můžeme například nakreslit písmeno „A“ jiným rukopisem a poté požádat naši neuronovou síť o klasifikaci nového obrázku. Váhy trénované neuronové sítě ukládají mnoho informací o podobnostech a rozdílech písmen, takže můžete počítat se správnou odpovědí pro novou verzi obrázku. Příklady hotových neuronových sítí

    Výše popsané procesy trénování a aplikace neuronových sítí lze vidět v akci právě teď. Ward Systems Group jich připravila několik jednoduché programy, které jsou napsány na základě knihovny NeuroWindows. Každý z programů umožňuje uživateli samostatně nastavit sadu příkladů a trénovat na této sadě určitou neuronovou síť. Pak můžete této neuronové síti nabídnout nové příklady a pozorovat její práci.

    MODERNÍ INFORMAČNÍ TECHNOLOGIE/2. Výpočetní technika a programování

    Zolotukhina Irina Andreevna, vysokoškolačka

    Kostanay State University pojmenovaná po A. Baitursynov, Kazachstán.

    Metody a algoritmy pro trénování neuronových sítí.

    Anotace:tento článek analyzuje neuronové sítě, proč jsou tak důležité, zvažuje různé algoritmy neuronových sítí, rozsah sítí.

    Klíčová slova:neuron, perceptron, Rosenblattova metoda, Hebbova metoda, chyba zobecnění, chyba učení, algoritmus učení.

    Neuronové sítě(neboli umělé neuronové sítě) je jednou z nejzajímavějších oblastí výzkumu v oblasti umělá inteligence založené na simulaci a reprodukci nervový systém osoba. Vědci se zajímají zejména o procesy jako: schopnost nervového systému učit se, opravovat chyby, rozhodovat se, což by mělo umožnit simulovat práci lidského mozku.

    Umělé neuronové sítě jsou trénovány analýzou pozitivních a negativních dopadů. Skládají se z neuronů, které jsou tak pojmenovány analogicky s biologickým prototypem.

    Model umělého neuronu poprvé navrhli američtí vědci Warren McCulloch a jeho student Walter Pitt v roce 1943.

    V závislosti na funkcích vykonávaných neurony v síti lze rozlišit tři typy:

    · vstupní neurony, kterým je dodáván vektor kódující vstupní akci nebo obraz vnějšího prostředí; obvykle neprovádějí výpočetní postupy;

    · mezilehlé neurony, které tvoří základ neuronových sítí, jejichž transformace se provádějí podle výrazů (1) a (1.1);

    · výstupní neurony, jejichž výstupní hodnoty představují výstupy neuronové sítě; transformace v nich se také provádějí podle výrazů (1) a (1.1).

    Obr 1. Struktura formální neuronové sítě

    (1)

    y = f(s)(1.1)

    Kde

    · w i, je hmotnost synapse , i = 1...n;

    · b– hodnota offsetu;

    · sje výsledek součtu;

    · X, – vstupní vektorová složka (vstupní signál),

    · x i = 1...n;

    · naje výstupní signál neuronu;

    · nje počet neuronových vstupů;

    · F– nelineární transformace (aktivační funkce).

    na vstupní signál (s) nelineární převodník reaguje výstupním signálem f(s), který představuje výstup neuronu.

    Výhody přístupu neuronové sítě při řešení problémů informační technologie na rozdíl od jiných (například von Neumann architektury):

    · paralelismus zpracování informací;

    · jediný a účinný princip učení;

    · spolehlivost fungování;

    · schopnost řešit neformální problémy.

    Aplikace a problémy řešené umělými neuronovými sítěmi

    Umělé neuronové sítě našly své uplatnění v různých oblastech techniky. Další zvyšování výkonu počítačů je stále více spojeno s rozvojem těchto sítí, zejména s neuropočítači, které jsou založeny na umělé neuronové síti.

    Rozsah úloh řešených neuronovými sítěmi:

    · rozpoznávání vzorů;

    · rozpoznávání a syntéza řeči;

    · rozpoznávání leteckých snímků;

    · zpracování signálu v přítomnosti velkého šumu;

    · prognózování;

    optimalizace;

    · Předpovídání kotací cenných papírů a směnných kurzů;

    · Prevence podvodů s kreditními kartami;

    Burzovní hra

    · filtrování spamu;

    · oceňování nemovitostí;

    · hodnocení finanční situace podniků a rizika nesplácení úvěrů;

    · zpracování radarových signálů;

    · bezpečnostní a video sledovací systémy;

    · řízení provozu na dálnicích a železnicích;

    · diagnostika v lékařství;

    · správa složitých objektů;

    · těžba znalostí z velkých dat v oblasti obchodu, financí a vědeckého výzkumu;

    · ovládání v reálném čase a to není vše.

    Vzdělání

    Učením se rozumí zlepšování výkonu systému pomocí analýzy vstupních dat. Školení navíc probíhá podle určitých pravidel.

    Existují dva hlavní přístupy k učení: „s učitelem“ a „bez učitele“ (samoučení). Na učení s učitelem neuronová síť má správné odpovědi (síťové výstupy) pro každý příklad vstupu. Společně se jim říká výcviková dvojice. Váhy jsou upraveny tak, aby síť produkovala odpovědi co nejblíže známým správným odpovědím a zároveň minimalizovala chyby. Vektory tréninkové sady jsou prezentovány sekvenčně, jsou vypočteny chyby a váhy jsou upravovány pro každý vektor, dokud chyba v celém tréninkovém poli nedosáhne přijatelné úrovně. Učení bez učitele nevyžaduje znalost správných odpovědí na každý příklad cvičné sady. V tomto případě se odhalí vnitřní struktura dat nebo vztah mezi vzorky v datovém systému, což umožňuje vzorky kategorizovat.

    Učení s učitelem

    Na vstup umělé neuronové sítě je přiváděna sada vstupních neuronůX- vstupní vektor pro trénovanou neuronovou síť.

    Definujeme chybovou funkci E. Toto je obvykle střední kvadratická chyba,

    ,

    Kde

    · P- počet příkladů zpracovaných neuronovou sítí;

    · y i-výstup;

    · d i- požadovaný (ideální) výstup neuronové sítě.

    Postup pro trénování neuronové sítě je redukován na postup pro korekci vah spojení. Účelem postupu korekce hmotnosti je minimalizovat chybovou funkci E.

    Obecné schéma školení s učitelem:

    1 Před začátkem tréninku se váhy nějakým způsobem nastaví, například náhodně.

    2 V první fázi jsou příklady školení předkládány vstupu v určitém pořadí. Při každé iteraci se vypočítá chyba pro příklad školení E L(learning error) a podle určitého algoritmu jsou váhy opraveny. Účelem postupu korekce hmotnosti je minimalizovat chybu E L.

    3 Na druhém stupni školení se kontroluje správnost práce. Testovací případy jsou zadány jako vstup v určitém pořadí. Při každé iteraci se vypočítá chyba pro testovací případ E G(generalizační chyba - chyba, kterou trénovaný model vykazuje na příkladech, které se neúčastnily procesu učení). Pokud je výsledek neuspokojivý, pak se sada tréninkových příkladů upraví a tréninkový cyklus se opakuje.

    Pokud po několika iteracích algoritmu učení dojde k chybě učení E L klesne téměř na nulu, zatímco chyba zobecnění E G na začátku klesá a pak začíná růst, pak je to známka efektu overfittingu. V tomto případě musí být trénink zastaven.

    Obr. 2. Efekt přesazení

    Na základě tohoto algoritmu je neuronová síť trénována Rosenblattovou metodou.

    Rosenblattova metoda

    Tuto metodu navrhl F. Rosenblatt v 60. letech XX století Pro neuronovou síť zvanou perceptron (perceptron). Perceptron má funkci prahové aktivace, jeho schéma je na obr.1.

    Obr. 3. Jednovrstvý perceptron

    Rosenblattův tréninkový postup pro jednovrstvý perceptron lze znázornit takto:

    ,

    Kde

    · x i- i-tý vstup neuronové sítě;

    · dj- požadovaný (ideální) j-tý výstup neuronové sítě;

    · A - koeficient (rychlost učení) 0< A≤1

    Váhové faktory se změní pouze v případě, že skutečná výstupní hodnota neodpovídá ideální výstupní hodnotě. Následuje popis algoritmu učení perceptronu.

    1. Všechny váhy nastavíme na nulu.

    2. Provádíme cyklus uvádění příkladů. Pro každý příklad je proveden následující postup.

    2.1. Pokud síť poskytla správnou odpověď, přejděte ke kroku 2.4.

    2.2. Pokud byla na výstupu perceptronu očekávána jednotka, ale byla přijata nula, pak se váhy spojů, kterými prošel jeden signál, sníží o jednu.

    2.3. Pokud byla na výstupu perceptronu očekávána nula, ale byla přijata jednotka, pak se váhy spojů, kterými prošel jednotkový signál, zvýší o jednu.

    2.4. Přejděme k dalšímu příkladu. Pokud je dosaženo konce tréninkové sady, přejděte ke kroku 3, jinak se vraťte ke kroku 2.1.

    3. Pokud byl během provádění druhého kroku algoritmu alespoň jednou proveden krok 2.2 nebo 2.3 a nedošlo k žádné smyčce, přejděte ke kroku 2. V opačném případě je trénování dokončeno.

    Tento algoritmus neposkytuje mechanismus pro sledování učebních smyček. Tento mechanismus lze implementovat různými způsoby. Nejekonomičtější z hlediska použití přídavné paměti má následující podobu.

    4. k=1; m=0. Pamatujte na váhy odkazů.

    5. Po cyklu obrazových prezentací porovnáme váhy spojů s zapamatovanými. Pokud se aktuální váhy shodovaly s uloženými, došlo ke smyčce. V opačném případě přejděte ke kroku 3.

    6. m=m+1. Li m<k, pak přejdeme k druhému kroku.

    7. k=2k; m=0. Zapamatujte si hmotnosti připojení a přejděte ke kroku 2.

    Protože délka cyklu je konečná, dostatečně velká k bude detekováno zacyklení.

    Učení bez učitele.

    Hlavním rysem, který činí učení bez učitele atraktivním, je jeho „nezávislost“. Proces učení, stejně jako v případě učení pod dohledem, spočívá v úpravě vah synapsí. Některé algoritmy však také mění strukturu sítě, tedy počet neuronů a jejich propojení, ale takové transformace se správněji nazývají širším pojmem - sebeorganizace a v rámci tohoto nebudou brány v úvahu. článek. Je zřejmé, že úpravu synapsí lze provést pouze na základě informací dostupných v neuronu, tedy jeho stavu a již existujících váhových koeficientů. Na základě této úvahy a co je důležitější, analogicky se známými principy sebeorganizace nervových buněk, jsou konstruovány Hebbovy algoritmy učení.

    Habb v podstatě navrhl, že synaptické spojení dvou neuronů je posíleno, pokud jsou oba tyto neurony excitovány. To lze považovat za posílení synapse v souladu s korelací úrovní excitovaných neuronů spojených touto synapsí. Z tohoto důvodu je Hebbův algoritmus učení někdy označován jako korelační algoritmus.

    Myšlenka algoritmu je vyjádřena následující rovností:

    ,

    Kde

    · y i (n-1)je výstupní hodnota neuronu i vrstva (n-1),

    · y j (n)je výstupní hodnota neuronu j vrstva n;

    · w ij (t)a w ij(t-1) je váhový koeficient synapse spojující tyto neurony v iteracích t A t-1 respektive;

    · Aje koeficient rychlosti učení.

    Existuje také Hebbova metoda diferenciálního učení, reprezentovaná vzorcem

    ,(2)

    Tady y i (n-1) (t) A y i (n-1) (t-1)– výstupní hodnota neuronu i vrstvy n-1 v iteracích ta t-1;

    y j (n) (t)A y j (n) (t-1)- totéž pro neuron j vrstva n.

    Jak je vidět ze vzorce (2), nejvíce jsou trénovány synapse, spojující ty neurony, jejichž výstupy se nejdynamičtěji měnily ve směru nárůstu.

    Kompletní algoritmus učení pomocí výše uvedených vzorců bude vypadat takto:

    1. Ve fázi inicializace jsou všem vahám přiřazeny malé náhodné hodnoty.

    2. Vstupní obraz je přiveden na vstupy sítě a excitační signály se šíří všemi vrstvami podle principů klasických dopředných sítí, to znamená, že pro každý neuron se vypočítá vážený součet jeho vstupů, ke kterému dojde k aktivaci ( přenos) funkce neuronu, v důsledku čehož získáme jeho výstupní hodnotu y i (n), i=0...M i-1, kde M i je počet neuronů ve vrstvě i; n=0...N-1 a N je počet vrstev v síti.

    3. Na základě získaných výstupních hodnot neuronů podle vzorce (1) nebo (2) se mění váhové koeficienty.

    4. Smyčku od kroku 2, dokud se hodnoty síťového výstupu nestabilizují se zadanou přesností. Použití tohoto nového způsobu určování dokončení tréninku, odlišného od způsobu používaného pro síť backpropagation, je dáno tím, že upravené hodnoty synapse jsou prakticky neomezené.

    Ve druhém kroku cyklu jsou střídavě prezentovány všechny obrázky ze vstupní sady.

    Je třeba poznamenat, že typ odpovědí na každou třídu vstupních obrázků není předem znám a bude se jednat o libovolnou kombinaci stavů neuronů výstupní vrstvy v důsledku náhodného rozložení vah ve fázi inicializace. Současně je síť schopna zobecnit podobné obrázky a odkazovat je na stejnou třídu. Testování trénované sítě umožňuje určit topologii třídy ve výstupní vrstvě. Pro redukci odezev trénované sítě na pohodlnou reprezentaci lze síť doplnit o jednu vrstvu, která musí být například podle algoritmu učení jednovrstvého perceptronu vytvořena tak, aby mapovala výstupní odezvy sítě. do požadovaných obrázků.

    Je třeba poznamenat, že učení bez dozoru je mnohem citlivější na volbu optimálních parametrů než učení pod dohledem. Za prvé, jeho kvalita silně závisí na počátečních hodnotách synapsí. Za druhé, učení je rozhodující pro volbu rádia učení a rychlosti jeho změny. A nakonec je samozřejmě velmi důležitá povaha změny samotného koeficientu učení. V tomto ohledu bude uživatel s největší pravděpodobností muset provést předběžné práce na výběru optimálních parametrů tréninku sítě.

    Navzdory určitým obtížím při implementaci nacházejí algoritmy učení bez dozoru rozsáhlé a úspěšné aplikace. Ve skutečnosti nejsložitější umělé neuronové sítě známé dnes, kognitron a neocognitron, také fungují podle algoritmu učení bez dozoru. Velmi dobře si poradili s úkolem rozpoznávat obrazy vystavené posunům polohy, šumu a deformaci tvaru. Neocognitron však selhal, když byl obraz otočen o nějaký úhel.

    Závěrem lze říci, že vědci v současné době studují umělé neuronové sítě, stabilitu určitých konfigurací, ale ne všechny úkoly lze vyřešit neuronovými sítěmi. Navzdory tomu, že umělý neuron je modelem biologického neuronu, má k dokonalosti daleko a vyžaduje významnou práci, nové objevy v oblasti umělé inteligence. Neuronové sítě nejsou schopny se učit jako člověk.Nicméně na základě výše uvedeného materiálu je možné vytvářet reálné systémy pro rozpoznávání vzorů, kompresi informací, automatizované řízení, expertní hodnocení a mnoho dalšího.

    Literatura:

    1. V.V. Kruglov, V.V. Borisov "Umělé neuronové sítě", 2002.

    2. Rumelhart D. E., Hinton G. E., Williams R. D. Learning internal reprentation by error propagation in paralelně distribuované zpracování. - Cambrige: MA: MIT Press, 1986. - 91 s.

    Nejdůležitější vlastností neuronových sítí je jejich schopnost učit se z environmentálních dat a zlepšovat svůj výkon jako výsledek učení. Ke zlepšení výkonu dochází v průběhu času podle určitých pravidel. Trénink neuronové sítě probíhá prostřednictvím interaktivního procesu úpravy synaptických vah a prahů. V ideálním případě neuronová síť získává znalosti o prostředí při každé iteraci procesu učení.

    S pojmem učení je spojeno poměrně hodně činností, proto je těžké dát tomuto procesu jednoznačnou definici. Proces učení navíc závisí na úhlu pohledu na něj. To je to, co téměř znemožňuje, aby se objevila jakákoli přesná definice tohoto pojmu. Například proces učení z pohledu psychologa se zásadně liší od učení z pohledu učitele školy. Z hlediska neuronové sítě lze pravděpodobně použít následující definici:

    Učení je proces, ve kterém jsou volné parametry neuronové sítě laděny simulací prostředí, ve kterém je síť zabudována. Typ učení je určen tím, jak jsou tyto parametry upraveny.

    Tato definice procesu učení neuronové sítě předpokládá následující sled událostí:

    1. Neuronová síť přijímá podněty z vnějšího prostředí.
    2. V důsledku prvního odstavce se mění volné parametry neuronové sítě.
    3. Po změně vnitřní struktury reaguje neuronová síť na excitace jiným způsobem.

    Výše uvedený seznam jasných pravidel pro řešení problému učení neuronové sítě se nazývá algoritmus učení. Je snadné uhodnout, že neexistuje žádný univerzální algoritmus učení vhodný pro všechny architektury neuronových sítí. Existuje pouze soubor nástrojů, reprezentovaných řadou výukových algoritmů, z nichž každý má své vlastní výhody. Učební algoritmy se od sebe liší ve způsobu, jakým upravují synaptické váhy neuronů. Dalším rozlišovacím znakem je způsob, jakým trénovaná neuronová síť komunikuje s vnějším světem. V této souvislosti se hovoří o paradigmatu učení spojeném s modelem prostředí, ve kterém daná neuronová síť funguje.

    Existují dva koncepční přístupy k trénování neuronových sítí: učení pod dohledem a učení bez dozoru.

    Řízené trénování neuronové sítě předpokládá, že pro každý vstupní vektor z trénovací množiny existuje požadovaná hodnota výstupního vektoru, nazývaná cíl. Tyto vektory tvoří tréninkový pár. Váhy sítě se mění, dokud není pro každý vstupní vektor získána přijatelná úroveň odchylky výstupního vektoru od cílového.

    Trénink neuronové sítě bez dozoru je mnohem věrohodnějším modelem učení z hlediska biologických kořenů umělých neuronových sítí. Tréninková množina se skládá pouze ze vstupních vektorů. Tréninkový algoritmus neuronové sítě upravuje váhy sítě tak, aby byly získány konzistentní výstupní vektory, tzn. takže prezentace dostatečně blízkých vstupních vektorů dává stejné výstupy.

    Neuronová síť bez zpětné vazby - perceptron

    Úlohy pro neuronové sítě

    Většinu úloh, pro které se používají neuronové sítě, lze považovat za speciální případy následujících hlavních problémů.

    Aproximace – vytvoření funkce na konečné množině hodnot (například prognóza časových řad)

    · Konstrukce vztahů na množině objektů (např. problémy rozpoznávání obrazů a zvukových signálů).

    · Distribuované získávání informací a asociativní paměť (například problém hledání implicitních závislostí ve velkých datových polích).

    · Filtrace (například detekce „viditelných pouhým okem“, ale obtížně popsatelné analyticky změny signálů).

    · Komprese informací (například implementace algoritmů neuronové sítě pro kompresi zvuků, statických a dynamických obrázků).

    · Identifikace dynamických systémů a jejich řízení.


    Vícevrstvá neuronová síť s více výstupy znázorněná na obrázku níže je perceptron.

    Obvod lze doplnit o sčítačku, která v případě potřeby sdružuje výstupní signály neuronů do jednoho společného výstupu.

    Počet vrstev v perceptronu může být různý v závislosti na složitosti problému. Matematicky bylo prokázáno (Kolmogorovova věta), že k aproximaci jakékoli matematické funkce stačí tři plnohodnotné nervové vrstvy (za předpokladu, že je možné neomezeně zvyšovat počet neuronů ve skryté vrstvě).

    Perceptron pracuje v režimu diskrétního času - na vstup je přivedena statická sada signálů (vstupní vektor), odhaduje se agregovaný stav výstupů (výstupní vektor), poté je na vstup aplikován další vektor atd. Předpokládá se, že signál v perceptronu se šíří ze vstupu na výstup okamžitě, tj. neexistují žádná časová zpoždění při přenosu signálu z neuronu na neuron, z vrstvy na vrstvu, a s tím spojené dynamické přechody chybí. Vzhledem k tomu, že perceptron nemá zpětnou vazbu (ani kladnou ani zápornou), pak v každém okamžiku jakýkoli vstupní vektor hodnot jednoznačně odpovídá určitému výstupnímu vektoru, který se nezmění, dokud vstupy neuronové sítě zůstanou nezměněny.

    Teorie perceptronů je základem pro mnoho dalších typů umělých neuronových sítí a samotné perceptrony jsou logickým výchozím bodem pro studium umělých neuronových sítí.

    Trénovat neuronovou síť znamená sdělit jí, čeho se z ní snažíme dosáhnout. Tento proces je velmi podobný učení dítěte abecedu. Ukazujeme dítěti obrázek písmene "A" a ptáme se ho: "Co je to za písmeno?" Pokud je odpověď špatná, řekneme dítěti odpověď, kterou bychom od něj rádi dostali: "Toto je písmeno A." Dítě si tento příklad pamatuje spolu se správnou odpovědí, to znamená, že v jeho paměti nastanou určité změny správným směrem. Postup předkládání písmen budeme opakovat znovu a znovu, dokud si všech 33 písmen pevně nezapamatujeme. Takový proces se nazývá "trénink s učitelem" .

    Při trénování neuronové sítě jednáme úplně stejně. Předpokládejme, že máme tabulku – databázi obsahující příklady (zakódovaná sada obrázků písmen). Při předložení obrázku písmene "A" na vstup neuronové sítě očekáváme (v ideálním případě), že úroveň signálu bude maximální (=1) na výstupu OUT1 (A je písmeno č. 1 v abecedě 33). písmena) a minimum (=0) .

    Tak se ozval stůl výuková sada , bude vypadat takto (jako příklad je vyplněn pouze první řádek):

    Dopis Vstupní vektor Požadovaný výstupní vektor
    X1 X2 X12 CÍL 1 CÍL2 CÍL33
    A
    B
    YU

    Sada vektorů pro každý příklad je volána trénovací množina (řádky tabulky). učící se pár .

    V praxi nebude netrénovaná neuronová síť fungovat tak, jak ideálně očekáváme, to znamená, že pro všechny nebo většinu příkladů budou vektory chyb obsahovat prvky výrazně odlišné od nuly.

    Tréninkový algoritmus neuronové sítě je sada matematických operací, která umožňuje pomocí chybového vektoru vypočítat takové korekce pro váhy neuronové sítě, aby se celková chyba (součet druhých mocnin pro všechny výstupy se obvykle používá pro řízení procesu učení) zmenšila. Aplikováním těchto akcí znovu a znovu se dosáhne postupného snižování chyby pro každý příklad (A, B, C atd.) trénovací sady.

    Po takovéto cyklické vícenásobné úpravě vah bude neuronová síť dávat správné (nebo téměř správné) odpovědi na všechny (nebo téměř všechny) příklady z databáze, tj. celková chyba dosáhne nuly nebo přijatelné nízké úrovně pro každý trénink. pár. V tomto případě říkají, že „neuronová síť je natrénovaná“, tj. je připravena k použití na nových, dříve neznámé , data.

    Obecně bude algoritmus učení pod dohledem vypadat takto:

    1. Inicializujte synaptické váhy s malými náhodnými hodnotami.

    2. Vyberte další tréninkový pár z tréninkové sady; přivést vstupní vektor na vstup sítě.

    3. Vypočítejte výkon sítě.

    4. Vypočítejte rozdíl mezi síťovým výkonem a požadovaným výkonem (cílový vektor trénovacího páru).

    5. Upravte váhy sítě, abyste minimalizovali chybu.

    6. Opakujte kroky 2 až 5 pro každý pár tréninkových sad, dokud chyba v celé sadě nedosáhne přijatelné úrovně.

    Konkrétní typ matematických operací provedených v kroku 5 určuje typ algoritmu učení. Například pro jednovrstvé perceptrony se používá nejjednodušší algoritmus, založený na tzv. delta pravidlo , pro perceptrony s libovolným počtem vrstev je široce používán postup zpětné propagace , je známá skupina algoritmů se zajímavými vlastnostmi, tzv stochastické algoritmy učení atd. Všechny známé algoritmy učení pro neuronové sítě jsou v podstatě odrůdy gradientních metod pro optimalizaci nelineární funkce mnoha proměnných. Hlavní problém, který vzniká při jejich praktické implementaci, je ten, že nikdy nelze s jistotou vědět, že výsledná kombinace synaptických vah je skutečně nejefektivnější z hlediska minimalizace celkové chyby na celé trénovací množině. Tato nejistota byla nazývána „problémem lokálních minim cílové funkce“.

    Cílová funkce je v tomto případě chápána jako zvolený integrální skalární indikátor , která charakterizuje kvalitu zpracování neuronovou sítí všech příkladů trénovací množiny - např. součet směrodatných odchylek VEN z CÍLOVÁ pro každý tréninkový pár. Čím menší je dosažená hodnota cílové funkce, tím vyšší je kvalita neuronové sítě na dané tréninkové sadě. V ideálním případě (v praxi dosažitelné pouze pro nejjednodušší problémy) je možné najít takovou sadu synaptických vah, které .

    Cílový funkční povrch komplexní sítě je vysoce členitý a skládá se z kopců, údolí, záhybů a roklí ve vysokorozměrném prostoru. Síť trénovaná gradientem může spadnout do místního minima (mělkého údolí), když je poblíž mnohem hlubší minimum. V bodě lokálního minima vedou všechny směry nahoru a algoritmus se z toho nedokáže dostat.

    Pokud tedy v důsledku pokusu o trénování neuronové sítě nebylo dosaženo požadované přesnosti, pak má výzkumník dvě alternativy:

    1. Předpokládejme, že proces je uvězněn v lokálním minimu a pokuste se použít nějaký jiný druh algoritmu učení pro stejnou konfiguraci sítě.

    2. Předpokládejme, že pro tuto konkrétní konfiguraci sítě bylo nalezeno globální minimum cílové funkce a zkuste síť zkomplikovat – zvyšte počet neuronů, přidejte jednu nebo více vrstev, přepněte z plně připojené sítě na neplně připojenou síť. který bere v úvahu a priori známé závislosti ve struktuře trénovací množiny atd.

    V problémech rozpoznávání a klasifikace vzorů se široce používají algoritmy, tzv učení bez učitele . V tomto případě má síť za úkol nezávisle najít skupiny vstupních vektorů „vzájemně podobných“ v prezentované sadě příkladů, generujících vysokou úroveň na jednom z výstupů (aniž by bylo předem určeno který). Ale i při takové formulaci problému se problém lokálních minim také odehrává, byť v implicitní podobě, bez striktního matematického vymezení cílové funkce (protože ze samotného pojmu cílové funkce vyplývá přítomnost dané reference síťová odezva, tj. "učitel") - "Opravdu se neuronová síť naučila alokovat shluky vstupních vektorů nejlepším možným způsobem pro tuto konkrétní konfiguraci?".