Kuinka luoda hermoverkko ilman ohjelmointitaitoja. Yksinkertaisesti sanottuna kompleksista: mitä ovat hermoverkot


Tekoäly, hermoverkot, koneoppiminen – mitä kaikki nämä tällä hetkellä suositut käsitteet oikeastaan ​​tarkoittavat? Useimmille tietämättömille ihmisille, joita minä itse olen, ne tuntuivat aina fantastisilta, mutta itse asiassa niiden olemus on pinnalla. Minulla on pitkään ollut ajatus kirjoittaa yksinkertaisella kielellä keinotekoisista hermoverkoista. Ota selvää itse ja kerro muille, mitä tämä tekniikka on, miten se toimii, harkitse sen historiaa ja tulevaisuudennäkymiä. Tässä artikkelissa yritin olla menemättä rikkaruohoihin, vaan puhua yksinkertaisesti ja yleisesti tästä lupaavasta suunnasta korkean teknologian maailmassa.


Tekoäly, hermoverkot, koneoppiminen – mitä kaikki nämä tällä hetkellä suositut käsitteet oikeastaan ​​tarkoittavat? Useimmille tietämättömille ihmisille, joita minä itse olen, ne tuntuivat aina fantastisilta, mutta itse asiassa niiden olemus on pinnalla. Minulla on pitkään ollut ajatus kirjoittaa yksinkertaisella kielellä keinotekoisista hermoverkoista. Ota selvää itse ja kerro muille, mitä tämä tekniikka on, miten se toimii, harkitse sen historiaa ja tulevaisuudennäkymiä. Tässä artikkelissa yritin olla menemättä rikkaruohoihin, vaan puhua yksinkertaisesti ja yleisesti tästä lupaavasta suunnasta korkean teknologian maailmassa.

Hieman historiaa

Ensimmäistä kertaa keinotekoisten hermoverkkojen (ANN) käsite syntyi yrityksenä simuloida aivoprosesseja. McCulloch-Pittsin hermoverkkomallin luomista vuonna 1943 voidaan pitää ensimmäisenä suurena läpimurtona tällä alueella. Tutkijat ovat kehittäneet mallin keinotekoisesta neuronista ensimmäistä kertaa. He ehdottivat myös näiden elementtien verkon suunnittelua loogisten toimintojen suorittamiseksi. Mutta mikä tärkeintä, tutkijat ovat osoittaneet, että tällainen verkosto pystyy oppimaan.

Seuraava tärkeä askel oli Donald Hebbin kehittämä ensimmäinen algoritmi ANN:n laskentaan vuonna 1949, josta tuli perustavanlaatuinen useiden seuraavien vuosikymmenten ajan. Vuonna 1958 Frank Rosenblatt kehitti parceptronin, järjestelmän, joka jäljittelee aivoprosesseja. Aikoinaan tekniikalla ei ollut analogeja ja se on edelleen perustavanlaatuinen neuroverkoissa. Vuonna 1986, lähes samanaikaisesti, toisistaan ​​riippumatta, amerikkalaiset ja neuvostoliittolaiset tutkijat paransivat merkittävästi perusmenetelmää monikerroksisen perceptronin harjoittamiseksi. Vuonna 2007 hermoverkot kokivat uudestisyntymisen. Brittitieteilijä Geoffrey Hinton kehitti ensin syväoppimisalgoritmin monikerroksisille hermoverkoille, jota käytetään nykyään esimerkiksi itseohjautuvien autojen ohjaamiseen.

Lyhyesti pääasiasta

Sanan yleisessä merkityksessä hermoverkot ovat matemaattisia malleja, jotka toimivat eläinorganismin hermosoluverkkojen periaatteella. ANN:t voidaan toteuttaa sekä ohjelmoitavissa että laitteistoratkaisuissa. Asioiden ymmärtämisen helpottamiseksi hermosolu voidaan ajatella soluna, jossa on useita tuloreikiä ja yksi lähtöreikä. Se, kuinka useat saapuvat signaalit muodostetaan lähtösignaaliksi, määräytyy laskenta-algoritmin mukaan. Tehokkaat arvot syötetään jokaiseen neuronituloon, joka sitten jakautuu neuronien välisiä yhteyksiä (synopseja) pitkin. Synapseilla on yksi parametri - paino, jonka vuoksi syöttötieto muuttuu siirtyessään neuronista toiseen. Helpoin tapa kuvitella hermoverkkojen toimintaperiaate on sekoittamalla värejä. Sinisten, vihreiden ja punaisten hermosolujen painot vaihtelevat. Sen neuronin tiedot, jonka paino on suurempi, ovat hallitsevia seuraavassa neuronissa.

Itse hermoverkko on monien tällaisten neuronien (prosessorien) järjestelmä. Yksittäin nämä prosessorit ovat melko yksinkertaisia ​​(paljon yksinkertaisempia kuin henkilökohtaisen tietokoneen prosessori), mutta kun ne yhdistetään suurempaan järjestelmään, neuronit pystyvät suorittamaan erittäin monimutkaisia ​​​​tehtäviä.

Sovellusalueesta riippuen hermoverkkoa voidaan tulkita eri tavoin. Esimerkiksi koneoppimisen näkökulmasta ANN on hahmontunnistusmenetelmä. Matemaattisesta näkökulmasta tämä on moniparametrinen ongelma. Kybernetiikan näkökulmasta - malli robotiikan mukautuvasta ohjauksesta. Tekoälylle ANN on peruskomponentti luonnollisen älyn mallintamisessa laskentaalgoritmeilla.

Neuroverkkojen tärkein etu perinteisiin laskenta-algoritmeihin verrattuna on niiden oppimiskyky. Sanan yleisessä merkityksessä oppiminen on oikeiden kytkentäkertoimien löytämistä hermosolujen välillä sekä tietojen yhteenvetoa ja monimutkaisten riippuvuuksien tunnistamista tulo- ja lähtösignaalien välillä. Itse asiassa hermoverkon onnistunut koulutus tarkoittaa, että järjestelmä pystyy tunnistamaan oikean tuloksen sellaisten tietojen perusteella, joita ei ole koulutusjoukossa.

Nykyinen tilanne

Ja vaikka tämä tekniikka olisi kuinka lupaava, ANN:t ovat edelleen hyvin kaukana ihmisaivojen ja ajattelun kyvyistä. Neuroverkkoja käytetään kuitenkin jo monilla ihmisen toiminnan alueilla. Toistaiseksi he eivät pysty tekemään erittäin älykkäitä päätöksiä, mutta he pystyvät korvaamaan ihmisen siellä, missä häntä aiemmin tarvittiin. ANN:n monista sovellusalueista voidaan mainita: itseoppivien tuotantoprosessijärjestelmien luominen, miehittämättömät ajoneuvot, kuvantunnistusjärjestelmät, älykkäät turvajärjestelmät, robotiikka, laadunvalvontajärjestelmät, puhevuorovaikutusrajapinnat, analytiikkajärjestelmät ja paljon muuta. Tämä hermoverkkojen laaja käyttö johtuu muun muassa erilaisten ANN-koulutuksen kiihdyttämiseen tarkoitettujen menetelmien syntymisestä.

Nykyään neuroverkkojen markkinat ovat valtavat - miljardeja ja miljardeja dollareita. Kuten käytäntö osoittaa, useimmat neuroverkkotekniikat ympäri maailmaa eroavat vähän toisistaan. Neuraaliverkkojen käyttö on kuitenkin erittäin kallista toimintaa, johon useimmissa tapauksissa on varaa vain suuryrityksillä. Neuroverkkojen kehittäminen, koulutus ja testaus vaatii suurta laskentatehoa, ja on selvää, että IT-markkinoiden suurilla toimijoilla sitä riittää. Tärkeimpiä tällä alalla johtavia yrityksiä ovat Google DeepMind -divisioona, Microsoft Research -divisioona, IBM, Facebook ja Baidu.

Tietysti kaikki tämä on hyvää: neuroverkot kehittyvät, markkinat kasvavat, mutta toistaiseksi pääongelmaa ei ole ratkaistu. Ihmiskunta ei ole onnistunut luomaan teknologiaa, joka edes lähentäisi ihmisaivojen kykyjä. Katsotaanpa tärkeimpiä eroja ihmisen aivojen ja keinotekoisten hermoverkkojen välillä.

Miksi hermoverkot ovat edelleen kaukana ihmisen aivoista?

Tärkein ero, joka muuttaa radikaalisti järjestelmän periaatetta ja tehokkuutta, on signaalien erilainen välitys keinotekoisissa hermoverkoissa ja biologisessa hermosoluverkostossa. Tosiasia on, että ANN:ssa neuronit lähettävät arvoja, jotka ovat todellisia arvoja, toisin sanoen numeroita. Ihmisaivoissa impulssit välittyvät kiinteällä amplitudilla, ja nämä impulssit ovat melkein välittömiä. Tämä johtaa lukuisiin etuihin ihmisen neuroniverkostosta.

Ensinnäkin aivojen viestintälinjat ovat paljon tehokkaampia ja taloudellisempia kuin ANN:ssa. Toiseksi pulssipiiri varmistaa tekniikan helppokäyttöisyyden: riittää, että käytetään analogisia piirejä monimutkaisten laskentamekanismien sijaan. Lopulta pulssiverkot ovat immuuneja äänihäiriöille. Reaalilukuihin kohdistuu kohinaa, mikä lisää virheiden todennäköisyyttä.

Bottom line

Tietenkin viime vuosikymmenen aikana hermoverkkojen kehityksessä on ollut todellinen buumi. Tämä johtuu ensisijaisesti siitä, että ANN-koulutusprosessista on tullut paljon nopeampaa ja helpompaa. Myös niin sanottuja "esikoulutettuja" neuroverkkoja on alettu aktiivisesti kehittää, mikä voi merkittävästi nopeuttaa teknologian käyttöönottoa. Ja jos on liian aikaista sanoa, pystyvätkö hermoverkot jonain päivänä toistamaan täysin ihmisaivojen kyvyt, todennäköisyys, että seuraavan vuosikymmenen aikana ANN-verkot voivat korvata ihmiset neljänneksellä olemassa olevista ammateista, on yhä totta. .

Niille, jotka haluavat tietää enemmän

  • Suuri hermosota: Mitä Google todella tekee
  • Kuinka kognitiiviset tietokoneet voivat muuttaa tulevaisuutemme

Tutustumiseni hermoverkkoihin tapahtui Prisma-sovelluksen julkaisun yhteydessä. Se käsittelee minkä tahansa valokuvan hermoverkkojen avulla ja toistaa sen tyhjästä käyttämällä valittua tyyliä. Kiinnostuttuani tästä ryntäsin etsimään artikkeleita ja ”opetusohjelmia”, pääasiassa Habresta. Ja suureksi yllätyksekseni en löytänyt ainuttakaan artikkelia, jossa olisi kuvattu selkeästi ja askel askeleelta hermoverkkojen toiminnan algoritmi. Tiedot olivat hajallaan ja niistä puuttui keskeisiä kohtia. Myös useimmat kirjoittajat kiirehtivät näyttämään koodia yhdellä tai toisella ohjelmointikielellä turvautumatta yksityiskohtaisiin selityksiin.

P Ensimmäinen ja tärkein löytöni oli amerikkalaisen ohjelmoijan Jeff Heatonin soittolista, jossa hän selittää yksityiskohtaisesti ja selkeästi hermoverkkojen toimintaperiaatteet ja niiden luokittelun. Katsottuani tätä soittolistaa päätin luoda oman hermoverkkoni aloittaen yksinkertaisimmasta esimerkistä. Tiedät luultavasti, että kun aloitat uuden kielen oppimisen, ensimmäinen ohjelmasi on Hello World. Se on eräänlainen perinne. Koneoppimisen maailmalla on myös oma Hello-maailmansa ja tämä on hermoverkko, joka ratkaisee poissulkemis- tai (XOR)-ongelman. XOR-taulukko näyttää tältä:

Sen mukaisesti 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ä yksinkertaisimmasta hermoverkkotyypistä - myötäkytkentäverkosta (jäljempänä syöttö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 nkerran 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 yleisintä käyttää MSE:tä, joka säilyttää tasapainon virheen laskennassa.

Juuri MSE

Arctan

Virheiden laskentaperiaate on sama kaikissa tapauksissa. Jokaiselle sarjalle laskemme virheen vähentämällä tuloksen ihanteellisesta vastauksesta. Seuraavaksi joko neliöimme sen tai laskemme tästä erotuksesta neliötangentin, jonka jälkeen jaamme tuloksena olevan luvun joukkojen lukumäärällä.

Tehtävä

Nyt testataksesi itsesi laskemalla tietyn hermoverkon tulos sigmoidilla ja sen virhe käyttämällä MSE:tä.

Tiedot:

I1 = 1, I2 = 0, w1 = 0,45, w2 = 0,78, w3 = -0,12, w4 = 0,13, w5 = 1,5, w6 = -2,3.

Ratkaisu

H1-tulo = 1*0,45+0*-0,12=0,45

H1-tulostus = sigmoid(0,45) = 0,61

H2-tulo = 1*0,78+0*0,13=0,78

H2-tulostus = sigmoidi(0,78) = 0,69

O1-tulo = 0,61*1,5+0,69*-2,3=-0,672

O1-lähtö = sigmoidi(-0,672) = 0,33

O1ideaali = 1 (0xor1=1)

Virhe = ((1-0.33)^2)/1=0.45

Tulos - 0,33, virhe - 45%.

Kiitos paljon huomiostanne! Toivon, että tämä artikkeli auttoi sinua tutkimaan hermoverkkoja. Seuraavassa artikkelissa puhun bias-hermosoluista ja siitä, kuinka hermoverkkoa koulutetaan käyttämällä takaisinetenemistä ja gradienttilaskua.

Käytetyt resurssit:

Olen tutustunut hermoverkkoihin jo kauan sitten. Suhtaudun niihin melko ristiriitaisesti keinona ratkaista sovellettavia ongelmia. Toisaalta en pystynyt ratkaisemaan yhtäkään ongelmaa, johon käytin verkkoja tyydyttävällä tuloksella (mutta on huomattava, että tehtävät olivat myös erittäin monimutkaisia), ja toisaalta pystyin arvioimaan riittävästi hermoverkkojen analyyttisen potentiaalin voima ja niiden kyky tehdä arvioita ja ennusteita monenlaisille joukoille.

Koska kiinnostukseni verkkoja kohtaan on noussut ajoittain viime vuosien aikana, ajatus prosessoinnin kirjoittamisesta neuroverkon rakentamista ja koulutusta varten oli, kuten sanotaan, ilmassa. Idea toteutui kuitenkin vasta muutaman viime (rehellisesti sanottuna, en edes muista kuinka monta) kuukausina. Taistelu itsestäsi on ennen kaikkea taistelua itsesi kanssa tai pikemminkin oman laiskuuden ja tietämättömyyden kanssa. Ja tämä kierros jäi minulle :) Koska tein sen ensisijaisesti itseäni varten, julkaisen mitä sain, täysin turhaan.

Mitä tämä kehitys on? Listaan ​​tärkeimmät ominaisuudet ja toiminnot. Samalla pidämme mielessä ja muistamme, että se toteutetaan vain hallinnoiduilla lomakkeilla.

1. Projektin ohjauspaneeli . Niiden ehtojen mukaisesti, jotka olen hyväksynyttehtäväTermillä tarkoitetaan itse hermoverkon kokonaisuutta, koulutuksen lähtötietoja, harjoitusparametrien asetuksia ja tulosten tallentamista. Projektin ohjauspaneelin avulla voit muokata tehtäväkomponentteja (paitsi hermoverkkoa), hallita koulutusprosessia ja seurata verkkokoulutuksen tuloksia. Tarjolla on myös vaihtoehtoja tehtävien ja valmiiden verkkojen tallentamiseen ja lataamiseen. Haluan myös huomauttaa, että tulosten tallentamiseen on mahdollisuus. Jos projektissa on ladattu/luotu verkko ja ladataan joukko lähdetietoja, verkkoparametreja käytetään tulosten laskemiseen ja lataamiseen ulkoiseen tiedostoon (arvotaulukkoon tai Excel-työkirjaan). Vastaavasti voit selvittää verkon palauttamat tulokset mille tahansa interaktiivisesti syötetylle argumenttijoukolle.

2. Neuraaliverkkoeditori (monikerroksinen percepton). Voit luoda ja muokata hermoverkkoa. Visuaalisesti verkko näytetään moniväristen pallojen rakenteena. Vihreät pallot ovat syöttöytimiä, punaiset ovat lähtöytimiä ja keltaiset ovat sisäkerrosten ytimiä. Niissä on mahdollista asettaa kerrosten ja ytimien lukumäärä. Ladatuille tehtäville ja verkoille sekä siinä tapauksessa, että dataa on jo ladattu projektin harjoittelua varten, tulo- ja lähtöytimien lukumääräksi otetaan olemassa olevien argumenttien ja tulosten määrä. Kun napsautat "Tallenna verkko" -painiketta, verkko tallennetaan käsittelyparametreihin ja reunojen alkupainot alustetaan satunnaisesti. Eli vaikka emme muuttaneetkaan verkon rakennetta, se voidaan tyhjentää aiemman koulutuksen tuloksista tallentamalla se uudelleen editoriin.

3. Koulutuksen edistymisen analysointialijärjestelmä . Alajärjestelmä on hyvin yksinkertainen ja se on kaavio, joka osoittaa verkkokoulutuksen edistymisen tietyssä projektissa. Tilastojen keruuvaihe ja harjoitusvaiheiden kokonaismäärä konfiguroidaan "Projektin ohjauspaneelissa". Tilastoja ei voi nähdä reaaliajassa harjoittelun aikana. Se on sama olennainen osa projektia kuin verkko- ja koulutustietojoukot, ja se päivitetään ja kirjoitetaan projektiin koulutuksen päätyttyä uusien verkkoparametrien kanssa. Vastaavasti, jos tilastojen ylläpitomahdollisuus oli otettu käyttöön ladatussa projektissa edellisen harjoituksen aikana, niin approksimaatiovirheiden kaavioiden katselu on käytettävissä heti tehtävän (projektin) lataamisen jälkeen.

4. Käsittelymoduuli . Erotan myös prosessointimoduulin erilliseksi alijärjestelmäksi, koska siinä on vientitoimintoja ja -proseduureja, jotka mahdollistavat verkkojen koulutusta ja laskentatulosten saamisen verkosta ulkopuheluiden avulla. Itse asiassa minulle nämä toiminnot ovat tärkeimmät kehityksessä. Liitteenä on tiedosto projektispesifikaatiolla ja mikä tahansa tämän spesifikaation mukaisesti millä tahansa tavalla luotu projekti voidaan kouluttaa ja haluttu tulos voidaan saada spesifikaation mukaisesti luodusta verkosta. Mutta koska käytännössä verkkojen luominen, muokkaaminen ja koulutus on melko työvoimavaltainen ja luova prosessi, visuaaliset editorit ja ohjauspaneeli ovat looginen askel työn yksinkertaistamiseksi ja parantamiseksi. Mutta toistan vielä kerran - teoriassa olisi mahdollista tehdä ilman niitä, koska käsittelymoduuli on täysin riittävä toiminnallisuus valmiiden tehtävien ja verkkojen kanssa työskentelemiseen. Loput osajärjestelmät ovat vain minun versioni keittiön suunnittelusta niiden valmistelua varten.

Nyt kerron sinulle vähän verkkoparametreista ja oppimisprosessista.

Monien joukossa neuronien aktivointitoiminnotTähän projektiin valitsin Fermin logistisen sigmoidin. Suosituin toiminto neuroverkoissa ja (jos ymmärrät oppimisen olemuksen) on erittäin helposti erotettavissa.

Oppimisalgoritmi- virhe takaisinprogaatio. Jos haluat lisätietoja, mene Googleen.

Oppimisnopeus Norm - mukautuva. Ositteessa hyväksytään parametreissa määritetty arvo, mutta koulutuksen edetessä oppimisnopeus voi muuttua. Nopeuden muuntamisen periaate on, että siinä tapauksessa, että harjoitusvaiheiden välillä verkon reunan gradientin suunta ei muutu, oppimisnopeus kerrotaan kertoimella K>1, ja jos etumerkki muuttuu. gradientti, tekijä K tulee<1. Таким образом, норма обучения хотя и остается важнейшим параметром обучения, но ее неправильный выбор может быть в значительной степени скорректирован модификаторами.

Harjoitussetti. Kaikki argumentteina ja tuloksina välitetyt tiedot jaetaan satunnaisesti ennen harjoittelun alkua kolmeen osaan (koulutus, testaus ja todentaminen) suhteessa 7:2:1. Lisäksi tämä satunnaisuus on joka kerta erilainen ja tiedot jaetaan ennen jokaista harjoitusjaksoa. Tämän seurauksena näet kuvan, että kun aloitetaan saman projektin toinen (kolmas jne.) harjoitusjakso, approksimaatiovirheet voivat laskea tai hypätä jyrkästi ensimmäisissä vaiheissa. Tämä ei johdu siitä, että otettiin väärä verkko - vain uusi satunnainen näyte ja uudet virhearvot.

Millaisia ​​näytteitä nämä ovat? Koulutushuone - ymmärrettävää. Testi - ei osallistu suoraan koulutukseen, mutta sen virhe näkyy prosessissa. Harjoitusvirheen arvon perusteella tai pikemminkin sen dynamiikkaa verrattuna opetusvirheeseen päätellen voidaan arvioida, onko verkko ylikoulutettu (virheet eroavat) ja ylipäänsä kuinka sopiva verkkomalli on rakennettu dataan. .

Varmistusnäyte näkyy käyttäjälle vasta koulutuksen lopussa. Koska koulutusprosessin aikana voimme seurata testinäytettä, se on myös välillisesti koulutuksen kohteena. Tässä tapauksessa verifiointi on lopullinen ja puolueeton arvio tuloksena olevan verkon laadusta.

Klassinen esimerkki ylioppineesta verkosta on, kun harjoitus- ja testivirheet ensin vähenevät ja sitten eroavat ja testivirhe kasvaa loputtomasti. Verkko on saattanut onnistua "muistamaan" koko harjoitusjoukon ja nyt ei sopeudu koko otoksen yleisiin ominaisuuksiin, vaan "kiillottaa" vain harjoitusdataa. Tyypillisesti näin tapahtuu, kun alkuperäinen näyte on liian pieni tai liian homogeeninen ja/tai sisäisten kerrosten ja hermosolujen lukumäärä on liian suuri.

Nyt kerrotaan tavoista aloittaa oppimisprosessi käsittelymuodosta. Niitä on vain 3:

1. Normaali prosessin aloitus. Aloitamme harjoittelun nykyisessä harjoituksessa ja odotamme loppua. Koska asiakkaalle ei voida palauttaa mitään ennen kuin palvelinpuhelu päättyy, odotamme ja toivomme, että kaikki on hyvin.

2. Käynnistä taustatyön kautta ulkoisesta käsittelystä. Minusta tässä kaikki on enemmän tai vähemmän selvää. Luonnollisesti käsittely tulee rekisteröidä lisäraporttien ja käsittelyn hakemistoon ja konfiguraatiossa tulee olla vähintään 1.2.1.4 BSP-versio. Tässä tapauksessa kaikki toimii minulle hyvin.

3. Käynnistä taustamääritysten käsittelytyö. Jos pidät käsittelystä niin paljon, että alat käyttää sitä säännöllisesti ja lisäät sen kokoonpanoosi. Tässä voisi tietysti suositella taustatehtävän käynnistämistä loppuun, mutta voit kokeilla myös BSP:n kautta. Version pitäisi vain olla, en edes tiedä mikä se on, mutta sen pitäisi olla melko uusi.

Vaihtoehdot taustatehtävän juoksemiseen ovat kätevimpiä ja informatiivisimpia, koska lomakkeella voi silti tehdä jotain muuta ja tiedot päivittyvät säännöllisesti harjoittelun aikana vastaanottamalla ja käsittelemällä taustatehtävän viestejä.

Sanon vielä muutaman sanan esikoulutusvaihtoehdosta. En laita linkkiä fiksuun artikkeliin, joka todistaa, että hermosynapsien painojen alustava valinta parantaa merkittävästi laatua ja lyhentää verkkoharjoitteluaikaa. Sanon vain, että otin arvostetut tieteiden kandidaatit sanaan. Kirjoitin lohkon alustavasta valinnasta ja alkupainojen arvioinnista, enkä huomannut mitään merkittävää edistystä. Täällä joko sukset eivät toimi tai asiat eivät toimi kuten pitäisi, mutta säästin vaihtoehdon. Voit käyttää sitä ennen kuin aloitat uuden verkon oppimisen tai et voi käyttää sitä.

Mitä liitteenä olevassa arkistossa on? Kuvaus verkkoprojektin koostumuksesta (erittely) hankkeiden itsenäistä kehittämistä varten ( MS Word ), projekti- ja verkkodemotiedostot sekä 2 demodatatiedoston sarja. Tiedot ovat arvotaulukoita, joissa on joukko argumentteja ja tuloksia.

Käsittely postitetaan erillisessä tiedostossa, jotta se on helppo päivittää ja korvata uusilla versioilla. Lisämateriaalien tärkein osa - verkon suunnitteluspesifikaatio sisältyy käsittelyapuun, joten periaatteessa voit ladata vain itse käsittelyn säästääksesi $ m . Saat täyden toiminnon ja dokumentaation.

Minusta meidän pitäisi lopettaa tähän. Tekstiä oli jo liikaa. Tietenkin, kun käsittelet tiettyjä tietoja ja todellisia esimerkkejä, sinulla on luonnollisesti monia kysymyksiä ja kommentteja. Perusvastaukset ja vinkit on annettu yllä - eli luemme ensin huolellisesti kuvauksen. Apua on myös pääkäsittelylomakkeessa. Voit myös lukea sen. No, kaikelle muulle, mitä ei ole kuvattu tai ei ole selvää - kommentit.

James Loy, Georgia Tech. Aloittelijan opas oman hermoverkon luomiseen Pythonissa.

Motivaatio: Omakohtaisen syväoppimisen opiskelukokemuksen perusteella päätin luoda hermoverkon tyhjästä ilman monimutkaista koulutuskirjastoa, kuten esimerkiksi . Uskon, että aloittelevalle datatieteilijälle on tärkeää ymmärtää sisäinen rakenne.

Tämä artikkeli sisältää sen, mitä olen oppinut, ja toivottavasti siitä on hyötyä myös sinulle! Muita hyödyllisiä artikkeleita aiheesta:

Mikä on neuroverkko?

Useimmat hermoverkkoja käsittelevät artikkelit piirtävät yhtäläisyyksiä aivojen kanssa niitä kuvaillessaan. Minun on helpompi kuvata hermoverkkoja matemaattisena funktiona, joka kartoittaa tietyn syötteen haluttuun lähtöön menemättä liian yksityiskohtiin.

Neuroverkot koostuvat seuraavista komponenteista:

  • syöttökerros, x
  • mielivaltainen määrä piilotetut kerrokset
  • lähtökerros, ŷ
  • pakki vaa'at Ja siirtymät jokaisen kerroksen välissä W Ja b
  • valinta jokaiselle piilotetulle tasolle σ ; Tässä työssä käytämme Sigmoid-aktivointitoimintoa

Alla oleva kaavio esittää kaksikerroksisen hermoverkon arkkitehtuuria (huomaa, että syöttökerros jätetään yleensä pois, kun lasketaan hermoverkon kerrosten lukumäärä).

Neural Network -luokan luominen Pythonissa on yksinkertaista:

Neuroverkkokoulutus

Poistu ŷ yksinkertainen kaksikerroksinen neuroverkko:

Yllä olevassa yhtälössä painot W ja bias b ovat ainoat muuttujat, jotka vaikuttavat ulostuloon ŷ.

Luonnollisesti painojen ja harhojen oikeat arvot määräävät ennusteiden tarkkuuden. Syöttötietojen painojen ja poikkeamien hienosäätöprosessi tunnetaan nimellä .

Jokainen oppimisprosessin iteraatio koostuu seuraavista vaiheista

  • ennustetun lähdön ŷ laskeminen, jota kutsutaan eteenpäin etenemiseksi
  • painojen ja harhojen päivittäminen, ns

Alla oleva kaavio kuvaa prosessia:

Suora jakelu

Kuten yllä olevassa kaaviossa näimme, eteenpäin eteneminen on vain yksinkertainen laskelma, ja 2-kerroksiselle perushermoverkolle hermoverkon tulos saadaan seuraavasti:

Lisätään eteenpäin etenemisfunktio Python-koodiimme tehdäksesi tämän. Huomaa, että yksinkertaisuuden vuoksi olemme olettaneet siirtymien olevan 0.

Tarvitsemme kuitenkin tavan arvioida ennusteidemme "hyvyyttä" eli kuinka kaukana ennusteemme ovat). Häviötoiminto vain antaa meille mahdollisuuden tehdä tämä.

Häviötoiminto

Saatavilla on monia häviöfunktioita, ja ongelmamme luonteen pitäisi sanella tappiofunktion valinta. Tässä työssä käytämme virheiden neliösumma häviöfunktiona.

Virheiden neliösumma on kunkin ennustetun ja todellisen arvon välisten erojen keskiarvo.

Oppimistavoitteena on löytää joukko painotuksia ja harhoja, jotka minimoivat häviöfunktion.

Takaisin eteneminen

Nyt kun olemme mitanneet ennusteemme (tappion) virheen, meidän on löydettävä keino levittää virhettä takaisin ja päivittää painomme ja painopisteemme.

Jotta tiedämme sopivan määrän painojen ja poikkeamien säätämiseksi, meidän on tiedettävä tappiofunktion johdannainen suhteessa painoihin ja poikkeamiin.

Muistakaamme analyysistä se Funktion derivaatta on funktion kaltevuus.

Jos meillä on derivaatta, voimme yksinkertaisesti päivittää painot ja poikkeamat lisäämällä/pienentämällä niitä (katso kaavio yllä). Sitä kutsutaan .

Emme kuitenkaan voi suoraan laskea tappiofunktion derivaatta painojen ja poikkeamien suhteen, koska tappiofunktioyhtälö ei sisällä painoja ja biasioita. Joten tarvitsemme ketjusäännön avuksi laskennassa.

Huh huh! Tämä oli hankalaa, mutta sen avulla saimme tarvitsemamme   – tappiofunktion derivaatan (kaltevuus) suhteessa painoihin. Nyt voimme säätää painoja vastaavasti.

Lisätään takaisinpropagation-funktio Python-koodiimme:

Neuroverkon toiminnan tarkistaminen

Nyt kun meillä on täydellinen Python-koodimme eteenpäin ja taaksepäin etenemistä varten, käydään läpi hermoverkkoesimerkkimme ja katsotaan kuinka se toimii.


Ihanteellinen vaakasarja

Hermoverkkomme on opittava ihanteellinen painosarja edustamaan tätä toimintoa.

Harjoitellaan hermoverkkoa 1500 iteraatioon ja katsotaan mitä tapahtuu. Katsomalla alla olevaa iteraatiohäviökaaviota voimme selvästi nähdä, että häviö pienenee monotonisesti minimiin. Tämä on yhdenmukainen aiemmin käsitellyn gradientin laskeutumisalgoritmin kanssa.

Katsotaan lopullista ennustetta (lähtöä) neuroverkosta 1500 iteroinnin jälkeen.

Me teimme sen! Eteenpäin- ja taaksepäin-etenemisalgoritmimme on osoittanut, että hermoverkko toimii onnistuneesti ja ennusteet lähentyvät todellisia arvoja.

Huomaa, että ennusteiden ja todellisten arvojen välillä on pieni ero. Tämä on toivottavaa, koska se estää ylisovituksen ja mahdollistaa hermoverkon yleistymisen paremmin näkymättömään dataan.

Lopulliset ajatukset

Opin paljon kirjoittaessani omaa hermoverkkoani tyhjästä. Vaikka syvän oppimisen kirjastot, kuten TensorFlow ja Keras, antavat sinun rakentaa syviä verkkoja ymmärtämättä täysin hermoverkon sisäistä toimintaa, mutta minusta on hyödyllistä pyrkiville datatieteilijöille saada syvällisempi ymmärrys niistä.

Olen sijoittanut tähän työhön paljon henkilökohtaista aikaani ja toivon, että siitä on sinulle hyötyä!

Viime aikoina on tullut paljon hermoverkkoja käyttäviä ratkaisuja: sovellukset, palvelut, ohjelmat käyttävät tällaisia ​​verkkoja nopeuttamaan erilaisten ongelmien ratkaisua. Mutta mikä on neuroverkko? AIN.UA:n toimittajat päättivät selvittää, mikä tämä suosittu tekniikka on, mistä se tulee ja miten se toimii.

Neuroverkkoja on vaikea kutsua tuoreeksi teknologiseksi trendiksi. Ensimmäiset tieteellisen ajattelun etsinnät tällä alueella juontavat juurensa 1900-luvun puoliväliin, jolloin aikakauden johtoajat päättivät, että olisi kiva rakentaa tietokone Luontoäidin luonnollisiin saavutuksiin. Erityisesti kopioimalla joitain ihmisaivojen periaatteita.

Luonnollisen biotietokoneemme teknisen analogin luominen ei ollut helppoa, sillä se käy läpi lisääntyneen kiinnostuksen ja laskun aikoja. Tämä selittyy sillä, että teknisen kehityksen taso 1950-luvulla, kun kaikki alkoi, ei pysynyt tieteellisen ajatuksen lennon tahdissa: ensimmäisten hermoverkkojen suunnittelu ei antanut niiden paljastaa täysin potentiaaliaan.

Ja miten se toimii?

Keskimääräinen ihmisen aivot koostuvat noin 86 miljardista neuronista, jotka on yhdistetty yhdeksi järjestelmäksi tiedon vastaanottamista, käsittelyä ja edelleen lähettämistä varten. Tässä verkossa jokainen neuroni toimii mikroprosessorina, johon vedetään dendriittejä - prosesseja impulssien vastaanottamiseksi. Siellä on myös ulostulo aksonin muodossa, joka välittää vastaanotetut impulssit muille hermosoluille.

Keinotekoisesti luotu hermoverkko (ANN) jäljittelee biologisen analogin tiedonkäsittelyprosessia ja on joukko miniprosessoreita, jotka on jaettu kolmeen ryhmään:

  • Sisääntulopisteet (anturit) ovat neuroneja, joiden kautta prosessoitava tieto tulee ANN:iin.
  • Lähtöpisteet (reaktiiviset) ovat neuroneja, joiden kautta ANN tuottaa lopullisen tuloksen.
  • Piilotetut neuronit (assosiatiiviset) ovat hermosolujen toimiva ryhmä, joka sijaitsee sisään- ja poistumispisteiden välissä.

Tietojenkäsittelyn päätyö tapahtuu piilotettujen (assosiatiivisten) neuronien tasolla. Niiden taulukko on järjestetty useisiin kerroksiin ja mitä enemmän niitä on, sitä tarkempaa tiedonkäsittelyä ANN pystyy suorittamaan.

Perceptronin kaavio - yksinkertaisin yksikerroksinen hermoverkko

Ohjelmointia ei voi opettaa

Hermoverkkojen ominainen piirre on se, että niitä ei ohjelmoida vaan koulutettu. Tämän perusteella ANN:t jaetaan kolmeen luokkaan - koulutetut, itseoppivat ja sekatyyppiset ANN:t.

Koulutettu hermoverkko, kuten maailmaa oppiva lapsi, vaatii jatkuvasti tarkkaa huomiota ja palautetta luojaltaan. Työskennellessään sen kanssa tutkija toimittaa ANN:lle joukon tietoja, minkä jälkeen hän pyytää sitä ratkaisemaan ongelman ennalta määrätyllä vastauksella. Molempia ratkaisuja - alun perin oikeaa ja neuroverkon ehdottamaa - verrataan. Jos niiden välinen ero ylittää hyväksyttävän virhesuhteen, tutkija säätää hermoverkkoa, minkä jälkeen oppimisprosessi jatkuu.

Itseoppivat ANN:t tutkivat maailmaa ilman ohjaajia käyttämällä annettua algoritmia koulutukseensa. Tehtävän saatuaan hermoverkko itse etsii vastausta, kirjaa tehdyt virheet ja tarvittaessa "rullaa" assosiatiivisten neuronien ketjua pitkin viimeiseen oikeaan vaiheeseen aloittaakseen alusta.

Alla oleva video on tulos ANN:n 24 tunnin omasta harjoittelusta Super Marion pelaamiseen, jossa sille annettiin tavoite saavuttaa maksimipistemäärä, joka myönnetään tason läpi liikkuessa. Mitä pidemmälle hän onnistui menemään, sitä korkeampi lopputulos oli. Tutkija käytti syötteinä karttaelementtejä ja vastustajia sekä ulostuloina pelaajan käytettävissä olevia toimintoja.

Mutta tätä samaa, hieman mukautettua INS:ää hallitaan ajettaessa toista peliä - Mario Kartia.

Voit itse kokeilla itseäsi hermoverkkotestaajana käyttämällä yksinkertaista, autopilotilla autojen liikettä simuloivaa. Autot liikkuvat kahden hermoverkon ohjauksessa ja noudattavat perussääntöjä - jatka eteenpäin ja vältä törmäyksiä.

Tehtäväsi on luoda heille esteitä ja seurata kuinka autopilotti selviytyy niistä onnistuneesti, sekä valmistautua henkisesti vastaavien Uberin ja kilpailevien yritysten droonien ilmestymiseen kaupunkisi kaduille.

Kaikki perustuu luonnon luomiin algoritmeihin

Neuroverkoista ja niiden harjoittelusta puhuttaessa ei voi olla mainitsematta sellaista luonnonilmiötä kuin muurahaisalgoritmi, jonka voit kirjaimellisesti nähdä oman talosi pihalla.

Liikkuessaan etsimään ruokaa pesästä ja takaisin muurahaiset etsivät jatkuvasti ergonomisinta polkua ja jos häiriöitä ilmenee, ne mukauttavat reittiään muuttuneeseen tilanteeseen. Liikkuessaan muurahainen jättää jälkeensä erikoisen feromonin jäljen. Seuraavat ruokametsästäjät seuraavat pioneerin jättämää reittiä ja kyllästävät sen myös biologisella "majakalla".

Oletetaan, että muurahaisten tiellä ruokaan on este, joka voidaan ohittaa oikealta tai vasemmalta puolelta. Vasemmalla etäisyys ruokalähteeseen on lyhyempi. Huolimatta siitä, että ensimmäisten iteraatioiden aikana muurahaiset ohittavat esteen molemmilta puolilta, vasemmanpuoleinen kyllästyminen feromonilla tapahtuu nopeammin etäisyyden lyhyyden vuoksi.

Mitä se tarkoittaa? Myöhemmissä iteraatioissa vasemmasta reitistä tulee ergonomisimpana ainoa, jota käytetään muurahaisia ​​liikuttaessa. Oppimisprosessi keinotekoisessa hermoverkossa tapahtuu samalla tavalla.

Miksi ANN ei edelleenkään ole AI

Riippumatta siitä, kuinka "älykäs" hermoverkko on, se ei ole tekoäly, vaan työkalu tietojen luokittelutehtäviin. Voimme tietysti olla hämmästyneitä siitä, kuinka hakukone tunnistaa tietyn sanayhdistelmän ja valitsee sen perusteella kuvia tarvitsemillamme kissoilla, mutta tämä ei ole seurausta neurotietokoneen henkisestä toiminnasta, vaan vain useiden luokittimien synergia.

Huolimatta jokaisen vanhemman sukupolven jatkuvasta uskosta nuoremman hajoamiseen, ihmisaivojen neuroniverkosto on paljon monimutkaisempi kuin ANN:n muodollinen rakenne, ja yhteyksien valtavan määrän ja vaihtelevuuden vuoksi se on pystyy ratkaisemaan ongelmia epätyypillisellä tavalla sääntöjen ja kaavojen määrittelemien mallien ulkopuolella.

Yksinkertaisesti sanottuna Aleksanteri Suuri pystyi silti katkaisemaan Gordionin solmun. Mutta hermoverkko ei ole.

AIN.UA kertoi aiemmin saksalaisesta taiteilijasta, joka kehitti printin vaatteille, jotka on suunniteltu suojaamaan ihmisiä kasvojentunnistukselta hermoverkkojen kautta.

Jos haluat saada uutisia Facebookissa, paina "tykkää"

Keinotekoinen hermoverkko on kokoelma hermosoluja, jotka ovat vuorovaikutuksessa toistensa kanssa. He pystyvät vastaanottamaan, käsittelemään ja luomaan dataa. Sitä on yhtä vaikea kuvitella kuin ihmisen aivojen toimintaa. Aivomme hermoverkko toimii niin, että voit lukea tämän nyt: neuronimme tunnistavat kirjaimet ja kirjoittavat ne sanoiksi.

Keinotekoinen hermoverkko on kuin aivot. Se oli alun perin ohjelmoitu yksinkertaistamaan joitain monimutkaisia ​​laskentaprosesseja. Nykyään neuroverkoilla on paljon enemmän mahdollisuuksia. Jotkut niistä ovat älypuhelimellasi. Toinen osa on jo tallentanut tietokantaansa, että avasit tämän artikkelin. Kuinka tämä kaikki tapahtuu ja miksi, lue eteenpäin.

Miten kaikki alkoi

Ihmiset todella halusivat ymmärtää, mistä ihmisen mieli tulee ja miten aivot toimivat. Viime vuosisadan puolivälissä kanadalainen neuropsykologi Donald Hebb tajusi tämän. Hebb tutki hermosolujen vuorovaikutusta keskenään, tutki periaatetta, jolla ne yhdistetään ryhmiksi (tieteellisesti - ryhmiksi) ja ehdotti tieteen ensimmäistä algoritmia hermoverkkojen koulutukseen.

Muutamaa vuotta myöhemmin ryhmä amerikkalaisia ​​tutkijoita mallinsi keinotekoisen hermoverkon, joka pystyi erottamaan neliön muodot muista muodoista.

Miten neuroverkko toimii?

Tutkijat ovat havainneet, että hermoverkko on kokoelma neuronikerroksia, joista jokainen on vastuussa tietyn kriteerin tunnistamisesta: muoto, väri, koko, rakenne, ääni, äänenvoimakkuus jne. Vuosi toisensa jälkeen miljoonien kokeita ja tonnia laskelmia, lisäyksiä lisättiin yksinkertaisimpiin verkkoihin uusia ja uusia hermosolujen kerroksia. He työskentelevät vuorotellen. Esimerkiksi ensimmäinen määrittää, onko neliö neliö vai ei, toinen ymmärtää, onko neliö punainen vai ei, kolmas laskee neliön koon ja niin edelleen. Ei neliöt, eivät punaiset ja sopimattoman kokoiset muodot päätyvät uusiin hermosoluryhmiin ja ne tutkivat niitä.

Mitä ovat neuroverkot ja mitä ne voivat tehdä?

Tutkijat ovat kehittäneet hermoverkkoja, jotta he voivat erottaa monimutkaiset kuvat, videot, tekstit ja puheen. Nykyään on olemassa monenlaisia ​​neuroverkkoja. Ne luokitellaan arkkitehtuurin mukaan - tietoparametrijoukot ja näiden parametrien paino, tietty prioriteetti. Alla on joitain niistä.

Konvoluutiohermoverkot

Neuronit jaetaan ryhmiin, jokainen ryhmä laskee sille annetun ominaisuuden. Vuonna 1993 ranskalainen tiedemies Yann LeCun esitteli maailmalle LeNet 1:n, ensimmäisen konvoluutiohermoverkon, joka pystyi tunnistamaan nopeasti ja tarkasti käsin paperille kirjoitetut numerot. Katso itse:

Nykyään konvoluutiohermoverkkoja käytetään pääasiassa multimediatarkoituksiin: ne toimivat grafiikan, äänen ja videon kanssa.

Toistuvat neuroverkot

Neuronit muistavat tiedot peräkkäin ja rakentavat lisätoimintoja näiden tietojen perusteella. Vuonna 1997 saksalaiset tutkijat muuttivat yksinkertaisimmat toistuvat verkot verkoiksi, joilla oli pitkä lyhytaikainen muisti. Niiden perusteella kehitettiin sitten verkostoja, joissa oli kontrolloituja toistuvia neuroneja.

Nykyään tällaisten verkostojen avulla kirjoitetaan ja käännetään tekstejä, ohjelmoidaan botteja käymään mielekästä dialogia ihmisten kanssa sekä luodaan sivu- ja ohjelmakoodeja.

Tällaisten hermoverkkojen käyttö tarjoaa mahdollisuuden analysoida ja tuottaa dataa, koota tietokantoja ja jopa tehdä ennusteita.

Vuonna 2015 SwiftKey julkaisi maailman ensimmäisen näppäimistön, joka toimii toistuvassa hermoverkossa ohjatuilla neuroneilla. Sitten järjestelmä antoi vihjeitä viimeksi syötettyjen sanojen perusteella. Viime vuonna kehittäjät kouluttivat hermoverkkoa tutkimaan kirjoitettavan tekstin kontekstia, ja vihjeistä tuli mielekkäitä ja hyödyllisiä:

Yhdistetyt neuroverkot (konvoluutio + toistuva)

Tällaiset hermoverkot pystyvät ymmärtämään mitä kuvassa on ja kuvaamaan sitä. Ja päinvastoin: piirrä kuvat kuvauksen mukaan. Silmiinpistävimmän esimerkin osoitti Kyle MacDonald, joka vei hermoverkon kävelylle Amsterdamissa. Verkko päätti välittömästi, mikä oli sen edessä. Ja melkein aina täsmälleen:

Neuroverkot oppivat jatkuvasti itseään.

Tämän prosessin kautta:

1. Skype on tuonut käyttöön simultaanikäännösominaisuudet 10 kielelle. Niiden joukossa on hetkeksi venäläisiä ja japanilaisia ​​- joitain maailman vaikeimmista. Tietysti käännöksen laatu vaatii vakavaa parantamista, mutta jo se tosiasia, että nyt voit kommunikoida japanilaisten kollegoiden kanssa venäjäksi ja olla varma, että sinut ymmärretään, on inspiroiva.

2. Yandex loi kaksi neuroverkkoihin perustuvaa hakualgoritmia: "Palekh" ja "Korolev". Ensimmäinen auttoi löytämään osuvimmat sivustot matalataajuuksisille kyselyille. "Palekh" tutki sivujen otsikoita ja vertasi niiden merkitystä kyselyiden merkitykseen. Palekhin perusteella Korolev ilmestyi. Tämä algoritmi arvioi paitsi otsikon myös koko sivun tekstisisällön. Haku tarkentuu ja sivustojen omistajat alkavat lähestyä sivun sisältöä älykkäämmin.

3. Yandexin SEO-kollegat loivat musiikillisen hermoverkon: se säveltää runoutta ja kirjoittaa musiikkia. Neuroryhmä on symbolisesti nimeltään Neurona, ja sillä on jo ensimmäinen albumi:

4. Google Inbox käyttää hermoverkkoja vastatakseen viesteihin. Teknologiakehitys on täydessä vauhdissa, ja tänään verkosto tutkii jo kirjeenvaihtoa ja generoi mahdollisia vastausvaihtoehtoja. Sinun ei tarvitse tuhlata aikaa kirjoittamiseen, äläkä pelkää unohtavasi jotain tärkeää sopimusta.

5. YouTube luokittelee videoita hermoverkkojen avulla ja kahdella periaatteella kerralla: toinen hermoverkko tutkii videoita ja yleisön reaktioita niihin, toinen tutkii käyttäjiä ja heidän mieltymyksiään. Tästä syystä YouTuben suositukset ovat aina paikallaan.

6. Facebook työskentelee aktiivisesti DeepText AI:n parissa, viestintäohjelmassa, joka ymmärtää ammattikieltä ja puhdistaa keskustelut säädyttömästä kielestä.

7. Neuraaliverkkoihin rakennetut sovellukset, kuten Prisma ja Fabby, luovat kuvia ja videoita:

Colorize palauttaa värit mustavalkoisiin valokuviin (yllätys mummo!).

MakeUp Plus valitsee tytöille täydellisen huulipunan todellisista todellisista tuotemerkeistä: Bobbi Brown, Clinique, Lancome ja YSL ovat jo toiminnassa.

Apple ja Microsoft päivittävät jatkuvasti hermosoluaan Siri ja Contana.

Keinotekoinen hermoverkko

Toistaiseksi he vain toteuttavat määräyksiämme, mutta lähitulevaisuudessa he alkavat tehdä aloitetta: antaa suosituksia ja ennakoida toiveitamme.

Mitä muuta meitä odottaa tulevaisuudessa?

Itseoppivat hermoverkot voivat korvata ihmiset: ne alkavat tekstinkirjoittajista ja oikolukijista. Robotit luovat jo tekstiä, jolla on merkitystä ja ilman virheitä. Ja he tekevät sen paljon nopeammin kuin ihmiset. He jatkavat puhelinkeskusten työntekijöiden, teknisen tuen, moderaattoreiden ja sosiaalisten verkostojen julkisten sivujen ylläpitäjien kanssa. Neuroverkot pystyvät jo oppimaan käsikirjoituksen ja toistamaan sen äänellä. Entä muut alueet?

Maataloussektori

Neuroverkko toteutetaan erikoislaitteiksi. Harvesterit suorittavat automaattiohjauksen, skannaavat kasveja ja tutkivat maaperää välittäen dataa hermoverkkoon. Hän päättää, kasteleeko, lannoittaako vai ruiskuttaako tuholaisia ​​vastaan. Parinkymmenen työntekijän sijasta tarvitset enintään kaksi asiantuntijaa: esimiehen ja teknisen.

Lääke

Microsoft työskentelee parhaillaan aktiivisesti syöpälääkkeen luomiseksi. Tiedemiehet harjoittavat bioohjelmointia - he yrittävät digitalisoida kasvainten synty- ja kehitysprosessia. Kun kaikki toimii, ohjelmoijat voivat löytää tavan estää tällainen prosessi, ja lääke luodaan analogisesti.

Markkinointi

Markkinointi on erittäin yksilöllistä. Jo nyt hermoverkot voivat määrittää sekunneissa, mitä sisältöä kenelle käyttäjälle näyttää ja mihin hintaan. Jatkossa markkinoijan osallistuminen prosessiin vähennetään minimiin: hermoverkot ennustavat kyselyitä käyttäjien käyttäytymisdatan perusteella, skannaavat markkinoita ja tarjoavat sopivimmat tarjoukset siihen mennessä, kun ihminen harkitsee ostamista.

Verkkokauppa

Verkkokauppa otetaan käyttöön kaikkialla. Sinun ei enää tarvitse mennä verkkokauppaan linkin kautta: voit ostaa kaiken missä näet yhdellä napsautuksella.

Esimerkiksi luet tätä artikkelia useita vuosia myöhemmin. Pidät todella MakeUp Plus -sovelluksen kuvakaappauksen huulipunasta (katso yllä). Klikkaat sitä ja siirryt suoraan ostoskoriin. Tai katso video uusimmasta Hololens-mallista (mixed reality-lasit) ja tee heti tilaus suoraan YouTubesta.

Lähes kaikilla aloilla arvostetaan asiantuntijoita, jotka tuntevat tai ainakin ymmärtävät hermoverkkojen, koneoppimisen ja tekoälyjärjestelmien rakenteen. Tulemme olemaan robottien kanssa rinnakkain. Ja mitä enemmän tiedämme niistä, sitä rauhallisempaa elämämme on.

P.S. Zinaida Falls on Yandexin hermoverkko, joka kirjoittaa runoutta. Arvioi työ, jonka kone kirjoitti Majakovskin koulutuksen jälkeen (oikeinkirjoitus ja välimerkit säilytetty):

« Tämä»

Tämä
vain kaikki
jotain
Tulevaisuudessa
ja voimaa
tuo henkilö
onko kaikki maailmassa vai ei
ympärillä on verta
sopimus
lihottua
kunniaa
maa
pamauksella nokassa

Vaikuttavaa, eikö?

Neuroverkot tutille

Nykyään ihmiset huutavat joka kulmalla siellä täällä hermoverkkojen eduista. Mutta vain harvat todella ymmärtävät, mitä se on. Jos etsit selityksiä Wikipediasta, pääsi pyörii sinne rakennettujen tieteellisten termien ja määritelmien linnoitusten korkeudelta. Jos olet kaukana geenitekniikasta ja yliopistooppikirjojen hämmentävä, kuiva kieli aiheuttaa vain hämmennystä eikä ideoita, niin yritetään yhdessä selvittää hermoverkkojen ongelma.

Jos ihmisen aivot koostuvat neuroneista, voimme ehdollisesti olla samaa mieltä siitä, että elektroninen neuroni on jonkinlainen kuvitteellinen laatikko, jossa on useita tuloreikiä ja yksi lähtöreikä.

Neuronin sisäinen algoritmi määrittää vastaanotetun tiedon käsittely- ja analysointijärjestyksen ja sen muuntamisen yhdeksi hyödylliseksi tietojoukoksi. Riippuen siitä, kuinka hyvin tulot ja lähdöt toimivat, koko järjestelmä joko ajattelee nopeasti tai päinvastoin voi hidastua.

Tärkeä

Kun kirjoitat ensisijaista koodia, sinun on selitettävä toimintasi kirjaimellisesti sormillasi. Jos työskentelemme esimerkiksi kuvien kanssa, niin sen koolla ja luokalla on meille ensimmäisessä vaiheessa merkitystä. Jos ensimmäinen ominaisuus kertoo meille syötteiden lukumäärän, niin toinen auttaa hermoverkkoa itse lajittelemaan tiedot.

Neuroverkot: mitä ne ovat ja miten ne toimivat

Ihannetapauksessa, kun primaaridata on ladattu ja luokkatopologiaa vertailtu, hermoverkko itse pystyy sitten luokittelemaan uutta tietoa. Oletetaan, että päätämme ladata 3 x 5 pikselin kuvan. Yksinkertainen aritmetiikka kertoo meille, että syötteitä on 3*5=15. Ja itse luokitus määrittää tulosten kokonaismäärän, ts. neuronit. Toinen esimerkki: hermoverkon on tunnistettava kirjain “C”. Määritetty kynnys vastaa täysin kirjainta. Tämä vaatii yhden neuronin, jonka syötteiden määrä on yhtä suuri kuin kuvan koko.

Kuten missä tahansa koulutuksessa, opiskelijaa tulee rangaista väärästä vastauksesta, mutta oikeasta vastauksesta emme anna mitään. Jos ohjelma näkee oikean vastauksen epätosi, lisäämme syötteen painoa jokaisessa synapsissa. Jos päinvastoin, jos tulos on virheellinen, ohjelma pitää tulosta positiivisena tai tosi, vähennämme painon jokaisesta neuronin syötteestä. On loogisempaa aloittaa oppiminen oppimalla tuntemaan tarvitsemamme symboli. Ensimmäinen tulos on virheellinen, mutta koodia hieman muuttamalla ohjelma toimii oikein jatkotyön aikana. Esitettyä esimerkkiä algoritmista neuroverkon koodin muodostamiseksi kutsutaan parcelroniksi.

neuroverkot

Neuroverkot tutille

Nykyään ihmiset huutavat joka kulmalla siellä täällä hermoverkkojen eduista. Mutta vain harvat todella ymmärtävät, mitä se on.

Oman hermoverkon kirjoittaminen: vaiheittainen opas

Jos etsit selityksiä Wikipediasta, pääsi pyörii sinne rakennettujen tieteellisten termien ja määritelmien linnoitusten korkeudelta. Jos olet kaukana geenitekniikasta ja yliopistooppikirjojen hämmentävä, kuiva kieli aiheuttaa vain hämmennystä eikä ideoita, niin yritetään yhdessä selvittää hermoverkkojen ongelma.

Ymmärtääksesi ongelman, sinun on selvitettävä perimmäinen syy, joka on täysin pinnalla. Sarah Connoria muistettaessa ymmärrämme sydämen vapistuksella, että aikoinaan tietokonekehityksen pioneerit Warren McCulloch ja Walter Pitts pyrkivät itsekkääseen tavoitteeseen luoda ensimmäinen tekoäly.

Neuroverkot ovat itseoppivan järjestelmän elektroninen prototyyppi. Lapsen tavoin hermoverkko imee tietoa, pureskelee sitä, saa kokemusta ja oppii. Oppimisprosessin aikana tällainen verkosto kehittyy, kasvaa ja voi tehdä omat johtopäätöksensä ja tehdä päätöksiä itsenäisesti.

Jos ihmisen aivot koostuvat neuroneista, voimme ehdollisesti olla samaa mieltä siitä, että elektroninen neuroni on jonkinlainen kuvitteellinen laatikko, jossa on useita tuloreikiä ja yksi lähtöreikä. Neuronin sisäinen algoritmi määrittää vastaanotetun tiedon käsittely- ja analysointijärjestyksen ja sen muuntamisen yhdeksi hyödylliseksi tietojoukoksi. Riippuen siitä, kuinka hyvin tulot ja lähdöt toimivat, koko järjestelmä joko ajattelee nopeasti tai päinvastoin voi hidastua.

Tärkeä: Tyypillisesti hermoverkot käyttävät analogista tietoa.

Toistakaamme, että informaatiovirtoja voi olla monia (tieteellisesti tätä alkuinformaation ja "neuronimme" yhteyttä kutsutaan synapseiksi), ja ne ovat kaikki erilaisia ​​ja niillä on erilainen merkitys. Esimerkiksi ihminen havaitsee ympäröivän maailman näkö-, kosketus- ja hajuelinten kautta. On loogista, että näkö on tärkeämpää kuin haju. Eri elämäntilanteiden perusteella käytämme tiettyjä aisteja: täydellisessä pimeydessä kosketus ja kuulo tulevat etualalle. Saman analogian mukaan hermoverkkojen synapseilla on erilainen merkitys eri tilanteissa, mitä yleensä ilmaistaan ​​yhteyden painolla. Koodia kirjoitettaessa asetetaan vähimmäisraja tiedonkululle. Jos yhteyden paino on suurempi kuin määritetty arvo, niin neuronin tarkistuksen tulos on positiivinen (ja yhtä suuri kuin yksi binäärijärjestelmässä, jos se on pienempi, niin se on negatiivinen). On loogista, että mitä korkeammalle palkki asetetaan, sitä tarkempaa hermoverkon työ on, mutta sitä kauemmin se kestää.

Jotta hermoverkko toimisi oikein, sinun on käytettävä aikaa sen harjoitteluun - tämä on tärkein ero yksinkertaisiin ohjelmoitaviin algoritmeihin. Pienen lapsen tavoin hermoverkko tarvitsee alkutietokannan, mutta jos alkuperäinen koodi on kirjoitettu oikein, hermoverkko itse pystyy paitsi tekemään oikean valinnan saatavilla olevasta tiedosta, myös tekemään itsenäisiä oletuksia.

Kun kirjoitat ensisijaista koodia, sinun on selitettävä toimintasi kirjaimellisesti sormillasi. Jos työskentelemme esimerkiksi kuvien kanssa, niin sen koolla ja luokalla on meille ensimmäisessä vaiheessa merkitystä. Jos ensimmäinen ominaisuus kertoo meille syötteiden lukumäärän, niin toinen auttaa hermoverkkoa itse lajittelemaan tiedot. Ihannetapauksessa, kun primaaridata on ladattu ja luokkatopologiaa vertailtu, hermoverkko itse pystyy sitten luokittelemaan uutta tietoa. Oletetaan, että päätämme ladata 3 x 5 pikselin kuvan. Yksinkertainen aritmetiikka kertoo meille, että syötteitä on 3*5=15. Ja itse luokitus määrittää tulosten kokonaismäärän, ts. neuronit. Toinen esimerkki: hermoverkon on tunnistettava kirjain “C”. Määritetty kynnys vastaa täysin kirjainta. Tämä vaatii yhden neuronin, jonka syötteiden määrä on yhtä suuri kuin kuvan koko.

Oletetaan, että koko on sama 3x5 pikseliä. Syöttämällä ohjelmaan erilaisia ​​kirjaimia tai numeroita sisältäviä kuvia, opetamme sen määrittämään tarvitsemamme symbolin kuvan.

Kuten missä tahansa koulutuksessa, opiskelijaa tulee rangaista väärästä vastauksesta, mutta emme anna mitään oikeasta vastauksesta. Jos ohjelma näkee oikean vastauksen epätosi, lisäämme syötteen painoa jokaisessa synapsissa. Jos päinvastoin, jos tulos on virheellinen, ohjelma pitää tulosta positiivisena tai tosi, vähennämme painon jokaisesta neuronin syötteestä. On loogisempaa aloittaa oppiminen oppimalla tuntemaan tarvitsemamme symboli. Ensimmäinen tulos on virheellinen, mutta koodia hieman muuttamalla ohjelma toimii oikein jatkotyön aikana.

Esitettyä esimerkkiä algoritmista neuroverkon koodin muodostamiseksi kutsutaan parcelroniksi.

Neuraaliverkkojen toimintaan on myös monimutkaisempia vaihtoehtoja, joissa palautetaan virheellisiä tietoja, niiden analysointi ja loogiset johtopäätökset itse verkosta. Esimerkiksi online-tulevaisuuden ennustaja on melko ohjelmoitu hermoverkko. Tällaiset ohjelmat pystyvät oppimaan sekä opettajan kanssa että ilman, ja niitä kutsutaan mukautuvaksi resonanssiksi. Niiden ydin on siinä, että neuroneilla on jo omat odotuksensa siitä, millaista tietoa he haluavat vastaanottaa ja missä muodossa. Odotuksen ja todellisuuden välissä on ohut kynnys ns. hermosolujen valppaudelle, joka auttaa verkkoa luokittelemaan saapuvan tiedon oikein ja olemaan huomaamatta yhtäkään pikseliä. AR-hermoverkon temppu on, että se oppii itsenäisesti alusta alkaen ja määrittää itsenäisesti hermosolujen valppauden kynnyksen. Mikä puolestaan ​​vaikuttaa tiedon luokitteluun: mitä valppaampi verkosto, sitä tarkempi se on.

Olemme saaneet aivan perustiedot siitä, mitä neuroverkot ovat. Yritetään nyt tehdä yhteenveto saaduista tiedoista. Niin, neuroverkot on ihmisen ajattelun elektroninen prototyyppi. Ne koostuvat elektronisista hermosoluista ja synapseista - tietovirroista neuronin sisään- ja ulostulossa. Neuraaliverkot ohjelmoidaan oppimisen periaatteen mukaisesti opettajan kanssa (ohjelmoija, joka lataa ensisijaista tietoa) tai itsenäisesti (perustuu vastaanotetun tiedon oletuksiin ja odotuksiin, jotka sama ohjelmoija määrittää). Neuroverkon avulla voit luoda minkä tahansa järjestelmän: yksinkertaisesta kuvion määrittämisestä pikselikuville psykodiagnostiikkaan ja talousanalytiikkaan.

neuroverkot,
tietojen analysointimenetelmät:
tutkimuksesta kehitykseen ja toteutukseen

Koti
Palvelut
Neuroverkot
perusideoita
mahdollisuuksia
etuja

Kuinka käyttää
ohjelmointi
ratkaisun tarkkuus
NS ja AI
Ohjelmat
Artikkelit
Blogi
Tietoja kirjoittajasta / yhteystiedot