Neuroverkot | eräänlainen tietokoneohjelmisto, joka on saanut vaikutteita biologisista neuroneista

Neuroverkko (myös ANN tai keinotekoinen neuroverkko) on eräänlainen tietokoneohjelmisto, joka on saanut vaikutteita biologisista neuroneista. Biologiset aivot pystyvät ratkaisemaan vaikeita ongelmia, mutta kukin neuroni vastaa vain hyvin pienen osan ongelmasta. Vastaavasti neuroverkko koostuu soluista, jotka toimivat yhdessä tuottaakseen halutun tuloksen, vaikka kukin yksittäinen solu vastaa vain pienen osan ongelmasta ratkaisemisesta. Tämä on yksi tapa luoda keinotekoisesti älykkäitä ohjelmia.

Neuroverkot ovat esimerkki koneoppimisesta, jossa ohjelma voi muuttua, kun se oppii ratkaisemaan ongelman. Neuroverkkoa voidaan kouluttaa ja parantaa jokaisen esimerkin avulla, mutta mitä suurempi neuroverkko on, sitä enemmän esimerkkejä se tarvitsee toimiakseen hyvin - syväoppimisessa tarvitaan usein miljoonia tai miljardeja esimerkkejä.


 

Yleiskatsaus

Neuroverkko mallintaa neuroniverkkoa, kuten ihmisaivojen neuroniverkkoa. Kukin neuroni suorittaa yksinkertaisia matemaattisia operaatioita: se vastaanottaa tietoa muilta neuroneilta, muokkaa sitä ja lähettää sen muille neuroneille. Neuronit on sijoitettu "kerroksiin": kerroksen neuroni vastaanottaa tietoja muiden kerrosten neuroneilta, muokkaa niitä ja lähettää tietoja muiden kerrosten neuroneille. Neuroverkko koostuu yhdestä tai useammasta kerroksesta.

Ensimmäistä kerrosta kutsutaan "syöttökerrokseksi", ja se vastaanottaa tietoja ulkomaailmasta (esimerkiksi kuvan tai tekstin). Viimeistä kerrosta kutsutaan "tulostuskerrokseksi". Lähtökerroksen neuroneista luetaan tiedot ja niitä käytetään verkon ulostulona. Muita kerroksia kutsutaan "piilokerroksiksi".

Yksinkertaisessa "feed-forward"-verkossa neuronien käsittelemät tiedot ovat numeroita. Jokainen neuroni tekee painotetun summan edellisen kerroksen neuronien arvosta ( X i {\displaystyle X_{i}}{\displaystyle X_{i}} alla olevassa yhtälössä). Sitten se lisää siihen vakioarvon (jota kutsutaan "biasiksi"). Lopuksi se soveltaa tähän arvoon matemaattista funktiota, jota kutsutaan "aktivointifunktioksi". Aktivointifunktio on yleensä funktio, joka palauttaa arvon 0 ja 1 välillä, kuten tanh. Aktivointifunktion tulos ( Y j {\displaystyle Y_{j}}{\displaystyle Y_{j}} alla olevassa yhtälössä) lähetetään sitten seuraavan kerroksen neuroneille.

Y j = A k t i v a t i o n ( ∑ i ∈ I n p u t s W e i g h t ( i , j ) ∗ X i + B i a s ( j ) ) ) {\displaystyle Y_{j}=Activation(\sum _{i\;\ in \;Inputs}{Weight(i,j)}*X_{i}+Bias(j))} {\displaystyle Y_{j}=Activation(\sum _{i\;\in \;Inputs}{Weight(i,j)}*X_{i}+Bias(j))}

Verkolle määritellään häviöfunktio. Häviöfunktiolla pyritään arvioimaan, kuinka hyvin neuroverkko suoriutuu sille annetusta tehtävästä. Lopuksi sovelletaan optimointitekniikkaa kustannusfunktion tuloksen minimoimiseksi muuttamalla verkon painoja ja harhoja. Tätä prosessia kutsutaan harjoitteluksi. Harjoittelu tapahtuu pieni askel kerrallaan. Tuhansien vaiheiden jälkeen verkko pystyy yleensä hoitamaan sille annetun tehtävän melko hyvin.



 

Esimerkki

Tarkastellaan ohjelmaa, joka tarkistaa, onko henkilö elossa. Se tarkistaa kaksi asiaa - pulssin ja hengityksen. Jos henkilöllä on joko pulssi tai hän hengittää, ohjelma antaa tulokseksi "elossa", muuten se antaa tulokseksi "kuollut". Ohjelmassa, joka ei opi ajan mittaan, tämä kirjoitettaisiin seuraavasti:

function isAlive(pulssi, hengitys) { if(pulssi || hengitys) { return true; } else { return false; } }

Hyvin yksinkertainen neuroverkko, joka koostuu vain yhdestä neuronista ja joka ratkaisee saman ongelman, näyttää seuraavalta:

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

Pulssin, hengityksen ja elossaolon arvot ovat joko 0 tai 1, mikä tarkoittaa false ja true. Näin ollen, jos tälle neuronille annetaan arvot (0,1), (1,0) tai (1,1), sen pitäisi antaa tuloksena 1, ja jos sille annetaan (0,0), sen pitäisi antaa tuloksena 0. Neuroni tekee tämän soveltamalla yksinkertaista matemaattista operaatiota syötteeseen - se laskee yhteen kaikki sille annetut arvot ja lisää sitten oman piilotetun arvonsa, jota kutsutaan "biasiksi". Aluksi tämä piilotettu arvo on satunnainen, ja säädämme sitä ajan myötä, jos neuroni ei anna haluttua tulosta.

Jos laskemme yhteen arvoja, kuten (1,1), saatamme saada tulokseksi lukuja, jotka ovat suurempia kuin 1, mutta haluamme tulosteen olevan välillä 0 ja 1! Ratkaisuksi tähän voimme käyttää funktiota, joka rajoittaa todellisen tulosteen 0:aan tai 1:een, vaikka neuronin matematiikan tulos ei olisikaan kyseisen alueen sisällä. Monimutkaisemmissa neuroverkoissa sovellamme neuroniin funktiota (kuten sigmoidia), jotta sen arvo on 0:n tai 1:n välillä (esimerkiksi 0,66), ja sitten siirrämme tämän arvon seuraavalle neuronille aina siihen asti, kunnes tarvitsemme ulostulon.



 

Oppimismenetelmät

Neuroverkko voi oppia kolmella tavalla: valvotulla oppimisella, valvomattomalla oppimisella ja vahvistusoppimisella. Kaikki nämä menetelmät toimivat joko minimoimalla tai maksimoimalla kustannusfunktiota, mutta kukin niistä on parempi tietyissä tehtävissä.

Hiljattain Hertfordshiren yliopiston tutkijaryhmä Yhdistyneessä kuningaskunnassa käytti vahvistusoppimista saadakseen iCub-humanoidirobotin oppimaan sanomaan yksinkertaisia sanoja lörpöttelemällä.

 

Kysymyksiä ja vastauksia

K: Mikä on neuroverkko?


V: Neuroverkko (kutsutaan myös nimellä ANN tai keinotekoinen neuroverkko) on eräänlainen tietokoneohjelmisto, joka on saanut vaikutteita biologisista neuroneista. Se koostuu soluista, jotka työskentelevät yhdessä tuottaakseen halutun tuloksen, vaikka kukin yksittäinen solu vastaa vain pienen osan ongelmasta ratkaisemisesta.

K: Miten neuroverkko vertautuu biologisiin aivoihin?


V: Biologiset aivot pystyvät ratkaisemaan vaikeita ongelmia, mutta jokainen hermosolu on vastuussa vain hyvin pienen osan ongelmasta ratkaisemisesta. Vastaavasti hermoverkko koostuu soluista, jotka työskentelevät yhdessä halutun tuloksen aikaansaamiseksi, vaikka kukin yksittäinen solu vastaa vain pienen osan ongelmasta ratkaisemisesta.

Kysymys: Millaisella ohjelmalla voidaan luoda keinotekoisen älykkäitä ohjelmia?


V: Neuroverkot ovat esimerkki koneoppimisesta, jossa ohjelma voi muuttua, kun se oppii ratkaisemaan ongelman.

K: Miten syväoppimista voidaan harjoitella ja parantaa jokaisen esimerkin avulla?


V: Neuroverkkoa voidaan kouluttaa ja parantaa jokaisen esimerkin avulla, mutta mitä suurempi neuroverkko on, sitä enemmän esimerkkejä se tarvitsee toimiakseen hyvin - syväoppimisessa tarvitaan usein miljoonia tai miljardeja esimerkkejä.

K: Mitä tarvitaan, jotta syväoppiminen onnistuisi?


V: Jotta syväoppiminen onnistuisi, tarvitaan miljoonia tai miljardeja esimerkkejä sen mukaan, kuinka suuri neuroverkko on.

K: Miten koneoppiminen liittyy keinotekoisesti älykkäiden ohjelmien luomiseen?



V: Koneoppiminen liittyy keinotekoisesti älykkäiden ohjelmien luomiseen, koska sen avulla ohjelmat voivat muuttua, kun ne oppivat ratkaisemaan ongelmia.

AlegsaOnline.com - 2020 / 2023 - License CC3