• Učení neuronových sítí: kde začít. Neuronové sítě: typy, princip činnosti a rozsah

    V první polovině roku 2016 se svět doslechl o mnoha novinkách v oblasti neuronových sítí - předvedl Google (síťový přehrávač v AlphaGo), Microsoft (řada služeb pro identifikaci obrázků), startupy MSQRD, Prisma a další jejich algoritmy.

    Do záložek

    Redaktoři webu říkají, co jsou zač neuronové sítě k čemu jsou, proč dobyli planetu právě teď a ne o roky dříve nebo později, kolik na nich můžete vydělat a kdo jsou hlavní hráči na trhu. Své názory sdíleli i odborníci z Moskevského institutu fyziky a technologie, Yandex, Mail.Ru Group a Microsoft.

    Co jsou neuronové sítě a jaké úlohy mohou řešit

    Neuronové sítě jsou jedním ze směrů ve vývoji systémů umělé inteligence. Cílem je co nejvěrněji simulovat práci člověka nervový systém- jmenovitě její schopnost učit se a opravovat chyby. Tohle je co hlavní rys jakákoli neuronová síť – je schopna se samostatně učit a jednat na základě předchozích zkušeností, pokaždé dělá méně a méně chyb.

    Neuronová síť napodobuje nejen činnost, ale i strukturu lidského nervového systému. Taková síť se skládá z velkého množství jednotlivých výpočetních prvků ("neuronů"). Ve většině případů každý „neuron“ odkazuje na určitou vrstvu sítě. Vstupní data jsou postupně zpracovávána na všech vrstvách sítě. Parametry každého „neuronu“ se mohou měnit v závislosti na výsledcích získaných na předchozích sadách vstupních dat a tím se mění pořadí činnosti celého systému.

    Andrey Kalinin, vedoucí Mail.ru Search v Mail.Ru Group, poznamenává, že neuronové sítě jsou schopny řešit stejné úkoly jako jiné algoritmy strojového učení, rozdíl spočívá pouze v přístupu k učení.

    Všechny úlohy, které neuronové sítě dokážou vyřešit, nějak souvisí s učením. Mezi hlavní oblasti použití neuronových sítí patří prognózování, rozhodování, rozpoznávání vzorů, optimalizace, analýza dat.

    Ředitel programů technologické spolupráce společnosti Microsoft v Rusku Vlad Shershulsky poznamenává, že neuronové sítě se nyní používají všude: „Mnoho velkých internetových stránek je například používá k tomu, aby reakce na chování uživatelů byla pro jejich publikum přirozenější a užitečnější. Srdcem většiny jsou neuronové sítě moderní systémy rozpoznávání a syntéza řeči, stejně jako rozpoznávání a zpracování obrazu. Používají se v některých navigačních systémech, popř průmyslové roboty nebo bezpilotních vozidel. Algoritmy založené na neuronových sítích chrání Informační systémy před škodlivými útoky a pomáhají odhalit nelegální obsah v síti.“

    Shershulsky věří, že v krátkodobém horizontu (5-10 let) budou neuronové sítě využívány ještě více:

    Představte si zemědělský kombajn s několika videokamerami v ovladačích. Za minutu pořídí pět tisíc snímků každé rostliny v pruhu její trajektorie a pomocí neuronové sítě analyzuje, zda se jedná o plevel, zda není napadena chorobou nebo škůdci. A zachází s každou rostlinou individuálně. Fantastický? Už opravdu ne. A za pět let se to může stát normou. - Vlad Shershulsky, Microsoft

    Michail Burtsev, vedoucí laboratoře neuronových systémů a hlubokého učení v MIPT Center for Living Systems, uvádí předběžnou mapu vývoje neuronových sítí pro období 2016-2018:

    • systémy pro rozpoznávání a klasifikaci objektů v obrazech;
    • rozhraní hlasové interakce pro internet věcí;
    • systémy pro sledování kvality služeb v call centrech;
    • systémy pro detekci problémů (včetně predikce doby údržby), anomálií, kybernetických fyzických hrozeb;
    • systémy duševního zabezpečení a monitorování;
    • nahrazení části funkcí operátorů call center roboty;
    • systémy pro analýzu videa;
    • samoučící se systémy, které optimalizují ovládání materiálové toky nebo umístění předmětů (ve skladech, přepravě);
    • inteligentní, samoučící se řídicí systémy pro výrobní procesy a zařízení (včetně robotických);
    • vznik univerzálních překladatelských systémů „za běhu“ pro konference a osobní užití;
    • příchod poradních botů technická podpora nebo osobních asistentů, pokud jde o funkce blízké osobě.

    Grigory Bakunov, ředitel pro šíření technologií ve společnosti Yandex, věří, že schopnost takových systémů činit různá rozhodnutí se v příštích pěti letech stane základem pro šíření neuronových sítí: „Hlavní věc, kterou neuronové sítě pro člověka nyní dělají, je aby ho uchránil před přílišným rozhodováním. Lze je tedy použít téměř všude, kde ne příliš inteligentní rozhodnutí činí živý člověk. V příštích pěti letech bude využita právě tato dovednost, která nahradí lidské rozhodování jednoduchým strojem.“

    Proč se neuronové sítě staly tak populární právě teď

    Vědci vyvíjejí umělé neuronové sítě již více než 70 let. První pokus o formalizaci neuronové sítě se datuje do roku 1943, kdy dva američtí vědci (Warren McCulloch a Walter Pitts) představili článek o logickém počtu lidských nápadů a nervové aktivity.

    Nicméně až donedávna, říká Andrey Kalinin z Mail.Ru Group, byla rychlost neuronových sítí příliš pomalá na to, aby mohly být široce používány, a proto se takové systémy používaly hlavně ve vývoji souvisejícím s počítačové vidění a další oblasti využívaly další algoritmy strojového učení.

    Pracnou a časově náročnou součástí procesu vývoje neuronové sítě je její trénování. Aby neuronová síť mohla správně řešit zadané úlohy, je potřeba „proběhnout“ svou práci na desítkách milionů vstupních datových sad. Právě s příchodem různých technologií zrychleného učení spojují Andrey Kalinin a Grigory Bakunov šíření neuronových sítí.

    Hlavní věc, která se nyní stala, je to, že se objevily různé triky, které vám umožňují vytvářet neuronové sítě, které jsou mnohem méně náchylné k nadměrnému vybavení. - Grigory Bakunov, Yandex

    „Za prvé se objevila velká a veřejně dostupná řada označených obrázků (ImageNet), na kterých se můžete učit. Za druhé, moderní grafické karty umožňují trénovat a používat neuronové sítě stokrát rychleji. Do třetice se objevily hotové, předtrénované neuronové sítě, rozpoznávající obrázky, na jejichž základě lze vytvářet vlastní aplikace bez dlouhodobé přípravy neuronové sítě na práci. To vše poskytuje velmi silný rozvoj neuronových sítí v oblasti rozpoznávání vzorů,“ poznamenává Kalinin.

    Jaké jsou tržní velikosti neuronových sítí

    „Velmi snadné spočítat. Můžete vzít jakoukoli oblast, která využívá málo kvalifikovanou pracovní sílu – například operátory call centra – a jednoduše odečíst všechny lidské zdroje. Řekl bych, že se bavíme o mnohamiliardovém trhu, a to i v rámci jedné země. To, kolik lidí na světě se podílí na práci s nízkou kvalifikací, lze snadno pochopit. Takže i velmi abstraktně si myslím, že mluvíme o trhu za sto miliard dolarů po celém světě,“ říká Grigory Bakunov, ředitel distribuce technologií ve společnosti Yandex.

    Podle některých odhadů bude více než polovina profesí automatizována – to je maximální částka, o kterou lze zvýšit trh s algoritmy strojového učení (a zejména neuronovými sítěmi) – Andrey Kalinin, Mail.Ru Group

    „Algoritmy strojového učení jsou dalším krokem v automatizaci jakéhokoli procesu, ve vývoji jakéhokoli software. Trh se proto přinejmenším shoduje s celým softwarovým trhem, ale spíše jej předčí, protože je možné vytvářet nová inteligentní řešení, která jsou pro starý software nepřístupná, “pokračuje Andrey Kalinin, vedoucí Mail.ru Search ve skupině Mail.Ru Group. .

    Proč vývojáři neuronových sítí vytvářejí mobilní aplikace pro masový trh

    V posledních měsících se na trhu objevilo několik vysoce profilovaných zábavních projektů využívajících neuronové sítě najednou – jde jak o populární video službu, kterou je sociální síť Facebook, tak Ruské aplikace pro zpracování obrazu (investice od Mail.Ru Group v červnu) a další.

    Schopnosti vlastních neuronových sítí předvedl také Google (technologie AlphaGo vyhrála v Go šampiona; v březnu 2016 korporace prodala v aukci 29 obrazů nakreslených neuronovými sítěmi a tak dále) a Microsoft (projekt CaptionBot, který uznává obrázky v obrázcích a automaticky k nim generuje popisky; projekt WhatDog, který z fotografie určuje plemeno psa; služba HowOld, která určuje věk člověka na obrázku atd.), a Yandex (v červnu , tým zabudoval do aplikace Avto.ru službu pro rozpoznávání aut na obrázcích, představil hudební album, v květnu vytvořil projekt LikeMo.net pro kreslení ve stylu slavných umělců).

    Takové zábavní služby jsou vytvářeny spíše než k řešení globálních problémů, na které jsou neuronové sítě zaměřeny, ale k demonstraci schopností neuronové sítě a provádění jejího tréninku.

    "Hry - výrazná vlastnost naše chování jako druhu. Na jednu stranu lze v herních situacích simulovat téměř vše. typické scénáře lidské chování a na druhou stranu tvůrci her a především hráči mohou mít z tohoto procesu velkou radost. Nechybí ani čistě utilitární aspekt. Dobře navržená hra přináší nejen uspokojení hráčům: při hře trénují algoritmus neuronové sítě. Neuronové sítě jsou totiž založeny na učení na příkladech, “říká Vlad Shershulsky z Microsoftu.

    „Především se to děje proto, abychom ukázali možnosti technologie. Jiný důvod opravdu není. Pokud se bavíme o Prismě, tak je jasné, proč to udělali. Kluci postavili nějaké potrubí, které jim umožňuje pracovat s obrázky. Aby to demonstrovali, zvolili celkem jednoduchý způsob vytváření stylizací. Proč ne? Toto je jen ukázka toho, jak algoritmy fungují,“ říká Grigory Bakunov z Yandexu.

    Andrey Kalinin z Mail.Ru Group má jiný názor: „Samozřejmě, z pohledu veřejnosti je to velkolepé. Na druhou stranu bych neřekl, že zábavní produkty nelze aplikovat do užitečnějších oblastí. Například úkol stylingu obrázků je mimořádně důležitý pro řadu průmyslových odvětví (design, počítačové hry, animace je jen několik příkladů) a plné využití neuronových sítí může výrazně optimalizovat náklady a způsoby tvorby obsahu pro ně.

    Hlavní hráči na trhu neuronových sítí

    Jak poznamenává Andrei Kalinin, většina neuronových sítí na trhu se od sebe příliš neliší. „Technologie je pro všechny přibližně stejná. Ale použití neuronových sítí je potěšením, které si nemůže dovolit každý. Chcete-li trénovat neuronovou síť sami a provádět na ní spoustu experimentů, potřebujete velké tréninkové sady a flotilu strojů s drahými grafickými kartami. Je zřejmé, že takové možnosti jsou velké společnosti" on říká.

    Mezi hlavními hráči na trhu Kalinin zmiňuje Google a jeho divizi Google DeepMind, která vytvořila síť AlphaGo, a Google Brain. Microsoft má v této oblasti vlastní vývoj – zabývá se jimi laboratoř Microsoft Research. Neuronové sítě vznikají ve společnostech IBM, Facebook (divize Facebook AI Research), Baidu (Baidu Institute of hluboké učení) a další. Mnoho vývojů se provádí na technických univerzitách po celém světě.

    Grigory Bakunov, ředitel pro šíření technologií ve společnosti Yandex, poznamenává, že zajímavý vývoj v oblasti neuronových sítí lze nalézt také mezi startupy. „Vzpomněl bych si například na ClarifAI. Jedná se o malý startup, který kdysi vytvořili lidé z Googlu. Nyní jsou pravděpodobně nejlepší na světě v identifikaci obsahu obrázku.“ Mezi tyto startupy patří MSQRD, Prisma a další.

    V Rusku vývoj v oblasti neuronových sítí provádějí nejen startupy, ale také velké technologické společnosti – například holding Mail.Ru Group využívá neuronové sítě pro zpracování a klasifikaci textů ve „Vyhledávání“, analýzu obrazu . Společnost také provádí experimentální vývoj související s roboty a konverzačními systémy.

    Yandex také vytváří vlastní neuronové sítě: „V zásadě se takové sítě již používají při práci s obrázky, se zvukem, ale zkoumáme jejich možnosti v jiných oblastech. Nyní děláme spoustu experimentů s využitím neuronových sítí při práci s textem.“ Vývoj se provádí na univerzitách: na Skoltech, Moskevském fyzikálním a technologickém institutu, Moskevské státní univerzitě, Vysoké škole ekonomické a dalších.

    V souladu s tím neuronová síť bere jako vstup dvě čísla a na výstupu by měla dát další číslo - odpověď. Nyní o samotných neuronových sítích.

    Co je to neuronová síť?


    Neuronová síť je posloupnost neuronů spojených synapsemi. Struktura neuronové sítě přišla do světa programování přímo z biologie. Díky této struktuře získává stroj schopnost analyzovat a dokonce i zapamatovat různé informace. Neuronové sítě jsou také schopny příchozí informace nejen analyzovat, ale také je reprodukovat ze své paměti. Zájemci by se měli určitě podívat na 2 videa z TED Talks: Video 1 , Video 2). Jinými slovy, neuronová síť je strojová interpretace lidského mozku, který obsahuje miliony neuronů, které přenášejí informace ve formě elektrických impulsů.

    Co jsou to neuronové sítě?

    Prozatím budeme zvažovat příklady na nejzákladnějším typu neuronových sítí – jedná se o dopřednou síť (dále jen FDN). Také v následujících článcích představím více pojmů a povím vám o rekurentních neuronových sítích. SPR, jak název napovídá, je síť s sériové připojení nervové vrstvy, v ní jde informace vždy pouze jedním směrem.

    K čemu jsou neuronové sítě?

    Neuronové sítě se používají k řešení složitých problémů, které vyžadují analytické výpočty podobné těm, které dělá lidský mozek. Nejběžnější aplikace neuronových sítí jsou:

    Klasifikace- rozdělení dat podle parametrů. Například je zadán soubor lidí a vy se musíte rozhodnout, komu z nich půjčit a komu ne. Tuto práci může provádět neuronová síť, která analyzuje takové informace, jako je: věk, solventnost, úvěrová historie atd.

    Předpověď- schopnost předvídat další krok. Například vzestup nebo pokles akcií, na základě situace na akciovém trhu.

    Uznání- v současnosti nejširší uplatnění neuronových sítí. Používá se v Googlu, když hledáte fotku nebo ve fotoaparátech telefonu, když detekuje polohu vašeho obličeje a zvýrazní ji a další.

    Abychom nyní pochopili, jak neuronové sítě fungují, pojďme se podívat na jejich součásti a jejich parametry.

    Co je to neuron?


    Neuron je výpočetní jednotka, která přijímá informace, produkuje jednoduché výpočty a předává to dál. Dělí se na tři hlavní typy: vstup (modrý), skrytý (červený) a výstup (zelený). Existuje také neuron zkreslení a neuron kontextu, o kterém si povíme v příštím článku. V případě, kdy se neuronová síť skládá z velkého počtu neuronů, zavádí se pojem vrstva. V souladu s tím existuje vstupní vrstva, která přijímá informace, n skrytých vrstev (obvykle ne více než 3), které je zpracovávají, a výstupní vrstva, která zobrazuje výsledek. Každý z neuronů má 2 hlavní parametry: vstupní data (vstupní data) a výstupní data (výstupní data). V případě vstupního neuronu: input=output. Ve zbytku vstupní pole obsahuje celkovou informaci všech neuronů z předchozí vrstvy, načež se pomocí aktivační funkce normalizuje (prozatím si to jen představte f (x)) a vstupuje do výstupního pole.


    Důležité si pamatovatže neurony operují s čísly v rozsahu nebo [-1,1]. Ale jak, ptáte se, pak zacházet s čísly, která jsou mimo tento rozsah? V tuto chvíli je nejjednodušší odpovědí vydělit 1 tímto číslem. Tento proces se nazývá normalizace a je velmi běžně používán v neuronových sítích. Více o tom trochu později.

    Co je synapse?


    Synapse je spojení mezi dvěma neurony. Synapse mají 1 parametr – váhu. Díky němu se vstupní informace při přenosu z jednoho neuronu na druhý mění. Řekněme, že existují 3 neurony, které předávají informace dalšímu. Pak máme 3 váhy odpovídající každému z těchto neuronů. Pro neuron s větší váhou bude tato informace dominantní v dalším neuronu (příkladem je míchání barev). Ve skutečnosti je sada vah neuronové sítě nebo matice vah jakýmsi mozkem celého systému. Právě díky těmto vahám jsou vstupní informace zpracovány a převedeny do výsledku.

    Důležité si pamatovatže při inicializaci neuronové sítě jsou váhy randomizovány.

    Jak funguje neuronová síť?


    V tomto příkladu je znázorněna část neuronové sítě, kde písmena I označují vstupní neurony, písmeno H značí skrytý neuron a písmeno w značí váhy. Ze vzorce je vidět, že vstupní informace je součet všech vstupních dat vynásobený jejich odpovídajícími vahami. Potom dáme vstup 1 a 0. Nechť w1=0,4 a w2 = 0,7 Vstupní data neuronu H1 budou následující: 1*0,4+0*0,7=0,4. Nyní, když máme vstup, můžeme získat výstup zapojením vstupu do aktivační funkce (o tom později). Nyní, když máme výstup, předáme ho dál. A tak opakujeme pro všechny vrstvy, dokud nedosáhneme výstupního neuronu. Když takovou síť spustíme poprvé, uvidíme, že odpověď není zdaleka správná, protože síť není natrénovaná. Pro zlepšení výsledků ji budeme trénovat. Než se ale naučíme, jak na to, představíme si pár pojmů a vlastností neuronové sítě.

    Aktivační funkce

    Aktivační funkce je způsob, jak normalizovat vstup (o tom jsme mluvili dříve). To znamená, že pokud máte na vstupu velké číslo a projdete ho aktivační funkcí, získáte výstup v rozsahu, který potřebujete. Aktivačních funkcí je spousta, takže budeme uvažovat o těch nejzákladnějších: Lineární, Sigmoidní (Logistická) a Hyperbolická tečna. Jejich hlavním rozdílem je rozsah hodnot.

    Lineární funkce


    Tato funkce se téměř nepoužívá, kromě případů, kdy potřebujete otestovat neuronovou síť nebo předat hodnotu bez transformací.

    Sigmoid


    Toto je nejběžnější aktivační funkce, její rozsah hodnot je . Zobrazuje většinu příkladů na webu a někdy se mu také říká logistická funkce. Pokud tedy ve vašem případě existují záporné hodnoty (například akcie mohou jít nejen nahoru, ale i dolů), pak potřebujete funkci, která zachytí i záporné hodnoty.

    Hyperbolická tečna


    Hyperbolickou tečnu má smysl používat pouze tehdy, když vaše hodnoty mohou být záporné i kladné, protože rozsah funkce je [-1,1]. Tuto funkci není vhodné používat pouze s kladnými hodnotami, protože to výrazně zhorší výsledky vaší neuronové sítě.

    Tréninkový set

    Tréninková sada je posloupnost dat, se kterými pracuje neuronová síť. V našem případě exkluzivní nebo (xor) máme pouze 4 různé výsledky, to znamená, že budeme mít 4 tréninkové sady: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

    Opakování

    Jedná se o jakési počítadlo, které se zvyšuje pokaždé, když neuronová síť projde jednou tréninkovou sadou. Jinými slovy, toto je celkový počet tréninkových sad, které neuronová síť projde.

    Epocha

    Při inicializaci neuronové sítě je tato hodnota nastavena na 0 a má manuální strop. Čím delší je epocha, tím lépe je síť trénovaná a podle toho i její výsledek. Epocha se zvyšuje pokaždé, když projdeme celou sadu tréninkových sad, v našem případě 4 sady nebo 4 iterace.


    Důležité nepleťte si iteraci s epochou a pochopte posloupnost jejich přírůstku. První n
    jednou se zvýší iterace a pak epocha a ne naopak. Jinými slovy, nemůžete nejprve trénovat neuronovou síť pouze na jedné sadě, pak na další a tak dále. Každou sadu musíte trénovat jednou za éru. Můžete se tak vyhnout chybám ve výpočtech.

    Chyba

    Chyba je procento, které odráží nesoulad mezi očekávanými a přijatými odpověďmi. Chyba se tvoří každou epochu a měla by ustupovat. Pokud ne, pak děláte něco špatně. Chybu lze vypočítat různými způsoby, ale my budeme uvažovat pouze tři hlavní metody: Střední čtvercová chyba (dále jen MSE), Root MSE a Arctan. Neexistuje žádné omezení použití, jako je tomu u aktivační funkce, a můžete si vybrat, která metoda vám poskytne nejlepší výsledky. Stačí vzít v úvahu, že každá metoda počítá chyby jinak. S Arctanem bude chyba téměř vždy větší, protože funguje na principu: než větší rozdíl, tím větší je chyba. Kořenový MSE bude mít nejmenší chybu, takže nejčastěji používaný MSE je ten, který udržuje rovnováhu ve výpočtu chyb. Algoritmy, strojové učení

    Vítejte u druhé části průvodce neuronovými sítěmi. Chci se jen omluvit všem, kteří čekali druhý díl mnohem dříve. Z nějakého důvodu jsem musel její psaní odložit. Popravdě jsem nečekal, že první článek bude mít takovou poptávku a že to zaujme tolik lidí toto téma. S přihlédnutím k Vašim připomínkám se Vám budu snažit poskytnout co nejvíce informací a zároveň zachovat co nejpřehlednější způsob jejich prezentace. V tomto článku budu hovořit o tom, jak trénovat / trénovat neuronové sítě (zejména metoda backpropagation) a pokud jste z nějakého důvodu ještě nečetli první část, důrazně doporučuji začít s ní. V procesu psaní tohoto článku jsem chtěl také mluvit o jiných typech neuronových sítí a metodách tréninku, ale když jsem o nich začal psát, uvědomil jsem si, že by to šlo proti mé metodě prezentace. Chápu, že toužíte získat co nejvíce informací, nicméně tato témata jsou velmi obsáhlá a vyžadují podrobnou analýzu a mým hlavním cílem není napsat další článek s povrchním vysvětlením, ale zprostředkovat vám každý aspekt téma a aby byl článek co nejsrozumitelnější. Spěchám naštvat fanoušky „kódování“, protože se stále neuchýlím k použití programovacího jazyka a vše vysvětlím „na prstech“. Dost úvodu, pojďme nyní pokračovat ve studiu neuronových sítí.

    Co je zkreslený neuron?


    Než začneme s naším hlavním tématem, musíme si představit koncept jiného typu neuronu – bias neuronu. Zkreslený neuron nebo zkreslený neuron je třetím typem neuronu používaným ve většině neuronových sítí. Zvláštností tohoto typu neuronu je, že jeho vstup a výstup jsou vždy 1 a nikdy nemají vstupní synapse. Vytěsňovací neurony mohou být buď přítomny v neuronové síti po jednom na vrstvu, nebo zcela nepřítomné, 50/50 nemůže být (váhy a neurony, které nelze umístit, jsou v diagramu označeny červeně). Spojení pro zkreslení neuronů jsou stejná jako pro běžné neurony – se všemi neurony další úrovně, kromě toho, že mezi dvěma zkreslenými neurony nemohou být synapse. Lze je tedy umístit na vstupní vrstvu a všechny skryté vrstvy, ale ne na výstupní, protože prostě nemají s čím vytvořit spojení.

    K čemu je zkreslený neuron?



    Neuron zkreslení je potřebný k tomu, aby bylo možné získat výstup posunutím grafu aktivační funkce doprava nebo doleva. Pokud to zní zmateně, podívejme se na jednoduchý příklad, kde je jeden vstupní neuron a jeden výstupní neuron. Potom lze stanovit, že výstup O2 bude roven vstupu H1, vynásobený jeho hmotností a projde aktivační funkcí (vzorec na fotografii vlevo). V našem konkrétní případ, použijeme sigmatu.

    Ze školního kurzu matematiky víme, že pokud vezmeme funkci y = ax + b a změníme hodnoty jejího „a“, změní se sklon funkce (barvy čar na graf vlevo), a pokud změníme „b“, posuneme funkci vpravo nebo vlevo (barvy čar v grafu vpravo). Takže „a“ je váha H1 a „b“ je váha zkreslení neuronu B1. Toto je hrubý příklad, ale v podstatě to tak funguje (pokud se podíváte na aktivační funkci vpravo na obrázku, všimnete si velmi silné podobnosti mezi vzorci). To znamená, že když v průběhu tréninku upravujeme váhy skrytých a výstupních neuronů, měníme sklon aktivační funkce. Úprava váhy zkreslených neuronů nám však může dát možnost posunout aktivační funkci podél osy x a zachytit nové oblasti. Jinými slovy, pokud je bod zodpovědný za vaše rozhodnutí umístěn, jak je znázorněno v grafu vlevo, pak vaše NN nikdy nebude schopno problém vyřešit bez použití zkreslených neuronů. Proto zřídka vidíte neuronové sítě bez zkreslených neuronů.

    Neurony zkreslení také pomáhají, když všechny vstupní neurony obdrží jako vstup 0 a bez ohledu na jejich váhu, všechny přejdou do další vrstvy 0, ale ne, pokud existuje neuron zkreslení. Přítomnost nebo nepřítomnost zkreslených neuronů je hyperparametr (o tom později). Stručně řečeno, musíte se rozhodnout, zda potřebujete použít zkreslené neurony nebo ne, spuštěním NN s a bez zkreslení neuronů a porovnáním výsledků.

    DŮLEŽITÉ Uvědomte si, že někdy diagramy neindikují zkreslení neuronů, ale jednoduše berou v úvahu jejich váhy při výpočtu vstupní hodnoty, například:

    Vstup = H1*w1+H2*w2+b3
    b3 = zkreslení*w3

    Protože jeho výstup je vždy 1, můžeme si jednoduše představit, že máme další synapsi s váhou a tuto váhu přičteme k součtu, aniž bychom zmínili samotný neuron.

    Jak přimět Národní shromáždění, aby odpovídalo správně?

    Odpověď je jednoduchá – musíte to trénovat. Bez ohledu na to, jak jednoduchá je odpověď, její implementace z hlediska jednoduchosti ponechává mnoho přání. Existuje několik metod pro výuku NN a já zdůrazním 3, podle mého názoru, nejzajímavější:
    • Metoda zpětného šíření
    • Metoda pružného šíření nebo Rprop
    • Genetický algoritmus
    Rprop a GA budou diskutovány v jiných článcích, ale nyní se podíváme na základ základů - metodu zpětného šíření, kterou algoritmus používá gradientní sestup.

    Co je Gradient Descent?

    Toto je způsob, jak najít lokální minimum nebo maximum funkce pohybem po gradientu. Pokud rozumíte podstatě gradientního sestupu, pak byste neměli mít žádné otázky při použití metody backpropagation. Nejprve pochopíme, co je gradient a kde je v našem NN přítomen. Sestavme graf, kde na ose x budou hodnoty hmotnosti neuronu (w) a na ose y chyba odpovídající této váze (e).


    Při pohledu na tento graf pochopíme, že graf funkce f(w) je závislost chyby na zvolené váze. Na tomto grafu nás zajímá globální minimum - bod (w2, e2) nebo jinými slovy místo, kde se graf nejvíce přibližuje k ose x. Tento bod bude znamenat, že volbou váhy w2 dostaneme nejmenší chybu - e2 a ve výsledku nejlepší možný výsledek. Tento bod nám pomůže najít metoda gradientního klesání (žlutá na grafu označuje gradient). V souladu s tím bude mít každá váha v neuronové síti svůj vlastní graf a gradient a každá potřebuje najít globální minimum.

    Co je tedy tento gradient? Gradient je vektor, který určuje strmost svahu a udává jeho směr vzhledem k libovolnému bodu na povrchu nebo mapě. Chcete-li najít gradient, musíte vzít derivaci grafu pro daný bod (jak je znázorněno v grafu). Pohybem ve směru tohoto sklonu plynule sklouzneme do nížiny. Nyní si představte, že chyba je lyžař a graf funkce je hora. Pokud je tedy chyba 100 %, pak je lyžař na samém vrcholu hory, a pokud je chyba 0 %, pak v nížině. Jako všichni lyžaři má chyba tendenci co nejrychleji spadnout a snížit její hodnotu. Nakonec bychom měli dostat následující výsledek:


    Představte si, že lyžař je vyhozen pomocí vrtulníku na horu. Jak vysoká nebo nízká závisí na případu (podobně jako v neuronové síti jsou váhy při inicializaci randomizovány). Řekněme, že chyba je 90 % a toto je náš výchozí bod. Nyní musí lyžař sjet dolů pomocí stoupání. Cestou dolů si v každém bodě spočítáme gradient, který nám ukáže směr klesání a v případě změny sklonu jej opravíme. Je-li svah rovný, pak po n-tém počtu takových akcí dosáhneme nízké. Ale ve většině případů bude svah (graf funkce) zvlněný a našeho lyžaře čeká velmi vážný problém - lokální minimum. Myslím, že každý ví, co je lokální a globální minimum funkce, pro osvěžení paměti je zde příklad. Dostat se do místního minima je plné skutečnosti, že náš lyžař navždy zůstane v této nížině a nikdy nesklouzne z hory, a proto nikdy nebudeme schopni získat správnou odpověď. Tomu se ale můžeme vyhnout tím, že svého lyžaře vybavíme jetpackem zvaným momentum. Zde je stručná ilustrace tohoto okamžiku:

    Jak asi tušíte, tento pack poskytne lyžaři potřebné zrychlení k překonání kopce, který nás drží v místním minimu, ale je tu jedno ALE. Představme si, že jsme nastavili určitou hodnotu parametru moment a snadno se nám podařilo překonat všechna lokální minima a dosáhnout globálního minima. Protože nemůžeme jetpack jen tak vypnout, můžeme globální minimum přeskočit, pokud jsou vedle něj další minima. V konečném případě to není tak důležité, protože dříve nebo později se stejně vrátíme ke globálnímu minimu, ale je třeba si uvědomit, že čím větší moment, tím větší švih, se kterým lyžař pojede v nížinách. Spolu s momentem metoda backpropagation využívá i takový parametr, jako je rychlost učení. Jak si asi mnozí budou myslet, čím vyšší je rychlost učení, tím rychleji budeme trénovat neuronovou síť. Ne. Rychlost učení, stejně jako moment, je hyperparametr – hodnota, která se vybírá metodou pokusů a omylů. Rychlost učení může přímo souviset s rychlostí lyžaře a můžeme s jistotou říci - dále půjdete tišeji. I zde však existují určité aspekty, protože pokud lyžaři neudělíme rychlost vůbec, pak vůbec nikam nepojede, a pokud dáme nízkou rychlost, tak se doba jízdy může natáhnout na velmi, velmi dlouho doba. Co se stane, když dáme příliš velkou rychlost?


    Jak vidíte, nic dobrého. Lyžař začne klouzat po špatné cestě a možná i opačným směrem, což nás, jak jistě chápete, jen vzdálí od nalezení správné odpovědi. Proto je ve všech těchto parametrech nutné najít zlatá střední cesta aby se zabránilo nekonvergenci NN (o tom později).

    Co je Method Zpětná propagace(MOR)?

    Dosáhli jsme tedy bodu, kdy můžeme diskutovat o tom, jak zajistit, aby se vaše NN mohla správně učit a přijímat správná rozhodnutí. MOR je na tomto GIFu velmi dobře vizualizován:


    Nyní se podívejme podrobně na každý krok. Pokud si vzpomínáte, v předchozím článku jsme se zabývali výstupem Národního shromáždění. Jiným způsobem se tomu říká dopředný průchod, to znamená, že postupně přenášíme informace ze vstupních neuronů na výstupní neurony. Poté spočítáme chybu a na jejím základě provedeme zpětný přenos, který spočívá v postupné změně vah neuronové sítě, počínaje vahami výstupního neuronu. Hodnota vah se bude měnit směrem, který nám poskytne nejlepší výsledek. Ve svých výpočtech použiji metodu nalezení delty, protože je to nejjednodušší a nejsrozumitelnější způsob. Použiji také metodu stochastické aktualizace hmotnosti (o tom později).

    Nyní navážeme tam, kde jsme skončili s výpočty v předchozím článku.

    Tyto úkoly z předchozího článku


    Data: I1=1, I2=0, w1=0,45, w2=0,78, w3=-0,12, w4=0,13, w5=1,5, w6=-2,3.

    H1vstup = 1*0,45+0*-0,12=0,45
    Výstup H1 = sigmoid(0,45)=0,61

    H2vstup = 1*0,78+0*0,13=0,78
    Výstup H2 = sigmoid (0,78) = 0,69

    O1vstup = 0,61*1,5+0,69*-2,3=-0,672
    Výstup O1 = sigmoid(-0,672)=0,33

    O1ideal = 1 (0xor1=1)

    Chyba = ((1-0,33)^2)/1=0,45

    Výsledek je 0,33, chyba je 45 %.


    Protože jsme již vypočítali výsledek NN a jeho chybu, můžeme rovnou přistoupit k MOR. Jak jsem již zmínil dříve, algoritmus vždy začíná výstupním neuronem. V tomto případě, pojďme vypočítat jeho hodnotu? (delta) podle vzorce 1.

    Protože výstupní neuron nemá žádné odchozí synapse, použijeme první vzorec (? výstup), takže pro skryté neurony už vezmeme druhý vzorec (? skrytý). Zde je vše docela jednoduché: uvažujeme rozdíl mezi požadovaným a získaným výsledkem a vynásobíme derivací aktivační funkce ze vstupní hodnoty tohoto neuronu. Než budu pokračovat ve výpočtech, chci vás upozornit na derivaci. Za prvé, jak se již pravděpodobně ukázalo, u MOP by se měly používat pouze ty aktivační funkce, které lze odlišit. Za druhé, aby se neprováděly zbytečné výpočty, lze derivační vzorec nahradit přívětivějším a jednoduchý vzorec typ:


    Naše výpočty pro bod O1 tedy budou vypadat takto.

    Řešení

    Výstup O1 = 0,33
    O1ideál = 1
    chyba = 0,45

    O1 = (1 - 0,33) * ((1 - 0,33) * 0,33) = 0,148


    Tím jsou výpočty pro neuron O1 dokončeny. Pamatujte, že po výpočtu delta neuronu musíme okamžitě aktualizovat váhy všech odchozích synapsí tohoto neuronu. Protože v případě O1 žádné nejsou, přejdeme k neuronům skryté úrovně a provedeme totéž, až na to, že nyní máme druhý vzorec výpočtu delta a jeho podstatou je vynásobit derivaci aktivační funkce ze vstupní hodnoty. součtem součinů všech odcházejících vah a delta neuronu, se kterým je tato synapse spojena. Proč se ale vzorce liší? Faktem je, že celou podstatou MOR je rozložit chybu výstupních neuronů na všechny váhy NN. Chybu lze vypočítat pouze na výstupní úrovni, jak jsme již provedli, vypočítali jsme také delta, ve které již tato chyba existuje. Nyní tedy místo chyby, která se bude přenášet z neuronu na neuron, použijeme delta. V tom případě najdeme deltu pro H1:

    Řešení

    Výstup H1 = 0,61
    w5 = 1,5
    a01 = 0,148

    H1 = ((1 - 0,61) * 0,61) * (1,5 * 0,148) = 0,053


    Nyní musíme najít gradient pro každou odchozí synapsi. Obvykle se jedná o třípatrový zlomek s hromadou derivací a dalším matematickým peklem, ale právě v tom je krása použití metody delta počítání, protože váš vzorec pro nalezení gradientu bude nakonec vypadat takto:

    Zde bod A je bod na začátku synapse a bod B je na konci synapse. Můžeme tedy vypočítat gradient w5 takto:

    Řešení

    Výstup H1 = 0,61
    a01 = 0,148

    GRADw5 = 0,61 * 0,148 = 0,09


    Nyní máme všechna potřebná data k aktualizaci váhy w5 a uděláme to díky funkci MOP, která vypočítá množství, o které je třeba změnit tu či onu váhu a vypadá to takto:


    Důrazně doporučuji neignorovat druhou část výrazu a používat moment, protože se tak vyhnete problémům s místním minimem.

    Zde vidíme 2 konstanty, o kterých jsme již mluvili, když jsme uvažovali o algoritmu sestupu gradientu: E (epsilon) - rychlost učení, ? (alfa) - okamžik. Převedeme-li vzorec do slov, dostaneme: změna váhy synapse se rovná rychlosti učení vynásobené gradientem této váhy, přidáme moment vynásobený předchozí změnou této váhy (při 1. iteraci je 0 ). V takovém případě vypočítejme změnu hmotnosti w5 a aktualizujeme její hodnotu přidáním ?w5.

    Řešení

    E = 0,7
    ? = 0.3
    w5 = 1,5
    GRADw5 = 0,09
    Aw5(i-1) = 0

    W5 = 0,7 * 0,09 + 0 * 0,3 = 0,063
    w5 = w5 + Aw5 = 1,563


    Po aplikaci algoritmu se tedy naše váha zvýšila o 0,063. Nyní navrhuji, abyste udělali totéž pro H2.

    Řešení

    Výstup H2 = 0,69
    w6 = -2,3
    a01 = 0,148
    E = 0,7
    ? = 0.3
    Aw6(i-1) = 0

    H2 = ((1 - 0,69) * 0,69) * (-2,3 * 0,148) = -0,07

    GRADw6 = 0,69 * 0,148 = 0,1

    W6 = 0,7 * 0,1 + 0 * 0,3 = 0,07

    W6 = w6 + Aw6 = -2,2


    A samozřejmě nezapomeňte na I1 a I2, protože také mají synapse, jejichž váhy také musíme aktualizovat. Pamatujte však, že pro vstupní neurony nepotřebujeme hledat delty, protože nemají vstupní synapse.

    Řešení

    w1 = 0,45, aw1(i-1) = 0
    w2 = 0,78, aw2(i-1) = 0
    w3 = -0,12, aw3(i-1) = 0
    w4 = 0,13, aw4(i-1) = 0
    aHl = 0,053
    aH2 = -0,07
    E = 0,7
    ? = 0.3

    GRADw1 = 1 * 0,053 = 0,053
    GRADw2 = 1 * -0,07 = -0,07
    GRADw3 = 0 * 0,053 = 0
    GRADw4 = 0 * -0,07 = 0

    W1 = 0,7 * 0,053 + 0 * 0,3 = 0,04
    ?w2 = 0,7 * -0,07 + 0 * 0,3 = -0,05
    Aw3 = 0,7 * 0 + 0 * 0,3 = 0
    Aw4 = 0,7 * 0 + 0 * 0,3 = 0

    W1 = w1 + Aw1 = 0,5
    w2 = w2 + Aw2 = 0,73
    w3 = w3 + Aw3 = -0,12
    w4 = w4 + aw4 = 0,13


    Nyní se přesvědčme, že jsme vše udělali správně a opět vypočítejme výstup Národního shromáždění pouze s aktualizovanými vahami.

    Řešení

    I1 = 1
    I2 = 0
    w1 = 0,5
    w2 = 0,73
    w3 = -0,12
    w4 = 0,13
    w5 = 1,563
    w6 = -2,2

    Vstup H1 = 1 * 0,5 + 0 * -0,12 = 0,5
    Výstup H1 = sigmoid(0,5) = 0,62

    h2vstup = 1 * 0,73 + 0 * 0,124 = 0,73
    h2output = sigmoid(0,73) = 0,675

    O1vstup = 0,62* 1,563 + 0,675 * -2,2 = -0,51
    Výstup O1 = sigmoid (-0,51) = 0,37

    O1ideal = 1 (0xor1=1)

    Chyba = ((1-0,37)^2)/1=0,39

    Výsledek je 0,37, chyba je 39 %.


    Jak můžeme vidět po jedné iteraci MPA, podařilo se nám snížit chybu o 0,04 (6 %). Nyní to musíte opakovat znovu a znovu, dokud vaše chyba nebude dostatečně malá.

    Co dalšího potřebujete vědět o procesu učení?

    Neuronovou síť lze trénovat s učitelem i bez něj (učení pod dohledem, bez dozoru).

    Učení s učitelem- toto je typ tréninku, který je vlastní takovým problémům, jako je regrese a klasifikace (použili jsme jej v příkladu výše). Jinými slovy, zde jste učitel a HC je student. Zadáte vstupní data a požadovaný výsledek, to znamená, že student, když se na vstupní data podívá, pochopí, že musíte usilovat o výsledek, který jste mu poskytli.

    Učení bez učitele Tento typ učení není příliš běžný. Není zde žádný učitel, takže síť nedosáhne požadovaného výsledku nebo je jejich počet velmi malý. V zásadě je tento typ tréninku vlastní neuronovým sítím, ve kterých je úkolem seskupovat data podle určitých parametrů. Řekněme, že do vstupu vložíte 10 000 článků o Habrém a po analýze všech těchto článků je Národní shromáždění bude moci kategorizovat například na základě často se vyskytujících slov. Články, které zmiňují programovací jazyky, programování, a kde se slova jako Photoshop, design.

    Existuje ještě jedna zajímavá metoda posilovací učení(posilovací učení). Tato metoda si zaslouží samostatný článek, ale pokusím se stručně popsat její podstatu. Tato metoda je použitelná, pokud ji můžeme na základě výsledků získaných od Národního shromáždění posoudit. Například chceme naučit NS hrát PAC-MAN, pak pokaždé, když NS získá hodně bodů, budeme ji povzbuzovat. Jinými slovy, dáváme Národnímu shromáždění právo najít jakýkoli způsob, jak dosáhnout cíle, pokud to bude dávat dobrý výsledek. Síť tak začne chápat, čeho z ní chtějí dosáhnout a snaží se to najít nejlepší způsob dosažení tohoto cíle bez neustálého poskytování dat „učitelem“.

    Školení lze také provádět třemi metodami: stochastickou metodou (stochastickou), dávkovou metodou (dávkovou) a minidávkovou metodou (minidávkovou). Existuje tolik článků a studií o tom, která metoda je lepší a nikdo nemůže přijít s obecnou odpovědí. Jsem zastáncem stochastické metody, ale nepopírám, že každá metoda má svá pro a proti.

    Krátce o každé metodě:

    Stochastické(někdy se jí také říká online) metoda funguje podle následujícího principu - nalezen? w, okamžitě aktualizovat odpovídající hmotnost.

    dávková metoda funguje to jinak. Sečteme ?w všech vah v aktuální iteraci a teprve poté aktualizujeme všechny váhy pomocí tohoto součtu. Jednou z nejdůležitějších výhod tohoto přístupu je výrazná úspora času výpočtu, přičemž přesnost v tomto případě může značně utrpět.

    Mini dávková metoda je zlatou střední cestou a snaží se spojit výhody obou metod. Princip je následující: náhodně rozdělujeme váhy mezi skupiny a měníme jejich váhy o součet w všech vah v konkrétní skupině.

    Co jsou hyperparametry?

    Hyperparametry jsou hodnoty, které je nutné vybrat ručně a často metodou pokus-omyl. Tyto hodnoty zahrnují:
    • Okamžik a rychlost učení
    • Počet skrytých vrstev
    • Počet neuronů v každé vrstvě
    • Přítomnost nebo nepřítomnost zkreslených neuronů
    V jiných typech neuronových sítí existují další hyperparametry, ale o nich nebudeme mluvit. Výběr správných hyperparametrů je velmi důležitý a přímo ovlivní konvergenci vašeho NN. Pochopení, zda použít zkreslení neuronů nebo ne, je poměrně jednoduché. Počet skrytých vrstev a neuronů v nich lze vypočítat výčtem na základě jedné jednoduché pravidlo- čím více neuronů, tím přesnější je výsledek a exponenciálně více času které utratíte za její trénink. Je však třeba si uvědomit, že byste neměli vytvářet neuronové sítě s 1000 neurony k řešení jednoduchých problémů. Jenže s volbou okamžiku a rychlostí učení je vše trochu složitější. Tyto hyperparametry se budou lišit v závislosti na úloze a architektuře neuronové sítě. Například pro řešení XOR může být rychlost učení v rozmezí 0,3 - 0,7, ale v neuronové síti, která analyzuje a předpovídá cenu akcií, vede rychlost učení vyšší než 0,00001 ke špatné konvergenci neuronové sítě. Nyní byste neměli soustředit svou pozornost na hyperparametry a snažit se důkladně pochopit, jak je vybrat. To přijde se zkušenostmi, ale prozatím vám doporučuji jen experimentovat a hledat příklady řešení konkrétního problému v síti.

    Co je to konvergence?



    Konvergence udává, zda je architektura neuronové sítě správná a zda byly správně zvoleny hyperparametry v souladu s úlohou. Řekněme, že náš program vypíše chybu NN při každé iteraci protokolu. Pokud se chyba s každou iterací snižuje, pak my správná cesta a naše NS konverguje. Pokud chyba skáče nahoru a dolů nebo zamrzne na určité úrovni, pak NN nekonverguje. V 99% případů se to řeší změnou hyperparametrů. Zbývající 1 % bude znamenat, že máte chybu v architektuře NN. Stává se také, že konvergence je ovlivněna přebuzením neuronové sítě.

    Co je to rekvalifikace?

    Overfitting, jak název napovídá, je stav neuronové sítě, kdy je přesycena daty. K tomuto problému dochází, pokud je síť trénována na stejných datech příliš dlouho. Jinými slovy, síť se z dat nezačne učit, ale bude si je pamatovat a „nacpat“. V souladu s tím, když přivádíte nová data na vstup této neuronové sítě, může se v přijatých datech objevit šum, který ovlivní přesnost výsledku. Například když ukážeme NA různé fotografie jablek (pouze červená) a řekneme, že toto je jablko. Když pak Národní shromáždění uvidí žlutou resp zelené jablko, nebude schopen určit, že se jedná o jablko, protože si zapamatovala, že všechna jablka musí být červená. A naopak, když HC uvidí něco červeného a ve tvaru jablka, například broskev, řekne, že je to jablko. Tohle je hluk. Na grafu bude šum vypadat takto.


    Je vidět, že graf funkce se velmi liší bod od bodu, které jsou výstupem (výsledkem) našeho NN. V ideálním případě by tento graf měl být méně zvlněný a rovný. Abyste se vyhnuli přefitování, neměli byste NN trénovat delší dobu na stejných nebo velmi podobných datech. Také může dojít k nadměrnému vybavení velké množství parametry, které dodáváte na vstup NA nebo příliš složitá architektura. Když tedy po tréninkové fázi zaznamenáte chyby (šum) ve výstupu, měli byste použít některou z metod regularizace, ale ve většině případů to nebude nutné.

    Závěr

    Doufám, že tento článek dokázal objasnit klíčové body tak obtížného tématu, jako jsou neuronové sítě. Věřím však, že bez ohledu na to, kolik článků přečtete, je nemožné zvládnout tak složité téma bez praxe. Pokud jste tedy teprve na začátku své cesty a chcete prozkoumat toto perspektivní a rozvíjející se odvětví, pak vám doporučuji začít cvičit psaním vlastního NN a až poté se uchýlit k pomoci různých frameworků a knihoven. Také, pokud vás můj způsob prezentace informací zaujal a chcete, abych psal články na další témata související se strojovým učením, pak hlasujte v níže uvedené anketě pro téma, které vás zajímá. Uvidíme se v dalších příspěvcích :)

    Dnes se na každém rohu, tu a tam, křičí o výhodách neuronových sítí. Ale co to je, opravdu chápe jen málokdo. Pokud se obrátíte na Wikipedii pro vysvětlení, zatočí se vám hlava z výšky tam vybudovaných citadel vědeckých termínů a definic. Pokud máte do genetického inženýrství daleko a matoucí suchý jazyk vysokoškolských učebnic způsobuje jen zmatek a žádné nápady, pak se pokusme společně pochopit problém neuronových sítí.

    Abyste problém pochopili, musíte zjistit hlavní příčinu, která leží zcela na povrchu. Při vzpomínce na Sarah Connorovou jsme se zachvěním pochopili, že kdysi průkopníci vývoje počítačů Warren McCulloch a Walter Pitts sledovali sobecký cíl vytvořit první umělou inteligenci.

    Neuronové sítě jsou elektronickým prototypem samoučícího se systému. Neuronová síť stejně jako dítě nasává informace, žvýká je, získává zkušenosti a učí se. V procesu učení se taková síť rozvíjí, roste a může vyvozovat vlastní závěry a rozhodovat se sama.

    Pokud se lidský mozek skládá z neuronů, pak se podmíněně shodneme, že elektronický neuron je jakousi pomyslnou schránkou, která má mnoho vstupů a jeden výstup. Interní algoritmus neuronu určuje postup pro zpracování a analýzu přijatých informací a jejich převod do jediného užitečného znalostního fondu. Podle toho, jak dobře fungují vstupy a výstupy, celý systém buď rychle myslí, nebo se naopak může zpomalit.

    Důležité: V neuronových sítích se zpravidla používá analogová informace.

    Opakujeme, že vstupních informačních proudů může být mnoho (ve vědeckém pojetí se toto spojení výchozí informace a našeho „neuronu“ nazývá synapse) a všechny jsou různé povahy a mají nestejný význam. Člověk například vnímá svět kolem sebe prostřednictvím orgánů zraku, hmatu a čichu. Je logické, že zrak je důležitější než čich. Na základě různých životních situací využíváme určité smyslové orgány: v naprosté tmě vystupuje do popředí hmat a sluch. Synapse v neuronových sítích stejnou analogií v různých situacích budou mít různý význam, který se obvykle označuje vahou spojení. Při psaní kódu je nastavena minimální prahová hodnota pro předávání informací. Pokud je hmotnost připojení vyšší nastavená hodnota, pak je výsledek kontroly neuronem pozitivní (a rovný jedné ve dvojkové soustavě), pokud je méně, pak záporné. Je logické, že čím výše je laťka nastavena, tím přesnější bude práce neuronové sítě, ale bude to trvat déle.

    Aby neuronová síť fungovala správně, musíte ji trénovat – to je hlavní rozdíl od jednoduchých programovatelných algoritmů. Stejně jako malé dítě potřebuje neuronová síť počáteční informační základnu, ale pokud je počáteční kód napsán správně, pak samotná neuronová síť bude schopna nejen správně vybrat z dostupných informací, ale také budovat nezávislé předpoklady.

    Při psaní primárního kódu musíte své akce vysvětlit doslova na prstech. Pokud pracujeme například s obrázky, pak pro nás v první fázi bude hodnota jeho velikost a třída. Pokud nám první charakteristika říká počet vstupů, pak druhá pomůže samotné neuronové síti vypořádat se s informací. V ideálním případě po načtení primárních dat a porovnání topologie tříd bude následně neuronová síť schopna nové informace sama klasifikovat. Řekněme, že se rozhodneme nahrát obrázek 3x5 pixelů. jednoduchá aritmetika nám říká, že budou vstupy: 3*5=15. A samotná klasifikace určí celkový počet výjezdů, tzn. neurony. Další příklad: neuronová síť potřebuje rozpoznat písmeno „C“. Zadaný práh je úplná shoda do písmene, bude to vyžadovat jeden neuron s počtem vstupů rovným velikosti obrázku.

    Řekněme, že velikost bude stejná 3x5 pixelů. Krmení programu různé obrázky písmena nebo číslice, naučíme jej určit obrázek symbolu, který potřebujeme.

    Jako na každém školení by měl být žák potrestán za špatnou odpověď, ale za správnou nic nedáme. Pokud program vnímá správnou odpověď jako False, pak zvýšíme vstupní váhu na každé synapsi. Pokud naopak při nesprávném výsledku program považuje výsledek za kladný nebo True, odečteme váhu od každého vstupu do neuronu. Logičtější je začít se učit tím, že poznáváme symbol, který potřebujeme. První výsledek však bude nesprávný, pokud kód mírně opravíte, s další práce program bude fungovat správně. Uvedený příklad algoritmu pro konstrukci kódu pro neuronovou síť se nazývá parsetron.


    Existují i ​​složitější možnosti provozu neuronových sítí s vracením nesprávných dat, jejich analýzou a logickými závěry samotné sítě. Například online prediktor budoucnosti je docela naprogramovaná neuronová síť. Takové programy jsou schopny se učit s učitelem i bez něj a nazývají se adaptivní rezonance. Jejich podstata spočívá v tom, že neurony již mají své představy o očekávání, jaké informace chtějí přijímat a v jaké podobě. Mezi očekáváním a realitou je tenký práh tzv. bdělosti neuronů, který pomáhá síti správně klasifikovat příchozí informace a nevynechat jediný pixel. Rysem neuronové sítě AR je, že se od samého začátku sama učí, nezávisle určuje práh neuronální bdělosti. Což zase hraje roli při klasifikaci informací: čím je síť ostražitější, tím je pečlivější.

    Získali jsme úplné základy znalostí o tom, co jsou neuronové sítě. Nyní se pokusíme shrnout obdržené informace. Tak, neuronové sítě je elektronickým prototypem lidského myšlení. Skládají se z elektronických neuronů a synapsí – informačních toků na vstupu a výstupu z neuronu. Neuronové sítě se programují podle principu učení s učitelem (programátor, který nahrává primární informace) nebo samostatně (na základě předpokladů a očekávání z přijatých informací, které určuje stejný programátor). Pomocí neuronové sítě můžete vytvořit jakýkoli systém: od jednoduchá definice kreslení na pixelových obrázcích pro psychodiagnostiku a ekonomickou analýzu.

    Problematika umělé inteligence a neuronových sítí je nyní populárnější než kdykoli předtím. Mnoho uživatelů si stále častěji klade otázky, jak neuronové sítě fungují, co to je a na čem je založen princip jejich činnosti?

    Tyto otázky, spolu s jejich popularitou, jsou také značně složité, protože procesy jsou složité algoritmy strojového učení navržené pro různé účely, od analýzy změn po modelování rizik spojených s určitými akcemi.

    Co jsou neuronové sítě a jejich typy?

    První otázka, která mezi zájemci vyvstává, je, co je to neuronová síť? V klasické definici se jedná o určitou sekvenci neuronů, které jsou vzájemně propojeny synapsemi. Neuronové sítě jsou zjednodušeným modelem biologických analogů.

    Program, který má strukturu neuronové sítě, umožňuje stroji analyzovat vstupní data a zapamatovat si výsledek získaný z určitých zdrojů. Následně tento přístup umožňuje načíst z paměti výsledek odpovídající aktuálnímu souboru dat, pokud již existoval při zkušenostech se síťovými cykly.

    Mnozí vnímají neuronovou síť jako analog lidského mozku. Na jednu stranu lze tento úsudek považovat za blízký pravdě, ale na druhou stranu je lidský mozek příliš složitým mechanismem na to, aby jej dokázal znovu vytvořit pomocí stroje byť jen na zlomek procenta. Neuronová síť je primárně program založený na principu mozku, ale ne jeho analog.

    Neuronová síť je shluk neuronů, z nichž každý přijímá informace, zpracovává je a předává dalšímu neuronu. Každý neuron zpracovává signál přesně stejným způsobem.

    V čem je pak výsledek jiný? Je to všechno o synapsích, které spojují neurony mezi sebou. Jeden neuron může mít obrovské množství synapsí, které zesilují nebo zeslabují signál, přičemž mají schopnost v průběhu času měnit své vlastnosti.

    Jsou to právě správně zvolené parametry synapse, které umožňují získat správný výsledek transformace vstupních dat na výstupu.

    Po obecné definici toho, co neuronová síť je, můžeme rozlišit hlavní typy jejich klasifikace. Před pokračováním v klasifikaci je třeba uvést jedno upřesnění. Každá síť má první vrstvu neuronů, která se nazývá vstup.

    Neprovádí žádné výpočty a transformace, jeho úkol je jediný: přijímat a distribuovat do dalších neuronů vstupní signály. Toto je jediná vrstva, která je společná všem typům neuronových sítí a jejich další struktura je kritériem pro hlavní rozdělení.

    • Jednovrstvá neuronová síť. Jedná se o strukturu interakce mezi neurony, ve které se po vstupu vstupních dat do první vstupní vrstvy okamžitě přenášejí na výstupní vrstvu konečného výsledku. V tomto případě se nebere v úvahu první vstupní vrstva, protože neprovádí žádné jiné akce než přijímání a distribuci, to již bylo zmíněno výše. A druhá vrstva provádí všechny potřebné výpočty a zpracování a okamžitě dává konečný výsledek. Vstupní neurony jsou spojeny s hlavní vrstvou synapsemi, které mají různé váhové koeficienty, které zajišťují kvalitu spojení.
    • Vícevrstvá neuronová síť. Jak je zřejmé z definice, tento typ neuronových sítí má kromě vstupní a výstupní vrstvy také mezivrstvy. Jejich počet závisí na stupni složitosti samotné sítě. Ona dovnitř více připomíná strukturu biologické neuronové sítě. Tyto typy sítí byly vyvinuty poměrně nedávno, předtím byly všechny procesy implementovány pomocí jednovrstvých sítí. Respektive podobné řešení má mnohem více funkcí než jeho předchůdce. V procesu zpracování informací představuje každá mezivrstva mezistupeň ve zpracování a distribuci informací.

    V závislosti na směru distribuce informací přes synapse z jednoho neuronu do druhého lze sítě také rozdělit do dvou kategorií.

    • Sítě přímého šíření nebo jednosměrné, to znamená struktura, ve které se signál pohybuje striktně ze vstupní vrstvy do výstupní vrstvy. Pohyb signálu v opačném směru není možný. Takový vývoj je velmi rozšířený v současné doběúspěšně řešit problémy, jako je rozpoznávání, předpovědi nebo shlukování.
    • Sítě s zpětná vazba nebo opakující se. Takové sítě umožňují pohyb signálu nejen vpřed, ale i v opačném směru. co to dává? V takových sítích lze na základě toho vrátit výsledek výstupu na vstup, výstup neuronu je určen váhami a vstupními signály a je doplněn o předchozí výstupy, které se opět vrátily na vstup. Takové sítě se vyznačují funkcí krátkodobé paměti, na jejímž základě se při zpracování obnovují a doplňují signály.

    Toto nejsou jediné možnosti klasifikace sítí.

    Lze je rozdělit na homogenní a hybridní na základě typů neuronů, které tvoří síť. A také na heteroasociativní nebo autoasociativní, v závislosti na metodě síťového tréninku, s učitelem nebo bez něj. Sítě můžete také klasifikovat podle jejich účelu.

    Kde se používají neuronové sítě?

    Neuronové sítě se používají k řešení různých problémů. Uvažujeme-li úlohy podle stupně složitosti, pak se pro řešení nejjednodušších úloh hodí obvyklá úloha. počítačový program, více
    složité úlohy, které vyžadují jednoduché předpovídání nebo přibližné řešení rovnic, používají se programy využívající statistické metody.

    Úkoly ještě složitější úrovně ale vyžadují zcela jiný přístup. Týká se to zejména rozpoznávání vzorů, řeči nebo komplexní predikce. V hlavě člověka k takovým procesům dochází nevědomě, to znamená, že při rozpoznávání a zapamatování obrazů si člověk neuvědomuje, jak k tomuto procesu dochází, a proto jej nemůže ovládat.

    Právě tyto úlohy pomáhají neuronové sítě řešit, to znamená, že jsou určeny k provádění procesů, jejichž algoritmy jsou neznámé.

    Neuronové sítě jsou tedy široce používány v následujících oblastech:

    • uznání a tento směr je v současnosti nejširší;
    • predikce dalšího kroku, tato funkce je použitelná při obchodování a akciových trzích;
    • klasifikace vstupních dat podle parametrů, tuto funkci vykonávají úvěroví roboti, kteří jsou schopni rozhodovat při schvalování půjčky osobě na základě vstupní sady různých parametrů.

    Díky schopnostem neuronových sítí jsou velmi oblíbené. Lze je naučit mnoho věcí, například hraní her, rozpoznání určitého hlasu a podobně. Na základě toho, že umělé sítě jsou postaveny na principu biologických sítí, lze je trénovat ve všech procesech, které člověk nevědomě provádí.

    Co je to neuron a synapse?

    Co je tedy neuron v kontextu umělých neuronových sítí? Tento koncept se týká jednotky, která provádí výpočty. Přijímá informace ze vstupní vrstvy sítě, provádí s nimi jednoduché výpočty a požírá je dalšímu neuronu.

    V síti jsou tři typy neuronů: vstupní, skryté a výstupní. Navíc, pokud je síť jednovrstvá, pak neobsahuje skryté neurony. Kromě toho existuje řada jednotek nazývaných zkreslený neuron a kontextový neuron.

    Každý neuron má dva typy dat: vstupní a výstupní. V tomto případě jsou vstupní data první vrstvy rovna výstupním datům. V jiných případech vstup neuronu přijímá celkové informace z předchozích vrstev, poté prochází procesem normalizace, to znamená, že všechny hodnoty, které spadají mimo požadovaný rozsah, jsou převedeny aktivační funkcí.

    Jak bylo uvedeno výše, synapse je spojení mezi neurony, z nichž každý má svůj vlastní stupeň hmotnosti. Je to díky této vlastnosti, že vstupní informace se během procesu přenosu mění. Při zpracování budou převládat informace přenášené synapsí s velkým indikátorem váhy.

    Ukazuje se, že výsledek neovlivňují neurony, ale synapse, které dávají určitou sadu vah vstupních dat, protože samotné neurony provádějí pokaždé úplně stejné výpočty.

    Váhy jsou nastaveny náhodně.

    Schéma neuronové sítě

    Představit princip fungování neuronové sítě nevyžaduje speciální dovednosti. Určité informace vstupují do vstupní vrstvy neuronů. Přenáší se přes synapse do další vrstvy, přičemž každá synapse má svůj váhový koeficient a každý následující neuron může mít několik příchozích synapsí.

    Výsledkem je, že informace přijaté dalším neuronem jsou součtem všech dat, každý vynásobený svým vlastním váhovým koeficientem. Výsledná hodnota se dosadí do aktivační funkce a získá se výstupní informace, která se přenáší dále, dokud nedosáhne konečný výjezd. První spuštění sítě nedává správné výsledky, protože síť ještě není natrénována.

    Aktivační funkce slouží k normalizaci vstupních dat. Existuje mnoho takových funkcí, ale existuje několik hlavních, které jsou nejpoužívanější. Jejich hlavním rozdílem je rozsah hodnot, ve kterých působí.

    • Lineární funkce f(x) = x, nejjednodušší ze všech možných, slouží pouze k testování vytvořené neuronové sítě nebo k přenosu dat v původní podobě.
    • Sigmoid je považován za nejběžnější aktivační funkci a má tvar f(x) = 1 / 1+e-×; přičemž rozsah jeho hodnot je od 0 do 1. Nazývá se také logistická funkce.
    • Hyperbolická tečna se používá také k pokrytí záporných hodnot. F(x) = e²× - 1 / e²× + 1 - tato funkce má takový tvar a rozsah, který má, je od -1 do 1. Pokud neuronová síť neumožňuje použití záporných hodnot, pak by to nemělo používat.

    Aby bylo možné nastavit data pro provoz sítě, jsou zapotřebí trénovací sady.

    Integrace je počítadlo, které se zvyšuje s každou tréninkovou sadou.

    Epocha je měřítkem toho, jak dobře je neuronová síť trénována, a zvyšuje se pokaždé, když síť prochází celou sadou trénovacích sad.

    V souladu s tím, abyste správně trénovali síť, musíte provádět sady a neustále zvyšovat indikátor epochy.

    Během školení budou zjištěny chyby. Toto je procentuální rozdíl mezi získaným výsledkem a požadovaným výsledkem. Tento ukazatel by se měl v procesu zvyšování ukazatele epochy snižovat, jinak je někde chyba vývojáře.

    Co je zkreslený neuron a k čemu slouží?

    V neuronových sítích existuje další typ neuronu – zkreslený neuron. Od hlavního typu neuronů se liší tím, že jeho vstup a výstup je v každém případě roven jedné. Zároveň takové neurony nemají vstupní synapse.

    Uspořádání takových neuronů se vyskytuje jeden na vrstvu a ne více a nemohou být navzájem spojeny synapsemi. Takové neurony není vhodné umisťovat na výstupní vrstvu.

    K čemu jsou potřeba? Jsou situace, kdy neuronová síť prostě nemůže najít správné řešení kvůli tomu požadovaný bod bude mimo dosah. Právě k tomu jsou takové neurony potřeba, aby bylo možné posunout doménu definice.

    To znamená, že váha synapse mění křivku grafu funkce, zatímco posunový neuron umožňuje posun podél souřadnicové osy X, takže neuronová síť může bez posunu zachytit oblast, která je pro ni nepřístupná. V tomto případě lze řazení provést jak doprava, tak doleva. Schematicky se neurony posuvu většinou neoznačují, jejich váha se standardně zohledňuje při výpočtu vstupní hodnoty.

    Neurony zkreslení vám také umožní získat výsledek v případě, že všechny ostatní neurony dávají jako výstupní parametr 0. V tomto případě, bez ohledu na váhu synapse, bude tato hodnota přenášena do každé další vrstvy.

    Přítomnost zaujatého neuronu napraví situaci a získá jiný výsledek. Proveditelnost použití zkreslených neuronů je určena testováním sítě s nimi a bez nich a porovnáním výsledků.

    Je ale důležité si uvědomit, že k dosažení výsledků nestačí vytvořit neuronovou síť. Musí být také vyškolen, což také vyžaduje speciální přístupy a má své vlastní algoritmy. Tento proces lze stěží nazvat jednoduchým, protože jeho implementace vyžaduje určité znalosti a úsilí.