Příklad funkce aktivace neuronové sítě. Vědecká elektronická knihovna. Funkce aktivace neuronů

) jsou součástí mé vědecké práce na univerzitě, která zněla takto: „Softwarový komplex pro detekci tváří ve video streamu pomocí konvoluční neuronové sítě.“ Cílem práce bylo zlepšit rychlostní charakteristiky v procesu detekce tváří ve video streamu. Jako video stream byla použita kamera smartphonu, byl napsán desktop PS (jazyk Kotlin) pro vytvoření a trénování konvoluční neuronové sítě a také mobilní aplikace pro Android (jazyk Kotlin), která natrénovanou síť využila a „vyzkoušela“ rozpoznávat tváře z video streamu kamery. Výsledky dopadly tak a tak, použijte přesnou kopii topologie, kterou jsem navrhl, na vlastní nebezpečí a riziko (nedoporučoval bych to).

Teoretické problémy

  • určit problém, který má neuronová síť řešit (klasifikace, predikce, modifikace);
  • určit vstupní (typ: obraz, zvuk, velikost: 100x100, 30x30, formát: RGB, stupně šedi) a výstupní data (počet tříd);
  • určit topologii konvoluční sítě (počet konvolučních, podvzorkovaných, plně propojených vrstev; počet map vlastností, velikost jádra, aktivační funkce).

Zavedení

Nejlepší výsledky v oblasti rozpoznávání obličejů vykazovala konvoluční neuronová síť neboli konvoluční neuronová síť (dále jen CNN), která je logickým rozvinutím myšlenek takových architektur neuronových sítí, jako je kognitron a neocognitron. Úspěch je dán schopností zohlednit dvourozměrnou topologii obrazu, na rozdíl od vícevrstvého perceptronu.

Konvoluční neuronové sítě poskytují částečnou odolnost vůči změnám měřítka, posunům, rotacím, změnám úhlu a dalším deformacím. Konvoluční neuronové sítě kombinují tři architektonické nápady, aby poskytovaly neměnnost měřítka, rotace, translace a prostorového zkreslení:

  • lokální receptorová pole (poskytují lokální dvourozměrnou konektivitu neuronů);
  • obecné synaptické koeficienty (zajišťují detekci určitých znaků kdekoli v obraze a snižují celkový počet váhových koeficientů);
  • hierarchická organizace s prostorovými dílčími vzorky.
V současné době jsou konvoluční neuronová síť a její modifikace považovány za nejlepší algoritmy pro vyhledávání objektů ve scéně z hlediska přesnosti a rychlosti. Od roku 2012 zaujímají neuronové sítě první místo ve známém mezinárodní soutěž na rozpoznávání obrazu ImageNet.

Proto jsem ve své práci použil konvoluční neuronovou síť založenou na principech neocognitronu a doplněnou o trénování pomocí algoritmu zpětné šíření chyby.

Struktura konvoluční neuronové sítě

CNN se skládá z různých typů vrstev: konvoluční vrstvy, podvzorkovací vrstvy a vrstvy „běžné“ neuronové sítě – perceptronu, podle obrázku 1.


Obrázek 1 – topologie konvoluční neuronové sítě

První dva typy vrstev (konvoluční, podvzorkování), které se navzájem střídají, tvoří vstupní příznakový vektor pro vícevrstvý perceptron.

Konvoluční síť získala svůj název podle názvu operace - konvoluce, jejíž podstata bude popsána dále.

Konvoluční sítě jsou šťastným středem mezi biologicky věrohodnými sítěmi a konvenčním vícevrstvým perceptronem. Dnes se s jejich pomocí dosahují nejlepších výsledků v rozpoznávání obrazu. V průměru přesnost rozpoznávání takových sítí převyšuje konvenční ANN o 10-15%. SNA je klíčová technologie Hluboké učení.

Hlavním důvodem úspěchu SNA byl koncept společných vah. Navzdory velká velikost, tyto sítě mají malý počet konfigurovatelných parametrů ve srovnání s jejich předchůdcem - neocognitronem. Existují varianty CNN (Tiled Convolutional Neural Network), podobné neocognitronu v takových sítích, dochází k částečnému odmítnutí souvisejících vah, ale algoritmus učení zůstává stejný a je založen na zpětném šíření chyby. CNN mohou rychle běžet na sériovém stroji a rychle se učit čistě paralelním procesem konvoluce na každé mapě a také dekonvolucí, když se chyba šíří sítí.

Obrázek níže ukazuje vizualizaci konvoluce a dílčího vzorkování:

Model neuronu


Topologie konvolučních neuronových sítí

Určení topologie sítě je založeno na řešeném problému, datech z vědecké články a mé vlastní experimentální zkušenosti.

Můžete si vybrat další kroky ovlivňující výběr topologie:

  • určit problém, který má neuronová síť řešit (klasifikace, predikce, modifikace);
  • určit omezení v řešeném problému (rychlost, přesnost odpovědi);
  • určit vstupní (typ: obraz, zvuk, velikost: 100x100, 30x30, formát: RGB, stupně šedi) a výstupní data (počet tříd).
Úkol, který moje neuronová síť řeší, je klasifikace obrázků, konkrétně tváří. Omezení uvalená na síť jsou rychlost odezvy – ne více než 1 sekunda a přesnost rozpoznávání minimálně 70 %. Obecná topologie sítě podle obrázku 2.


Obrázek 2 - Topologie konvoluční neuronové sítě

Vstupní vrstva

Vstupními daty je barevný obrázek JPEG o velikosti 48x48 pixelů. Pokud je velikost příliš velká, pak výpočetní náročnost se zvýší, a tím dojde k porušení omezení rychlosti odezvy určení velikosti v tomto problému je řešeno metodou výběru. Pokud zvolíte příliš malou velikost, síť nebude schopna identifikovat klíčové rysy tváří. Každý obrázek je rozdělen do 3 kanálů: červený, modrý, zelený. To vytvoří 3 obrázky o velikosti 48 x 48 pixelů.

Vstupní vrstva zohledňuje dvourozměrnou topologii obrázků a skládá se z několika map (matic), může být jedna mapa, pokud je obrázek prezentován ve stupních šedi, jinak jsou 3, kde každá mapa odpovídá obrázku s konkrétní kanál (červený, modrý a zelený).

Vstupní data každé konkrétní hodnoty pixelu jsou normalizována na rozsah od 0 do 1 pomocí vzorce:

Konvoluční vrstva

Konvoluční vrstva je soubor map (jiný název je feature maps, v běžném životě jsou to obyčejné matice), každá mapa má synaptické jádro (v různých zdrojích se mu říká jinak: skenovací jádro nebo filtr).

Počet karet je dán požadavky na úkol, pokud vezmete velké množství karet, zvýší se kvalita rozpoznávání, ale zvýší se výpočetní náročnost. Na základě analýzy vědeckých článků se ve většině případů navrhuje vzít poměr jedna ku dvěma, to znamená, že každá mapa předchozí vrstvy (například v první konvoluční vrstvě je vstupem ta předchozí) spojené se dvěma mapami konvoluční vrstvy, podle obrázku 3. Počet karet - 6.


Obrázek 3 - Organizace vazeb mezi mapami konvoluční vrstvy a předchozí

Velikost všech map konvolučních vrstev je stejná a počítá se pomocí vzorce 2:

Jádro je filtr nebo okno, které klouže po celé oblasti předchozí karta a nachází určité známky předmětů. Například, pokud byla síť trénována na mnoha plochách, pak by jedno z jader mohlo produkovat největší signál v oblasti oka, úst, obočí nebo nosu může jiné jádro detekovat různé příznaky. Velikost jádra se obvykle bere v rozmezí od 3x3 do 7x7. Pokud je velikost jádra malá, pak nebude moci zvýraznit žádné rysy, pokud je příliš velká, pak se zvýší počet spojení mezi neurony. Také velikost jádra je zvolena tak, aby velikost map konvoluční vrstvy byla rovnoměrná, což nám umožňuje neztrácet informace při zmenšení rozměru v níže popsané vrstvě podvzorkování.

Jádro je systém sdílených vah neboli synapsí, to je jeden z hlavních rysů konvoluční neuronové sítě. V normálu vícevrstvá síť mezi neurony je spousta spojení, tedy synapsí, což značně zpomaluje proces detekce. V konvoluční síti naopak sdílené váhy snižují počet spojení a umožňují najít stejný prvek v celé ploše obrazu.

Zpočátku jsou hodnoty každé mapy konvoluční vrstvy rovny 0. Hodnoty vah jádra jsou nastaveny náhodně v rozsahu od -0,5 do 0,5. Jádro se přesune přes předchozí mapu a provede konvoluční operaci, která se často používá pro zpracování obrazu, vzorec:

Neformálně lze tuto operaci popsat takto: s oknem o velikosti jádra g projdeme celý obrázek f s daným krokem (obvykle 1), v každém kroku vynásobíme obsah okna prvek po prvku hodnotou kernel g, výsledek se sečte a zapíše do výsledné matice, jako na obrázku 4.


Obrázek 4 - Operace konvoluce a získání hodnot konvoluční mapy (platné)


Konvoluční operace a získávání hodnot konvoluční mapy. Jádro je posunuto, nová mapa má stejnou velikost jako předchozí (stejná)

V tomto případě, v závislosti na způsobu zpracování okrajů původní matrice, může být výsledek menší původní obrázek(platný), stejný rozměr (stejný) popř větší velikost(plné), v souladu s obrázkem 5.


Obrázek 5 - Tři typy konvoluce původní matice

Ve zjednodušené formě lze tuto vrstvu popsat vzorcem:

V tomto případě se v důsledku okrajových efektů velikost původních matic zmenšuje, vzorec:

Vrstva podvzorkování

Podvzorkovací vrstva má stejně jako konvoluční vrstva mapy, ale jejich počet se shoduje s předchozí (konvoluční) vrstvou, je jich 6 Účelem vrstvy je zmenšit rozměr map předchozí vrstvy. Pokud již byly některé znaky identifikovány během předchozí konvoluční operace, pak je pro další zpracování nutné detailní obrázek již není potřeba a je zhuštěná do méně podrobného. Filtrování nepotřebných detailů navíc pomáhá vyhnout se přetrénování.
Při procesu skenování mapy předchozí vrstvy jádrem podvzorkovací vrstvy (filtru) se skenovací jádro na rozdíl od konvoluční vrstvy neprotíná. Každá mapa má obvykle velikost jádra 2x2, což umožňuje zmenšení předchozích map konvoluční vrstvy o faktor 2. Celá mapa funkcí je rozdělena do buněk 2x2 prvků, ze kterých se vybírají maximální hodnoty.

Obvykle je funkce aktivace RelU aplikována ve vrstvě dílčího vzorkování. Operace podvzorkování (nebo MaxPooling - maximální výběr) podle obrázku 6.


Obrázek 6 - Formace nová karta vrstva podvzorkování založená na předchozí konvoluční mapě vrstev. Operace dílčího vzorkování (Max Pooling)

Formálně lze vrstvu popsat vzorcem:

Plně propojená vrstva

Posledním typem vrstvy je vrstva konvenčního vícevrstvého perceptronu. Účelem vrstvy je klasifikace, modeluje komplexní nelineární funkci, optimalizaci, která zlepšuje kvalitu rozpoznávání.

Neurony v každé mapě předchozí podvzorkované vrstvy jsou spojeny s jedním neuronem ve skryté vrstvě. Počet neuronů ve skryté vrstvě se tedy rovná počtu karet ve vrstvě podvzorku, ale spojení nemusí být nutně stejná, například pouze část neuronů kterékoli z karet ve vrstvě podvzorku může být připojen k prvnímu neuronu skryté vrstvy a zbývající část k druhému, nebo všechny neurony prvních map jsou připojeny k neuronům 1 a 2 skryté vrstvy. Výpočet hodnot neuronů lze popsat vzorcem:

Výstupní vrstva

Výstupní vrstva je propojena se všemi neurony předchozí vrstvy. Počet neuronů odpovídá počtu uznaných tříd, to znamená 2 - obličejové a netvárové. Ale pro snížení počtu spojení a výpočtů pro binární případ můžete použít jeden neuron a při použití hyperbolické tečny jako aktivační funkce znamená výstup neuronu s hodnotou -1 příslušnost k „neosobě“ třídy, naopak výstup neuronu s hodnotou 1 znamená příslušnost k třídním osobám

Výběr aktivační funkce

Jednou z fází vývoje neuronové sítě je výběr funkce aktivace neuronů. Typ aktivační funkce do značné míry určuje funkčnost neuronová síť a způsob trénování této sítě. Klasický algoritmus zpětného šíření funguje dobře na dvouvrstvých a třívrstvých neuronových sítích, ale s dalším zvyšováním hloubky začíná mít problémy. Jedním z důvodů je tzv. útlum gradientů. Jak se chyba šíří z výstupní vrstvy do vstupní vrstvy, aktuální výsledek se násobí derivací aktivační funkce na každé vrstvě. Derivace tradiční esovité aktivační funkce je v celé definiční oblasti menší než jedna, takže po několika vrstvách se chyba přiblíží nule. Pokud na druhé straně má aktivační funkce neomezenou derivaci (jako je hyperbolická tečna), pak chyba může explodovat, když se šíří, což způsobí, že postup učení je nestabilní.

V této práci je hyperbolická tečna použita jako aktivační funkce ve skryté a výstupní vrstvě a ReLU je použita v konvolučních vrstvách. Podívejme se na nejběžnější aktivační funkce používané v neuronových sítích.

Funkce aktivace sigmatu

Tato funkce patří do třídy spojité funkce a bere libovolné reálné číslo jako vstup a dává reálné číslo v rozsahu od 0 do 1 jako výstup, zejména velké (modulo). záporná čísla se změní na nulu a velké kladné se změní na jedničku. Historicky, sigmoid našel široké uplatnění, protože jeho výstup je dobře interpretován jako úroveň aktivace neuronu: od žádné aktivace (0) po plně nasycenou aktivaci (1). Sigmoid je vyjádřen vzorcem:

Graf sigmoidní funkce, jak je znázorněno níže:

Extrémně nežádoucí vlastností sigmatu je, že když se funkce nasytí na jedné či druhé straně (0 nebo 1), gradient v těchto oblastech se přiblíží nule.

Připomeňme, že v procesu zpětného šíření se daný (lokální) gradient násobí celkovým gradientem. Pokud je tedy místní gradient velmi malý, účinně vynuluje celkový gradient. V důsledku toho nebude téměř žádný signál procházet neuronem k jeho vahám a rekurzivně k jeho datům. Navíc je třeba být velmi opatrný při inicializaci vah sigmoidních neuronů, aby se zabránilo saturaci. Pokud jsou například počáteční váhy příliš velké, většina neuronů přejde do stavu nasycení, což způsobí, že se síť bude špatně učit.

Sigmoidní funkce je:

  • spojitý;
  • monotónně rostoucí;
  • diferencovatelné.

Aktivační funkce hyperbolická tečna

V této práci je hyperbolická tečna použita jako aktivační funkce pro skryté a výstupní vrstvy. Důvodem jsou následující důvody:
  • symetrické aktivační funkce, jako je hyperbolická tečna, poskytují rychlejší konvergenci než standardní logistická funkce;
  • funkce má spojitou první derivaci;
  • funkce má jednoduchou derivaci, kterou lze vypočítat z hlediska její hodnoty, což má za následek výpočetní úspory.
Graf funkce hyperbolické tečny je na obrázku:

Funkce aktivace ReLU

Je známo, že neuronové sítě jsou schopny aproximace komplexní funkce, pokud mají dostatek vrstev a aktivační funkce je nelineární. Aktivační funkce jako sigmoid nebo tangenciální jsou nelineární, ale vedou k problémům s útlumem nebo rozpínáním gradientů. Můžete však použít mnohem jednodušší možnost - rektifikovanou lineární jednotku (ReLU), která je vyjádřena vzorcem:

Graf funkce ReLU, jak je znázorněno níže:

Výhody používání ReLU:

  • jeho derivace je rovna jedné nebo nule, a proto gradienty nemohou růst ani klesat, protože vynásobením jedničky chybovou deltou dostaneme chybovou deltu, ale pokud bychom použili jinou funkci, například hyperbolickou tečnu, pak by se chybová delta mohla buď zmenšit, nebo zvětšit, nebo zůstat stejná, tedy derivace hyperbolické tečna vrátí číslo s jiné znamení a velikost, která může značně ovlivnit útlum nebo expanzi gradientu. Navíc použití této funkce vede ke ztenčení závaží;
  • výpočet sigmoidní a hyperbolické tečny vyžaduje výpočetně náročné operace, jako je umocňování, zatímco ReLU lze implementovat pomocí jednoduché prahové transformace aktivační matice na nule;
  • odřízne nepotřebné části v kanálu se záporným výstupem.
Mezi nevýhody lze poznamenat, že ReLU není vždy dostatečně spolehlivé a může během tréninkového procesu selhat („zemřít“). Například velký gradient procházející přes ReLU může způsobit aktualizaci vah tak, že neuron už nebude nikdy znovu aktivován. Pokud k tomu dojde, pak od tohoto okamžiku bude gradient procházející tímto neuronem vždy nulový. V souladu s tím bude tento neuron nevratně deaktivován. Pokud je například rychlost učení příliš vysoká, může se ukázat, že až 40 % ReLU je „mrtvých“ (to znamená, že nebyly nikdy aktivovány). Tento problém je vyřešen volbou vhodné rychlosti učení.

Tréninkové vzorky používané v experimentech

Tréninkový vzorek se skládá z pozitivních a negativních příkladů. V v tomto případě od osob a „neosob“. Poměr pozitivních a negativních příkladů je 4:1, 8000 pozitivních a 2000 negativních.

Databáze LFW3D byla použita jako pozitivní trénovací sada. Obsahuje 13 000 JPEG barevných obrázků čelních ploch, velikost 90x90 pixelů Databáze je poskytována přes FTP, přístup je přes heslo. Chcete-li získat heslo, musíte vyplnit jednoduchý formulář na hlavní stránce webu, kde uvedete své jméno a e-mail. Příklad jednotlivců z databáze je znázorněn na obrázku níže:

Jako negativní tréninkové příklady byla použita databáze SUN397, která obsahuje obrovské množství všemožných scén, které jsou rozděleny do kategorií. Celkem 130 000 obrázků, 908 scén, 313 000 scénických objektů. Celková váha této databáze je 37 GB. Kategorie obrázků jsou velmi odlišné a umožňují vybrat specifičtější prostředí, kde bude finální PS použit. Pokud je například a priori známo, že detektor obličeje je určen pouze pro rozpoznávání v interiéru, pak nemá smysl používat cvičný vzorek přírody, oblohy, hor atd. Z tohoto důvodu autor práce vybral tyto kategorie snímků: obývací pokoj, kancelář, učebna, počítačová učebna. Příklady obrázků z tréninkové sady SUN397 jsou zobrazeny níže:

Výsledky

Přímé šíření signálu ze vstupního obrazu o rozměru 90x90 pixelů trvá 20 ms (na PC), 3000 ms v mobilní aplikaci. Při detekci obličeje ve video streamu v rozlišení 640x480 pixelů je možné detekovat 50 nepřekrývajících se oblastí o rozměrech 90x90 pixelů. Výsledky získané se zvolenou topologií sítě jsou horší ve srovnání s algoritmem Viola-Jones.

Závěry

Konvoluční neuronové sítě poskytují částečnou odolnost vůči změnám měřítka, posunům, rotacím, změnám úhlu a dalším deformacím.

Jádro- je filtr, který klouže po celém snímku a najde rysy obličeje kdekoli na snímku (invariance posunutí).

Vrstva podvzorkování dává:

  • zvýšení rychlosti výpočtů (alespoň 2 krát), kvůli zmenšení velikosti map předchozí vrstvy;
  • filtrování již nepotřebných detailů;
  • hledat známky více vysoká úroveň(pro další konvoluční vrstvu).
Poslední vrstvy– vrstvy konvenčního vícevrstvého perceptronu. Dva plně připojené a jeden výstup. Tato vrstva je zodpovědná za klasifikaci z matematického hlediska, modeluje komplexní nelineární funkci, optimalizaci zlepšuje kvalitu rozpoznávání. Počet neuronů ve vrstvě 6 je založen na počtu map rysů podvzorkované vrstvy.

Možná vylepšení

  • zvažte neuronové sítě Fast-RCNN, YOLO;
  • paralelizace procesu učení na GPU;
  • používání Android NDK(C++) ke zlepšení výkonu

Trénink konvoluční neuronové sítě je popsán v

Aktivační funkce

Signál přijatý ze sčítačky je předán do aktivační funkce. Výsledek získaný výpočtem této funkce je výstup neuronu Y.

Pokud tedy aktivační funkci označíme jako F, ​​závisí výstup Y neuronu na vektoru vstupních hodnot a vektoru vah takto:

Y = F(X1*W1 + X2*W2 + … + Xn*Wn)

V praxi se používají různé funkce aktivace, které umožňují změnit chování neuronu, například lineární, prahový, sigmoidní atd. Podívejme se stručně na některé z těchto funkcí jako příklad. Více úplný popis Najdete např. v

Funkce lineární aktivace

Graf lineární aktivační funkce je na Obr. 4-3. Jak vidíte, tento graf je přímka, jejíž úhel sklonu závisí na konstantě k a velikost posunu podél vodorovné souřadnicové osy závisí na konstantě t.

4.

5.

6. Aby byla neuronová síť schopna splnit úkol, musí být natrénována (viz obr. 1). Existují algoritmy učení pod dohledem a bez dozoru.
Proces řízeného učení je prezentace vzorku příkladů školení síti. Každý vzorek je přiveden na síťové vstupy, následně zpracován v rámci struktury NN, je vypočítán výstupní signál sítě, který je porovnán s odpovídající hodnotou cílového vektoru, který představuje požadovaný síťový výstup. Poté se podle určitého pravidla vypočítá chyba a váhové koeficienty spojení v rámci sítě se mění v závislosti na zvoleném algoritmu. 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 souboru nedosáhne přijatelně nízké úrovně.

Při učení bez dozoru se trénovací množina skládá pouze ze vstupních vektorů. Učící algoritmus upravuje váhy sítě tak, aby byly získány konzistentní výstupní vektory, tj. takže prezentace dostatečně blízkých vstupních vektorů dává identické výstupy. Proces učení proto extrahuje statistické vlastnosti trénovací množiny a seskupuje podobné vektory do tříd. Prezentace vektoru z dané třídy jako vstupu vytvoří určitý výstupní vektor, ale před trénováním je nemožné předpovědět, jaký výstup bude produkován danou třídou vstupních vektorů. Proto ty výstupy podobná síť musí být transformována do nějaké srozumitelné podoby, determinované procesem učení. To není vážný problém. Obvykle není obtížné identifikovat spojení mezi vstupem a výstupem, nainstalované sítí.
Pro trénování neuronových sítí bez učitele používají způsob signalizace Trénink Hebb a Oya.



Matematicky lze proces učení popsat následovně. Během provozu generuje neuronová síť výstupní signál Y, realizující určitou funkci Y = G(X). Pokud je daná síťová architektura, pak je tvar funkce G určen hodnotami synaptických vah a vychýlené sítě.

Nechť řešením nějakého problému je funkce Y = F(X), určená parametry vstupně-výstupních dat (X 1, Y 1), (X 2, Y 2), ..., (X N, Y N ), pro které Yk = F(Xk) (k = 1, 2, …, N).

Trénink spočívá v hledání (syntéze) funkce G, která je blízká F ve smyslu určité chybové funkce E. (viz obr. 1.8).

Pokud je zvolena sada trénovacích příkladů - dvojice (X N, Y N) (kde k = 1, 2, ..., N) a metoda pro výpočet chybové funkce E, pak se trénování neuronové sítě změní na multidimenzionální optimalizační problém s velmi velkou dimenzí, a protože funkce E může mít libovolnou formu, v obecném případě jde o multiextrémní nekonvexní optimalizační problém.

K vyřešení tohoto problému lze použít následující (iterativní) algoritmy:

1. lokální optimalizační algoritmy s výpočtem parciálních derivací prvního řádu:

gradientový algoritmus (metoda nejstrmějšího sestupu),

· metody s jednorozměrnou a dvourozměrnou optimalizací účelové funkce v antigradientním směru,

· metoda konjugovaného gradientu,

· metody, které berou v úvahu směr antigradientu v několika krocích algoritmu;

2. lokální optimalizační algoritmy s výpočtem parciálních derivací prvního a druhého řádu:

Newtonova metoda

· optimalizační metody s řídkými Hessovými maticemi,

· kvazi-Newtonovy metody,

· Gauss-Newtonova metoda,

· Levenberg-Marquardtova metoda a další;

3. stochastické algoritmy optimalizace:

· hledat v náhodném směru,

· simulované žíhání,

· Metoda Monte Carlo (numerická statistická testovací metoda);

4. globální optimalizační algoritmy (globální optimalizační problémy se řeší výčtem hodnot proměnných, na kterých závisí účelová funkce).

7. Neuronová síť nebo nervový systémčlověk je komplexní síť lidských struktur, která zajišťuje propojené chování všech tělesných systémů.

Biologický neuron je speciální buňka, která se strukturálně skládá z jádra, těla buňky a procesů. Jedním z klíčových úkolů neuronu je přenášet elektrochemický impuls skrz neuronovou síť dostupná připojení s jinými neurony. Každé spojení je navíc charakterizováno určitou hodnotou nazývanou síla synaptického spojení. Tato hodnota určuje, co se stane s elektrochemickým impulsem, když je přenesen na jiný neuron: buď zesílí, nebo zeslábne, nebo zůstane nezměněn.

Biologická neuronová síť má vysoký stupeň konektivita: jeden neuron může mít několik tisíc spojení s jinými neurony. Ale to je přibližná hodnota a v každém konkrétním případě je jiná. Přenos impulsů z jednoho neuronu na druhý generuje určité buzení celé neuronové sítě. Velikost této excitace určuje odezvu neuronové sítě na některé vstupní signály. Například setkání člověka se starým známým může vést k silné stimulaci neuronové sítě, pokud jsou s tímto seznámením spojeny nějaké živé a příjemné životní vzpomínky. Silná stimulace neuronové sítě zase může vést ke zvýšení srdeční frekvence, častějšímu mrkání očí a dalším reakcím. Setkání s cizinec pro neuronovou síť to zůstane téměř bez povšimnutí, a proto nevyvolá žádné silné reakce.

Lze uvést následující vysoce zjednodušený model biologické neuronové sítě:

Každý neuron se skládá z buněčného těla, které obsahuje jádro. Z těla buňky odbočuje mnoho krátkých vláken zvaných dendrity. Dlouhé dendrity se nazývají axony. Axony se protahují dlouhé vzdálenosti, mnohem větší, než je znázorněno v měřítku tohoto obrázku. Typicky jsou axony 1 cm dlouhé (což je 100násobek průměru buněčného těla), ale mohou dosáhnout 1 metru.

V 60. až 80. letech 20. století byl prioritním směrem výzkumu v oblasti umělé inteligence expertní systémy. Expertní systémy se osvědčily, ale pouze ve vysoce specializovaných oblastech. Chcete-li vytvořit více univerzální inteligentní systémy byl vyžadován jiný přístup. To pravděpodobně vedlo výzkumníky umělé inteligence k tomu, aby obrátili svou pozornost na biologické neuronové sítě, které jsou základem lidský mozek.

Neuronové sítě v umělé inteligenci jsou zjednodušené modely biologických neuronových sítí.

Tady podobnosti končí. Struktura lidského mozku je mnohem složitější než výše popsaná, a proto ji není možné reprodukovat ani více či méně přesně.

Neuronové sítě mají mnoho důležitých vlastností, ale tou klíčovou je schopnost učit se. Trénink neuronové sítě primárně zahrnuje změnu „síly“ synaptických spojení mezi neurony. Následující příklad to jasně ukazuje. V klasickém Pavlovově experimentu zazvonil zvonek pokaždé těsně předtím, než byl pes nakrmen. Pes se rychle naučil spojovat zvonění s jídlem. Bylo to důsledkem toho, že došlo k posílení synaptických spojení mezi oblastmi mozku zodpovědnými za sluch a slinnými žlázami. A následně stimulace neurální sítě zvukem zvonku začala u psa vést k silnějšímu slinění.

V dnešní době jsou neuronové sítě jednou z prioritních oblastí výzkumu v oblasti umělé inteligence.

8. Vícevrstvé perceptrony tzv. dopředné neuronové sítě. Vstupní signál se v takových sítích šíří v dopředném směru, z vrstvy do vrstvy. Vícevrstvý perceptron se ve své obecné reprezentaci skládá z následujících prvků:

· sady vstupních uzlů, které tvoří vstupní vrstvu;

jedna nebo více skrytých vrstev výpočetních neuronů;

· jedna výstupní vrstva neuronů.

Vícevrstvý perceptron je zobecněním Rosenblattova jednovrstvého perceptronu. Příkladem vícevrstvého perceptronu je následující model neuronové sítě:

Počet vstupních a výstupních prvků ve vícevrstvém perceptronu je určen podmínkami problému. Mohou vzniknout pochybnosti o tom, které vstupní hodnoty použít a které ne. Otázka, kolik mezivrstev a prvků v nich použít, je stále zcela nejasná. Jako počáteční aproximaci můžeme vzít jednu mezivrstvu a počet prvků v ní nastavit na polovinu součtu počtu vstupních a výstupních prvků.

Vícevrstvé perceptrony se úspěšně používají k řešení různých složitých problémů a mají následující tři charakteristické rysy.

Neuronová síť- pokus s matematické modely replikovat fungování lidského mozku a vytvořit stroje, které mají...

Umělá neuronová síť obvykle se učí s učitelem. To znamená mít trénovací sadu (datovou sadu), která obsahuje příklady se skutečnými hodnotami: značky, třídy, indikátory.

Neoznačené sady se také používají k trénování neuronových sítí, ale tím se zde nebudeme zabývat.

Pokud například chcete vytvořit neuronovou síť pro odhad sentimentu textu, datový soubor bude zde seznam návrhů s emocionálním hodnocením odpovídajícím každému. Je určen tón textu znamení(slova, fráze, větná struktura), které dávají negativní nebo pozitivní konotaci. Závaží rysy v konečném hodnocení sentimentu textu (pozitivní, negativní, neutrální) závisí na matematická funkce, která se počítá při trénování neuronové sítě.

Dříve lidé generovali prvky ručně. Čím více vlastností a přesněji jsou vybrány závaží, tím přesnější je odpověď. Neuronová síť tento proces zautomatizovala.

Umělá neuronová síť se skládá ze tří částí:

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

Probíhá ve dvou fázích:

  • chyby.

Během dopředného šíření chyby se provádí předpověď odezvy. Při zpětném šíření se minimalizuje chyba mezi skutečnou odezvou a předpokládanou odezvou.


Přímá distribuce

Počáteční váhy nastavíme náhodně:

Vynásobme vstupní data váhami, abychom vytvořili skrytou vrstvu:

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

Výstup ze skryté vrstvy je předán nelineární funkcí (), aby se získal síťový výstup:

  • y_ = fn(h1, h2, h3)

Zpětná propagace

  • Celková chyba (total_error) se vypočítá jako rozdíl mezi očekávanou hodnotou „y“ (z trénovací množiny) a získanou hodnotou „y_“ (vypočtenou ve fázi šíření chyby dopředu), procházející funkcí nákladů.
  • Pro každou váhu se vypočítá parciální derivace chyby (tyto parciální rozdíly odrážejí příspěvek každé váhy k celkové chybě (total_loss)).
  • Tyto rozdíly se pak vynásobí číslem nazývaným rychlost učení (η).

Získaný výsledek se pak odečte od odpovídajících vah.

Výsledkem budou následující aktualizované váhy:

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

Myšlenka, že budeme náhodně hádat a inicializovat váhy a oni budou dávat přesné odpovědi, nezní úplně rozumně, ale funguje to dobře.


Populární meme o tom, jak se Carlson stal vývojářem Data Science

Pokud znáte Taylorovy řady, backpropagation má to samé konečný výsledek. Pouze místo nekonečné řady se snažíme optimalizovat pouze její první člen.

Vychýlení jsou váhy přidané ke skrytým vrstvám. Jsou také náhodně inicializovány a aktualizovány stejným způsobem jako skrytá vrstva. Úlohou skryté vrstvy je určit tvar základní funkce v datech, zatímco úlohou zkreslení je posunout nalezenou funkci tak, aby částečně odpovídala původní funkci.

Parciální derivace

Dají se vypočítat parciální derivace, takže víme, jaký byl příspěvek k chybě pro každou váhu. Potřeba derivátů je zřejmá. Představte si neuronovou síť, která se snaží najít optimální rychlost bezpilotní vozidlo. Pokud auto detekuje, že jede rychleji nebo pomaleji, než je požadovaná rychlost, neuronová síť změní rychlost a vůz zrychlí nebo zpomalí. Co zrychluje/zpomaluje? Derivační rychlosti.

Podívejme se na potřebu parciálních derivací na příkladu.

Předpokládejme, že děti byly požádány, aby hodily šipku na cíl a mířily do středu. Zde jsou výsledky:

Nyní, když najdeme celkovou chybu a jednoduše ji odečteme od všech vah, sečteme chyby, které udělali všichni. Řekněme tedy, že dítě zasáhne příliš nízko, ale požádáme všechny děti, aby se snažily zasáhnout cíl, pak to povede k následujícímu obrázku:

Chyba několika dětí se může snížit, ale obecná chyba stále přibývá.

Po nalezení parciálních derivací zjistíme chyby odpovídající každé váze zvlášť. Pokud selektivně opravíte váhy, získáte následující:

Hyperparametry

K automatizaci výběru funkcí se používá neuronová síť, ale některé parametry se konfigurují ručně.

rychlost učení

Velmi důležitým hyperparametrem je rychlost učení. Pokud je rychlost učení příliš pomalá, pak i po dlouhém trénování neuronové sítě bude mít k optimálním výsledkům daleko. Výsledky budou vypadat nějak takto:

Na druhou stranu, pokud je rychlost učení příliš vysoká, bude síť vytvářet odpovědi velmi rychle. Získáte následující:

aktivační funkce

Aktivační funkce je jedním z nejmocnějších nástrojů, který ovlivňuje sílu přiřazenou neuronovým sítím. Částečně určuje, které neurony budou aktivovány, jinými slovy, a jaké informace budou přenášeny do dalších vrstev.

Bez aktivačních funkcí ztrácejí hluboké sítě velkou část své schopnosti učit se. Nelinearita těchto funkcí je zodpovědná za zvýšení stupně volnosti, což umožňuje zobecnit vysokorozměrné problémy do nižších dimenzí. Níže jsou uvedeny příklady běžných aktivačních funkcí:

Ztrátová funkce

Ztrátová funkce je ve středu neuronové sítě. Používá se k výpočtu chyby mezi skutečnými a přijatými odpověďmi. Naším globálním cílem je tuto chybu minimalizovat. Funkce ztráty tedy efektivně přibližuje trénink neuronové sítě tomuto cíli.

Ztrátová funkce měří, „jak dobrá“ je neuronová síť při dané trénovací sadě a očekávaných reakcích. Může také záviset na proměnných, jako jsou váhy a offsety.

Ztrátová funkce je jednorozměrná a není vektorová, protože vyhodnocuje, jak dobře funguje neuronová síť jako celek.

Některé slavné funkce ztráty:

  • Kvadratická (směrodatná odchylka);
  • Křížová entropie;
  • Exponenciální (AdaBoost);
  • Kullback-Leibler vzdálenost nebo informační zisk.

Směrodatná odchylka je nejjednodušší ztrátová funkce a nejčastěji používaná. Je specifikováno takto:

Ztrátová funkce v neuronové síti musí splňovat dvě podmínky:

  • Ztrátová funkce by měla být zapsána jako průměr;
  • Ztrátová funkce by neměla záviset na jiných aktivačních hodnotách neuronové sítě než na hodnotách produkovaných na výstupu.

Hluboké neuronové sítě

(deep learning) je třída algoritmů, které se učí chápat data hlouběji (abstraktněji). Populární algoritmy neuronových sítí hluboké učení jsou uvedeny na níže uvedeném diagramu.

Populární algoritmy neuronových sítí (http://www.asimovinstitute.org/neural-network-zoo)

Formálněji v hlubokém učení:

  • Kaskáda (potrubí, jako sekvenčně přenášený tok) mnoha procesních vrstev (nelineárních) se používá k extrahování a transformaci prvků;
  • Založeno na vlastnostech učení (reprezentace informací) v datech bez učení pod dohledem. Funkce vyšší úrovně (které jsou v posledních vrstvách) se získávají z funkcí nižší úroveň(které jsou v počátečních vrstvách);
  • Učí se víceúrovňové reprezentace, které si odpovídají různé úrovně abstrakce; úrovně tvoří hierarchii prezentace.

Příklad

Zvažte jednovrstvou neuronovou síť:

Zde se trénuje první vrstva (zelené neurony), jednoduše se přenáší na výstup.

Zatímco v případě dvouvrstvé neuronové sítě, bez ohledu na to, jak je zelená skrytá vrstva trénována, je poté předána modré skryté vrstvě, kde pokračuje ve trénování:

Čím větší je tedy počet skrytých vrstev, tím větší je schopnost sítě učit se.

Nesmí být zaměňována s širokou neuronovou sítí.

V tomto případě velký počet neuronů v jedné vrstvě nevede k hlubokému pochopení dat. Ale vede to k učení více znamení.

Příklad:

Při studiu anglické gramatiky potřebujete znát obrovské množství pojmů. V tomto případě si jednovrstvá široká neuronová síť vede mnohem lépe než hluboká neuronová síť, která je výrazně menší.

V případě učení Fourierovy transformace musí být student (neuronová síť) hluboký, protože není mnoho pojmů, které je třeba znát, ale každý z nich je poměrně složitý a vyžaduje hluboké porozumění.

Hlavní je rovnováha

Je velmi lákavé používat hluboké a široké neuronové sítě pro každý úkol. Ale může být špatný nápad, protože:

  • Obojí vyžaduje výrazně více tréninková data pro dosažení minimální požadované přesnosti;
  • Oba mají exponenciální složitost;
  • Příliš hluboká neuronová síť se pokusí prolomit základní předpoklady, ale také vytvoří falešné předpoklady a pokusí se najít pseudozávislosti, které neexistují;
  • Příliš široká neuronová síť se pokusí najít více funkcí, než jich je. Takže, stejně jako předchozí, začne vytvářet nesprávné předpoklady o datech.

Prokletí dimenzionality

Prokletí dimenzionality se týká různých jevů, které vznikají při analýze a organizování dat ve vysokodimenzionálních prostorech (často se stovkami nebo tisíci dimenzemi) a nevyskytují se v nízkorozměrných situacích.

Anglická gramatika má obrovské množství atributů, které ji ovlivňují. Ve strojovém učení je musíme reprezentovat funkcemi ve formě pole/matice konečné a výrazně menší délky (než číslo existující znaky). K tomu sítě tyto funkce zobecňují. To vytváří dva problémy:

  • Nesprávné předpoklady zavádějí zkreslení. Vysoké vychýlení může způsobit, že algoritmu nebudou chybět významné vztahy mezi funkcemi a cílovými proměnnými. Tento jev se nazývá underlearning.
  • Od malých odchylek v trénovací množině v důsledku nedostatečného naučení funkcí se rozptyl zvyšuje. Vysoká odchylka vede k nadměrnému přizpůsobení chyby jsou vnímány jako spolehlivé informace.

Kompromis

V rané fázi učení je zkreslení velké, protože výstup ze sítě je daleko od požadovaného. A rozptyl je velmi malý, protože data mají zatím malý vliv.

Na konci školení je zkreslení malé, protože síť identifikovala základní rys v datech. Pokud je však školení příliš dlouhé, síť se také naučí šum specifický pro daný soubor dat. To má za následek širokou škálu výsledků při testování na různých souborech, protože šum se liší od jednoho souboru dat k druhému.

Opravdu,

Algoritmy s velkým zkreslením jsou obvykle založeny na více jednoduché modely, které nejsou náchylné k nadměrnému vybavení, ale mohou být nedostatečně vybavené a neidentifikují důležité vzory nebo vlastnosti prvků. Modely s nízkým vychýlením a vysokým rozptylem jsou obvykle složitější, pokud jde o jejich strukturu, což jim umožňuje přesněji reprezentovat trénovací sadu. Mohou však zobrazovat velké množství šumu z trénovací sady, takže jejich předpovědi jsou méně přesné i přes jejich větší složitost.

Proto je obecně nemožné mít současně malé zkreslení a malý rozptyl.

Nyní existuje mnoho nástrojů, které mohou snadno vytvářet složité modely strojového učení, a rekvalifikace se dostává do popředí zájmu. Protože zkreslení nastává, když síť nepřijímá dostatek informací. Ale čím více příkladů je, tím více variant závislostí a variability se v těchto korelacích objevuje.

Aktivačních funkcí (přenosových funkcí) neuronu může mít nejvíce jiný druh. Aktivační funkce F, zpravidla patří do třídy sigmoidních funkcí
s argumentem n a odejít A.

Podívejme se na tři nejčastější formy aktivační funkce.

Funkce jediné aktivace s přísnými omezeními hardlim. Tato funkce je popsána vztahem A= hardlim( n) = 1(n) a je znázorněn na Obr. 2.2. Je roven 0, jestliže n< 0, и 1, если n³ 0.

Neural Network Toolbox PPP obsahuje hardlim M-funkci, která implementuje aktivační funkci s přísnými omezeními. Nyní můžete tuto funkci vykreslit pomocí operátorů jazyka MATLAB:

plot(n,hardlim(n),"c+:");

Výsledkem je graf funkce hardlim v rozsahu vstupních hodnot od –5 do + 5 (obr. 2.2).

Funkce lineární aktivace purelin. Tato funkce je popsána vztahem
A= purelin( n) = n a je znázorněn na Obr. 2.3.

Rýže. 2.3.

Logistická funkce aktivace logsig.Tato funkce je popsána vztahem
A=logsig( n) = 1/(1 + exp(– n)) a je znázorněn na obr. 2.4. Patří do třídy sigmoidních funkcí a jeho argument může nabývat libovolné hodnoty v rozsahu od –¥ do +¥ a výstup se mění v rozsahu od 0 do 1. V Neural Network Toolbox je reprezentován M - logsig. Díky své diferencovatelnosti se tato funkce často používá v sítích backpropagation s učením.

Rýže. 2.4.

Symbol ve čtverci vpravo horní roh grafika charakterizuje aktivační funkci. Tento obrázek je použit na strukturální schémata neuronové sítě.

Neural Network Toolbox obsahuje také další aktivační funkce. Pomocí jazyka MATLAB může uživatel vytvářet své vlastní jedinečné funkce.

Teorie neuronové sítě(NS) zahrnují široký kruh otázky z různých oblastí vědy: biofyzika, matematika, informatika, návrh obvodů a technologie. Proto je obtížné podrobně definovat pojem „neuronové sítě“. Uveďme si pár definic.

Neuronové sítě - samoučící se systémy, které napodobují činnost lidského mozku.

Umělé neuronové sítě- zařízení paralelní počítání, skládající se z mnoha vzájemně se ovlivňujících jednoduché procesory(zpracovatelské prvky).

Umělou neuronovou síť (ANN) si lze představit jako orientovaný graf s váženými spoji, ve kterých jsou uzly umělé neurony.

Matici vazebních vah trénované neuronové sítě lze klasifikovat jako heuristický model reprezentace znalostí.

Na základě architektury připojení lze ANN seskupit do dvou tříd: dopředné sítě, ve kterých grafy nemají smyčky, a rekurentní sítě nebo zpětnovazební sítě.

Neuronové sítě se vyznačují strukturou sítě (spojení mezi neurony), vlastnostmi modelu neuronů a vlastnostmi síťového tréninku.

Neuronové sítě lze podle struktury rozdělit na částečně propojené (nebo vrstvené) a plně propojené, s náhodnými a pravidelnými spoji, se symetrickými a asymetrickými spoji.

Na základě signálů použitých na vstupech a výstupech lze neuronové sítě rozdělit na analogové a binární.

Na základě časového modelování se neuronové sítě dělí na spojité a diskrétní časové sítě.

Podle organizace školení se trénování neuronových sítí dělí na supervizované neuronové sítě a neřízené tréninky.

Na základě vlastností neuronového modelu se rozlišují neurony s různými nelineárními funkcemi: prahová, exponenciální sigmata, racionální sigmoid, hyperbolická tangens.

V současné době neuronové sítě se používají k řešení mnoha neformalizovatelných nebo obtížně formalizovaných problémů:

  • rozpoznávání a syntéza řeči;
  • rozpoznávání leteckých snímků;
  • Předpovídání kotací cenných papírů a směnných kurzů;
  • Prevence podvodů s kreditními kartami;
  • oceňování nemovitostí;
  • hodnocení finanční situace podniků a rizika nesplácení úvěrů;
  • zpracování radarových signálů;
  • řízení provozu na rychlostních komunikacích a železnicích;
  • diagnostika v lékařství;
  • získávání znalostí z velkých objemů dat v oblasti obchodu, financí a vědeckého výzkumu.

Neuronové sítě lze použít za následujících podmínek:

  1. Pokud problém může vyřešit osoba.
  2. Pokud je při řešení problému možné identifikovat mnoho vstupních faktorů (signály, znaky, data atd.) a mnoho výstupních faktorů.
  3. Pokud změny vstupních faktorů vedou ke změnám výstupních faktorů.

Při použití neuronových sítí je nutné vyřešit následující problémy:

  1. Vyjádření problému vhodného k řešení pomocí neuronové sítě.
  2. Výběr modelu ANN.
  3. Příprava výchozích dat pro školení ANN.
  4. školení ANN.
  5. Vlastní řešení problému pomocí vyškolené ANN

Navíc je někdy potřeba další fáze – interpretace řešení získaného neuronovou sítí.

Struktura neuronové sítě

Navzdory široké škále možností neuronové sítě, všechny mají společné rysy. Všechny se tedy, stejně jako lidský mozek, skládají z velkého počtu prvků stejného typu - neuronů, které napodobují neurony mozku, vzájemně propojených.

Rýže. 8. Biologický neuron

Biologický neuron je modelován jako zařízení s několika vstupy a jedním výstupem. Každému vstupu je přiřazen určitý váhový koeficient ( w), charakterizující propustnost kanálu a posouzení míry vlivu signálu z tohoto vstupu na výstupní signál. Signály zpracovávané neuronem mohou být analogové nebo digitální (1 nebo 0). V těle neuronu dochází k váženému součtu vstupních vzruchů a tato hodnota je pak argumentem pro aktivační funkci neuronu.

Na Obr. Obrázek 9 ukazuje schéma umělého neuronu.

Rýže. 7.1. Umělý neuronový obvod

Stav neuronu je určen vzorcem

, (7.1)

n- počet neuronových vstupů,

x i- hodnota vstupu i-tého neuronu,

w i- váha i-té synapse.

Potom se podle vzorce určí hodnota axonu neuronu

Y= F(S), (7.2)

Kde F- nějaká funkce zvaná aktivace. Nejčastěji se jako aktivační funkce využívá tzv. sigmoid, který má další pohled:

. (7.3)

Hlavní výhodou této funkce je, že je diferencovatelná na celé ose x a má velmi jednoduchou derivaci:

Při snižování parametru A Sigmoidea se stává plošší a degeneruje do vodorovné linie na úrovni 0,5 at A=0. Při zvýšení A Sigmoidea se stále více přibližuje funkci jediného skoku.

Když jsou neurony propojeny určitým způsobem, tvoří neuronovou síť. Mezi různými strukturami neuronových sítí je jednou z nejznámějších vícevrstvá struktura, ve které je každý neuron libovolné vrstvy spojen se všemi axony neuronů předchozí vrstvy nebo, v případě první vrstvy, s všechny vstupy neuronové sítě. Takové neuronové sítě se nazývají plně propojené.

Trénink neuronové sítě

Trénujte neuronovou síť- znamená říct jí, co od ní chceme. Tento proces je velmi podobný učení dítěte abecedu. Poté, co dítěti ukážeme obrázek písmene „A“, zeptáme se ho: „Co je to za písmeno? Pokud je odpověď nesprávná, řekneme dítěti odpověď, kterou bychom chtěli, aby odpovědělo: „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“.

Na trénink 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 sítě z něj získáme nějakou odpověď, nemusí být nutně správná. Známe také správnou (požadovanou) odpověď - v tomto případě bychom chtěli, aby úroveň signálu na výstupu označeném „A“ byla maximální. Typicky je požadovaným výstupem v klasifikačním problému množina (1, 0, 0, ...), 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 sítě pomocí chybového vektoru. Stejné písmeno (stejně jako různé obrázky stejného písmene) můžeme síti prezentovat mnohokrát. Učení je v tomto smyslu spíše opakováním cvičení ve sportu – tréninku.

Ukazuje se, že po opakované prezentaci příkladů se váhy sítě stabilizují a síť dává správné odpovědi na všechny (nebo téměř všechny) příklady z databáze. V tomto případě říkají, že „neuronová síť se naučila všechny příklady“, „neuronová síť je trénovaná“ nebo „neuronová síť je trénovaná“. V softwarové implementace můžete vidět, že během procesu učení se velikost chyby (součet druhých mocnin na všech výstupech) postupně snižuje. Když chyba dosáhne nuly nebo přijatelné malé úrovně, trénování se zastaví a výsledná síť je považována za trénovanou a připravenou k použití na nových datech.

Takže pod výcvik se týká procesu přizpůsobení sítě prezentovaným referenčním vzorkům modifikací (v souladu s tím či oním algoritmem) váhových koeficientů spojení mezi neurony.

Je důležité poznamenat, že všechny informace, které má neuronová síť o problému, jsou obsaženy v sadě příkladů. Kvalita trénování 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í. Například nemá smysl používat neuronovou síť k předpovídání finanční krize, pokud v tréninkové sadě nejsou zastoupeny krize. Předpokládá se, že úplný výcvik vyžaduje alespoň několik desítek (nebo ještě lépe stovek) příkladů.

Funkce aktivace neuronů

Funkce aktivace neuronů definuje nelineární transformaci prováděnou neuronem.

Existuje mnoho typů aktivačních funkcí, ale nejběžnější jsou následující čtyři:

1. Práh funkce. Na Obr. 7,2, A Je zobrazen její rozvrh.

. (7.5)

První zavedená aktivační funkce byla popsána v práci McCullocha a Pittse. Na počest toho se model neuronu s prahovou aktivační funkcí nazývá McCulloch-Pittsův model.

2. Po částech lineární funkce. Je to znázorněno na Obr. 7,2, b a je popsána následujícím vztahem:

. (7.6)

V tomto případě A=1 a koeficient strmosti lineárního úseku je zvolen jako jednotný a celou funkci lze interpretovat jako aproximaci nelineárního zesilovače. S nekonečně velkým koeficientem sklonu lineárního úseku se funkce zvrhne na prahovou.

Většina typů umělých neuronových sítí využívá neurony s lineární aktivační funkcí, což je speciální případ (7.6) s neohraničenou lineární oblastí.

Rýže. 7.2. Typy aktivačních funkcí
a), d) práh; b) lineární; c) sigmoidální;
e) tangenciální; f) aktivační funkce na radiální bázi

3. Sigmoidální funkce. Jedná se o nejpoužívanější typ aktivační funkce. Byla zavedena analogicky s prahovou funkcí, ale všude je přísně monotónně rostoucí, spojitá a diferencovatelná (obr. 7.2, PROTI). Diferenciovatelnost je důležitou vlastností pro analýzu neuronových sítí a některé metody jejich trénování.

V celkový pohled sigmoidální aktivační funkce je popsána vztahem:

, (7.7)

Kde A- parametr, který určuje sklon funkce.

Jeho obměnou lze získat různé typy sigmatu. Nejčastěji používané A= 1. V případě nekonečně velké A sigmoidní funkce degeneruje do prahové funkce.

Kromě uvedených funkcí, které se liší v rozsahu , jsou představeny také jejich analogy s rozsahem hodnot [–1, 1]. Takže např. (obr. 7.2, G), prahovou funkci lze předefinovat jako

. (7.8)

Místo sigmoidní aktivační funkce se hojně používá hyperbolická tečna, která má podobné vlastnosti (obr. 11, d)

. (7.10)

Zvláštnost této funkce ji činí vhodnou pro řešení problémů s ovládáním.

4. V neuronových sítích představených Broomheadem a Lowem se používá aktivační funkce Gauss(obr. 7.2, E)

Jeho argument se vypočítá podle vzorce:

, (7.12)
Kde

z- vektor vstupních signálů neuronů,

C- souřadnicový vektor středu okna aktivační funkce,

s - šířka okna,

|| || - Euklidovská vzdálenost.

V teorii neuronových sítí aktivační funkce typu

(7.13)

se nazývají radiální bázové funkce (RBF) a sítě na nich založené se nazývají RBF sítě (RBF - radial basis function).

Reprezentace vstupních dat

Zvláštností neuronové sítě je, že všechny vstupní a výstupní parametry jsou reprezentovány ve formě čísel s pohyblivou řádovou čárkou, obvykle v rozsahu . Doménová data mají přitom často jiné kódování. Takže to mohou být čísla v libovolném rozsahu, data, znakové řetězce. Údaje o problému tedy mohou být kvantitativní i kvalitativní. Podívejme se nejprve na převod kvalitativních dat na číselná data a poté na to, jak převést vstupní data do požadovaného rozsahu.

Kvalitativní data můžeme rozdělit do dvou skupin: uspořádaná (ordinální) a neuspořádaná. Chcete-li určit, jak tato data zakódovat, zvažte problém předpovídání úspěchu léčby onemocnění. Příkladem uspořádaných dat mohou být například údaje o dalších rizikových faktorech daného onemocnění.

Dalším možným příkladem může být věk pacienta.

Nebezpečí každého faktoru se v tabulkách zvyšuje, když se pohybujete zleva doprava.

V prvním případě vidíme, že pacient může mít více rizikových faktorů současně. V tomto případě musíme použít kódování, ve kterém nedochází k situaci, kdy různé kombinace faktorů odpovídají stejné hodnotě. Nejběžnější metodou kódování je, když je každému faktoru přiřazena kategorie binární číslo. Číslo 1 v této kategorii označuje přítomnost faktoru a číslo 0 jeho nepřítomnost. Parametr Žádný můžete přiřadit číslo 0. Čtyřmístné binární číslo tedy stačí k reprezentaci všech faktorů. Číslo 1010 2 = 10 10 tedy znamená, že pacient má hypertenzi a konzumaci alkoholu, a číslo 0000 2 odpovídá nepřítomnosti rizikových faktorů u pacienta. Rizikové faktory tedy budou reprezentovány čísly v rozmezí .

Ve druhém případě bychom také mohli kódovat všechny hodnoty s binárními váhami, ale to by bylo nepraktické, protože sada možných hodnot by byla příliš nerovnoměrná. V tomto případě by bylo správnější přiřadit každé hodnotě vlastní váhu, která se o jedničku liší od váhy sousední hodnoty. Takže číslo 3 bude odpovídat věku 50-59 let. Věk bude tedy zakódován čísly v rozsahu .

Totéž můžete udělat pro neuspořádaná data přiřazením čísla každé hodnotě. To však zavádí nežádoucí řazení, které může zkreslit data a velmi ztížit proces učení. Jako jeden ze způsobů řešení tohoto problému lze navrhnout přiřazení každé hodnoty jednomu ze vstupů neuronové sítě. V tomto případě, pokud je tato hodnota přítomna, je odpovídající vstup nastaven na 1 nebo 0 v opačném případě. Tato metoda není všelék, protože s velkým počtem možností vstupních hodnot roste počet vstupů neuronové sítě do obrovského množství. Tím se výrazně prodlouží čas strávený tréninkem. Jako řešení tohoto problému můžete použít trochu jiné řešení. Každé hodnotě vstupního parametru je přiřazen binární vektor, jehož každý bit odpovídá samostatnému vstupu neuronové sítě. Pokud je například počet možných hodnot parametrů 128, lze použít sedmibitový vektor. Pak bude první hodnota odpovídat vektoru 0000000, 128. - 1111111 a například hodnotě 26 - 0011011. Poté lze počet vstupních parametrů potřebných pro kódování určit jako

N= Log 2 (n) , (7.14)
Kde

n - počet hodnot parametrů,

N- počet vstupů.

Převod číselných vstupů

Pro neuronovou síť je nutné, aby vstupní data ležela v rozsahu , zatímco data problémové domény mohou ležet v libovolném rozsahu. Předpokládejme, že data pro jeden z parametrů jsou v rozsahu . Pak jednoduchým způsobem bude příděl

, (7.15)
Kde

x- počáteční hodnota parametru,

Hodnota dodávaná na vstup neuronové sítě.

Tento způsob kódování není bez nevýhod. Pokud tedy , pak distribuce vstupních dat může mít formu

Rýže. 11. Distribuce vstupní parametry

Rozložení vstupních parametrů bude extrémně nerovnoměrné, což povede ke zhoršení kvality tréninku. Proto v takových situacích, stejně jako v případě, kdy vstupní hodnota leží v rozsahu )


Nahoru