Neuroverkot ovat matemaattinen laite. Tekoäly

Nykyään tarvitaan yhä enemmän järjestelmiä, jotka pystyvät paitsi suorittamaan kerran ohjelmoidun toimintosarjan ennalta määritetylle tiedolle, myös analysoimaan äskettäin vastaanotettua tietoa, löytämään siitä malleja, tekemään ennusteita jne. Tällä sovellusalueella ns neuroverkot– itseoppivat järjestelmät, jotka jäljittelevät ihmisaivojen toimintaa. Tarkastellaanpa tarkemmin keinotekoisten hermoverkkojen (NN) rakennetta ja niiden käyttöä erityistehtävissä.

Keinotekoinen neuroni

Huolimatta laajasta hermoverkkovaihtoehtojen valikoimasta, niillä kaikilla on yhteisiä piirteitä. Joten ne kaikki, kuten ihmisen aivot, koostuvat suuresta määrästä samantyyppisiä toisiinsa liittyviä elementtejä - neuronit, jotka jäljittelevät aivojen hermosoluja. Kuvassa Kuvassa 1 on kaavio neuronista.

Kuvassa näkyy, että keinotekoinen hermosolu, aivan kuten eläväkin, koostuu synapseista, jotka yhdistävät hermosolun sisäänmenot ytimeen; hermosolun ydin, joka käsittelee tulosignaaleja, ja aksoni, joka yhdistää hermosolun seuraavan kerroksen hermosoluihin. Jokaisella synapsilla on paino, joka määrittää, kuinka paljon vastaava neuronitulo vaikuttaa sen tilaan. Neuronin tila määräytyy kaavan mukaan

$S =\sum \limits_(i=1)^(n) \,x_iw_i$, (1)

$\sum \limits_(k=1)^(N) k^2$, (1)

n– neuronitulojen määrä
x i– i:nnen neuronitulon arvo
w i– i:nnen synapsin paino.

Sitten neuronin aksonin arvo määritetään kaavalla

$Y = f\,(S)$, (2)

Missä f- jokin toiminto nimeltään aktivointi. Yleisimmin käytetty aktivointitoiminto on ns sigmoidi, joka näyttää tältä:

$f\,(x) = \frac(1)(1\,+\,\mbox e^(-ax))$, (3)

Tämän funktion tärkein etu on, että se on differentioitavissa koko x-akselilla ja sillä on hyvin yksinkertainen derivaatta:

$f"\,(x) = \alpha f(x)\,\bigl(1\,-\,f\,(x)\bigr)$, (4)

Parametrin a pienentyessä sigmoidi muuttuu litteämmäksi ja muuttuu vaakasuoraksi viivaksi tasolla 0,5, kun a = 0. Kasvaessa sigmoidi lähestyy yksikköhyppytoimintoa yhä enemmän.

Takaisin etenevät neuroverkot

Backpropagation neuroverkot ovat tehokas työkalu mallien etsimiseen, ennustamiseen ja laadulliseen analyysiin. Tämä nimi on takaisin leviämisverkot ne saatiin käytetyn oppimisalgoritmin ansiosta, jossa virhe etenee lähtökerroksesta tulokerrokseen eli verkon normaalin toiminnan aikana signaalin etenemissuuntaan nähden vastakkaiseen suuntaan.

Takaisin leviävä hermoverkko koostuu useista hermosolujen kerroksista, joista jokainen on kerroksessa i kytketty kerroksen jokaiseen neuroniin i+1 eli me puhumme täysin kytketty NS.

Yleisesti ottaen hermoverkon kouluttamisen tehtävänä on löytää tietty toiminnallinen suhde Y=F(X) Missä X- syöttö ja Y– lähtövektorit. Yleisessä tapauksessa tällaisella ongelmalla, jossa on rajoitettu syöttödata, on ääretön määrä ratkaisuja. Hakutilan rajoittamiseksi harjoituksen aikana tehtävänä on minimoida NN-virheen tavoitefunktio, joka löydetään pienimmän neliösumman menetelmällä:

$E\,(w) = \frac(1)(2)\sum \limits_(j=1)^(p) \, ((y_i\,-\,d_i))^2$, (5)

y j– neuroverkon j:nnen lähdön arvo,

d j– j:nnen lähdön tavoitearvo,

s– neuronien lukumäärä lähtökerroksessa.

Neuraaliverkkoa harjoitellaan gradienttilaskeutumismenetelmällä, eli jokaisessa iteraatiossa paino muuttuu kaavan mukaan:

$\Delta\,w_(ij) = -\,\eta\,\cdot\,\frac(\partial\,E)(\partial\,w_(ij))$, (6)

Missä h– parametri, joka määrittää oppimisnopeuden.

$\frac(\partial\,E)(\partial\,w_(ij)) = \frac(\partial\,E)(\partial\,y_i)\,\cdot\,\frac(dy_i)(dS_j )\,\cdot\,\frac(\partial\,S_j)(\partial\,w_(ij))$, (7)

y j- j:nnen neuronin lähtöarvo,

Sj– tulosignaalien painotettu summa kaavan (1) mukaan.

Tässä tapauksessa kerroin

$\frac(\partial\,S_j)(\partial\,w_(ij)) = x_i$, (8)

x i– neuronin i:nnen tulon arvo.

$\frac(\partial\,E)(\partial\,y_j) = \sum \limits_(k)^() \frac(\partial\,E)(\partial\,y_k)\,\cdot\, \frac(dy_k)(dS_k)\,\cdot\,\frac(\partial\,S_k)(\partial\,y_j) = \sum \limits_(k)^() \frac(\partial\,E) (\partial\,y_k)\,\cdot\,\frac(dy_k)(dS_k)\,\cdot\,w_(jk)^((n+1))$, (9)

k– neuronien määrä kerroksessa n+1.

Otetaan käyttöön apumuuttuja

$\delta_j^((n))= \frac(\partial\,E)(\partial\,y_j)\,\cdot\,\frac(dy_j)(dS_j)$, (10)

Sitten voimme määritellä rekursiivisen kaavan määritettäväksi n-th kerroksen, jos tiedämme seuraavan (n+1) kerros.

$\delta_j^((n))= \biggl[ \sum \limits_(k)^() \delta_k^((n+1))\,\cdot\,w_(jk)^((n+1) )\biggr]\,\cdot\,\frac(dy_j)(dS_j)$, (11)

Viimeisen kerroksen NN:n löytäminen ei ole vaikeaa, koska tiedämme kohdevektorin, eli niiden arvojen vektorin, jotka NN:n tulisi tuottaa tietylle syöttöarvojoukolle.

$\delta_j^((N))= \bigl(y_i^((N))-\,d_i\bigr)\,\cdot\,\frac(dy_j)(dS_j)$, (12)

Ja lopuksi kirjoitamme kaavan (6) laajennetussa muodossa

$\Delta w_(ij)^((n))= -\,\eta\,\cdot\,\delta_j^((n))\,\cdot\,x_i^n$, (13)

Tarkastellaan nyt täydellistä neuroverkon koulutusalgoritmia:

  1. lähetä yksi vaadituista kuvista hermoverkon tuloon ja määritä hermoverkon neuronien lähtöjen arvot
  2. laske tuloskerrokselle NS kaavalla (12) ja laske tuloskerroksen N painojen muutokset kaavalla (13)
  3. Laske kaavojen (11) ja (13) avulla $\Delta w_(ij)^((N))$ NS:n jäljellä oleville kerroksille, n = N-1...1
  4. Säädä kaikki NS-painot

    $w_(ij)^((n))\,(t) = w_(ij)^((n))\,(t\,-\,1) \,+\,\Delta w_(ij)^ ((n))\,(t)$, (14)

  5. Jos virhe on merkittävä, siirry vaiheeseen 1

Vaiheessa 2 verkkoon esitetään vuorotellen vektoreita opetusjaksosta satunnaisessa järjestyksessä.

Backpropagation neuroverkkojen koulutustehokkuuden parantaminen

Yksinkertaisin yllä kuvattu gradienttilaskeutumismenetelmä on erittäin tehoton siinä tapauksessa, että derivaatat eri painojen suhteen ovat hyvin erilaisia. Tämä vastaa tilannetta, jossa funktion S arvo joillekin hermosoluille on moduuliltaan lähellä yhtä tai kun joidenkin painojen moduuli on paljon suurempi kuin 1. Tässä tapauksessa virheen tasaiseksi pienentämiseksi on valittava hyvin pieni oppimisnopeus, mutta tässä tapauksessa koulutus voi kestää kohtuuttoman kauan.

Yksinkertaisin menetelmä gradientin laskeutumisen parantamiseksi on ottaa käyttöön hetki m, kun gradientin vaikutus painojen muutokseen muuttuu ajan myötä. Sitten kaava (13) saa muodon

$\Delta w_(ij)^((n))\,(t) = -\,\eta\,\cdot\,\delta_j^((n))\,\cdot\,x_i^n\,+ \,\mu\,\Delta w_(ij)^((n))\,(t\,-\,1)$ , (13.1)

Vääntömomentin käyttöönoton lisäetu on algoritmin kyky ylittää pienet paikalliset minimit.

Syötetietojen esitys

Suurin ero NN:iden välillä on, että niissä kaikki tulo- ja lähtöparametrit esitetään liukulukuina, yleensä välillä . Samanaikaisesti verkkotunnuksen tiedoilla on usein erilainen koodaus. Nämä voivat siis olla mielivaltaisen alueen numeroita, päivämääriä, merkkijonoja. Siten ongelmaa koskevat tiedot voivat olla sekä määrällisiä että laadullisia. Tarkastellaan ensin laadullisen datan muuntamista numeerisiksi tiedoiksi ja sitten kuinka muunnetaan syöttötiedot vaaditulle alueelle.

Laadulliset tiedot voidaan jakaa kahteen ryhmään: järjestykseen (järjestykseen) ja järjestämättömään. Pohtiaksemme tapoja koodata nämä tiedot, pohdimme ongelmaa, joka liittyy sairauden hoidon onnistumisen ennustamiseen. Esimerkki järjestetyistä tiedoista voisi olla esimerkiksi tiedot tietyn sairauden lisäriskitekijöistä.

Ja myös mahdollinen esimerkki voisi olla esimerkiksi potilaan ikä:

Kunkin tekijän vaara kasvaa taulukoissa, kun siirryt vasemmalta oikealle.

Ensimmäisessä tapauksessa näemme, että potilaalla voi olla useita riskitekijöitä samanaikaisesti. Tässä tapauksessa on käytettävä koodausta, jossa ei ole tilannetta, jossa eri tekijöiden yhdistelmät vastaavat samaa arvoa. Yleisin koodausmenetelmä on, kun kullekin tekijälle on määritetty binääriluku. 1 tässä luokassa osoittaa tekijän olemassaolon ja 0 sen puuttumista. Parametrille no voidaan antaa numero 0. Näin ollen 4-bittinen binääriluku riittää edustamaan kaikkia tekijöitä. Näin ollen luku 1010 2 = 10 10 tarkoittaa, että potilaalla on verenpainetauti ja alkoholinkäyttö, ja luku 0000 2 vastaa riskitekijöiden puuttumista potilaalla. Siten riskitekijät esitetään numeroina alueella .

Toisessa tapauksessa voimme myös koodata kaikki arvot binääripainoilla, mutta tämä on epäkäytännöllistä, koska mahdollisten arvojen joukko on liian epätasainen. Tässä tapauksessa olisi oikeampaa antaa kullekin arvolle oma painonsa, joka eroaa 1:llä viereisen arvon painosta. Joten numero 3 vastaa ikää 50-59 vuotta. Siten ikä koodataan numeroilla alueella .

Periaatteessa voit tehdä saman myös järjestämättömille tiedoille antamalla jokaiselle arvolle numeron. Tämä aiheuttaa kuitenkin ei-toivottua järjestystä, joka voi vääristää tietoja ja tehdä oppimisesta erittäin vaikeaa. Yhtenä tapana ratkaista tämä ongelma voidaan ehdottaa kunkin arvon osoittamista yhdelle NS-tuloista. Tässä tapauksessa, jos tämä arvo on olemassa, vastaava tulo asetetaan arvoon 1 tai muussa tapauksessa 0. Valitettavasti tämä menetelmä ei ole ihmelääke, koska suurella määrällä syöttöarvovaihtoehtoja NN-tulojen määrä kasvaa valtavaksi. Tämä lisää huomattavasti harjoitteluun käytettyä aikaa. Voit kiertää tämän ongelman käyttämällä hieman erilaista ratkaisua. Jokaiselle syöttöparametrin arvolle on määritetty binäärivektori, jonka jokainen bitti vastaa erillistä NS-tuloa.

Kirjallisuus

  • Dirk Emma Baestaens, Willem Max Van Den Bergh, Douglas Wood, "Neural Network Solution for Trading in Financial Markets", Pitman-julkaisu
  • R. M. Hristev, "Keinotekoiset hermoverkot"
  • S. Korotky, "Neuroverkot: Takaisin etenemisalgoritmi"
  • S. Korotky, "Neuroverkot: perusteet"

Luokitteluongelman ratkaiseminen on yksi hermoverkkojen tärkeimmistä sovelluksista.

Luokitteluongelmana on otoksen osoittaminen yhdelle useista pareittain hajautetuista joukoista. Esimerkkejä tällaisista tehtävistä voisivat olla esimerkiksi pankkiasiakkaan luottokelpoisuuden selvitystehtävä, lääketieteelliset tehtävät, joissa on tarpeen selvittää esimerkiksi sairauden lopputulos, arvopaperisalkun hallintaongelmien ratkaiseminen (myy ostaa tai "pidä" osakkeita markkinatilanteesta riippuen), elinkelpoisten ja konkurssialttiiden yritysten ongelmanmääritys.

Luokituksen tarkoitus

Luokitteluongelmia ratkaistaessa on tarpeen ottaa mukaan olemassa oleva staattiset näytteet(markkinatilanteen ominaisuudet, lääkärintarkastustiedot, tiedot asiakkaasta). tietyt luokat. Datan esittämiseen on useita tapoja. Yleisin tapa on esittää näyte vektorina. Tämän vektorin komponentit edustavat erilaisia ​​otoksen ominaisuuksia, jotka vaikuttavat päätökseen siitä, mihin luokkaan tietty näyte voidaan luokitella. Esimerkiksi lääketieteellisiä tehtäviä varten tämän vektorin komponentit voivat sisältää tietoja potilaan sairauskertomuksesta. Näin ollen esimerkkiä koskevien tietojen perusteella on tarpeen määrittää, mihin luokkaan se voidaan luokitella. Luokittelija siis kohdistaa objektin johonkin luokasta N-ulotteisen avaruuden tietyn osion mukaisesti, joka on ns. sisääntulon tila, ja tämän avaruuden ulottuvuus on vektorikomponenttien lukumäärä.

Ensinnäkin sinun on määritettävä järjestelmän monimutkaisuus. Tosielämän ongelmissa on usein tilanne, jossa näytteiden määrä on rajoitettu, mikä vaikeuttaa ongelman monimutkaisuuden määrittämistä. On mahdollista erottaa kolme pääasiallista monimutkaisuustasoa. Ensimmäinen (yksinkertaisin) on, kun luokat voidaan jakaa suorilla viivoilla (tai hypertasoilla, jos syöttöavaruuden ulottuvuus on suurempi kuin kaksi) - ns. lineaarinen erotettavuus. Toisessa tapauksessa luokkia ei voida jakaa viivoilla (tasoilla), mutta ne voidaan erottaa monimutkaisemmalla jaolla - epälineaarinen erotettavuus. Kolmannessa tapauksessa luokat leikkaavat ja voimme vain puhua todennäköisyyspohjainen erotettavuus.

Ihannetapauksessa esikäsittelyn jälkeen pitäisi saada lineaarisesti erotettavissa oleva ongelma, koska tämän jälkeen luokittelijan rakenne yksinkertaistuu merkittävästi. Valitettavasti todellisia ongelmia ratkaistaessa meillä on rajallinen määrä näytteitä, joiden perusteella luokitin rakennetaan. Emme kuitenkaan voi suorittaa tietojen esikäsittelyä siten, että näytteiden lineaarinen erotettavuus saavutetaan.

Neuroverkkojen käyttäminen luokittelijana

Feedforward-verkot ovat universaali funktioiden approksimointikeino, jonka avulla niitä voidaan käyttää luokitteluongelmien ratkaisemisessa. Pääsääntöisesti hermoverkot osoittautuvat tehokkaimmaksi luokitusmenetelmäksi, koska ne luovat itse asiassa suuren määrän regressiomalleja (joita käytetään luokitusongelmien ratkaisemisessa tilastollisilla menetelmillä).

Valitettavasti hermoverkkojen soveltamisessa käytännön ongelmissa syntyy useita ongelmia. Ensinnäkään ei tiedetä etukäteen, minkä monimutkaisuutta (kokoa) verkko voi vaatia, jotta kartoitus toteutetaan riittävän tarkasti. Tämä monimutkaisuus voi olla kohtuutonta, mikä edellyttää monimutkaisia ​​verkkoarkkitehtuureja. Siten Minsky osoitti työssään "Perceptrons", että yksinkertaisimmat yksikerroksiset hermoverkot pystyvät ratkaisemaan vain lineaarisesti erotettavia ongelmia. Tämä rajoitus voidaan voittaa monikerroksisia hermoverkkoja käytettäessä. Yleisesti voidaan sanoa, että verkossa, jossa on yksi piilotettu kerros, tulonäytettä vastaava vektori muunnetaan piilokerroksen toimesta joksikin uudeksi tilaan, jolla voi olla eri ulottuvuus, ja sitten hypertasot vastaavat neuroneja. tulostuskerros jakaa sen luokkiin. Tällä tavalla verkko tunnistaa alkuperäisen datan ominaisuuksien lisäksi myös piilokerroksen generoimat "ominaisuusominaisuudet".

Alkutietojen valmistelu

Luokittelijan rakentamiseksi on tarpeen määrittää, mitkä parametrit vaikuttavat päätökseen siitä, mihin luokkaan näyte kuuluu. Tämä voi aiheuttaa kaksi ongelmaa. Ensinnäkin, jos parametrien määrä on pieni, voi syntyä tilanne, jossa sama lähtötietojoukko vastaa eri luokissa olevia esimerkkejä. Sitten on mahdotonta kouluttaa hermoverkkoa, eikä järjestelmä toimi oikein (tällaista lähtötietojoukkoa vastaavaa minimiä on mahdotonta löytää). Lähdetietojen on oltava johdonmukaisia. Tämän ongelman ratkaisemiseksi on tarpeen kasvattaa piirreavaruuden ulottuvuutta (näytettä vastaavan tulovektorin komponenttien lukumäärää). Mutta piirreavaruuden laajuuden kasvaessa voi syntyä tilanne, jossa esimerkkien määrä saattaa tulla riittämättömäksi verkoston kouluttamiseen ja yleistämisen sijaan se vain muistaa esimerkit harjoitusjoukosta eikä pysty toimimaan oikein . Siksi ominaisuuksia määriteltäessä on löydettävä kompromissi niiden lukumäärän kanssa.

Seuraavaksi sinun on määritettävä, kuinka neuroverkon syöttödata esitetään, ts. määrittää säännöstelymenetelmän. Normalisointi on tarpeen, koska neuroverkot toimivat datalla, joka on esitetty numeroilla välillä 0..1, ja alkuperäisellä tiedolla voi olla mielivaltainen alue tai jopa ei-numeerista dataa. Tässä tapauksessa erilaisia ​​menetelmiä ovat mahdollisia yksinkertaisesta lineaarisesta muunnoksesta vaadittuun vaihteluväliin ja päättyen parametrien moniulotteiseen analyysiin ja epälineaariseen normalisointiin riippuen parametrien vaikutuksesta toisiinsa.

Lähtöarvojen koodaus

Luokitteluongelma kahden luokan läsnä ollessa voidaan ratkaista verkossa, jossa on yksi neuroni lähtökerroksessa, joka voi ottaa yhden kahdesta arvosta 0 tai 1 riippuen siitä, mihin luokkaan näyte kuuluu. Kun luokkia on useita, ongelmana on, kuinka nämä tiedot esitetään verkkolähtöön. Yksinkertaisin tapa esittää tulos tässä tapauksessa on vektori, jonka komponentit vastaavat eri luokkanumeroita. Tässä tapauksessa vektorin i:s komponentti vastaa i:ttä luokkaa. Kaikki muut komponentit on asetettu arvoon 0. Tällöin esimerkiksi toinen luokka vastaa 1:tä verkon 2. lähdössä ja 0:a muualla. Tulosta tulkittaessa katsotaan yleensä, että luokkanumero määräytyy sen verkkolähdön numeron mukaan, jossa maksimiarvo ilmestyi. Esimerkiksi, jos verkossa, jossa on kolme lähtöä, meillä on lähtöarvojen vektori (0,2, 0,6, 0,4), niin näemme, että vektorin toisella komponentilla on maksimiarvo, mikä tarkoittaa luokkaa, jolle tämä esimerkki kuuluu on 2. Tällä koodausmenetelmällä joskus myös käsite otetaan käyttöön luottamusta verkko on, että esimerkki kuuluu tähän luokkaan. Yksinkertaisin tapa määrittää luotettavuus on määrittää lähdön maksimiarvon ja muun lähimpänä olevan lähdön arvon välinen ero. Esimerkiksi yllä käsitellylle esimerkille verkon luottamus siitä, että esimerkki kuuluu toiseen luokkaan, määräytyy vektorin toisen ja kolmannen komponentin erotuksena ja on 0,6-0,4=0,2. Vastaavasti mitä suurempi luottamus on, sitä suurempi on todennäköisyys, että verkosto antoi oikean vastauksen. Tämä koodausmenetelmä on yksinkertaisin, mutta ei aina optimaalisin tapa esittää dataa.

Muitakin menetelmiä tunnetaan. Esimerkiksi ulostulovektori on binäärimuodossa kirjoitettu klusterin numero. Sitten, jos luokkaa on 8, tarvitsemme 3 elementin vektorin, ja esimerkiksi 3. luokka vastaa vektoria 011. Mutta jos saamme väärän arvon johonkin lähdöstä, saatamme saada väärän luokituksen ( virheellinen klusterinumero), joten on järkevää lisätä kahden klusterin välistä etäisyyttä käyttämällä Hamming-lähtökoodausta, mikä lisää luokituksen luotettavuutta.

Toinen lähestymistapa on jakaa ongelma, jossa on k luokkaa k*(k-1)/2 aliongelmaan, joissa kussakin on kaksi luokkaa (2 x 2 koodaus). Tässä tapauksessa alitehtävä tarkoittaa, että verkko määrittää yhden vektorikomponentin läsnäolon. Nuo. lähdevektori on jaettu kahden komponentin ryhmiin siten, että ne sisältävät kaikki mahdolliset lähtövektorin komponenttien yhdistelmät. Näiden ryhmien lukumäärä voidaan määritellä kahden alkuperäisten komponenttien järjestämättömien näytteiden lukumääräksi. Kombinatoriikasta

$A_k^n = \frac(k{n!\,(k\,-\,n)!} = \frac{k!}{2!\,(k\,-\,2)!} = \frac{k\,(k\,-\,1)}{2}$!}

Sitten esimerkiksi neljän luokan ongelmalle meillä on 6 lähtöä (alitehtävää), jotka jakautuvat seuraavasti:

N alitehtävä (tulostus) Lähtökomponentit
1 1-2
2 1-3
3 1-4
4 2-3
5 2-4
6 3-4

Jos 1 lähdössä osoittaa, että jokin komponenteista on läsnä. Sitten voidaan siirtyä verkon laskennan tulokseen perustuvaan luokkanumeroon seuraavasti: määritetään mitkä yhdistelmät saivat yksikön (tarkemmin lähellä yhtä) lähtöarvon (eli mitkä osatehtävät aktivoituivat) ja oletetaan, että että luokkanumero on se, joka sisälsi suurimman määrän aktivoituja alitehtäviä (katso taulukko).

Monissa ongelmissa tämä koodaus antaa parempia tuloksia kuin klassinen koodausmenetelmä.

Verkon äänenvoimakkuuden valinta

Oikean verkon koon valinta on erittäin tärkeää. Usein on yksinkertaisesti mahdotonta rakentaa pientä ja laadukasta mallia, ja suuri malli yksinkertaisesti muistaa esimerkit harjoitusjoukosta eikä suorita approksimaatiota, mikä luonnollisesti johtaa luokittelijan virheelliseen toimintaan. Verkoston rakentamiseen on kaksi päätapaa - rakentava ja tuhoava. Ensimmäisessä niistä otetaan ensin vähimmäiskoko verkko ja sitä kasvatetaan asteittain, kunnes vaadittu tarkkuus saavutetaan. Samalla häntä koulutetaan uudelleen joka vaiheessa. Käytössä on myös ns. kaskadikorrelaatiomenetelmä, jossa verkon arkkitehtuuria säädetään aikakauden päätyttyä virheiden minimoimiseksi. Destruktiivisessa lähestymistavassa otetaan ensin ylisuuren volyymin verkko, jonka jälkeen siitä poistetaan solmut ja yhteydet, joilla on vain vähän vaikutusta ratkaisuun. On hyödyllistä muistaa seuraava sääntö: harjoitussarjan esimerkkien määrän on oltava suurempi kuin mukautettujen painojen lukumäärä. Muuten yleistämisen sijaan verkko yksinkertaisesti muistaa tiedot ja menettää luokittelukyvyn - tulos on epävarma esimerkeille, jotka eivät sisälly harjoitussarjaan.

Verkkoarkkitehtuurin valitseminen

Kun valitset verkkoarkkitehtuuria, kokeilet yleensä useita konfiguraatioita, joissa on eri määrä elementtejä. Tässä tapauksessa pääindikaattori on koulutusjoukon koko ja verkoston yleistyskyky. Tyypillisesti käytetään Back Propagation -oppimisalgoritmia vahvistusjoukon kanssa.

Algoritmi luokittelijan rakentamiseksi neuroverkkojen perusteella

  1. Työskentely tietojen kanssa
    • Kokoa tietokanta tiettyä tehtävää koskevista esimerkeistä
    • Jaa koko tietojoukko kahteen joukkoon: koulutus ja testaus (on mahdollista jakaa kolmeen joukkoon: koulutus, testi ja vahvistus).
  2. Esikäsittely
    • Valitse tietylle tehtävälle ominaisten ominaisuuksien järjestelmä ja muunna tiedot sen mukaisesti lähetettäväksi verkkosyötteeseen (normalisointi, standardointi jne.). Tämän seurauksena on toivottavaa saada lineaarisesti erotettava näytejoukkotila.
    • Valitse lähtöarvon koodausjärjestelmä (klassinen koodaus, 2 x 2 koodaus jne.)
  3. Verkon laadun suunnittelu, koulutus ja arviointi
    • Valitse verkon topologia: kerrosten lukumäärä, kerrosten hermosolujen määrä jne.
    • Valitse neuronien aktivointitoiminto (esimerkiksi "sigmoid")
    • Valitse verkkoharjoittelualgoritmi
    • Arvioi verkon toiminnan laatu vahvistusjoukon tai muun kriteerin perusteella, optimoi arkkitehtuuri (pienennä painoja, harvenna ominaisuustilaa)
    • Keskity verkkovaihtoehtoon, joka tarjoaa parhaan mahdollisuuden yleistää ja arvioida työn laatua testisarjan avulla
  4. Käyttö ja diagnoosi
    • Selvitä eri tekijöiden vaikutuksen aste tehtyyn päätökseen (heuristinen lähestymistapa).
    • Varmista, että verkko tarjoaa vaaditun luokitustarkkuuden (virheellisesti tunnistettujen esimerkkien määrä on pieni)
    • Palaa tarvittaessa vaiheeseen 2, muuttamalla näytteiden esitystapaa tai muuttamalla tietokantaa.
    • Käytä verkkoa käytännössä ongelman ratkaisemiseen.

Laadukkaan luokittelijan rakentaminen edellyttää korkealaatuista dataa. Mikään neuroverkkoihin tai tilastollisiin luokittimiin perustuvista menetelmistä ei koskaan tuota vaadittua laatua olevaa luokittelijaa, jos käytettävissä oleva esimerkkisarja ei ole riittävän täydellinen ja edustava tehtävää, jonka kanssa järjestelmän tulee toimia.

Tekoälyn ja hermoverkkojen kysymykset ovat tällä hetkellä suositumpia kuin koskaan ennen. Monet käyttäjät kääntyvät yhä useammin puoleemme kysymyksillä siitä, miten hermoverkot toimivat, mitä ne ovat ja mikä on niiden toimintaperiaate?

Nämä kysymykset ja niiden suosio ovat myös huomattavan monimutkaisia, sillä prosessit ovat monimutkaisia ​​koneoppimisalgoritmeja, jotka on suunniteltu eri tarkoituksiin muutosten analysoinnista tiettyihin toimiin liittyvien riskien mallintamiseen.

Mitä ovat neuroverkot ja niiden tyypit?

Ensimmäinen kiinnostuneille heräävä kysymys on, mikä on neuroverkko? Klassisessa määritelmässä tämä on tietty sarja hermosoluja, jotka ovat yhteydessä toisiinsa synapsien avulla. Neuroverkot ovat biologisten analogien yksinkertaistettu malli.

Neuroverkkorakenteella varustetun ohjelman avulla kone voi analysoida syöttödataa ja muistaa tietyistä lähteistä saadun tuloksen. Myöhemmin tällainen lähestymistapa mahdollistaa sen hetkistä tietojoukkoa vastaavan tuloksen hakemisen muistista, jos se oli jo saatavilla verkkosyklien kokemuksessa.

Monet ihmiset pitävät hermoverkkoa ihmisen aivojen analogina. Toisaalta tätä tuomiota voidaan pitää lähellä totuutta, mutta toisaalta ihmisen aivot ovat liian monimutkainen mekanismi, jotta se olisi mahdollista luoda uudelleen koneen avulla edes murto-osalla. prosenttia. Neuraaliverkko on ennen kaikkea aivojen periaatteeseen perustuva ohjelma, mutta ei millään tavalla sen analogia.

Neuraaliverkko on joukko hermosoluja, joista jokainen vastaanottaa tietoa, käsittelee sitä ja välittää sen toiselle neuronille. Jokainen neuroni käsittelee signaalia täsmälleen samalla tavalla.

Miten sitten saadaan erilaisia ​​tuloksia? Kyse on synapseista, jotka yhdistävät neuronit toisiinsa. Yhdessä neuronissa voi olla valtava määrä synapseja, jotka vahvistavat tai heikentävät signaalia, ja niillä on kyky muuttaa ominaisuuksiaan ajan myötä.

Juuri oikein valitut synapsien parametrit mahdollistavat oikean tuloksen saamisen tulotietojen muuntamisesta lähdössä.

Kun olet määritellyt yleisesti, mikä neuroverkko on, voimme tunnistaa niiden luokittelun päätyypit. Ennen kuin jatkat luokittelua, on tarpeen tehdä yksi selvennys. Jokaisessa verkossa on ensimmäinen neuronikerros, jota kutsutaan syöttökerrokseksi.

Se ei suorita laskelmia tai muunnoksia sen tehtävänä on vain yksi asia: vastaanottaa ja jakaa tulosignaaleja muille neuroneille. Tämä on ainoa kerros, joka on yhteinen kaikille hermoverkkotyypeille, niiden lisärakenne on pääjaon kriteeri.

  • Yksikerroksinen neuroverkko. Tämä on hermosolujen vuorovaikutuksen rakenne, jossa syöttötietojen saapumisen jälkeen ensimmäiseen syöttökerrokseen lopputulos siirretään välittömästi lähtökerrokseen. Tässä tapauksessa ensimmäistä syöttökerrosta ei oteta huomioon, koska se ei suorita muita toimintoja kuin vastaanotto ja jakelu, tämä on jo mainittu edellä. Ja toinen kerros suorittaa kaikki tarvittavat laskelmat ja käsittelyt ja tuottaa välittömästi lopullisen tuloksen. Tuloneuronit yhdistetään pääkerroksen kanssa synapsien avulla, joilla on erilaiset painokertoimet, mikä varmistaa yhteyksien laadun.
  • Monikerroksinen neuroverkko. Kuten määritelmästä käy ilmi, tämän tyyppisessä neuroverkossa on tulo- ja lähtökerrosten lisäksi myös välikerroksia. Niiden määrä riippuu itse verkon monimutkaisuudesta. Se muistuttaa enemmän biologisen hermoverkon rakennetta. Tämän tyyppiset verkot kehitettiin melko äskettäin, ennen sitä kaikki prosessit toteutettiin käyttämällä yksikerroksisia verkkoja. Näin ollen tällaisella ratkaisulla on paljon enemmän mahdollisuuksia kuin sen esi-isällä. Tiedonkäsittelyprosessissa jokainen välikerros edustaa tiedonkäsittelyn ja jakelun välivaihetta.

Riippuen tiedon jakautumissuunnasta synapsien välillä neuronista toiseen, verkot voidaan myös luokitella kahteen luokkaan.

  • Suorat etenemisverkot tai yksisuuntaiset, eli rakenne, jossa signaali liikkuu tiukasti tulokerroksesta lähtökerrokseen. Signaalin liike vastakkaiseen suuntaan on mahdotonta. Tällainen kehitys on melko laajalle levinnyt ja ratkaisee tällä hetkellä menestyksekkäästi ongelmia, kuten tunnistamisen, ennustamisen tai klusteroinnin.
  • Verkostot palautetta tai toistuvia. Tällaiset verkot mahdollistavat signaalin kulkemisen paitsi eteenpäin, myös vastakkaiseen suuntaan. Mitä tämä antaa? Tällaisissa verkoissa lähdön tulos voidaan palauttaa tuloon tämän perusteella, neuronin lähtö määräytyy painotusten ja tulosignaalien perusteella ja sitä täydennetään aiemmilla lähdöillä, jotka palautetaan taas tuloon. Tällaisille verkoille on ominaista lyhytkestoisen muistin toiminta, jonka perusteella signaalit palautetaan ja täydennetään käsittelyn aikana.

Nämä eivät ole ainoita verkkojen luokitteluvaihtoehtoja.

Ne voidaan jakaa homogeenisiin ja hybrideihin verkon muodostavien neuronien tyyppien perusteella. Ja myös heteroassosiatiivinen tai autoassosiatiivinen, riippuen verkkokoulutusmenetelmästä, opettajan kanssa tai ilman. Voit myös luokitella verkot niiden tarkoituksen mukaan.

Missä neuroverkkoja käytetään?

Neuroverkkoja käytetään useiden ongelmien ratkaisemiseen. Jos tarkastelemme tehtäviä monimutkaisuusasteen mukaan, niin tavallinen tietokoneohjelma sopii yksinkertaisimpien ongelmien ratkaisemiseen
monimutkaiset ongelmat, jotka vaativat yksinkertaista ennustamista tai yhtälöiden likimääräistä ratkaisua, käytetään tilastollisia menetelmiä käyttäviä ohjelmia.

Mutta vieläkin monimutkaisemman tason tehtävät vaativat täysin erilaista lähestymistapaa. Tämä koskee erityisesti hahmontunnistusta, puheentunnistusta tai monimutkaista ennustamista. Ihmisen päässä tällaiset prosessit tapahtuvat tiedostamatta, toisin sanoen, kun hän tunnistaa ja muistaa kuvia, hän ei ole tietoinen siitä, kuinka tämä prosessi tapahtuu, eikä näin ollen voi hallita sitä.

Juuri näitä ongelmia neuroverkot auttavat ratkaisemaan, eli ne on luotu suorittamaan prosesseja, joiden algoritmeja ei tunneta.

Siksi neuroverkkoja käytetään laajasti seuraavilla alueilla:

  • tunnustaminen, ja tämä suunta on tällä hetkellä laajin;
  • ennakoiden seuraavan vaiheen, tämä ominaisuus on sovellettavissa kaupankäynnissä ja osakemarkkinoilla;
  • syötetietojen luokittelu parametreilla tämän toiminnon suorittavat luottorobotit, jotka pystyvät tekemään päätöksen lainan hyväksymisestä henkilölle erilaisten parametrien syöttöjoukon perusteella.

Neuroverkkojen ominaisuudet tekevät niistä erittäin suosittuja. Heille voidaan opettaa monia asioita, kuten pelien pelaamista, tietyn äänen tunnistamista ja niin edelleen. Sen perusteella, että keinotekoiset verkostot on rakennettu biologisten verkostojen periaatteelle, niille voidaan opettaa kaikki prosessit, joita ihminen suorittaa tiedostamatta.

Mikä on neuroni ja synapsi?

Joten mikä on neuroni keinotekoisten hermoverkkojen kannalta? Tämä käsite viittaa yksikköön, joka suorittaa laskelmia. Se vastaanottaa tietoa verkon syöttökerroksesta, suorittaa sen kanssa yksinkertaisia ​​laskelmia ja syöttää sen seuraavalle neuronille.

Verkko sisältää kolmen tyyppisiä neuroneja: tulo, piilotettu ja lähtö. Lisäksi, jos verkko on yksikerroksinen, se ei sisällä piilotettuja neuroneja. Lisäksi on olemassa useita yksiköitä, joita kutsutaan siirtymähermosoluiksi ja kontekstineuroneiksi.

Jokaisella neuronilla on kahden tyyppistä dataa: tulo ja lähtö. Tässä tapauksessa ensimmäisen kerroksen syöttödata on yhtä suuri kuin lähtödata. Muissa tapauksissa aiempien kerrosten kokonaistiedot tulevat neuronin sisääntuloon, sitten se käy läpi normalisointiprosessin, eli aktivointifunktio muuntaa kaikki halutun alueen ulkopuolelle jäävät arvot.

Kuten edellä mainittiin, synapsi on yhteys hermosolujen välillä, joista jokaisella on oma painoaste. Tämän ominaisuuden ansiosta syöttötiedot muuttuvat lähetysprosessin aikana. Prosessoinnin aikana synapsin suuren painon välittämä tieto on hallitseva.

Osoittautuu, että tulokseen eivät vaikuta neuronit, vaan synapsit, jotka antavat tietyn painojoukon syöttötiedoille, koska neuronit itse suorittavat täsmälleen samat laskelmat joka kerta.

Tässä tapauksessa painot asetetaan satunnaisessa järjestyksessä.

Neuraaliverkon toimintakaavio

Neuroverkon toimintaperiaatteen kuvitteleminen ei vaadi erityisiä taitoja. Hermosolujen syöttökerros vastaanottaa tiettyä tietoa. Se välittyy synapsien kautta seuraavaan kerrokseen, jolloin jokaisella synapsilla on oma painokerroinnsa, ja jokaisella seuraavalla neuronilla voi olla useita saapuvia synapseja.

Seurauksena on, että seuraavan neuronin vastaanottama informaatio on kaikkien tietojen summa, joista jokainen kerrotaan omalla painokertoimellaan. Tuloksena oleva arvo korvataan aktivointifunktiolla ja saadaan ulostuloinformaatio, jota lähetetään edelleen, kunnes se saavuttaa lopullisen lähdön. Verkon ensimmäinen käynnistys ei anna oikeita tuloksia, koska verkkoa ei ole vielä koulutettu.

Aktivointitoimintoa käytetään syötetietojen normalisointiin. Tällaisia ​​toimintoja on monia, mutta on useita tärkeimpiä toimintoja, joita käytetään eniten. Niiden tärkein ero on arvoalue, jolla ne toimivat.

  • Lineaarifunktiota f(x) = x, yksinkertaisinta kaikista mahdollisista, käytetään vain luodun hermoverkon testaamiseen tai tiedon siirtämiseen alkuperäisessä muodossaan.
  • Sigmoidia pidetään yleisimpana aktivointifunktiona ja sen muoto on f(x) = 1 / 1+e-×; Lisäksi sen arvojen alue on 0 - 1. Sitä kutsutaan myös logistiseksi funktioksi.
  • Negatiivisten arvojen peittämiseksi käytetään hyperbolista tangenttia. F(x) = e²× - 1 / e²× + 1 - tämä on tämän funktion muoto ja sen alue on -1 - 1. Jos hermoverkko ei salli negatiivisten arvojen käyttöä, se on ei pitäisi käyttää.

Jotta verkosta saataisiin tiedot, joiden kanssa se toimii, tarvitaan koulutussarjoja.

Integraatio on mittari, joka kasvaa jokaisen harjoitussarjan myötä.

Epookki on hermoverkon harjoittelun indikaattori, tämä indikaattori kasvaa joka kerta, kun verkko käy läpi koko sarjan koulutussarjoja.

Vastaavasti, jotta voit kouluttaa verkkoa oikein, sinun on suoritettava sarjoja lisäämällä jatkuvasti aikakauden ilmaisinta.

Virheet tunnistetaan koulutuksen aikana. Tämä on prosentuaalinen ero saadun ja halutun tuloksen välillä. Tämän indikaattorin pitäisi laskea epoch-indikaattorin kasvaessa, muuten jossain on kehittäjävirhe.

Mikä on bias-neuroni ja mihin se on tarkoitettu?

Hermoverkoissa on toisentyyppinen neuroni - siirtymähermosolu. Se eroaa hermosolujen päätyypistä siinä, että sen tulo ja lähtö ovat joka tapauksessa yhtä suuria. Lisäksi sellaisilla neuroneilla ei ole tulosynapseja.

Tällaisten hermosolujen järjestely tapahtuu yksi kerrosta kohti eikä enempää, eivätkä ne voi synapsoida toistensa kanssa. Ei ole suositeltavaa sijoittaa tällaisia ​​hermosoluja lähtökerrokseen.

Mihin niitä tarvitaan? On tilanteita, joissa hermoverkko ei yksinkertaisesti löydä oikeaa ratkaisua, koska haluttu piste on ulottumattomissa. Juuri tästä syystä tarvitaan tällaisia ​​hermosoluja voidakseen siirtää määritelmäaluetta.

Toisin sanoen synapsin paino muuttaa funktiokaavion taivutusta, kun taas siirtymähermosolu mahdollistaa siirtymisen X-koordinaattiakselia pitkin, jotta hermoverkko voi kaapata alueelle, johon se ei pääse, ilman siirtymää. Tässä tapauksessa siirto voidaan suorittaa sekä oikealle että vasemmalle. Siirtymähermosoluja ei yleensä merkitä kaavamaisesti, niiden paino otetaan oletusarvoisesti huomioon syöttöarvoa laskettaessa.

Myös siirtymähermosolujen avulla voit saada tuloksen siinä tapauksessa, että kaikki muut neuronit tuottavat 0:n lähtöparametrina. Tässä tapauksessa, riippumatta synapsin painosta, täsmälleen tämä arvo lähetetään jokaiselle seuraavalle kerrokselle.

Siirtymähermosolun läsnäolo antaa sinun korjata tilanteen ja saada erilaisen tuloksen. Siirtymähermosolujen käyttökelpoisuus määritetään testaamalla verkkoa niiden kanssa ja ilman ja vertaamalla tuloksia.

Mutta on tärkeää muistaa, että tulosten saavuttamiseksi ei riitä neuroverkon luominen. Sitä on myös koulutettava, mikä vaatii myös erityisiä lähestymistapoja ja sillä on omat algoritminsa. Tätä prosessia tuskin voidaan kutsua yksinkertaiseksi, koska sen toteuttaminen vaatii tiettyä tietoa ja vaivaa.

Toinen tekoälyn tutkimusalue on hermoverkot. Ne suunniteltiin muistuttamaan ihmisen hermoston luonnollisia hermoverkkoja.

Keinotekoiset neuroverkot

Ensimmäisen hermotietokoneen keksijä, tohtori Robert Hecht-Nielsen määritteli hermoverkon seuraavasti: "Neuroverkko on tietokonejärjestelmä, joka koostuu useista yksinkertaisista, hyvin toisiinsa liittyvistä prosessointielementeistä, jotka käsittelevät tietoa dynaamisesti reagoimalla ulkoisiin vaikutuksiin. vaikuttaa.”

Keinotekoisten hermoverkkojen perusrakenne (ANN)

ANN:n idea perustuu uskomukseen, että ihmisaivojen toimintaa on mahdollista jäljitellä luomalla tarvittavat yhteydet piillä ja johtoilla, kuten elävissä neuroneissa ja dendriiteissä.

Ihmisen aivot koostuvat 100 miljardista hermosolusta, joita kutsutaan neuroneiksi. Ne ovat yhteydessä muihin tuhansiin soluihin aksoneilla. Dendriitit vastaanottavat ärsykkeitä ulkoisesta ympäristöstä tai aisteista tulevat signaalit. Nämä tulosignaalit luovat sähköimpulsseja, jotka kulkevat nopeasti hermoverkon läpi. Neuroni voi sitten lähettää viestejä muille neuroneille, jotka voivat lähettää viestin edelleen tai olla lähettämättä sitä ollenkaan.


Keinotekoiset hermoverkot koostuvat useista solmuista, jotka jäljittelevät ihmisen aivojen biologisia neuroneja. Neuronit ovat yhteydessä toisiinsa ja ovat vuorovaikutuksessa toistensa kanssa. Solmut voivat hyväksyä syötetiedot ja suorittaa datalle yksinkertaisia ​​toimintoja. Näiden toimintojen seurauksena data siirtyy muihin hermosoluihin. Kunkin solmun lähtöä kutsutaan sen aktivaatioksi.

Jokainen linkki liittyy painoon. ANN:t kykenevät oppimaan, mikä tapahtuu muuttamalla painoarvoa. Seuraava kuva esittää yksinkertaisen ANN:n:

Keinotekoisten neuroverkkojen tyypit

Keinotekoisia hermoverkkotopologioita on kahta tyyppiä - eteenpäinkytkentä ja palaute.

Tiedonkulku on yksisuuntaista. Yksikkö lähettää tietoa muille yksiköille, joilta se ei saa mitään tietoa. Palautesilmukkaa ei ole. Niissä on kiinteät tulot ja lähdöt.


Täällä palautesilmukat ovat sallittuja.

Kuinka keinotekoiset neuroverkot toimivat

Topologia näyttää piirejä, joista kukin nuoli edustaa yhteyttä kahden hermosolun välillä ja osoittaa tiedonkulun polun. Jokaisella yhteydellä on painoarvo, kokonaisluku, joka ohjaa signaalia kahden neuronin välillä.

Jos verkko tuottaa "hyvän" ja "tarvittavan" lähdön, painoja ei tarvitse säätää. Jos verkko kuitenkin tuottaa "huonon" tai "ei-toivotun" tulosteen tai virheen, järjestelmä säätää painojaan myöhempien tulosten parantamiseksi.

Koneoppiminen keinotekoisissa neuroverkoissa

ANN:t voivat oppia, ja heidät on koulutettava. Opetusstrategioita on useita

Koulutus - mukana opettaja, joka toimittaa koulutusnäytteen verkostoon, johon opettaja tietää vastaukset. Verkosto vertaa tuloksiaan opettajan vastauksiin ja säätää painojaan.

Ohjaamaton oppiminen on tarpeen, kun ei ole olemassa koulutussarjaa, jolla on tiedossa olevat vastaukset. Esimerkiksi klusterointiongelmissa, ts. elementtijoukon jakaminen ryhmiin joidenkin kriteerien mukaan.

Vahvistusoppiminen on havainnointiin rakennettu strategia. Verkosto tekee päätökset tarkkailemalla ympäristöään. Jos havainto on negatiivinen, verkosto säätää painojaan pystyäkseen tekemään erilaisia ​​tarvittavia päätöksiä.

Takaisinpropagointialgoritmi

Bayesin verkot (BN)

Nämä ovat graafisia rakenteita satunnaismuuttujien joukon välisten todennäköisyyssuhteiden esittämiseksi.

Näissä verkoissa jokainen solmu edustaa satunnaismuuttujaa erityisillä tarjouksilla. Esimerkiksi lääketieteellisessä diagnoosissa syöpäsolmu edustaa oletusta, että potilaalla on syöpä.

Solmuja yhdistävät reunat edustavat näiden satunnaismuuttujien välisiä todennäköisyysriippuvuuksia. Jos kahdesta solmusta toinen vaikuttaa toiseen solmuun, ne on kytkettävä suoraan. Muuttujien välisen suhteen vahvuus kvantifioidaan kuhunkin solmuun liittyvällä todennäköisyydellä.

Ainoa rajoitus kaarille BN:ssä on, että et voi palata solmuun yksinkertaisesti seuraamalla kaaren suuntaa. Tästä syystä BNN:tä kutsutaan asykliseksi graafiksi.

BN-rakenne on ihanteellinen tiedon ja havaitun tiedon yhdistämiseen. BN:n avulla voidaan oppia syy-seuraus-suhteita ja ymmärtää erilaisia ​​ongelmia ja ennustaa tulevaisuutta myös tiedon puuttuessa.

Missä neuroverkkoja käytetään?

    He pystyvät suorittamaan tehtäviä, jotka ovat yksinkertaisia ​​ihmisille mutta vaikeita koneille:

    Ilmailu - ilma-aluksen autopilotti;

    Autoteollisuus - autojen ohjausjärjestelmät;

    Sotilaallinen - kohteen seuranta, autopilotti, signaalin/kuvan tunnistus;

    Elektroniikka - ennustaminen, vikaanalyysi, konenäkö, puhesynteesi;

    Rahoitus - kiinteistöjen arviointi, luottokonsultit, asuntolaina, kauppayhtiösalkku jne.

    Signaalinkäsittely - Neuroverkkoja voidaan kouluttaa käsittelemään äänisignaalia.

Näin ollen hermoverkko ottaa kaksi numeroa syötteenä ja sen on tulostettava toinen luku - vastaus. Nyt itse neuroverkoista.

Mikä on neuroverkko?


Hermoverkko on synapsien yhdistämien hermosolujen sarja. Neuroverkon rakenne tuli ohjelmoinnin maailmaan suoraan biologiasta. Tämän rakenteen ansiosta kone saa kyvyn analysoida ja jopa muistaa erilaisia ​​tietoja. Neuroverkot pystyvät myös paitsi analysoimaan saapuvaa tietoa, myös toistamaan sen muististaan. Kiinnostuneet, muista katsoa 2 videota TED Talksista: Video 1 , Video 2). Toisin sanoen hermoverkko on ihmisen aivojen konetulkinta, joka sisältää miljoonia neuroneja, jotka välittävät tietoa sähköisten impulssien muodossa.

Millaisia ​​neuroverkkoja on olemassa?

Toistaiseksi tarkastelemme esimerkkejä hermoverkkojen yksinkertaisimmasta tyypistä - myötäkytkentäverkosta (jäljempänä feedforward-verkko). Myös seuraavissa artikkeleissa esittelen lisää käsitteitä ja kerron sinulle toistuvista neuroverkoista. SPR on nimensä mukaisesti verkko, jossa on peräkkäinen hermokerrosten yhteys, jossa informaatio virtaa aina vain yhteen suuntaan.

Mitä varten neuroverkot ovat?

Neuroverkkoja käytetään ratkaisemaan monimutkaisia ​​ongelmia, jotka vaativat samanlaisia ​​analyyttisiä laskelmia kuin mitä ihmisaivot tekevät. Neuroverkkojen yleisimmät sovellukset ovat:

Luokittelu- tietojen jakautuminen parametrien mukaan. Sinulle annetaan esimerkiksi joukko ihmisiä syötteeksi ja sinun on päätettävä, ketä heistä antaa tunnustusta ja kenelle ei. Tämän työn voi tehdä hermoverkko, joka analysoi tietoja, kuten ikää, vakavaraisuutta, luottohistoriaa jne.

Ennustus- kyky ennustaa seuraava askel. Esimerkiksi osakkeiden nousu tai lasku osakemarkkinatilanteen perusteella.

Tunnustus- Tällä hetkellä yleisin neuroverkkojen käyttö. Käytetään Googlessa, kun haet valokuvaa, tai puhelimen kameroissa, kun se havaitsee kasvosi sijainnin ja korostaa ne ja paljon muuta.

Ymmärtääksemme kuinka hermoverkot toimivat, katsotaanpa sen komponentteja ja niiden parametreja.

Mikä on neuroni?


Neuroni on laskennallinen yksikkö, joka vastaanottaa tietoa, suorittaa sille yksinkertaisia ​​laskelmia ja lähettää sen edelleen. Ne on jaettu kolmeen päätyyppiin: tulo (sininen), piilotettu (punainen) ja lähtö (vihreä). On myös siirtymähermosolu ja kontekstineuroni, joista puhumme seuraavassa artikkelissa. Siinä tapauksessa, että hermoverkko koostuu suuresta määrästä neuroneja, otetaan käyttöön termi kerros. Vastaavasti on syöttökerros, joka vastaanottaa tietoa, n piilokerrosta (yleensä enintään 3), jotka käsittelevät sen, ja tuloskerros, joka tulostaa tuloksen. Jokaisella neuronilla on 2 pääparametria: tulodata ja lähtödata. Tulohermosolun tapauksessa: input=output. Muilta osin syöttökenttä sisältää edellisen kerroksen kaikkien neuronien kokonaisinformaation, jonka jälkeen se normalisoidaan aktivointifunktiolla (kuvitellaan nyt vain muodossa f(x)) ja päätyy tuloskenttään.


Tärkeää muistaa että neuronit toimivat numeroilla alueella tai [-1,1]. Mutta kuinka, kysyt, sitten käsitellä lukuja, jotka jäävät tämän alueen ulkopuolelle? Tässä vaiheessa yksinkertaisin vastaus on jakaa 1 tällä luvulla. Tätä prosessia kutsutaan normalisoimiseksi ja sitä käytetään hyvin usein hermoverkoissa. Tästä lisää vähän myöhemmin.

Mikä on synapsi?


Synapsi on yhteys kahden hermosolun välillä. Synapseilla on 1 parametri - paino. Sen ansiosta syöttötieto muuttuu, kun se siirtyy neuronista toiseen. Oletetaan, että on 3 neuronia, jotka välittävät tietoa seuraavalle. Sitten meillä on 3 painoa, jotka vastaavat kutakin näistä hermosoluista. Sen neuronille, jonka paino on suurempi, tämä tieto on hallitseva seuraavassa neuronissa (esimerkiksi värien sekoitus). Itse asiassa hermoverkon painosarja tai painomatriisi on eräänlainen koko järjestelmän aivot. Näiden painojen ansiosta syöttötiedot käsitellään ja muunnetaan tulokseksi.

Tärkeää muistaa, että hermoverkon alustuksen aikana painot asetetaan satunnaiseen järjestykseen.

Miten neuroverkko toimii?


Tämä esimerkki esittää osaa hermoverkosta, jossa kirjaimet I tarkoittavat syötehermosoluja, kirjain H tarkoittaa piilotettua neuronia ja kirjain w tarkoittaa painoja. Kaava osoittaa, että syöttötieto on kaikkien syötetietojen summa kerrottuna niitä vastaavilla painoilla. Sitten syötetään 1 ja 0. Olkoon w1=0.4 ja w2 = 0.7 Neuronin H1 syötetiedot ovat seuraavat: 1*0.4+0*0.7=0.4. Nyt kun meillä on tulo, voimme saada lähdön kytkemällä tulon aktivointitoimintoon (lisää siitä myöhemmin). Nyt kun meillä on tulos, annamme sen eteenpäin. Ja niin toistamme kaikille kerroksille, kunnes saavutamme lähtöhermosolun. Käynnistettyämme tällaisen verkoston ensimmäistä kertaa näemme, että vastaus on kaukana oikeasta, koska verkkoa ei ole koulutettu. Tulosten parantamiseksi koulutamme hänet. Mutta ennen kuin opimme tekemään tämän, esitellään muutamia hermoverkon termejä ja ominaisuuksia.

Aktivointitoiminto

Aktivointitoiminto on tapa normalisoida syöttötiedot (puhuimme tästä aiemmin). Toisin sanoen, jos sinulla on suuri numero sisääntulossa, siirrät sen aktivointitoiminnon läpi, saat lähdön tarvitsemallasi alueella. Aktivointitoimintoja on melko paljon, joten tarkastelemme perustoimintoja: Lineaarinen, Sigmoidi (logistinen) ja Hyperbolinen tangentti. Niiden tärkeimmät erot ovat arvoalueet.

Lineaarinen funktio


Tätä toimintoa ei käytetä melkein koskaan, paitsi silloin, kun sinun on testattava neuroverkko tai välitettävä arvo ilman muuntamista.

Sigmoidi


Tämä on yleisin aktivointitoiminto ja sen arvoalue on . Tässä näkyy suurin osa verkossa olevista esimerkeistä, ja sitä kutsutaan joskus myös logistiseksi funktioksi. Vastaavasti, jos tapauksessasi on negatiivisia arvoja (esimerkiksi osakkeet voivat nousta, mutta myös laskea), tarvitset toiminnon, joka tallentaa myös negatiiviset arvot.

Hyperbolinen tangentti


Hyperbolista tangenttia on järkevää käyttää vain, kun arvosi voivat olla sekä negatiivisia että positiivisia, koska funktion alue on [-1,1]. Ei ole suositeltavaa käyttää tätä toimintoa vain positiivisilla arvoilla, koska se huonontaa merkittävästi hermoverkkosi tuloksia.

Harjoitussetti

Harjoitusjoukko on datasarja, jolla neuroverkko toimii. Eliminaatio- tai (xor) tapauksessa meillä on vain 4 erilaista lopputulosta, eli meillä on 4 harjoitussarjaa: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Iterointi

Tämä on eräänlainen laskuri, joka kasvaa joka kerta, kun hermoverkko käy läpi yhden harjoitussarjan. Toisin sanoen tämä on neuroverkon suorittamien koulutussarjojen kokonaismäärä.

aikakausi

Kun hermoverkko alustetaan, tämä arvo asetetaan arvoon 0 ja sillä on manuaalisesti asetettu katto. Mitä suurempi aikakausi, sitä paremmin koulutettu verkko ja vastaavasti sen tulos. Epookki kasvaa joka kerta, kun käymme läpi koko harjoitussarjan, meidän tapauksessamme 4 sarjaa tai 4 iteraatiota.


Tärkeäälä sekoita iteraatiota aikakauteen ja ymmärrä niiden lisäyksen järjestys. Ensimmäinen n
kerran iteraatio kasvaa, ja sitten aikakausi eikä päinvastoin. Toisin sanoen et voi ensin kouluttaa neuroverkkoa vain yhdessä ryhmässä, sitten toisessa ja niin edelleen. Sinun täytyy harjoitella jokaista sarjaa kerran aikakaudella. Näin voit välttää virheitä laskelmissa.

Virhe

Virhe on prosenttiosuus, joka kuvastaa odotettujen ja vastaanotettujen vastausten välistä eroa. Virhe muodostuu joka aikakaudella, ja sen täytyy hävitä. Jos näin ei tapahdu, teet jotain väärin. Virhe voidaan laskea eri tavoin, mutta tarkastelemme vain kolmea päämenetelmää: Mean Squared Error (jäljempänä MSE), Root MSE ja Arctan. Käytössä ei ole rajoituksia, kuten aktivointitoiminnossa, ja voit vapaasti valita minkä tahansa menetelmän, joka antaa sinulle parhaat tulokset. Sinun on vain pidettävä mielessä, että jokainen menetelmä laskee virheet eri tavalla. Arctanilla virhe on lähes aina suurempi, koska se toimii periaatteella: mitä suurempi ero, sitä suurempi virhe. Juuri-MSE:llä on pienin virhe, joten on yleistä käyttää MSE:tä, joka säilyttää tasapainon virheen laskennassa.