Med enkle ord om komplekset: hva er nevrale nettverk? Nevrale nettverk: hva de er, hvor de brukes, hvordan de er ordnet og hvilken funksjon de utfører

  • Hjerne
  • Når jeg over en flaske øl begynte å snakke om nevrale nettverk - begynte folk vanligvis å se fryktelig på meg, ble triste, noen ganger begynte det å ryke i øynene, og i ekstreme tilfeller krøp de under bordet. Men faktisk er disse nettverkene enkle og intuitive. Ja Ja akkurat! Og la meg bevise det for deg!

    La oss si at jeg vet to ting om en jente - om hun er søt mot meg eller ikke, og også om jeg har noe å snakke med henne om. Hvis det er det, vil vi vurdere det som en, hvis ikke, så - som null. La oss ta et lignende prinsipp for eksteriøret. Spørsmål: "Hvilken jente vil jeg bli forelsket i og hvorfor?"


    Man kan tenke enkelt og kompromissløst: "Hvis hun er pen og har noe å snakke om, så vil jeg bli forelsket. Hvis verken det ene eller det andre, så - takk."



    Men hva om damen er pen mot meg, men det er ingenting å snakke med henne om? Eller vice versa?


    Det er klart at for hver av oss vil én ting være viktigere. Mer presist, hver parameter har sitt nivå av betydning, eller rettere sagt, vekt. Hvis du multipliserer parameteren med vekten, får du henholdsvis "innflytelse av utseende" og "påvirkning av pratsomhet".


    Og nå, med god samvittighet, kan jeg svare på spørsmålet mitt:


    "Hvis påvirkningen av karisma og påvirkningen av pratsomhet i summen er større enn verdien av" å bli forelsket, "så vil jeg bli forelsket ..."



    Det vil si at hvis jeg legger stor vekt på en dames "pratsomhet" og en liten vekt på utseendet hennes, vil jeg i en kontroversiell situasjon bli forelsket i en person som det er hyggelig å chatte med. Og vice versa.



    Faktisk er denne regelen et nevron.


    Et kunstig nevron er en funksjon som konverterer flere inputfakta til én utgang. Ved å justere vekten av disse faktaene, så vel som eksitasjonsterskelen, justerer vi nevronens tilstrekkelighet. I prinsippet, for mange, slutter vitenskapen om livet på dette nivået, men denne historien handler ikke om oss, ikke sant?


    La oss trekke noen flere konklusjoner:

    • Hvis begge vektene er små, vil det være vanskelig for meg å bli forelsket i noen.
    • Hvis begge vektene er for store, så vil jeg bli forelsket i minst en stang.
    • Du kan også få meg til å bli forelsket i en søyle ved å senke terskelen for å bli forelsket, men vær så snill – ikke gjør dette mot meg! La oss heller glemme ham for nå, ok?

    Forresten om terskelen

    Det er morsomt, men parameteren for «forelskelse» kalles «terskelen til spenning». Men for at denne artikkelen ikke skal få en "18+" vurdering, la oss bli enige om å bare si "terskel", ok?

    Nevrale nettverket

    Det finnes ingen entydig pene og entydig omgjengelige damer. Ja, og forelskelse, forelskelse, uansett hva de sier. Derfor, i stedet for brutale og kompromissløse "0" og "1", la oss bruke prosent. Da kan du si - "Jeg er veldig forelsket (80%), eller" denne damen er ikke spesielt pratsom (20%) ".


    Vår primitive "maksimalistiske nevron" fra første del passer ikke lenger for oss. Den erstattes av en "vismann neuron", hvis resultat vil være et tall fra 0 til 1, avhengig av inndataene.



    "Nevron-vismannen" kan fortelle oss: "denne damen er vakker nok, men jeg vet ikke hva jeg skal snakke med henne om, så jeg er ikke særlig beundret av henne."



    Litt terminologi

    Inndatafakta til et nevron kalles forresten synapser, og utgangsvurderingen kalles et akson. Forbindelser med positiv vekt kalles eksitatoriske, og de med negativ vekt kalles hemmende. Hvis vekten er lik null, anses det at det ikke er noen forbindelse (død forbindelse).


    La oss gå videre. La oss ta en annen vurdering av disse to fakta: Hvor bra er det å jobbe (samarbeide) med en slik jente? Vi vil handle på nøyaktig samme måte - vi vil legge til et klokt nevron og justere vektene på en måte som er behagelig for oss.


    Men å dømme en jente etter to egenskaper er veldig frekt. La oss dømme henne etter tre! La oss legge til ett faktum til - penger. Som vil variere fra null (absolutt dårlig) til en (Rockefellers datter). La oss se hvordan våre vurderinger vil endre seg med ankomsten av penger ....


    For meg selv bestemte jeg meg for at penger ikke er veldig viktig når det gjelder sjarm, men et elegant utseende kan fortsatt påvirke meg, fordi jeg vil gjøre vekten av pengene liten, men positiv.


    På jobb bryr jeg meg absolutt ikke om hvor mye penger jenta har, så jeg vil gjøre vekten lik null.



    Å vurdere en jente bare for jobb og bli forelsket er veldig dumt. La oss legge til hvor hyggelig det vil være å reise med henne:

    • Karisma i denne oppgaven er nøytral (null eller lett vekt).
    • Pratsomhet vil hjelpe oss (positiv vekt).
    • Når ekte reiser går tom for penger, starter kjøreturen, så jeg vil gjøre vekten på pengene litt negativ.

    Vi kombinerer alle disse tre ordningene til ett og finner ut at vi har beveget oss til et dypere nivå av dømmekraft, nemlig: fra karisma, penger og snakkesalighet – til beundring, samarbeid og komforten ved å reise sammen. Og merk – dette er også signaler fra null til én. Så nå kan jeg legge til det endelige "maksimalistiske nevronet", og la det entydig svare på spørsmålet - "å gifte seg eller ikke"?



    Ok, selvfølgelig er det ikke så enkelt (med tanke på kvinner). La oss bringe litt drama og virkelighet til vår enkle og regnbueverden. Først, la oss gjøre "gifte - ikke gifte deg"-neuronen klok. Tvil er iboende i alle, på en eller annen måte. Og en ting til - legg til et nevron "Jeg vil ha barn fra henne" og, i all rettferdighet, et nevron "hold deg unna henne".


    Jeg forstår ingenting av kvinner, og derfor ser mitt primitive nettverk nå ut som bildet i begynnelsen av artikkelen.


    Inngangsdommene kalles "input-laget", de siste kalles "output-laget", og den som er skjult i midten kalles den "skjulte". Det skjulte laget er mine vurderinger, halvfabrikata, tanker som ingen vet om. Det kan være flere skjulte lag, eller til og med ingen.

    Ned med maksimalismen.

    Husker du da jeg snakket om den negative effekten av penger på mitt ønske om å reise med en person? Så - jeg løy. En person som har mye penger og ikke mye penger er best egnet for reise. Det er mer interessant for meg, og jeg vil ikke forklare hvorfor.


    Men her står jeg overfor et problem:


    Hvis jeg setter vekten av penger negativt, så jo mindre penger, jo bedre for reise.
    Hvis positivt, jo rikere - jo bedre,
    Hvis null - så er penger "side".


    Det er umulig for meg å tvinge nevronet til å gjenkjenne situasjonen «verken mer eller mindre» som dette, med én vekt!


    For å komme rundt dette skal jeg lage to nevroner – «mye penger» og «lite penger», og jeg skal gi dem en pengestrøm fra vår dame som innspill.


    Nå har jeg to dommer: «mye» og «lite». Hvis begge konklusjonene er ubetydelige, vil bokstavelig talt "verken mer - eller mindre" vise seg. Det vil si, la oss legge til en nevron til i utgangen, med negative vekter:



    "Ingenting var galt." Røde piler - positive forbindelser, blå - negative


    Generelt betyr dette at nevroner er som elementer i en konstruktør. Akkurat som en prosessor er laget av transistorer, kan vi sette sammen en hjerne fra nevroner. For eksempel kan dommen "Enten rik eller smart" gjøres slik:



    Eller eller. Røde piler - positive forbindelser, blå - negative




    du kan erstatte "kloke" nevroner med "maksimalister", og så får vi den logiske operatoren XOR. Det viktigste er ikke å glemme å justere opphisselsesterskelene.


    I motsetning til transistorer og den kompromissløse logikken til en typisk "hvis-da"-programmerer, kan et nevralt nettverk ta informerte beslutninger. Resultatene deres vil endre seg jevnt, med en jevn endring i inngangsparametrene. Her er visdom!


    La meg trekke oppmerksomheten din til det faktum at å legge til et lag med to nevroner tillot nevronet "verken mer eller mindre" å foreta en mer kompleks og balansert vurdering, å flytte til et nytt nivå av logikk. Fra "mye" eller "litt" - til en kompromissløsning, til en dypere, fra et filosofisk synspunkt, dømmekraft. Hva om du legger til flere skjulte lag? Vi er i stand til å forstå det enkle nettverket med tankene våre, men hva med et nettverk som har 7 lag? Er vi i stand til å forstå dybden av hennes dømmekraft? Men hva om hver av dem, inkludert inngangen, inneholder rundt tusen nevroner? Hva tror du hun er i stand til?


    Tenk at jeg kompliserte mitt eksempel på ekteskap og forelskelse ytterligere, og kom til et slikt nettverk. Et sted der ute er alle de ni nevronene våre gjemt i den, og dette ligner mer på sannheten. Med alt ønsket er det rett og slett umulig å forstå alle avhengighetene og dybden av dommene til et slikt nettverk. For meg er overgangen fra 3x3-nettverket til 7x1000 sammenlignbar med bevisstheten om skalaen, om ikke universet, så galaksen - i forhold til høyden min. Rett og slett, jeg klarer det ikke. Avgjørelsen til et slikt nettverk, den antente utgangen fra en av dets nevroner - vil være uforklarlig med logikk. Dette er det vi i hverdagen kan kalle "intuisjon" (minst - "en av .."). Uforståelig ønske om systemet eller dets hint.


    Men i motsetning til vårt syntetiske 3x3-eksempel, hvor hvert nevron i det skjulte laget er ganske tydelig formalisert, er dette ikke nødvendigvis tilfelle i et ekte nettverk. I et godt innstilt nettverk, hvis størrelse ikke er overdreven for å løse oppgaven, vil hver nevron oppdage en funksjon, men dette betyr ikke i det hele tatt at det er et ord eller en setning på språket vårt som kan beskrive det. Hvis du projiserer på en person, så er dette en egenskap ved ham som du føler, men ikke kan forklare med ord.

    Utdanning.

    Noen linjer tidligere nevnte jeg et godt innstilt nettverk, noe som sannsynligvis provoserte et dumt spørsmål: «Hvordan kan vi konfigurere et nettverk bestående av flere tusen nevroner? Hvor mange "årsverk" og ødelagte liv trenger du til dette?.. Jeg er redd for å foreslå et svar på det siste spørsmålet. Mye bedre å automatisere denne konfigurasjonsprosessen er å tvinge nettverket til å konfigurere seg selv. Denne automatiseringsprosessen kalles læring. Og for å gi en overfladisk idé om det, vil jeg gå tilbake til den opprinnelige metaforen om et "veldig viktig spørsmål":


    Vi fremstår i denne verden med en ren, uskyldig hjerne og et nevralt nettverk som absolutt ikke er tilpasset kvinner. Det må på en eller annen måte være riktig konfigurert, slik at lykke og glede kommer til hjemmet vårt. For dette trenger vi litt erfaring, og det er flere måter å få det på:


    1) Læring med en lærer (for romantikere). Se nok Hollywood-melodramaer og les tårevåte romaner. Eller se nok av foreldrene dine og/eller vennene dine. Etter det, avhengig av prøven, gå for å sjekke kunnskapen du har fått. Etter et mislykket forsøk - å gjenta det på nytt, og starter med romanene.


    2) Læring uten lærer (for desperate eksperimenter). Prøv å "poke" metoden for å gifte seg med et dusin eller så kvinner. Etter hvert ekteskap, klør neper i forvirring. Gjenta til du forstår at du kjeder deg, og du «allerede vet hvordan det skjer».


    3) Læring uten lærer, alternativ 2 (veien til desperate optimister). Gi opp alt, gjør noe i livet, og en dag bli gift. Etter det, rekonfigurer nettverket ditt i samsvar med den nåværende virkeligheten, slik at alt passer deg.



    Alt det ovennevnte gjelder for et kunstig nevralt nettverk av typen "perseptron". Resten av nettverkene ligner henne i grunnleggende prinsipper, men har sine egne nyanser.


    Gode ​​vekter og gode treningsprøver! Vel, hvis dette ikke lenger er nødvendig, så fortell noen andre om det.



    Vektene til mitt nevrale nettverk er ikke innstilt, og jeg kan bare ikke finne ut hvilken ressurs denne artikkelen skal referere til.

    Kun registrerte brukere kan delta i undersøkelsen. Kom inn er du snill.

    Nevrale nettverk

    Diagram over et enkelt nevralt nettverk. Grønn merket input elementer, i gult - fridag element

    Kunstige nevrale nettverk(ANN) - matematiske modeller, så vel som programvare- eller maskinvareimplementeringer, bygget på prinsippet om organisering og funksjon av biologiske nevrale nettverk - nettverk av nerveceller til en levende organisme. Dette konseptet oppsto når man studerte prosessene som skjer i hjernen under tenkning, og når man forsøkte å modellere disse prosessene. Den første slike hjernemodell var perceptronen. Deretter begynte disse modellene å bli brukt til praktiske formål, vanligvis i prognoseproblemer.

    Nevrale nettverk er ikke programmert i ordets vanlige betydning, de er trent... Læring er en av hovedfordelene med nevrale nettverk fremfor tradisjonelle algoritmer. Teknisk sett består trening i å finne koeffisientene for sammenhenger mellom nevroner. Under trening er det nevrale nettverket i stand til å identifisere komplekse avhengigheter mellom inndata og utdata, samt utføre generalisering. Dette betyr at ved vellykket trening vil nettverket kunne returnere riktig resultat basert på data som var fraværende i treningssettet.

    Kronologi

    Kjente applikasjoner

    Gruppering

    Clustering forstås som å dele settet med inngangssignaler i klasser, mens verken antallet eller karakteristikkene til klassene er kjent på forhånd. Etter trening er et slikt nettverk i stand til å bestemme hvilken klasse inngangssignalet tilhører. Nettverket kan også signalisere at inngangssignalet ikke tilhører noen av de valgte klassene - dette er et tegn på nye data som er fraværende i treningsutvalget. Altså et lignende nettverk kan identifisere nye, tidligere ukjente signalklasser... Korrespondansen mellom klassene som er tildelt av nettverket og klassene som eksisterer i domenet, er etablert av en person. Clustering utføres for eksempel av Kohonen nevrale nettverk.

    Eksperimentelt utvalg av nettverksegenskaper

    Etter å ha valgt den generelle strukturen, må du eksperimentelt velge nettverksparametrene. For nettverk som en perceptron vil dette være antall lag, antall blokker i skjulte lag (for Word-nettverk), tilstedeværelse eller fravær av bypass-forbindelser, overføringsfunksjonene til nevroner. Når man velger antall lag og nevroner i dem, bør man gå ut fra det faktum at nettverkets evne til å generalisere er jo høyere, jo større er det totale antallet forbindelser mellom nevroner... På den annen side er antallet lenker avgrenset ovenfra av antall poster i treningsdataene.

    Eksperimentelt utvalg av treningsparametere

    Etter å ha valgt en spesifikk topologi, er det nødvendig å velge parametrene for å trene det nevrale nettverket. Dette stadiet er spesielt viktig for veiledet læringsnettverk. Riktig valg av parametere avhenger ikke bare av hvor raskt nettverkets svar vil konvergere til de riktige svarene. For eksempel vil å velge en lav læringsrate øke konvergenstiden, men noen ganger unngår det nettverkslammelse. En økning i læringsmomentet kan føre til både en økning og en reduksjon i konvergenstiden, avhengig av formen på feilflaten. Basert på en slik motstridende påvirkning av parametrene, kan vi konkludere med at verdiene deres bør velges eksperimentelt, styrt av kriteriet om opplæringsfullføring (for eksempel å minimere feilen eller begrense treningstiden).

    Selve opplæringen av nettverket

    Under trening skanner nettverket treningsprøven i en bestemt rekkefølge. Skannerekkefølgen kan være sekvensiell, tilfeldig osv. Noen uovervåkede nettverk, for eksempel Hopfield-nettverk, skanner prøven bare én gang. Andre, for eksempel Kohonen-nettverk og overvåkede nettverk, skanner prøven flere ganger, med en hel gjennomgang gjennom prøven kalt læringstiden... Når du underviser med en lærer, er settet med innledende data delt inn i to deler - selve treningsutvalget og testdataene; prinsippet om separasjon kan være vilkårlig. Treningsdataene blir matet til nettverket for trening, og valideringsdataene brukes til å beregne nettverksfeilen (valideringsdata brukes aldri til å trene nettverket). Således, hvis feilen på testdataene avtar, generaliserer nettverket. Hvis feilen på treningsdataene fortsetter å avta, og feilen på testdataene øker, har nettverket sluttet å generalisere og "husker" ganske enkelt treningsdataene. Dette fenomenet kalles nettverksoverfitting eller overfitting. I slike tilfeller blir treningen vanligvis stoppet. Under læringsprosessen kan andre problemer dukke opp, som lammelse eller at nettverket treffer et lokalt minimum av feiloverflaten. Det er umulig å forutsi på forhånd manifestasjonen av et bestemt problem, samt å gi entydige anbefalinger for deres løsning.

    Sjekke tilstrekkeligheten av opplæringen

    Selv i tilfelle av vellykket, ved første øyekast, læring, lærer nettverket ikke alltid nøyaktig hva skaperen ønsket fra det. Det er et kjent tilfelle da nettverket ble opplært til å gjenkjenne bilder av stridsvogner fra fotografier, men senere viste det seg at alle stridsvognene ble fotografert mot samme bakgrunn. Som et resultat "lærte" nettverket å gjenkjenne denne typen terreng, i stedet for å "lære" å gjenkjenne tanker. Dermed "forstår" nettverket ikke hva som kreves av det, men hva som er lettest å generalisere.

    Klassifisering etter type inndatainformasjon

    • Analoge nevrale nettverk (bruk informasjon i form av reelle tall);
    • Binære nevrale nettverk (fungerer med informasjon presentert i binær form).

    Klassifisering etter læringens natur

    • Overvåket læring - utgangsrommet til nevrale nettverksløsninger er kjent;
    • Uovervåket læring - et nevralt nettverk danner utgangsrommet for løsninger basert på kun input. Slike nettverk kalles selvorganiserende;
    • Reinforcement Learning er et system for å tildele straffer og belønninger fra omgivelsene.

    Klassifisering etter arten av synapsetuning

    Klassifisering av signaloverføringstid

    I en rekke nevrale nettverk kan aktiveringsfunksjonen ikke bare avhenge av vektkoeffisienten til tilkoblinger w Jegj, men også på tidspunktet for overføring av en puls (signal) gjennom kommunikasjonskanaler τ Jegj... Derfor, generelt, den aktiverende (sende) kommunikasjonsfunksjonen c Jegj fra element u Jeg til element u j ser ut som:. Deretter synkront nettverk Jegj hver binding er lik enten null eller en fast konstant τ. Asynkron er et nettverk der sendetiden τ Jegj for hver kobling mellom elementer u Jeg og u j sin egen, men også konstant.

    Klassifisering etter arten av bånd

    Feedforward-nettverk

    Alle forbindelser er rettet strengt fra inngangsneuroner til utgangsneuroner. Eksempler på slike nettverk er Rosenblatts perceptron, multilayer perceptron, Word-nettverk.

    Tilbakevendende nevrale nettverk

    Signalet fra utgangsnevronene eller nevronene til det skjulte laget overføres delvis tilbake til inngangene til nevronene til inngangslaget (feedback). Tilbakevendende nettverk Hopfield-nettverket "filtrerer" inndataene, går tilbake til en stabil tilstand og tillater dermed å løse problemer med datakomprimering og bygge assosiativt minne. Toveis nettverk er et spesialtilfelle av tilbakevendende nettverk. I slike nettverk er det forbindelser mellom lag både i retning fra inngangslag til utgangslag, og i motsatt retning. Det klassiske eksemplet er Koskos nevrale nettverk.

    Radial basisfunksjoner

    Kunstige nevrale nettverk som bruker radialbaserte nettverk som aktiveringsfunksjoner (slike nettverk er forkortet som RBF-nettverk). Generell oversikt over den radielle basisfunksjonen:

    , for eksempel,

    hvor x er vektoren til nevroninngangssignaler, σ er bredden på funksjonsvinduet, φ ( y) er en avtagende funksjon (oftest lik null utenfor et bestemt segment).

    Radial-baseline-nettverket er preget av tre funksjoner:

    1. Det eneste skjulte laget

    2. Bare nevroner i det skjulte laget har en ikke-lineær aktiveringsfunksjon

    3. De synaptiske vektene til forbindelsene til input- og skjulte lag er lik én

    Om opplæringsprosedyren - se litteraturen

    Selvorganiserende kort

    Slike nettverk representerer et konkurrerende nevralt nettverk med uovervåket læring, som utfører oppgaven med visualisering og klynging. Det er en metode for å projisere et flerdimensjonalt rom inn i et rom med en lavere dimensjon (oftest todimensjonalt), det brukes også til å løse problemer med modellering, prognoser osv. Det er en av versjonene av Kohonens nevrale nettverk. Selvorganiserende Kohonen-kart brukes først og fremst til visualisering og innledende ("utforskende") dataanalyse.

    Signalet til Kohonen-nettverket går til alle nevroner på en gang, vektene til de tilsvarende synapsene tolkes som koordinater for nodeposisjonen, og utgangssignalet dannes i henhold til prinsippet om "vinneren tar alt" - det vil si nevronet nærmest (i betydningen synapsevekter) til inngangssignalet har et utgangssignalobjekt som ikke er null. Under treningsprosessen justeres synapsevektene på en slik måte at gitternodene "plasseres" på stedene for lokale datakondensasjoner, det vil si at de beskriver klyngestrukturen til dataskyen, på den annen side. forbindelser mellom nevroner tilsvarer nabolagsrelasjonene mellom de tilsvarende klyngene i funksjonsrommet.

    Det er praktisk å vurdere slike kart som todimensjonale rutenett av noder plassert i flerdimensjonalt rom. I utgangspunktet er et selvorganiserende kart et rutenett av noder, koblet sammen med lenker. Kohonen vurderte to alternativer for å koble noder - i et rektangulært og et sekskantet rutenett - forskjellen er at i et rektangulært rutenett er hver node koblet til 4 nabonoder, og i et sekskantet rutenett - til 6 nærmeste noder. For to slike nett skiller prosessen med å konstruere Kohonen-nettverket seg bare på stedet der naboene nærmest den gitte noden flyttes.

    Den første nesteingen av nettet i datarommet er vilkårlig. Forfatterens pakke SOM_PAK tilbyr alternativer for et tilfeldig innledende arrangement av noder i rommet og et alternativ for et arrangement av noder i et plan. Etter det begynner nodene å bevege seg i rommet i henhold til følgende algoritme:

    1. Datapunktet er tilfeldig valgt x .
    2. Nærmest x kortnode (BMU - Best Matching Unit).
    3. Denne noden flyttes et gitt trinn mot x. Den beveger seg imidlertid ikke alene, men bærer med seg et visst antall av de nærmeste nodene fra et bestemt nabolag på kartet. Av alle de bevegelige nodene er den sentrale noden - den som er nærmest datapunktet - sterkest forskjøvet, og resten opplever de mindre forskyvningene, jo lenger de er fra BMU. Det er to stadier i kartinnstilling – bestillingsstadiet og finjusteringsstadiet. På den første fasen velges store verdier av nabolaget og bevegelsen av nodene er av kollektiv karakter - som et resultat "retter kartet seg ut" og gjenspeiler omtrent datastrukturen; på stadiet med finjustering er radiusen til nabolaget 1–2 og de individuelle posisjonene til nodene justeres. I tillegg avtar verdien av forskyvningen jevnt over tid, det vil si at den er stor i begynnelsen av hvert av treningsstadiene og nær null på slutten.
    4. Algoritmen gjentar et visst antall epoker (det er klart at antall trinn kan variere mye avhengig av oppgaven).

    Kjente nettverkstyper

    • Hamming nettverk;
    • Neocognitron;
    • Kaotisk nevrale nettverk;
    • Counter Spread Network;
    • Radial basisfunksjoner nettverk (RBF-nettverk);
    • Generalisert regresjonsnettverk;
    • Probabilistisk nettverk;
    • Siamesisk nevrale nettverk;
    • Adaptive resonansnettverk.

    Forskjeller fra maskiner med von Neumann-arkitektur

    En lang periode med evolusjon har gitt den menneskelige hjerne mange kvaliteter som er fraværende i maskiner med von Neumann-arkitektur:

    • Masse samtidighet;
    • Distribuert presentasjon av informasjon og beregninger;
    • Evne til å lære og generalisere;
    • Tilpasningsevne;
    • Eiendommen til kontekstuell informasjonsbehandling;
    • Toleranse for feil;
    • Lavt energiforbruk.

    Nevrale nettverk - universelle approksimatorer

    Nevrale nettverk er universelle approksimerende enheter og kan simulere enhver kontinuerlig automat med hvilken som helst nøyaktighet. Et generalisert tilnærmingsteorem er bevist: ved hjelp av lineære operasjoner og en kaskadeforbindelse er det mulig å få en enhet fra et vilkårlig ikke-lineært element som beregner enhver kontinuerlig funksjon med en forhåndsbestemt nøyaktighet. Dette betyr at den ikke-lineære karakteristikken til et nevron kan være vilkårlig: fra sigmoidal til en vilkårlig bølgepakke eller wavelet, sinus eller polynom. Kompleksiteten til et bestemt nettverk kan avhenge av valget av en ikke-lineær funksjon, men med enhver ikke-linearitet forblir nettverket en universell approksimator, og med riktig valg av struktur kan det tilnærme funksjonen til enhver kontinuerlig automat så nøyaktig som ønsket.

    Applikasjonseksempler

    Prognose økonomiske tidsserier

    Inndata - aksjekurs for året. Oppgaven er å bestemme morgendagens kurs. Følgende transformasjon gjennomføres - kurset for i dag, i går, for i forgårs, for i forgårs er stilt opp. Neste rad forskyves etter dato med én dag, og så videre. På det resulterende settet trenes et nettverk med 3 innganger og en utgang - det vil si en utgang: sats for en dato, innganger: sats for en dato minus 1 dag, minus 2 dager, minus 3 dager. For det trente nettverket sender vi inn kurset for i dag, i går, i forgårs og får svar for i morgen. Det er lett å se at i dette tilfellet vil nettverket ganske enkelt vise avhengigheten av én parameter av de tre foregående. Hvis det er ønskelig å ta hensyn til en annen parameter (for eksempel den generelle indeksen for industrien), så må den legges til som input (og inkluderes i eksemplene), nettverket må omskoleres og nye resultater oppnås. For den mest nøyaktige treningen er det verdt å bruke ORO-metoden, siden den er den mest forutsigbare og enklere å implementere.

    Psykodiagnostikk

    En serie arbeider av M. G. Dorrer et al. er viet til studiet av spørsmålet om muligheten for å utvikle psykologisk intuisjon i nevrale nettverksekspertsystemer. De oppnådde resultatene gir en tilnærming til avsløringen av mekanismen for intuisjon av nevrale nettverk, som manifesterer seg når de løser psykodiagnostiske oppgaver. Laget ikke-standard for datateknikker intuitiv tilnærming til psykodiagnostikk, som består i utelukkelse av konstruksjon den beskrevne virkeligheten... Det lar deg forkorte og forenkle arbeidet med psykodiagnostiske teknikker.

    Kjemoinformatikk

    Nevrale nettverk er mye brukt i kjemisk og biokjemisk forskning. For tiden er nevrale nettverk en av de mest utbredte metodene for kjemoinformatikk for å finne kvantitative struktur-egenskapsforhold, på grunn av hvilke de brukes aktivt både for å forutsi de fysisk-kjemiske egenskapene og den biologiske aktiviteten til kjemiske forbindelser, og for retningsbestemt design av kjemiske forbindelser og materialer med forhåndsbestemte egenskaper, inkludert i utvikling av nye legemidler.

    Notater (rediger)

    1. McCulloch W.S., Pitts W., Logisk beregning av ideer knyttet til nervøs aktivitet // I samling: "Automata" utg. C.E. Shannon og J. McCarthy. - M .: Forlag av utenlandske. lit., 1956 .-- s. 363-384. (Oversettelse av en engelsk artikkel fra 1943)
    2. Mønstergjenkjenning og adaptiv kontroll. BERNARD ENKE
    3. Widrow B., Stearns S., Adaptiv signalbehandling. - M .: Radio og kommunikasjon, 1989 .-- 440 s.
    4. Werbos P.J., Beyond regresjon: Nye verktøy for prediksjon og analyse i atferdsvitenskapene. Ph.D. avhandling, Harvard University, Cambridge, MA, 1974.
    5. Galushkin A.I. Syntese av flerlags mønstergjenkjenningssystemer. - M .: "Energi", 1974.
    6. Rumelhart D.E., Hinton G.E., Williams R.J., Lære interne representasjoner ved feilutbredelse. I: Parallell Distributed Processing, vol. 1, s. 318-362. Cambridge, MA, MIT Press. 1986.
    7. Bartsev S.I., Okhonin V.A. Adaptive informasjonsbehandlingsnettverk. Krasnoyarsk: Institutt for fysikk, sibirsk gren av USSR Academy of Sciences, 1986. Preprint N 59B. - 20 s.
    8. BaseGroup Labs – praktisk anvendelse av nevrale nettverk i klassifiseringsproblemer
    9. Denne typen koding blir noen ganger referert til som en "1 av N"-kode.
    10. Åpne systemer - en introduksjon til nevrale nettverk
    11. Mirkes E.M., Logisk transparente nevrale nettverk og produksjon av eksplisitt kunnskap fra data, I boken: Nevroinformatikk / A.N. Gorban, V.L. Dunin-Barkovsky, A.N. Kirdin og andre - Novosibirsk: Vitenskap. Siberian Enterprise RAS, 1998 .-- 296 med ISBN 5020314102
    12. Omtale av denne historien i magasinet Popular Mechanics
    13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - Tilbakevendende nettverk som assosiative lagringsenheter]
    14. Kohonen, T. (1989/1997/2001), Self-Organizing Maps, Berlin - New York: Springer-Verlag. Første utgave 1989, andre utgave 1997, tredje utvidet utgave 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
    15. A. Yu. Zinoviev Visualisering av flerdimensjonale data. - Krasnoyarsk: Red. Krasnoyarsk State Technical University, 2000 .-- 180 s.
    16. Gorban A.N., Generalisert tilnærmingsteorem og beregningsevner til nevrale nettverk, Siberian Journal of Computational Mathematics, 1998. Vol. 1, nr. 1. S. 12-24.
    17. Gorban A.N., Rossiyev D.A., Dorrer M.G., MultiNeuron - Neural Networks Simulator For Medical, Physiological, and Psychological Applications, Wcnn'95, Washington, DC: World Congress on Neural Networks 1995 International Neural Network Society Årsmøte: Renaissance Hotel, Washington, DC, USA, 17.-21. juli, 1995.
    18. Dorrer M.G., Psykologisk intuisjon av kunstige nevrale nettverk, Diss. ... 1998. Andre eksemplarer på nett:,
    19. Baskin I.I., Palyulin V.A., Zefirov N.S., Anvendelse av kunstige nevrale nettverk i kjemisk og biokjemisk forskning, Vestn. Moskva Un-Ta. Ser. 2. Kjemi. 1999. Bind 40. nr. 5.
    20. Galberstam N.M., Baskin I.I., Palyulin V.A., Zefirov N.S. Nevrale nettverk som metode for å finne avhengighetsstruktur - egenskapen til organiske forbindelser // Fremskritt innen kjemi... - 2003. - T. 72. - Nr. 7. - S. 706-727.
    21. Baskin I.I., Palyulin V.A., Zefirov N.S. Flerlags perseptroner i studiet av struktur-egenskapsforhold for organiske forbindelser // Russian Chemical Journal (Journal of the Russian Chemical Society oppkalt etter D.I. Mendeleev)... - 2006. - T. 50. - S. 86-96.

    Lenker

    • Artificial Neural Network for PHP 5.x - Seriøst prosjekt for utvikling av nevrale nettverk i PHP 5.X programmeringsspråket
    • Forum om nevrale nettverk og genetiske algoritmer
    • Mirkes E.M., Nevroinformatikk: Lærebok. en manual for studenter med programmer for laboratoriearbeid.
    • Steg-for-trinn eksempler på implementering av de mest kjente typene nevrale nettverk i MATLAB, Neural Network Toolbox
    • Et utvalg av materialer på nevrale nettverk og prediktiv analyse
    • motstridende bruk av nevrale nettverk for å forutsi aksjekurser

    Min introduksjon til nevrale nettverk skjedde da Prisma-appen kom ut. Den behandler ethvert bilde ved hjelp av nevrale nettverk og reproduserer det fra bunnen av med den valgte stilen. Etter å ha blitt interessert i dette, skyndte jeg meg å se etter artikler og "tutorials", først og fremst på Habré. Og til min store overraskelse fant jeg ikke en eneste artikkel som tydelig og trinnvis beskrev algoritmen for driften av nevrale nettverk. Informasjonen var fragmentert og manglet nøkkelpunkter. Dessuten skynder de fleste forfattere seg med å vise koden på et eller annet programmeringsspråk uten å ty til detaljerte forklaringer.

    NS Min første og viktigste oppdagelse var spillelisten til den amerikanske programmereren Jeff Heaton, der han grundig og tydelig undersøker prinsippene for nevrale nettverk og deres klassifisering. Etter å ha sett på denne spillelisten bestemte jeg meg for å lage mitt eget nevrale nettverk, og startet med det enkleste eksempelet. Du vet sikkert at når du akkurat begynner å lære et nytt språk, vil ditt første program være Hello World. Det er en slags tradisjon. Verden av maskinlæring har også sin egen Hello-verden og dette er et nevralt nettverk som løser problemet med eksklusive eller (XOR). Et eksklusivt bord eller bord ser slik ut:

    Følgelig tar det nevrale nettverket to tall som input og må gi et annet tall ved utgangen - svaret. Nå om de nevrale nettverkene selv.

    Hva er et nevralt nettverk?

    Et nevralt nettverk er en sekvens av nevroner forbundet med synapser. Strukturen til det nevrale nettverket kom til programmeringsverdenen rett fra biologien. Takket være denne strukturen får maskinen muligheten til å analysere og til og med huske forskjellig informasjon. Nevrale nettverk er også i stand til ikke bare å analysere innkommende informasjon, men også å reprodusere den fra hukommelsen deres. For de som er interessert, sørg for å se 2 videoer fra TED Talks:Video 1 , Video 2 ). Et nevralt nettverk er med andre ord en maskinell tolkning av den menneskelige hjernen, som inneholder millioner av nevroner som overfører informasjon i form av elektriske impulser.

    Hva er nevrale nettverk?

    Foreløpig vil vi vurdere eksempler på den mest grunnleggende typen nevrale nettverk - dette er et feedforward-nettverk (heretter referert til som FNS). Også i påfølgende artikler vil jeg introdusere flere konsepter og fortelle deg om tilbakevendende nevrale nettverk. DSS, som navnet tilsier, er et nettverk med en seriell forbindelse av nevrale lag, der informasjon alltid går i bare én retning.

    Hva er nevrale nettverk for?

    Nevrale nettverk brukes til å løse komplekse problemer som krever analytiske beregninger som ligner på den menneskelige hjernen. De vanligste bruksområdene for nevrale nettverk er:

    Klassifisering - datafordeling etter parametere. For eksempel gis et sett med personer ved inngangen, og det er nødvendig å bestemme hvem av dem som skal gi et lån, og hvem som ikke gjør det. Dette arbeidet kan gjøres av et nevralt nettverk, som analyserer informasjon som alder, soliditet, kreditthistorie, etc.

    Prediksjon - evnen til å forutsi neste trinn. For eksempel stigning eller fall av en aksje basert på situasjonen i aksjemarkedet.

    Anerkjennelse - for tiden den mest utbredte bruken av nevrale nettverk. Brukes på Google når du leter etter et bilde eller i telefonkameraer når det registrerer posisjonen til ansiktet ditt og får det til å skille seg ut og mye mer.

    Nå, for å forstå hvordan nevrale nettverk fungerer, la oss ta en titt på komponentene og deres parametere.

    Hva er et nevron?

    Et nevron er en beregningsenhet som mottar informasjon, utfører enkle beregninger på den og overfører den videre. De er delt inn i tre hovedtyper: inngang (blå), skjult (rød) og utgang (grønn). Det er også et skjevhetsnevron og et kontekstnevron, som vi vil snakke om i neste artikkel. I tilfellet når et nevralt nettverk består av et stort antall nevroner, introduseres begrepet lag. Følgelig er det et inngangslag som mottar informasjon, n skjulte lag (vanligvis ikke mer enn 3) som behandler det og et utgangslag som sender ut resultatet. Hver av nevronene har 2 hovedparametere: inngangsdata og utdata. I tilfellet med en inngangsnevron: input = output. I resten kommer den totale informasjonen til alle nevroner fra forrige lag inn i inngangsfeltet, hvoretter den normaliseres ved hjelp av aktiveringsfunksjonen (for nå, representer den bare f (x)) og kommer inn i utgangsfeltet.

    Viktig å huske at nevroner opererer med tall i området eller [-1,1]. Men hva, spør du, håndtere tall som går utenfor dette området? På dette stadiet er det enkleste svaret å dele 1 på det tallet. Denne prosessen kalles normalisering og brukes veldig ofte i nevrale nettverk. Mer om dette senere.

    Hva er en synapse?

    En synapse er en forbindelse mellom to nevroner. Synapser har 1 parameter - vekt. Takket være ham endres inngangsinformasjonen når den overføres fra en nevron til en annen. La oss si at det er 3 nevroner som overfører informasjon til den neste. Da har vi 3 vekter som tilsvarer hver av disse nevronene. For nevronet med større vekt vil denne informasjonen være dominerende i neste nevron (for eksempel fargeblanding). Faktisk er settet med vekter til et nevralt nettverk eller en matrise av vekter en slags hjerne i hele systemet. Det er takket være disse vektingene at inndatainformasjonen behandles og konverteres til et resultat.

    Viktig å huske at under initialiseringen av det nevrale nettverket blir vektene tilfeldig tildelt.

    Hvordan fungerer et nevralt nettverk?

    I dette eksemplet er en del av et nevralt nettverk avbildet, der bokstavene I angir inngangsnevronene, bokstaven H angir det skjulte nevronet, og bokstaven w angir vektene. Det kan sees fra formelen at inndatainformasjonen er summen av alle inndata multiplisert med de tilsvarende vektene. Så gir vi inngangen 1 og 0. La w1 = 0,4 og w2 = 0,7 Inndataene til nevronet H1 vil være som følger: 1 * 0,4 + 0 * 0,7 = 0,4. Nå som vi har inngangen, kan vi få utgangen ved å plugge inngangen inn i aktiveringsfunksjonen (mer om det senere). Nå som vi har utgangen, sender vi den videre. Og så gjentar vi for alle lag til vi kommer til utgangsnevronet. Ved å starte et slikt nettverk for første gang vil vi se at svaret er langt fra riktig, fordi nettverket ikke er trent. Vi vil lære henne å forbedre resultatene. Men før vi lærer hvordan du gjør dette, la oss introdusere noen få termer og egenskaper til et nevralt nettverk.

    Aktiveringsfunksjon

    En aktiveringsfunksjon er en måte å normalisere inndata (vi snakket om dette tidligere). Det vil si at hvis du har et stort tall ved inngangen, etter å ha passert det gjennom aktiveringsfunksjonen, vil du få en utgang i området du trenger. Det er mange aktiveringsfunksjoner, så vi vil vurdere de mest grunnleggende: Lineær, Sigmoid (Logistisk) og Hyperbolsk tangent. Hovedforskjellen deres er rekkevidden av verdier.

    Lineær funksjon

    Denne funksjonen brukes nesten aldri, bortsett fra når du trenger å teste et nevralt nettverk eller overføre en verdi uten transformasjoner.

    Sigmoid

    Dette er den vanligste aktiveringsfunksjonen og dens verdiområde. Det er på den de fleste eksemplene på nettet vises, det kalles også noen ganger logistikkfunksjonen. Følgelig, hvis det i ditt tilfelle er negative verdier (for eksempel kan aksjer gå ikke bare opp, men også ned), så trenger du en funksjon som også fanger opp negative verdier.

    Hyperbolsk tangent

    Det er fornuftig å bruke den hyperbolske tangenten bare når verdiene dine kan være både negative og positive, siden funksjonens rekkevidde er [-1,1]. Det er upassende å bruke denne funksjonen bare med positive verdier, da det vil forverre resultatene av det nevrale nettverket betydelig.

    Treningssett

    Et treningssett er en sekvens av data som et nevralt nettverk opererer på. I vårt tilfelle, den eksklusive eller (xor) har vi bare 4 forskjellige utfall, det vil si at vi vil ha 4 treningssett: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

    Iterasjon

    Dette er en slags teller som øker hver gang det nevrale nettverket går gjennom ett treningssett. Med andre ord er dette det totale antallet treningssett som det nevrale nettverket krysser.

    Epoke

    Ved initialisering av det nevrale nettverket settes denne verdien til 0 og har et manuelt innstilt tak. Jo større epoke, jo bedre er nettverket trent og følgelig resultatet. Epoken øker hver gang vi går gjennom hele settet med treningssett, i vårt tilfelle 4 sett eller 4 iterasjoner.

    Viktig ikke forveksle iterasjon med epoke og forstå sekvensen av deres økning. Første nnår iterasjonen øker, og deretter epoken og ikke omvendt. Med andre ord, du kan ikke først trene et nevralt nettverk bare på ett sett, deretter på et annet osv. Du må trene hvert sett en gang per epoke. På denne måten kan du unngå feil i beregninger.

    Feil

    Feil er en prosentandel som representerer avviket mellom forventede og mottatte svar. Feilen dannes hver epoke og bør avta. Hvis dette ikke skjer, gjør du noe galt. Feilen kan beregnes på forskjellige måter, men vi vil kun vurdere tre hovedmåter: Mean Squared Error (heretter MSE), Root MSE og Arctan. Det er ingen begrensning på bruk som i aktiveringsfunksjonen, og du står fritt til å velge hvilken metode som gir deg best resultat. Man trenger bare å ta hensyn til at hver metode teller feil på forskjellige måter. I Arctan vil feilen, nesten alltid, være større, siden den fungerer etter prinsippet: jo større forskjell, jo større feil. Root MSE vil ha den minste feilen, derfor brukes oftest MSE, som holder balanse i feilberegningen.

    Root MSE

    Arctan

    Prinsippet for å beregne feilen er det samme i alle tilfeller. For hvert sett teller vi feilen og trekker den fra det ideelle svaret. Videre, enten kvadrerer vi det, eller vi beregner kvadrattangensen fra denne forskjellen, hvoretter vi deler det resulterende tallet med antall sett.

    Oppgave

    Nå, for å teste deg selv, beregne resultatet av et gitt nevralt nettverk ved å bruke en sigmoid og feilen ved hjelp av MSE.

    Data:

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

    Løsning

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

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

    H2inngang = 1 * 0,78 + 0 * 0,13 = 0,78

    H2output = sigmoid (0,78) = 0,69

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

    O1-utgang = sigmoid (-0,672) = 0,33

    O1ideal = 1 (0xor1 = 1)

    Feil = ((1-0,33) ^ 2) /1=0,45

    Resultatet er 0,33, feilen er 45%.

    Tusen takk for oppmerksomheten! Håper denne artikkelen var i stand til å hjelpe deg å lære om nevrale nettverk. I den neste artikkelen vil jeg snakke om forskyvningsnevroner og hvordan man trener et nevralt nettverk ved å bruke tilbakepropagasjon og gradientnedstigning.

    Ressurser brukt:

    De siste årene har den teknologiske utviklingen akselerert så mye at den har sluttet å overraske oss spesielt. Vi har nesten blitt vant til tanken om at veiene i årene som kommer vil oversvømmes av biler med autopilot, og den personlige datamaskinen som samtalepartner vil være mer interessant enn folk flest. Et slikt sprang i teknologi er gitt av et gjennombrudd i et nytt kunnskapsfelt - nevrale nettverk. Selv de som aldri har vært interessert i IT-verdenen burde vite hva det er.

    Kort beskrivelse av fenomenet

    Nevrale nettverket slike datasystemer kalles, som har evnen til å lære seg selv og den gradvise økningen i produktiviteten. De brukes til å løse slike problemer som ikke egner seg til logisk programmering:

    • Maskinlæring er en type kunstig intelligens. Dens særegenhet ligger i gradvis læring ved å bruke eksemplet på millioner av lignende oppgaver;
    • I robotikk brukes systemet til å generere en rekke algoritmer for jern-"hjernene" til automatiske systemer;
    • Arkitekter av datasystemer finner i nevrale nettverk en av løsningene på problemet med parallell databehandling;
    • Det er også mange andre alternativer for implementering: løse rent matematiske problemer, datamaskinbasert modellering av naturlig intelligens, etc.

    Hovedelementene i et slikt nettverk er:

    1. Kunstige nevroner er elementære, sammenkoblede enheter;
    2. Synapse er en forbindelse som tjener til å sende og motta data mellom nevroner;
    3. Signal - informasjon som skal overføres.

    Konvolusjonelle nevrale nettverk

    En av de mest populære typene nevrale nettverk er den såkalte konvolusjonell, som har vist seg å være effektiv i gjenkjenning av visuelt mønster (bilde og video), anbefalingssystemer og naturlig språkbehandling:

    • De er perfekt skalerbare og kan brukes til mønstergjenkjenning av enhver høy oppløsning;
    • De bruker volumetriske (tredimensjonale) nevroner. Nevronene i laget er kun forbundet med små områder som kalles det reseptive feltet;
    • Nevroner av nabolag er forbundet med mekanismen for romlig lokalisering. Å stable mange slike lag gir ikke-lineære filtre som reagerer på flere og flere piksler;
    • Hvert filter utvides til å dekke hele synsfeltet. Disse enhetene er replikert, deler de tilgjengelige parameterne og danner et kart. Dermed begynner alle nevroner i et bestemt konvolusjonslag å reagere på det samme objektet (innenfor et spesifikt responsområde).

    En ekskursjon i historien

    Den praktiske implementeringen av maskinlæringsteori har blitt mulig først i dag, takket være fremveksten av relativt billig og samtidig kraftig "maskinvare". Imidlertid går teoretisk forskning på dette emnet mer enn et dusin år tilbake:

    • Den første beregningsmessige terskellogikkmodellen basert på matematikk og algoritmer ble bygget av Warren McCulloch og Walter Pitts i 1943;
    • På slutten av 1940-tallet utviklet Donald Hebb mekanismen for nevral plastisitet og la derved reglene for læring av automater;
    • 1954 dateres tilbake til den første anvendelsen av teoretiske oppdagelser i arbeidet med datamaskiner. Alison Clarke brukte en konvensjonell kalkulator til dette formålet;
    • Frank Rosenblatt i 1958 utviklet en mønstergjenkjenningsalgoritme og matematisk notasjon for den;
    • På slutten av 1960-tallet har den vitenskapelige interessen for problemet forsvunnet merkbart på grunn av umuligheten av å bruke det på datidens maskinvareanlegg;
    • Kybernetikk kom tilbake til nevrale nettverk først på begynnelsen av 1980-tallet: et system med en tilbakemeldingsmekanisme dukket opp, selvlærende algoritmer ble utviklet og grunnlaget for datautvinningsdisiplinen ble lagt;
    • På 2000-tallet hadde datakraften til datamaskiner vokst så mye at den gjorde det mulig å realisere de mest vågale ambisjonene til lenestolforskere. Programmer for stemmegjenkjenning, datasyn osv. har blitt utbredt.

    Hopfield nevrale nettverk

    I 1982 beskrev den amerikanske vitenskapsmannen John Hopfield en ny type datasystem som nå bærer navnet hans. Blant dens karakteristiske trekk:

    1. Blokker i nettverket kan bare ta to verdier for å beskrive tilstanden deres: 1 og -1. Hvert par av verdienheter snakker om muligheten eller umuligheten av å koble sammen nodene i grafen;
    2. Oppdatering av én node i den kunstige nevronmodelleringsgrafen utføres asynkront eller synkront. I det første tilfellet oppdateres bare én blokk, som kan velges tilfeldig. I det andre tilfellet oppdateres alle blokker samtidig;
    3. Nettverket er preget av en tilstand som kalles "energi". Nettverksoppdateringer skjer alltid ved maksimale energiverdier;
    4. Reglene for å trene et nettverk ligner på mekanismene for menneskelig intelligens. Det er mulig å koble nye data ved hjelp av gamle data (lokal regel) eller uten å referere til gamle mønstre (tilleggsregel).

    På grunn av sin nærhet til biologiske prøver, brukes denne modellen ofte for å forstå funksjonen til menneskelig hukommelse.

    Store begrensninger og utfordringer

    Liste over hovedfag krav på moderne gruvemetoder data koker ned til følgende:

    1. Det tar betydelig tid å samle relevant informasjon og deretter trene maskinen. Først og fremst gjelder det robotikk;
    2. Ingen av de eksisterende systemene er i stand til å løse grunnleggende matematiske problemer (det reisende selgerproblemet og faktorisering av store tall);
    3. Høy kompleksitet ved å lage, konfigurere og vedlikeholde systemer. Dette krever spesialister med svært høye kvalifikasjoner, og bare svært store selskaper har råd til å betale for tjenestene deres;
    4. For effektiv drift er det nødvendig å ha høyytelses datafarmer og programvare. Problemet blir gradvis løst takket være økningen i maskinvarekraften til GPUene: fra 1991 til 2015 økte den en million ganger.

    Til tross for mange problemer, er nevrale nettverk det beste menneskeheten har i dag på vei mot kunstig intelligens. De brukes nesten overalt: autopiloter i fly og biler, programmer for å oppdage kredittkortsvindel, mestre spillet Go (logisk brettspill), etc.

    Tilbakevendende nevrale nettverk

    Hvis forbindelsene mellom blokkene danner en orientert syklus (de starter og slutter i samme toppunkt på grafen), så snakker vi om tilbakevendende nevrale nettverk:

    • Hver forbindelse har en viss vekt (prioritet);
    • Noder er delt inn i to typer: input, output og skjult;
    • Informasjon kan overføres ikke bare i en rett linje (lag for lag), men også mellom nevroner. Så individuelle elementer kan motta data om den forrige posisjonen til systemet;
    • Et særtrekk er det såkalte oppmerksomhetskonseptet: Maskinen kan peke på visse databiter som krever dybdebehandling.

    På grunn av designfunksjonene brukes nettverket til å løse et bredt spekter av oppgaver:

    • Gjenkjennelse av verbale og tekstdata;
    • Samtidig er det vanskelig å forstå betydningen av teksten: maskinen "ser" bare et visuelt bilde uten referanse til kvalitative egenskaper;
    • RNN brukes for tiden i automatiserte tekstoversettelsessystemer (for eksempel Yandex.Translator).

    Hvis de smarteste menneskene på planeten på 1900-tallet var engasjert i design av raketter, er nå gjenstanden for anvendelsen av deres intellektuelle potensial nevrale nettverk. Det er vanskelig å ikke vite hva dette er i dag, fordi de ledende mediene utbasunerer prestasjonen på dette området ved hvert trinn. De mest kjente eksemplene er Apples stemmeassistent Siri, Google Translate online-oversetter og Yandex sin Palekh-søkemotor. Og dette er bare begynnelsen på veien mot fullverdig kunstig intelligens.

    Video om enheten til nevrale nettverk

    I denne videoen vil Oleg Voloshin fortelle på et enkelt språk hvordan moderne nevrale nettverk fungerer, hva deres funksjonalitet er basert på:

    Kunstig intelligens og nevrale nettverk blir nå mer populært enn noen gang. Mange brukere stiller oftere og oftere spørsmål om hvordan nevrale nettverk fungerer, hva de er og hva er prinsippet for deres aktivitet basert på?

    Disse spørsmålene, sammen med deres popularitet, er også av betydelig kompleksitet, siden prosesser er komplekse maskinlæringsalgoritmer designet for ulike formål, fra å analysere endringer til modellering av risiko forbundet med visse handlinger.

    Hva er nevrale nettverk og deres typer?

    Det første spørsmålet som dukker opp fra de interesserte er hva er et nevralt nettverk? I den klassiske definisjonen er dette en viss sekvens av nevroner som er forbundet med synapser. Nevrale nettverk er en forenklet modell av biologiske analoger.

    Programmet, som har strukturen til et nevralt nettverk, gjør det mulig for maskinen å analysere inndataene og huske resultatet hentet fra visse kilder. Deretter tillater en lignende tilnærming å hente fra minnet resultatet som tilsvarer det gjeldende datasettet, hvis det allerede var tilgjengelig i opplevelsen av nettverkssykluser.

    Mange mennesker oppfatter det nevrale nettverket som analogt med den menneskelige hjernen. På den ene siden kan denne dommen betraktes som nær sannheten, men på den annen side er den menneskelige hjernen en for kompleks mekanisme til å kunne gjenskape den med en maskin minst en brøkdel av en prosent. Et nevralt nettverk er for det første et program basert på prinsippet om hjernens operasjon, men på ingen måte dets analoge.

    Et nevralt nettverk er en haug med nevroner, som hver mottar informasjon, behandler den og overfører den til en annen nevron. Hvert nevron behandler signalet nøyaktig det samme.

    Hvordan får man da et annet resultat? Det handler om synapser som kobler nevroner til hverandre. En nevron kan ha et stort antall synapser som forsterker eller demper et signal, og de har evnen til å endre egenskapene sine over tid.

    Det er nettopp de riktig valgte synapseparametrene som gjør det mulig å oppnå det riktige resultatet av å konvertere inndataene ved utgangen.

    Etter å ha definert i generelle termer hva et nevralt nettverk er, kan vi skille hovedtypene av deres klassifisering. Før du fortsetter med klassifiseringen, er det nødvendig å innføre en presisering. Hvert nettverk har et første lag med nevroner kalt inngangslaget.

    Den utfører ingen beregninger og transformasjoner, dens oppgave er bare én ting: å motta og distribuere inngangssignalene til resten av nevronene. Dette er det eneste laget som er felles for alle typer nevrale nettverk, deres videre struktur er kriteriet for hovedinndelingen.

    • Enkeltlags nevrale nettverk. Dette er strukturen til interaksjonen mellom nevroner, der, etter at inngangsdataene kommer inn i det første inngangslaget, blir de umiddelbart overført til utgangslaget til det endelige resultatet. I dette tilfellet vurderes ikke det første inngangslaget, siden det ikke utfører noen handlinger, bortsett fra mottak og distribusjon, som allerede nevnt ovenfor. Og det andre laget utfører alle nødvendige beregninger og prosessering og produserer umiddelbart det endelige resultatet. Inngangsnevroner er koblet til hovedlaget ved hjelp av synapser, som har ulik vekt som sikrer kvaliteten på forbindelsene.
    • Flerlags nevrale nettverk. Som det fremgår av definisjonen, har denne typen nevrale nettverk, i tillegg til input- og output-lagene, også mellomlag. Antallet deres avhenger av graden av kompleksitet til selve nettverket. Det minner mer om strukturen til et biologisk nevralt nettverk. Denne typen nettverk ble utviklet ganske nylig, før det ble alle prosesser implementert ved bruk av enkeltlagsnettverk. Følgelig har en slik løsning mye flere muligheter enn sin forfar. I prosessen med informasjonsbehandling er hvert mellomlag et mellomtrinn i behandlingen og distribusjonen av informasjon.

    Avhengig av retningen for distribusjon av informasjon på tvers av synapser fra en nevron til en annen, kan nettverk også klassifiseres i to kategorier.

    • Feedforward-nettverk eller ensrettet, det vil si en struktur der signalet beveger seg strengt fra inngangslaget til utgangen. Signalbevegelse i motsatt retning er umulig. Slike utviklinger er ganske utbredt, og for øyeblikket løser de problemer som gjenkjennelse, spådommer eller gruppering.
    • Tilbakemeldingsnettverk eller tilbakevendende nettverk. Slike nettverk lar signalet bevege seg ikke bare i foroverretningen, men også i motsatt retning. Hva gjør den? I slike nettverk kan resultatet av utgangen returneres til inngangen på grunnlag av dette, utgangen til nevronen bestemmes av vektene og inngangssignalene, og suppleres av de tidligere utgangene, som igjen returnerte til inngangen. Slike nettverk er preget av funksjonen til korttidsminne, på grunnlag av hvilke signaler gjenopprettes og suppleres under behandling.

    Dette er ikke de eneste alternativene for å klassifisere nettverk.

    De kan deles inn i homogene og hybride basert på typene nevroner som utgjør nettverket. Og også på hetero-assosiativ eller auto-assosiativ, avhengig av metoden for å undervise nettverket, med eller uten lærer. Du kan også klassifisere nettverk i henhold til deres formål.

    Hvor brukes nevrale nettverk?

    Nevrale nettverk brukes til å løse en rekke problemer. Hvis vi vurderer oppgavene i henhold til graden av kompleksitet, er et vanlig dataprogram egnet for å løse de enkleste oppgavene, mer
    kompliserte oppgaver som krever enkel prognose eller tilnærmet løsning av ligninger, programmer som bruker statistiske metoder brukes.

    Men oppgaver på et enda mer komplekst nivå krever en helt annen tilnærming. Spesielt gjelder dette mønstergjenkjenning, tale eller kompleks prediksjon. I en persons hode skjer slike prosesser ubevisst, det vil si gjenkjenne og huske bilder, en person er ikke klar over hvordan denne prosessen foregår, og kan derfor ikke kontrollere den.

    Dette er oppgavene som nevrale nettverk er med på å løse, det vil si at de er skapt for å utføre prosesser hvis algoritmer er ukjente.

    Dermed er nevrale nettverk mye brukt i følgende områder:

    • anerkjennelse, og denne retningen er for tiden den bredeste;
    • forutsi neste trinn, denne funksjonen er anvendelig i handel og aksjemarkeder;
    • klassifisering av inngangsdata etter parametere, en slik funksjon utføres av kredittroboter som er i stand til å ta en beslutning om å godkjenne et lån til en person, avhengig av et inputsett med forskjellige parametere.

    Evnen til nevrale nettverk gjør dem veldig populære. De kan læres mye, som å spille spill, gjenkjenne en bestemt stemme og så videre. Ut fra det faktum at kunstige nettverk er bygget på prinsippet om biologiske nettverk, kan de trenes i alle prosessene som en person utfører ubevisst.

    Hva er nevroner og synapser?

    Så hva er et nevron når det gjelder kunstige nevrale nettverk? Dette begrepet refererer til en enhet som utfører beregninger. Den mottar informasjon fra inngangslaget til nettverket, utfører enkle beregninger med den og spiser den opp til neste nevron.

    Nettverket inneholder tre typer nevroner: input, skjult og utgang. Dessuten, hvis nettverket er enkeltlags, inneholder det ikke skjulte nevroner. I tillegg er det en rekke enheter kalt forskyvningsnevron og kontekstnevron.

    Hvert nevron har to typer data: input og output. I dette tilfellet er inngangsdataene for det første laget lik utdataene. I andre tilfeller kommer den totale informasjonen til de foregående lagene til inngangen til nevronet, deretter går den gjennom normaliseringsprosessen, det vil si at alle verdier som faller utenfor det nødvendige området konverteres av aktiveringsfunksjonen.

    Som nevnt ovenfor er en synapse en forbindelse mellom nevroner, som hver har sin egen vektgrad. Det er takket være denne funksjonen at inndatainformasjonen endres under overføringen. I prosesseringsprosessen vil informasjonen som overføres av synapsen med en stor vektindikator råde.

    Det viser seg at resultatet ikke er påvirket av nevroner, men av synapser, som gir et visst sett med inputdatavekter, siden nevronene selv utfører nøyaktig de samme beregningene hver gang.

    I dette tilfellet settes vektene i tilfeldig rekkefølge.

    Opplegget til det nevrale nettverket

    Det kreves ingen spesielle ferdigheter for å forstå hvordan et nevralt nettverk fungerer. Visse informasjon kommer til inngangslaget til nevroner. Det overføres gjennom synapser til neste lag, mens hver synapse har sin egen vektkoeffisient, og hver neste nevron kan ha flere innkommende synapser.

    Som et resultat er informasjonen som mottas av neste nevron summen av alle data, hver multiplisert med sin egen vektkoeffisient. Den resulterende verdien erstattes med aktiveringsfunksjonen og utdatainformasjonen oppnås, som sendes videre til den når den endelige utgangen. Den første lanseringen av nettverket gir ikke korrekte resultater, siden nettverket ennå ikke er opplært.

    Aktiveringsfunksjonen brukes til å normalisere inndataene. Det er mange slike funksjoner, men det er flere hovedfunksjoner som er mest utbredt. Hovedforskjellen deres er rekkevidden av verdier de opererer i.

    • Den lineære funksjonen f (x) = x, den enkleste av alle mulige, brukes bare for å teste det opprettede nevrale nettverket eller overføre data i sin opprinnelige form.
    • Sigmoiden regnes som den vanligste aktiveringsfunksjonen og har formen f (x) = 1/1 + e- ×; området for dens verdier er fra 0 til 1. Det kalles også den logistiske funksjonen.
    • Den hyperbolske tangenten brukes også til å dekke negative verdier. F (x) = e² × - 1 / e² × + 1 - denne funksjonen har denne formen og området som den har fra -1 til 1. Hvis det nevrale nettverket ikke sørger for bruk av negative verdier, bør du ikke bruk det.

    For å sette dataene til nettverket den skal operere med, trengs treningssett.

    Integrasjon er en teller som øker for hvert treningssett.

    Epoken er en indikator på treningsnivået til det nevrale nettverket, denne indikatoren øker hver gang nettverket går gjennom en syklus med et komplett sett med treningssett.

    Følgelig, for å trene nettverket riktig, må du utføre sett, og konsekvent øke epokeindikatoren.

    I løpet av treningen vil feil bli avslørt. Det er prosentandelen av avviket mellom oppnådd resultat og ønsket resultat. Denne indikatoren bør reduseres i prosessen med å øke epokeindikatoren, ellers er det en utviklerfeil et sted.

    Hva er et forskyvningsnevron og hva er det for?

    Det er en annen type nevron i nevrale nettverk - forskyvningsnevronet. Den skiller seg fra hovedtypen nevroner ved at dens input og output i alle fall er lik én. Dessuten har ikke slike nevroner inngangssynapser.

    Arrangementet av slike nevroner skjer ett per lag og ikke flere; de ​​kan heller ikke kobles til hverandre med synapser. Det er ikke tilrådelig å plassere slike nevroner på utgangslaget.

    Hva trengs de til? Det er situasjoner der et nevralt nettverk rett og slett ikke kan finne den rette løsningen på grunn av at det ønskede punktet vil være utenfor rekkevidde. Det er for dette at slike nevroner er nødvendige for å kunne skifte definisjonsregionen.

    Det vil si at vekten av synapsen endrer bøyningen av funksjonsgrafen, mens forskyvningsneuronen tillater en forskyvning langs X-koordinataksen, slik at det nevrale nettverket kan fange opp et område som er utilgjengelig for det uten en forskyvning. I dette tilfellet kan skiftet utføres både til høyre og venstre. Skjematisk er skiftneuroner vanligvis ikke indikert, vekten deres tas som standard i betraktning ved beregning av inngangsverdien.

    Dessuten vil skjevne nevroner tillate deg å få resultatet i tilfellet når alle andre nevroner gir 0 som en utgangsparameter. I dette tilfellet, uavhengig av vekten av synapsen, vil denne verdien bli overført til hvert neste lag.

    Tilstedeværelsen av et skjevhetsnevron vil korrigere situasjonen og få et annet resultat. Gjennomførbarheten av å bruke skjevne nevroner bestemmes ved å teste nettverket med og uten dem og sammenligne resultatene.

    Men det er viktig å huske at det ikke er nok å skape et nevralt nettverk for å oppnå resultater. Det må også trenes, noe som også krever spesielle tilnærminger og har sine egne algoritmer. Denne prosessen kan neppe kalles enkel, siden implementeringen krever viss kunnskap og innsats.