Dirbtinis neuroninis tinklas

Neuroninis tinklas (dar vadinamas ANN arba dirbtiniu neuroniniu tinklu) - tai tam tikra kompiuterinė programinė įranga, sukurta pagal biologinius neuronus. Biologinės smegenys geba spręsti sudėtingas problemas, tačiau kiekvienas neuronas yra atsakingas tik už labai mažos problemos dalies sprendimą. Panašiai ir neuroninį tinklą sudaro ląstelės, kurios veikia kartu, kad pasiektų norimą rezultatą, nors kiekviena atskira ląstelė atsakinga tik už nedidelės problemos dalies sprendimą. Tai vienas iš dirbtinai protingų programų kūrimo būdų.

Neuroniniai tinklai yra mašininio mokymosi pavyzdys, kai programa gali keistis mokydamasi spręsti problemą. Neuroninį tinklą galima mokyti ir tobulinti su kiekvienu pavyzdžiu, tačiau kuo didesnis neuroninis tinklas, tuo daugiau pavyzdžių jam reikia, kad gerai veiktų, o gilaus mokymosi atveju dažnai reikia milijonų ar milijardų pavyzdžių.

Apžvalga

Apie neuroninį tinklą galima galvoti dvejopai. Pirmasis - kaip žmogaus smegenys. Antrasis - kaip matematinė lygtis.

Tinklas prasideda nuo įvesties, panašiai kaip jutimo organas. Tada informacija teka neuronų sluoksniais, kur kiekvienas neuronas yra sujungtas su daugeliu kitų neuronų. Jei tam tikras neuronas gauna pakankamai stimulų, jis siunčia pranešimą bet kuriam kitam neuronui, su kuriuo yra sujungtas savo aksonu. Panašiai dirbtinis neuroninis tinklas turi įvesties duomenų sluoksnį, vieną ar daugiau paslėptų klasifikatorių sluoksnių ir išvesties sluoksnį. Kiekvienas kiekvieno paslėpto sluoksnio mazgas yra sujungtas su kito sluoksnio mazgu. Kai mazgas gauna informaciją, jis siunčia tam tikrą jos dalį mazgams, su kuriais yra sujungtas. Šį kiekį nustato matematinė funkcija, vadinama aktyvavimo funkcija, pavyzdžiui, sigmoidė arba tanh.

Neuroninį tinklą įsivaizduokite kaip matematinę lygtį - neuroninis tinklas yra tiesiog matematinių operacijų, taikytinų įvesties duomenims, sąrašas. Kiekvienos operacijos įvestis ir išvestis yra tenzorius (tiksliau - vektorius arba matrica). Kiekvieną sluoksnių porą jungia svorių sąrašas. Kiekviename sluoksnyje saugomi keli tenzoriai. Atskiras sluoksnio tenzorius vadinamas mazgu. Kiekvienas mazgas su kai kuriais arba visais kito sluoksnio mazgais yra sujungtas svoriu. Kiekvienas mazgas taip pat turi reikšmių, vadinamų šališkumu, sąrašą. Tuomet kiekvieno sluoksnio vertė yra einamojo sluoksnio verčių (vadinamų X) aktyvavimo funkcijos išeiga, padauginta iš svorių.

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

Apibrėžiama tinklo sąnaudų funkcija. Nuostolių funkcija bandoma įvertinti, kaip gerai neuroninis tinklas atlieka jam paskirtą užduotį. Galiausiai taikomas optimizavimo metodas, kuriuo, keičiant tinklo svorius ir nuokrypius, sąnaudų funkcijos išvestis sumažinama iki minimumo. Šis procesas vadinamas mokymu. Mokymas atliekamas po vieną mažą žingsnelį. Po tūkstančių žingsnių tinklas paprastai sugeba gana gerai atlikti jam paskirtą užduotį.

Pavyzdys

Panagrinėkime programą, kuri tikrina, ar asmuo yra gyvas. Ji tikrina du dalykus - pulsą ir kvėpavimą.Jei žmogus turi pulsą arba kvėpuoja, programa išves "gyvas", priešingu atveju - "miręs". Programoje, kuri laikui bėgant nesimoko, tai būtų užrašyta taip:

funkcija isAlive(pulsas, kvėpavimas) { if(pulsas || kvėpavimas) { return true; } else { return false; } }

Labai paprastas neuroninis tinklas, sudarytas tik iš vieno neurono, kuris sprendžia tą pačią problemą, atrodys taip:

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

Pulso, kvėpavimo ir gyvybės reikšmės bus 0 arba 1, t. y. false ir true. Taigi, jei šiam neuronui suteikiamos reikšmės (0,1), (1,0) arba (1,1), jis turėtų išvesti 1, o jei jam suteikiamos (0,0), jis turėtų išvesti 0. Neuronas tai daro įėjimui taikydamas paprastą matematinį veiksmą - jis sudeda bet kokias jam suteiktas reikšmes ir prideda savo paslėptą reikšmę, kuri vadinama "šališkumu". Iš pradžių ši paslėpta vertė yra atsitiktinė, o laikui bėgant ją koreguojame, jei neuronas neduoda norimo išėjimo.

Jei sudėsime tokias reikšmes kaip (1,1), galiausiai gausime skaičius, didesnius už 1, tačiau mes norime, kad mūsų išvestis būtų tarp 0 ir 1! Norėdami tai išspręsti, galime taikyti funkciją, kuri apriboja mūsų faktinį išėjimą iki 0 arba 1, net jei neurono matematikos rezultatas neatitiko intervalo. Sudėtingesniuose neuroniniuose tinkluose neuronui taikome funkciją (pvz., sigmoidinę), kad jo reikšmė būtų tarp 0 arba 1 (pvz., 0,66), o tada šią reikšmę perduodame kitam neuronui iki tol, kol mums prireikia išėjimo.

Mokymosi metodai

Neuroninis tinklas gali mokytis trimis būdais: prižiūrimuoju mokymusi, neprižiūrimuoju mokymusi ir mokymusi su pastiprinimu. Visi šie metodai veikia minimizuojant arba maksimizuojant kaštų funkciją, tačiau kiekvienas iš jų geriau tinka tam tikroms užduotims atlikti.

Neseniai Hertfordšyro universiteto (Jungtinė Karalystė) tyrėjų komanda, naudodama mokymosi pastiprinimą, privertė humanoidinį robotą iCub išmokti tarti paprastus žodžius šnekant.

Klausimai ir atsakymai

K: Kas yra neuroninis tinklas?


A: Neuroninis tinklas (dar vadinamas ANN arba dirbtiniu neuroniniu tinklu) - tai tam tikra kompiuterių programinė įranga, sukurta pagal biologinius neuronus. Jį sudaro ląstelės, kurios veikia kartu, kad gautų norimą rezultatą, nors kiekviena atskira ląstelė yra atsakinga tik už nedidelės problemos dalies sprendimą.

Klausimas: Kaip neuronų tinklas prilygsta biologinėms smegenims?


A: Biologinės smegenys geba spręsti sudėtingas problemas, tačiau kiekvienas neuronas yra atsakingas tik už labai mažos problemos dalies sprendimą. Panašiai ir neuroninį tinklą sudaro ląstelės, kurios veikia kartu, kad pasiektų norimą rezultatą, nors kiekviena atskira ląstelė atsakinga tik už mažos problemos dalies sprendimą.

Klausimas: Kokio tipo programomis galima sukurti dirbtinai protingas programas?


A: Neuroniniai tinklai yra mašininio mokymosi pavyzdys, kai programa gali keistis, kai išmoksta spręsti problemą.

K: Kaip galima mokytis ir tobulėti su kiekvienu pavyzdžiu, kad būtų galima naudoti gilųjį mokymąsi?


A.: Neuroninį tinklą galima mokyti ir tobulinti su kiekvienu pavyzdžiu, tačiau kuo didesnis neuroninis tinklas, tuo daugiau pavyzdžių jam reikia, kad gerai veiktų, o gilaus mokymosi atveju dažnai reikia milijonų ar milijardų pavyzdžių.

K: Ko reikia, kad gilusis mokymasis būtų sėkmingas?


A: Kad gilusis mokymasis būtų sėkmingas, reikia milijonų arba milijardų pavyzdžių, priklausomai nuo to, kokio dydžio yra jūsų neuroninis tinklas.

K: Kaip mašininis mokymasis susijęs su dirbtinai protingų programų kūrimu?



A.: Mašininis mokymasis susijęs su dirbtinai protingų programų kūrimu, nes leidžia programoms keistis, kai jos išmoksta spręsti problemas.

AlegsaOnline.com - 2020 / 2023 - License CC3