Umelá neurónová sieť

Neurónová sieť (nazývaná aj ANN alebo umelá neurónová sieť) je druh počítačového softvéru, ktorý je inšpirovaný biologickými neurónmi. Biologické mozgy sú schopné riešiť zložité problémy, ale každý neurón je zodpovedný len za riešenie veľmi malej časti problému. Podobne aj neurónová sieť sa skladá z buniek, ktoré spolupracujú na dosiahnutí požadovaného výsledku, hoci každá jednotlivá bunka je zodpovedná len za riešenie malej časti problému. Toto je jedna z metód vytvárania umelo inteligentných programov.

Neurónové siete sú príkladom strojového učenia, pri ktorom sa program môže meniť, keď sa učí riešiť problém. Neurónovú sieť možno trénovať a zlepšovať s každým príkladom, ale čím je neurónová sieť väčšia, tým viac príkladov potrebuje na dobré fungovanie, pričom v prípade hlbokého učenia sú často potrebné milióny alebo miliardy príkladov.

Prehľad

O neurónovej sieti sa dá uvažovať dvoma spôsobmi. Prvý je ako ľudský mozog. Druhý spôsob je ako matematická rovnica.

Sieť začína vstupom, podobne ako zmyslový orgán. Informácie potom prúdia cez vrstvy neurónov, kde je každý neurón prepojený s mnohými ďalšími neurónmi. Ak určitý neurón dostane dostatok podnetov, pošle správu akémukoľvek inému neurónu, s ktorým je prepojený prostredníctvom svojho axónu. Podobne umelá neurónová sieť má vstupnú vrstvu údajov, jednu alebo viac skrytých vrstiev klasifikátorov a výstupnú vrstvu. Každý uzol v každej skrytej vrstve je prepojený s uzlom v ďalšej vrstve. Keď uzol prijme informáciu, pošle spolu s ňou určité množstvo do uzlov, ku ktorým je pripojený. Toto množstvo je určené matematickou funkciou nazývanou aktivačná funkcia, napríklad sigmoid alebo tanh.

Ak o neurónovej sieti uvažujeme ako o matematickej rovnici, neurónová sieť je jednoducho zoznam matematických operácií, ktoré sa majú aplikovať na vstup. Vstupom a výstupom každej operácie je tenzor (presnejšie vektor alebo matica). Každá dvojica vrstiev je prepojená zoznamom váh. Každá vrstva má v sebe uložených niekoľko tenzorov. Jednotlivý tenzor vo vrstve sa nazýva uzol. Každý uzol je spojený s niektorými alebo všetkými uzlami v nasledujúcej vrstve pomocou váhy. Každý uzol má tiež zoznam hodnôt, ktoré sa nazývajú zaujatosti. Hodnota každej vrstvy je potom výstupom aktivačnej funkcie hodnôt aktuálnej vrstvy (nazývanej X) vynásobenej váhami.

A k t i v á c i a ( W ( e i g h t s ) X + b ( i a s ) ) {\displaystyle Aktivácia(W(eights)*X+b(ias))} {\displaystyle Activation(W(eights)*X+b(ias))}

Pre sieť je definovaná nákladová funkcia. Stratová funkcia sa snaží odhadnúť, ako dobre si neurónová sieť vedie pri plnení pridelenej úlohy. Nakoniec sa použije optimalizačná technika na minimalizáciu výstupu nákladovej funkcie zmenou váh a skreslení siete. Tento proces sa nazýva trénovanie. Trénovanie sa vykonáva po malých krokoch. Po tisícoch krokov je sieť zvyčajne schopná vykonávať svoju pridelenú úlohu celkom dobre.

Príklad

Zoberme si program, ktorý kontroluje, či je osoba nažive. Kontroluje dve veci - pulz a dýchanie.Ak má osoba pulz alebo dýcha, program vypíše "živý", v opačnom prípade vypíše "mŕtvy". V programe, ktorý sa v priebehu času neučí, by sa to napísalo takto:

funkcia isAlive(pulz, dýchanie) { if(pulz || dýchanie) { return true; } else { return false; } }

Veľmi jednoduchá neurónová sieť zložená len z jedného neurónu, ktorá rieši rovnaký problém, bude vyzerať takto:

Single neuron which takes the values of pulse (true/false) and breathing (true/false), and outputs value of alive (true/false).

Hodnoty pulz, dýchanie a živý budú buď 0, alebo 1, čo predstavuje nepravdivé a pravdivé hodnoty. Ak teda tento neurón dostane hodnoty (0,1), (1,0) alebo (1,1), mal by vydať 1, a ak dostane (0,0), mal by vydať 0. Neurón to robí tak, že na vstup použije jednoduchú matematickú operáciu - sčíta všetky hodnoty, ktoré dostal, a potom pridá svoju vlastnú skrytú hodnotu, ktorá sa nazýva "skreslenie". Na začiatku je táto skrytá hodnota náhodná a v priebehu času ju upravujeme, ak nám neurón nedáva požadovaný výstup.

Ak by sme sčítali hodnoty ako (1,1), mohli by sme dostať čísla väčšie ako 1, ale my chceme, aby náš výstup bol medzi 0 a 1! Aby sme to vyriešili, môžeme použiť funkciu, ktorá obmedzí náš skutočný výstup na 0 alebo 1, aj keď výsledok matematiky neurónu nebol v danom rozsahu. V zložitejších neurónových sieťach aplikujeme na neurón funkciu (napríklad sigmoidu), takže jeho hodnota bude medzi 0 alebo 1 (napríklad 0,66), a potom túto hodnotu odovzdáme ďalšiemu neurónu až dovtedy, kým nepotrebujeme náš výstup.

Metódy učenia

Existujú tri spôsoby, ako sa môže neurónová sieť učiť: učenie pod dohľadom, učenie bez dohľadu a učenie posilňovaním. Všetky tieto metódy fungujú buď na základe minimalizácie, alebo maximalizácie nákladovej funkcie, ale každá z nich je lepšia pri určitých úlohách.

Výskumný tím z University of Hertfordshire v Spojenom kráľovstve nedávno použil posilňovanie učenia na to, aby sa humanoidný robot iCub naučil hovoriť jednoduché slová žvatlaním.

Otázky a odpovede

Otázka: Čo je to neurónová sieť?


Odpoveď: Neurónová sieť (nazývaná aj ANN alebo umelá neurónová sieť) je druh počítačového softvéru, ktorý je inšpirovaný biologickými neurónmi. Je zložená z buniek, ktoré spolupracujú na dosiahnutí požadovaného výsledku, hoci každá jednotlivá bunka je zodpovedná len za riešenie malej časti problému.

Otázka: Ako sa dá neurónová sieť porovnať s biologickým mozgom?


Odpoveď: Biologické mozgy sú schopné riešiť náročné problémy, ale každý neurón je zodpovedný len za riešenie veľmi malej časti problému. Podobne aj neurónová sieť sa skladá z buniek, ktoré spolupracujú na dosiahnutí požadovaného výsledku, hoci každá jednotlivá bunka je zodpovedná len za riešenie malej časti problému.

Otázka: Aký typ programu dokáže vytvoriť umelo inteligentné programy?


Odpoveď: Neurónové siete sú príkladom strojového učenia, pri ktorom sa program môže meniť, keď sa učí riešiť problém.

Otázka: Ako môžete trénovať a zlepšovať sa s každým príkladom, aby ste mohli používať hlboké učenie?


Odpoveď: Neurónovú sieť možno trénovať a zlepšovať s každým príkladom, ale čím je neurónová sieť väčšia, tým viac príkladov potrebuje na to, aby dobre fungovala, pričom v prípade hlbokého učenia sú často potrebné milióny alebo miliardy príkladov.

Otázka: Čo potrebujete na to, aby bolo hlboké učenie úspešné?


Odpoveď: Aby bolo hlboké učenie úspešné, potrebujete milióny alebo miliardy príkladov v závislosti od toho, aká veľká je vaša neurónová sieť.

Otázka: Ako súvisí strojové učenie s vytváraním umelo inteligentných programov?



Odpoveď: Strojové učenie súvisí s vytváraním umelo inteligentných programov, pretože umožňuje programom meniť sa, keď sa učia riešiť problémy.

AlegsaOnline.com - 2020 / 2023 - License CC3