Umělé neuronové sítě šikovně kopírují činnosti, ve kterých náš mozek vyniká. Ale zatímco v mozku probíhají všechny přenosy simultálně, najednou, počítač takto pracovat neumí. Musí si vzít jednu buňku, spočítat pro ni výsledky na vstupu a nastavit výsledek pro výstup. A potom druhou buňku, třetí, atd. Pokaždé se zapojí procesor a paměť. Při dnešních výpočetních výkonech to už ale není takový problém, nicméně pořád platí, že neuronové sítě jsou pořádný žrout výkonu a tím i energie.
V centru výzkumu je věc, které se říká několikavrstvý perceptron. Ve své podstatě to je několik vrstev neuronů za sebou. První vrstva slouží jako vstup, v dalších vrstvách doje k vyhodnocení a poslední vrstva zobrazí výstup. Každý neuron a proto i každý model neuronu v počítači má přitom mnoho vstupů (dendritů) a jeden výstup (axon). Perceptron je potom uspořádán tak, že každý neuron následující vrstvy má spojení s každým neuronem předchozí vrstvy. Přenos informace na vstup neuronu, tedy po vlákně dendritu, většinu představuje nějaká nelineární funkce, jejíž výsledky mohou být od -1 do +1. Na začátku jsou hodnoty pro jednotlivá vlákna (říkáme tomu váhy) nastavena náhodně a síť je potřeba učit. Na vstup se posílají různá data a po každém průchodu těchto dat se nastavení jednotlivých vláken podle sofistikovaného algoritmu mění, aby bylo dosaženo požadovaného výstupu. Předností vícevrstvého perceptronu je to, že si po naučení dokáže poradit i s „pozměněnými" daty na vstupu a správně určit, jaký má být výstup. Něco jako když vidíte třeba auto v hustém dešti, mlze nebo šeru a přesto poznáte, že je to auto, jako když ho vidíte za jasného dne.
Pojďme se nyní podívat, jak můžeme optimalizovat tento na výpočty náročný proces pro mobilní zařízení. První cestou je přesunout výpočet na server, mobil pouze zajistí vstupní data a jejich přenos přes internet na server, kde dojde k vyhodnocení a odeslání výsledku zpět do mobilu. To je dnes nejpoužívanější řešení.
Druhou cestou může být obvod, který tak trochu simuluje neuron, že má tedy několik vstupů a jeden výstup a především, spočítání všech vstupu probíhá paralelně. Navíc místo digitálního výpočtu to uděláme analogově, ve své podstatě je každé takové vlákno malý násobič napětí, v neuronu se sečte celkový výsledek a ten se potom převede do digitální formy. Touto cestou se vydali výzkumníci z MIT a dokáží speciálním procesorem snížit energetickou náročnost celého výpočtu o 95%. Navíc používají ještě jeden fígl, váhy mohou být pouze -1 nebo +1. Sice tím dojde k určité ztrátě přesnosti, ale jenom malé, do 2 %. Umělé neuronové sítě, stejně jako biologické, se tedy dokáží dost dobře vypořádat s poškozením, jímž je vlastně omezení vah na pouhé dvě hodnoty.
Tak uvidíme, kdy se dočkáme integrace této architektury do procesorů pro mobilní zařízení. Řada věcí by potom mohla fungovat i bez připojení k internetu.
Zdroje
Larry Hardesty.: Neural networks everywhere, MIT News, February 13, 2018
Perceptron https://cs.wikipedia.org/wiki/Perceptron
Neuron https://cs.wikipedia.org/wiki/Neuron
MLP https://en.wikipedia.org/wiki/Multilayer_perceptron
Diskuze:
Neurony
Richard Malaschitz,2018-02-16 10:12:08
Celá tá správa od MIT je dosť chaotická. Umelá Inteligencia v mobiloch sa už dlho využíva. Apple má priamo v API funkcie na využívanie neurónových sietí (a Google to dal do API v poslednej verzii tiež) Naučenú neurónovú sieť dáte priamo do aplikácie na mobile a môžete ju v aplikácii využívať. Náročné na processor a pamäť nie je samotné využívanie neurónovej siete ale učenie sa, ktoré sa na mobile ale nevykonáva. Takže to využitie špeciálneho čipu má určite význam, ale zase nie tak prevratný.
Ďalšia vec je s tými váhami. Celá náročnosť výpočtu s neurónovými sieťami je v tom, že sa jedná o výpočty s pohyblivou desattinou čiarkou a ktoré je možné spracovávať paralelne. Google má vlastné čipy, ktoré sú veľmi rýchle pretože znížil presnosť výpočtu na zopár desatinných miest - čo stačí. Takže neurónová sieť, kde budú váhy iba celé čísla - to je väčšia novinka ako celý čip. To by mali rozviesť viacej, pretože je to celé dosť nejasné.
Použitý obrázok sa síce dotýka umelej inteligencie ale netýka sa neurónových sietí. Jedná sa o metódu Support Vector Machines - https://en.wikipedia.org/wiki/Support_vector_machine
Re: Neurony
Martin Tůma,2018-02-16 13:41:33
Dobrý den, co se týče náročnosti, tam máte pravdu v tom, že používání sítí je oproti jejím učení nenáročné. Pravdou je, že jsem nezkoumal úplně do hloubky například proces, kdy se telefon "učí" reagovat na Váš hlas. Místo toho jsem Předpokládal, že tam k učení sítě dochází a nepřekvapilo by mně, kdyby Google měl nějakou databázi vah pro jednotlivé uživatele a to používal pro optimalizaci rozpoznání řeči v daném jazyce. A určitě by se daly najít i jiné případy, kdy je potřeba síť učit. Co se týče celočíselných vah, tahle věc není novinkou, spíše ji šikovně využili ke zjednodušení konstrukce procesoru, kde místo složitého násobiče napětí je pouhé hradlo.
A i kdyby se ten procesor používal ryze na provoz "naučené" sítě, pořád jim věřím 95% úspory, což při současném stavu, kdy se mobil vybije za pár hodin, vůbec není špatné. Každá kapka se počítá a navíc zabudování neurálního koprocesoru do architektury mobilních čipů nebude zase tak složité. Uvidíme, jestli k tomu v brzké době dojde a jak dopadne patentové řízení.
Re: Re: Neurony
Jiří Novák,2018-02-16 17:11:43
A neznamenalo by to ukládání poměrně obsáhlé databáze vah do mobilu? Protože jestli jsem to saprávně pochopil tak pro každý úkol je potřeba naváhovat vstupy jinak, podle toho k čemu tu síť potřebujem. Mozek na to má různá centra, mobil bude mít jeden čip.
Taky mě dost zaujalo že váhy jsou jenom 1 a -1. Nebývalo to za starých časů reálné číslo? Jak to, že to "neuron" zbaští? Jak vypadá přechodová funkce?
Re: Re: Re: Neurony
Martin Pecka,2018-02-17 12:17:25
Kdyz vygooglite "neural networks weight regularization", melo by vam na to tema neco vypadnout. Ano, ze zmenseni oboru hodnot vah neuronky snesou (jak bylo zmineno, kdyz misto double pocitate s floatem, bohate to staci, a stacil by pravdepodobne i float16 nebo float8), se vi, ale prijde mi podezrele, ze by zmenseni oboru na {-1, 1} melo dopad na kvalitu vysledku jen zminena 2%. Mozna spis chteli rict, ze je mozne naucit se ekvivalentni sit s timhle oborem hodnot pro vahy, ktera bude jen o 2% horsi nez sit s vetsim oborem hodnot. Ale urcite to nefunguje tak, ze byste vzal naucenou sit a jeji vahy zaokrouhlil k 1 a -1.
Na druhou stranu, kdyby vahy opravdu mohly byt jen -1, 1, tak to mate 1 bit na vahu oproti soucasnym 32-64. Tolikrat mensi by taky byla ulozena naucena sit, a jelikoz ty ted v pripade rozpoznavani obrazku maji radove max jednotky GB, tak by z toho pro mobil bylo < 50MB, coz je IMHO ok.
Diskuze je otevřená pouze 7dní od zvěřejnění příspěvku nebo na povolení redakce