Hvad skal man gøre med et neuralt netværk. Neurale netværk

Neurale netværk er kunstige hjerner, der nemt kan slå de bedste Go- eller skakspillere, tegne som berømte kunstnere, køre bil, være kassedame i butikker og skrive sange. 20-30 år vil gå, og en del af arbejdet, som nu kun er i stand til kvalificerede specialister, vil blive "flyttet over på skuldrene" af neurale netværk. Hvem ved, måske vil du og jeg i vores alderdom befinde os fuldstændig i den virtuelle verden, og her - i den rigtige - vil maskiner regere. Næsten som i "The Matrix", hehe. Der er ikke noget at være bange for endnu, men at vide hvad det er – kunstig intelligens er fremtiden.

Hvad er neurale netværk?

Kunstigt neuralt netværk - dette er en matematisk model, som er baseret på de samme principper som biologiske neurale netværk. De blev endda opfundet i processen med at studere hjerneaktivitet.

Et kunstigt neuralt netværk (ANN) består af små neuronprocessorer. Hver af dem arbejder kun med et korn af generel indgående information og udfører en simpel rolle. Men hvis du kombinerer disse celler, kan de klare opgaver, som konventionelle programmeringsmetoder ikke kan klare.

ANN'ernes vigtigste evne er deres evne til at lære. Med hver brug, med hver kørsel, laver det neurale netværk færre og færre fejl og producerer et resultat, der er tættere og tættere på det ideelle. Her er et lille eksempel: en ANN bliver bedt om at bestemme, hvad der vises på billedet. Efter at have behandlet 100 eksempler, forstår netværket, at dette er en hund, efter at have behandlet 1.000, kan det bestemme racen efter at have behandlet 1.000.000, det kan bestemme alderen;

Hvem skabte dem og hvordan?

Tak til forskerne W. Pitts og W. McCulloch for at skabe et så praktisk værktøj. De dannede selve konceptet om et neuralt netværk. Dette skete igen i 1943, og N. Wiener foreslog at implementere konceptet ved hjælp af vakuumrør. I sit arbejde med kybernetik præsenterede han kroppens biologiske processer i form af matematiske modeller.

6 år senere, i 1949, foreslog D. Hebb den første indlæringsalgoritme, og de efterfølgende år var præget af skabelsen af ​​flere grundlæggende versioner af ANN:

  • 1958 - skabelse af perceptonen af ​​F. Rosenblatt. Bruges til vejrudsigt, mønstergenkendelse og lignende opgaver;
  • 1960 - udvikling af adaline af B. Widrow B og M. Hoff. Fundet anvendelse i adaptive kontrolsystemer og forudsigelsesproblemer. Stadig et standardelement i en række signalbehandlingssystemer;
  • 1972 - oprettelse af en ny type neurale netværk, der kan fungere som hukommelse;
  • 1975 - fremkomsten af ​​kognitronen, et selvorganiserende netværk til mønstergenkendelse;
  • 2007 - oprettelse af deep learning algoritmer af Geoffrey Hinton.

ANN's historie er cyklisk med både lange perioder med fald i interessen og lynhurtige stigninger. Nu har vi at gøre med toppen af ​​interessen. For en sådan spænding bør vi takke udviklingen af ​​nye læringsalgoritmer. De tillod neurale netværk at nå det moderne niveau.

Kan neurale netværk lære?

Dette er deres hovedtræk. Mens enklere algoritmer altid reagerer på den samme datastrøm på samme måde, opfører neurale netværk sig anderledes. Hver gang, der behandles data, ændres de frie elementer i neurale netværk, idet de husker tidligere erfaringer. Med dens hjælp øges nøjagtigheden af ​​arbejdet, og sandsynligheden for fejl falder. Hvordan flere data vi sender det gennem et neuralt netværk, jo mere effektivt vil det være.

Hvor bruges neurale netværk?

Hvis du tænker et sekund og ser godt efter, viser det sig, at de faktisk allerede bruges overalt.

Det enkleste eksempel er Googles stemmegenkendelsesteknologi. Det blev redesignet under hensyntagen til ANN for tre år siden, hvilket samtidig øgede kvaliteten af ​​tjenesten betydeligt. Ansigtsgenkendelsessystemer? Neurale netværk igen. Forudsige vejr og aktiekurser? De er de samme igen. Og det tæller ikke de mange mere beskedne anvendelsesområder for tjenester og applikationer med.

For eksempel blev teksterne til albummet af den fiktive gruppe Neural Defense skrevet af et neuralt netværk. Hvis du ikke er fan af Yegor Letov, vil det være åh så svært at skelne originalen fra imitatorerne!

Eller en Nvidia-ingeniør brugte et neuralt netværk til at træne overvågningskameraer. Nu, når en kat kommer ind i kameraet i nærheden af ​​sit hus, tændes plænevandingssystemet automatisk - katten trækker sig straks tilbage, og husets territorium forbliver umarkeret. Interessant nok blev netværket trænet til at genkende katte ved hjælp af Google-billeder til forespørgslen "kat".

På den næsten færdige Zenit Arena planlægger de også at bruge et neuralt netværk til ansigtsgenkendelse. Hvis en fan med et særligt voldsomt temperament fanges på kamera, vil systemet rapportere dette til stadionsikkerheden.

Og den berygtede Prisma bruger også neurale netværk?

Ja, det anvender faktisk ikke kun et filter på billedet. trækker over dit billede og efterligner rigtige kunstnere. Alt arbejdet her udføres også af kunstige neurale netværk. Og derfor har programmet brug for en internetforbindelse.

Sidste år vandt en lignende onlinetjeneste http://deepdreamgenerator.com/ i øvrigt popularitet. Efter at brugeren har sendt et billede til det, viser programmet billedet, som det ses af det neurale netværk, der genkender objekter. Mange blev derefter underholdt af billeder, der mindede mere om visuelle hallucinationer. Men dette er et godt eksempel på selvlæringsprocessen. Helt i begyndelsen var hundenes ansigter synlige hist og her på de bearbejdede billeder, som forsvandt med tiden og gav plads til mere velkendte husholdningsartikler. Mange mennesker blev da overraskede - hvor kom de fra, hvis der ikke engang lugtede af dem der? Svaret er enkelt: til den indledende træning af det neurale netværk blev fotografier af hunde brugt. Så ANN så dem overalt, før hun lærte nye fag.

Slår neurale netværk mennesker?

For kort tid siden delte udviklerne af Google DeepMind neurale netværk aktivt deres næste præstation - oprettelsen af ​​AlphaGo-programmet, som kunne slå i gang en af ​​de stærkeste verdensmestre, koreanske Lee Sidol.

Med hensyn til programmering af en kunstig modstander er dette spil flere gange mere komplekst end skak, fordi antallet af mulige positioner dér er mange gange højere. I lang tid kunne udviklere ikke skabe et program, der var i stand til at yde værdig modstand til fagfolk, men med involvering af neurale netværk gik tingene op ad bakke. Det er for tidligt at sige, at robotter har en total fordel i forhold til mennesker, når de spiller Go – vi har åbenbart stadig mange kampe mellem mennesker og maskiner forude – men fremskridt, som de siger, er åbenlyst. I mellemtiden har forfatterne af AlphaGo allerede delt planer for deres næste skabelse: bots til online skydespil.

Kan et neuralt netværk gætte min adgangskode?

Måske, og ganske vellykket. Men spørgsmålet bør stilles anderledes: er det det værd? Uanset hvor smart kunstig intelligens er, er den simpelthen ikke i stand til at tilbyde noget bedre end en banal søgning af muligheder. Resultatet bliver ikke bedre end den mest primitive algoritme eller simpel manuel søgning. På den anden side kan du lade det neurale netværk analysere alle brugerens seneste handlinger, mindeværdige datoer og fødselsdage for familie og kære, de hyppigste indtjekningssteder, yndlingsfilm, bøger, spil og så videre. Det eneste, der er tilbage at gøre, er at finde en masse mennesker, der er villige til at afsløre deres rigtige adgangskode, som det neurale netværk kunne lære.

Overvåger neurale netværk mig?

Et af anvendelsesområderne for neurale netværk er ansigtsgenkendelse. Et sådant system vil i fremtiden kunne behandle billeder fra overvågningskameraer i realtid og identificere personer på dem.

Det ser ud til, at det er tid til at begynde at slå alarm - en fuldgyldig Big Brother er lige rundt om hjørnet, men lad os se på situationen fra et andet synspunkt. For det første "lækker" vi selv frivilligt en masse personlige oplysninger ud på internettet - husk blot anklagerne mod Googles stemmeassistent og Windows 10. Om det er godt eller dårligt kan diskuteres, indtil man er hæs, men det hele endte med en ganske forventet fald i interessen for emnet, hvorefter det naturligvis sank i glemmebogen. I mellemtiden fortsætter disse virksomheders neurale netværk med at indsamle vores data, om end anonymt.

På den anden side, hvis det neurale netværk genkender en rigtig terrorist ved indgangen til lufthavnen, kan dette redde mange liv, og i dette tilfælde, hvad pokker med privatlivets fred?

Er det neurale netværk fremtidens Skynet?

Den største fordel ved ANN'er er deres evne til selv at lære. Dette giver dem et utroligt potentiale i at udvikle kunstig intelligens. Døm selv: det er umuligt at programmere alle mulige situationer ind i robottens hukommelse, selv i teorien. Men hvis kunstig intelligens kan få erfaring på egen hånd, vil den i sidste ende udvikle sig til det punkt, hvor den vil være i stand til at klare selv en situation, som den ikke var forberedt på.

Tilføj en metalskal og servoer til den, og vi har en fuldgyldig robot foran os. Venter et oprør på os? Elon Musk og Stephen Hawking er for eksempel allerede ved at slå alarm. Men jeg vil gerne tro, at udviklerne vil tage alle nødvendige forholdsregler for at beskytte mod dette. Og Asimovs tre love om robotteknologi vil være til stor hjælp.

Hvad byder fremtiden på for os?

Lad os forlade spørgsmålet om Skynets opstand og ødelæggelsen af ​​menneskeheden af ​​robotter. Lad os tale om mere virkelige ting. Anvendelsen af ​​kunstige neurale netværk er mange, og potentialet er næsten uendeligt. Autentificering, forudsigelse, genkendelse af alt og alt er bare de mest oplagte muligheder. Højst sandsynligt vil vi om nogle år have udviklet kunstige intelligenssystemer, som med tiden vil blive mindre og mindre anderledes end nulevende mennesker. Det er dog muligt, at interessen for dette emne vil aftage igen, og IT vil skifte til en form for kvantecomputere.

I 2016 brød internettet ud med en ny bølge af hype - denne gang var emnet for ophedede diskussioner på sociale netværk Deep Dream-projektet, udgivet til offentligheden af ​​Google-programmører. Deep Dream giver alle mulighed for at uploade deres eget billede til behandling af kunstig intelligens.

Ved udgangen modtager brugeren et billede, efterhånden som de neurale netværk "ser" det. Hvordan virker det, og hvad er MNIST? I dag vil vi fortælle dig de grundlæggende principper for kunstig intelligens.

Udflugt i biologi

En persons evne til at fortolke og korrekt opfatte visuel information er sikret af den måske mest komplekse biologiske proces i universet. Samtidig spiller det menneskelige biologiske neurale netværk en enorm rolle i funktionen af ​​det visuelle apparat, som blev prototypen på de første modeller af kunstig intelligens. Hvorfor er hjernen så vigtig for skarpt og klart syn?

Faktum er, at det menneskelige øje opfatter et sløret, omvendt og forkælet billede af en blind vinkel. Det er det, der i første omgang dannes på nethinden, og først derefter overføres til hjernen. Den "vender" allerede billedet, filtrerer unødvendige detaljer fra og fremhæver næsten øjeblikkeligt kendte eller ukendte objekter i synsfeltet. Baseret på den modtagne information "udsender nervesystemet instruktioner" til andre organer, det være sig en kraftig bølge af adrenalin i en farlig situation eller en øget følelse af sult ved synet af velsmagende mad.

Grundskoleundervisning, som alle børn gennemgår i en ubevidst alder, spiller en stor rolle i den korrekte identifikation af billeder. For eksempel, når de ser et ukendt dyr, forklarer forældre, at det er en hund og ikke noget andet væsen. Næste gang genkender barnets hjerne straks hunden på baggrund af andre genstande. Således gennem hele livet, efter at have set millioner af billeder, er evnen til at genkende og behandle den nødvendige information finpudset. Til kunstig intelligens bruges billeddatabaser som MNIST som eksempler.

Hvad er et kunstigt neuralt netværk?

Det menneskelige nervesystem består af milliarder af neuroner forbundet med synapser. Hver neuron kan danne og bryde tusindvis af forbindelser med lignende celler på en brøkdel af et sekund. Takket være dette kan vi tænke, analysere, huske og gengive forskellige informationer. Det kunstige neurale netværk (ANN) er det første forsøg på at sætte en maskine i stand til at opnå evnen til at analysere.

Ligesom en biologisk prøve består en ANN af et stort antal neuroner forbundet med synapser. Kun i dette tilfælde er disse ikke celler, men beregningsenheder, der modtager og udsender visse oplysninger. De er opdelt i flere typer (input, skjult, output og kontekstuel). Takket være et lille udvalg af arter er det muligt at organisere en primitiv model af det, vi kalder tænkning.

Neuronsynapser i en ANN har også deres egne parametre. Hver forbindelse mellem en beregningsenhed tildeles en vægt, hvorfor information fra en neuron med stor vægt anses for dominerende. Under processen med at opsætte og træne et kunstigt neuralt netværk kan vægtparametrene ændre sig flere gange.

Hvad er der indeni?

For at oprette en ANN kan du bruge forskellige værktøjer og programmeringssprog i Python er de mest populære til træning. Dette scriptsprog er et af de nemmeste at lære og er ideelt til at udvikle ANN'er. Neurale netværk i Java er mindre populære på grund af deres mere komplekse skrivning.

Hvad der gemmer sig "under motorhjelmen" på ANN er nogle gange ukendt selv for udvikleren selv. Under træningen kan systemet ændre form og adskille sig meget fra dets oprindelige udseende. Et stort antal neuroner er sammensat af hundredvis af perceptronlag, som er "viklet ind" i plastiske netværk af sammenkoblinger.

Generelt er det ret svært at præsentere en generel formel for virkningen af ​​et specifikt neuralt netværk, og det er ikke nødvendigt. Fra et praktisk synspunkt er vi kun interesserede i input- og outputdata fra programmet. Hvor godt en ANN "lærer" at undersøge og identificere billeder afhænger kun af succesen med maskinlæring.

Maskinelæring

I første omgang opstod kunstig intelligens som et initiativ til at skabe et teknologisk værktøj, der kunne løse problemer, der tidligere udelukkende var beregnet til menneskelig tænkning. Området for maskinlæring af neurale netværk som en undersektion af kunstig intelligens opstod for ikke så længe siden i skæringspunktet mellem matematik og datalogi. Hovedmålet med maskinlæring er den korrekte konstruktion af algoritmer baseret på virkelige eksempler på tingenes tilstand. Med enkle ord "lærer" maskinen at vælge den rigtige løsning på et problem ved at søge gennem tusindvis af mulige løsninger.

Det er bedst at overveje maskinlæring i detaljer ved at bruge eksemplet med en ANN, som blev oprettet for at identificere objekter i billeder. Til at begynde med er vægtparametrene for synapser sat tilfældigt. Efter det første resultat af billedbehandlingen (ofte forkert), ændrer det neurale netværk sine parametre, indtil det lærer at finde de ønskede objekter på billedet med en høj grad af sandsynlighed.

Men i nogle tilfælde kan "forkerte lærebøger" ophæve alle anstrengelser fra udviklere. Et magert sæt monotone billeder vil føre til, at programmet simpelthen vil "memorere" de nødvendige definitioner for hvert billede og ikke analysere dets mindste detaljer. Der er en database kaldet MNIST (Mixed National Institute of Standards and Technology) specifikt til sådanne formål. Det inkluderer snesevis af standardiserede prøver af håndskrevne tal på 28x28 pixel billeder.

MNIST er helt åben til brug, enhver interesseret udvikler kan kontrollere deres neurale netværks ydeevne i forhold til databasen. Ud over MNIST kan du bruge ImageNet-databasen fra Stanford University. Det omfatter omkring 14 millioner billeder i forskellige formater.

Typer af neurale netværk

Baseret på arten af ​​forbindelser klassificeres ANN'er i tilbagevendende neurale netværk, radiale basisfunktioner og selvorganiserende kort. I tilbagevendende ANN'er returneres signalet fra outputneuronerne delvist tilbage til systemet for yderligere analyse. Radiale basisnetværk lærer hurtigere på grund af den forskellige placering af de skjulte og outputlag af neuroner. Endelig bruges selvorganiserende netværk til hurtigt at identificere nye, ukendte objekter.

ANN'er er også klassificeret efter arten af ​​træning, vægtindstillinger, typer inputdata og mange andre funktioner. I praktisk brug er mulighederne for kun de tre ovennævnte neurale netværksarkitekturer mest udbredt.

Formål og omfang

Kunstig intelligens er ikke længere en fantasi for science fiction-forfattere, dens enkleste modeller er blevet implementeret selv i almindelige smartphones. ANN'er bruges til tre hovedformål:

  • Klassifikation er fordelingen af ​​en stor mængde data baseret på bestemte parametre. Programmet kan f.eks. beslutte, hvilken af ​​bankens kunder, der skal udstede et lån baseret på deres solvens og kredithistorik;
  • Forecasting er at forudsige udfaldet af begivenheder med en vis grad af sandsynlighed. For eksempel, hvor meget vil en aktieblok være værd på aktiemarkedet;
  • Genkendelse – identifikation af bestemte objekter på et foto eller en video. Det enkleste eksempel er automatisk ansigtsgenkendelse i et smartphone-kamera.

Indtil videre er applikationer til udsmykning af selfies og tjenester til at finde personer baseret på ét billede fortsat de eneste anvendelsesområder for neurale netværk. Vinci, Snapchat eller FaceApp er dog kun toppen af ​​isbjerget. ANN'er kan give et betydeligt skub til automatiseringen af ​​transport, finans, underholdning og andre områder. Takket være kunstig intelligens vil det snart være muligt at slippe af med monotont menneskeligt arbejde.

Desuden kan selv kreativitet sættes i gang. Takket være indsatsen fra Yandex-udviklere dukkede det første musikalbum "404", optaget af et neuralt netværk, op. Albummet blev den første samling af den ikke-eksisterende gruppe Neural Defense, baseret på stilen med Yegor Letovs tekster.

ANN'er kan blive et udgangspunkt for den videre udvikling af assistenter som Siri eller Cortana. Allerede nu kan sådanne systemer understøtte en simpel samtale og besvare brugerens ønskede anmodning. Deep Dream-tjenesten, som lancerede boomet omkring neurale netværk i 2016, er et biprodukt fra Google-udviklere. Ved at bruge de fotografier, han behandlede som eksempel, kan du forestille dig, hvordan en maskine ser dette eller hint billede med sin "hjerne". Naturligvis, for nu, er vilkårlige sammenfiltringer mere som de negative virkninger af psykedeliske stoffer. Ikke desto mindre er dette allerede det første seriøse skridt mod fuldgyldig kunstig intelligens.

Neurale netværk er en matematisk model bygget på principperne for drift af bioniske neurale netværk. At blive bekendt med dette fænomen bør begynde med konceptet om en flerlagsperceptron som den første udførelsesform af dette system som en computermodel.

Hvad er en flerlagsperceptron kort fortalt

En flerlagsperceptron er en hierarkisk computermodel, hvor computeren er bygget af et sæt neuroner af simple noder, der har mange input og et output. Hvert input (synapse) har en vis vægt forbundet med sig.

Systemets indgange forsynes med værdier, der er fordelt langs interneuronforbindelser. Disse værdier, som er reelle tal, ganges med linkvægtene.

Det logiske diagram over driftsprincippet for en perceptron er nemmest repræsenteret ved hjælp af en grafisk tegning med forskellige farver og forbindelser mellem dem:

Brug af neurale netværk

Denne metode bruges til en række forskellige formål. Hvis input f.eks. er kurser for værdipapirer på en børs, kan det resulterende resultat tolkes som et signal om, at værdipapiret vil blive billigere eller dyrere i fremtiden.

Et andet eksempel på den fremtidige brug af neurale netværk er mere præcist at forudsige globale og finansielle recessioner.

Hvis fx lysstyrkeværdien af ​​et sæt rasterpunkter er angivet som input, så kan man ved udgangen få en beslutning om, hvad billedet er.

Ved at bruge dette skema lærte neurale netværk at efterligne malerier af berømte kunstnere, herunder Van Gogh, og også tegne unikke billeder selv i en bred vifte af kunstneriske stilarter.

For en så betydelig præstation i udviklingen af ​​neurale netværk foreslog Google udtrykket konceptisme – maleri skabt af kunstig intelligens og præget af ekstrem psykedelicitet i de bedste traditioner.

For at systemet kan producere korrekte svar, skal det naturligvis justeres. Oprindeligt var driftsprincippet baseret på et randomiseret udvalg af stokastiske variable. Derfor handler algoritmens essens om at sætte systemet til de mest korrekte svar.

Til dette formål blev den neurale netværksstruktur suppleret med en vægtkorrektionsalgoritme for at minimere fejl. Dette er en yderst nyttig ting og er blevet dokumenteret mange gange ved hjælp af mange kommercielle produkter.

Men paradoksalt nok blev systemet stadig ikke lig den menneskelige hjerne. Det blev klart, at for at løse problemer, der er mere alvorlige end en aktiemarkedsprognose, for eksempel for et kontrolsystem til en kompleks robot med multimodal information, skal det neurale netværk være stort, mens traditionelle neurale netværk er vanskelige at lave det.

Faktum er, at hjernen består af 10 milliarder neuroner, som hver har 10.000 forbindelser. Det er et ekstremt energieffektivt og støjbestandigt system, bygget over millioner af år. Hvad er forskellen?

Forskelle i funktionsprincippet for hjernen og neurale netværk

Det hele handler om de forskellige principper for signaltransmission af vores biologiske netværk af neuroner og perceptron. I en flerlagsperceptron udveksler neuroner værdier mellem sig, som er reelle tal. Og i hjernen er der en udveksling af impulser med en strengt fast amplitude og kort varighed. Det vil sige, at impulserne er næsten øjeblikkelige.

Heraf følger en lang række fordele og fordele. For det første er sådanne signallinjer meget økonomiske og lavaktive - næsten intet rejser langs forbindelserne mellem neuroner. I en perceptron skal hver signallinje have en virkelig signifikant værdi.

For det andet sikrer impulssignaltransmissionskredsløbet sammen med energieffektivitet også nem implementering, da generering og behandling af impulser kan udføres ved hjælp af simple analoge kredsløb, i modsætning til komplekse maskiner til at understøtte overførslen af ​​reelle værdier.

For det tredje er pulserede (spike) netværk beskyttet mod interferens. Vi har en kalibreret puls, hvortil tilføjelsen af ​​støj ikke forstyrrer systemets drift. Reelle tal er modtagelige for støj.

Og selvfølgelig, hvis vi taler om numerisk modellering med digital snarere end analog transmission, så skal vi for at kode 1 byte af information bruge 8 signallinjer i stedet for en.

Det vil sige, at digital implementering af sådanne systemer heller ikke er en mulighed. Selv installation af flerlagsroutere løser ikke problemet, da det neurale netværk bremser og fortsætter med at være ineffektivt.

Derfor er det indlysende, at for at skabe storstilede neurale netværk bør der bruges en bionisk tilgang, nemlig at forsøge at skabe et system i hjernens billede og lighed.

Vi vil tale om denne interessante klasse af impulsneurale netværk yderligere:

Video om essensen af ​​neurale netværk i et enkelt sprog:

Introduktion

1. Kunstige neurale netværk

1.1 Paralleller fra biologi

1.2 Definition af ANN

1.3 Neural netværksarkitektur

1.4 Dataindsamling til det neurale netværk

2 Træning

2.1 Tilbage udbredelse algoritme

2.2 Omskoling og generalisering

2.3 Modeller af adaptiv resonans teori

3 Multilayer Perceptron (MLP)

3.1 Flerlagsperceptrontræning

4. Probabilistisk neuralt netværk

5. Generaliseret regression neuralt netværk

6. Lineært netværk

7. Kohonen netværk

8. Klynger

8.1 Vurdering af kvaliteten af ​​klyngedannelse

8.2 Klyngeproces

8.3 Anvendelse af klyngeanalyse

1. Kunstige neurale netværk

Kunstige neurale netværk (ANN) er matematiske modeller, såvel som deres software- eller hardwareimplementeringer, bygget på princippet om organisering og funktion af biologiske neurale netværk - netværk af nerveceller i en levende organisme. Dette koncept opstod, mens man studerede de processer, der forekommer i hjernen, og forsøgte at modellere disse processer. Det første sådant forsøg var McCullochs og Pitts' neurale netværk. Efterfølgende, efter udviklingen af ​​læringsalgoritmer, begyndte de resulterende modeller at blive brugt til praktiske formål: i prognoseproblemer, til mønstergenkendelse, i kontrolproblemer osv.

ANN'er er et system af forbundne og interagerende simple processorer (kunstige neuroner). Disse processorer er normalt ret simple, især sammenlignet med de processorer, der bruges i personlige computere. Hver processor i et sådant netværk beskæftiger sig kun med de signaler, som den periodisk modtager, og de signaler, som den med jævne mellemrum sender til andre processorer. Og alligevel, når de er forbundet til et tilstrækkeligt stort netværk med kontrolleret interaktion, er sådanne lokalt simple processorer tilsammen i stand til at udføre ret komplekse opgaver.

Fra et maskinlæringssynspunkt er et neuralt netværk et særligt tilfælde af mønstergenkendelsesmetoder, diskriminantanalyse, klyngemetoder osv. Fra et matematisk synspunkt er træning af neurale netværk et ikke-lineært optimeringsproblem med flere parametre. Fra et kybernetisk synspunkt bruges et neuralt netværk i adaptive kontrolproblemer og som algoritmer til robotteknologi. Fra synspunktet om udviklingen af ​​computerteknologi og programmering er et neuralt netværk en måde at løse problemet med effektiv parallelisme. Og set fra kunstig intelligens er ANN grundlaget for konnektivismens filosofiske bevægelse og hovedretningen i den strukturelle tilgang til at studere muligheden for at konstruere (modellere) naturlig intelligens ved hjælp af computeralgoritmer.

Neurale netværk er ikke programmeret i ordets sædvanlige betydning, de er trænet. Evnen til at lære er en af ​​de vigtigste fordele ved neurale netværk i forhold til traditionelle algoritmer. Teknisk set består læring i at finde koefficienterne for forbindelser mellem neuroner. Under træningsprocessen er det neurale netværk i stand til at identificere komplekse afhængigheder mellem inputdata og outputdata samt udføre generalisering. Det betyder, at netværket i tilfælde af vellykket træning vil være i stand til at returnere det korrekte resultat baseret på data, der manglede i træningssættet, samt ufuldstændige og/eller "støjende", delvist forvrængede data.

1.1 Paralleller fra biologi

Neurale netværk opstod fra forskning i kunstig intelligens, nemlig forsøg på at replikere biologiske nervesystemers evne til at lære og rette fejl ved at simulere hjernens lavniveaustruktur (Patterson, 1996). Hovedområdet for forskning i kunstig intelligens i 60'erne - 80'erne var ekspertsystemer. Sådanne systemer var baseret på højniveau modellering af tænkeprocessen (især på ideen om, at vores tænkeproces er bygget på manipulation af symboler). Det blev hurtigt klart, at sådanne systemer, selvom de var nyttige på nogle områder, ikke fangede nogle nøgleaspekter af menneskelig intelligens. En opfattelse er, at årsagen til dette er, at de ikke er i stand til at reproducere hjernens struktur. For at skabe kunstig intelligens er det nødvendigt at bygge et system med en lignende arkitektur.

Hjernen består af et meget stort antal (ca. 10.000.000.000) neuroner forbundet af talrige forbindelser (i gennemsnit flere tusinde forbindelser pr. neuron, men dette antal kan svinge meget). Neuroner er specielle celler, der er i stand til at transmittere elektrokemiske signaler. En neuron har en forgrenet struktur af informationsinput (dendritter), en kerne og et forgrenet output (axon). En celles axoner forbinder sig med andre cellers dendritter ved hjælp af synapser. Når den aktiveres, sender en neuron et elektrokemisk signal langs sin axon. Gennem synapser når dette signal andre neuroner, som igen kan aktiveres. En neuron aktiveres, når det samlede niveau af signaler, der ankommer til dens kerne fra dendritterne, overstiger et vist niveau (aktiveringstærskel).

Intensiteten af ​​signalet modtaget af en neuron (og derfor muligheden for dets aktivering) afhænger stærkt af synapsernes aktivitet. Hver synapse har en længde, og specielle kemikalier sender et signal langs den. En af de mest respekterede forskere inden for neurosystemer, Donald Hebb, postulerede, at læring primært består af ændringer i "styrken" af synaptiske forbindelser. I Pavlovs klassiske eksperiment ringede der for eksempel en klokke hver gang lige før hunden blev fodret, og hunden lærte hurtigt at forbinde klokkens ringning med mad. Synaptiske forbindelser mellem de områder af hjernebarken, der var ansvarlige for hørelsen, og spytkirtlerne blev styrket, og da cortex blev stimuleret af lyden af ​​en klokke, begyndte hunden at salivere.

Således er hjernen bygget af et meget stort antal meget simple elementer (som hver især tager en vægtet sum af inputsignaler og, hvis det samlede input overstiger et vist niveau, transmitterer et binært signal), er hjernen i stand til at løse ekstremt komplekse problemer . Vi har selvfølgelig ikke berørt mange af de komplekse aspekter af hjernen her, men det interessante er, at kunstige neurale netværk kan opnå bemærkelsesværdige resultater ved hjælp af en model, der ikke er meget mere kompleks end den, der er beskrevet ovenfor.

Ris. 1 Neuron

1.2 Definition af ANN

Et kunstigt neuralt netværk (ANN, neuralt netværk) er et sæt neuroner forbundet med hinanden. Typisk er overførselsfunktionerne for alle neuroner i et neuralt netværk faste, og vægtene er parametre for det neurale netværk og kan ændre sig. Nogle input af neuroner er mærket som eksterne input af det neurale netværk, og nogle output er mærket som eksterne output af det neurale netværk. Ved at tilføre et hvilket som helst tal til input fra det neurale netværk, får vi et sæt tal ved udgangene af det neurale netværk. Et neuralt netværks arbejde er således at transformere en inputvektor til en outputvektor, og denne transformation er specificeret af det neurale netværks vægte.

Et kunstigt neuralt netværk er en samling af neurale elementer og forbindelser mellem dem.

Grundlaget for hvert kunstigt neuralt netværk består af relativt simple, i de fleste tilfælde af samme type, elementer (celler), der efterligner hjerneneuronernes arbejde (herefter vil vi med neuron mene en kunstig neuron, en celle af en kunstig neural netværk).


Ris. 2 - Kunstig neuron

· En neuron har en gruppe synapser - ensrettede inputforbindelser forbundet med udgangene fra andre neuroner. Hver synapse er karakteriseret ved størrelsen af ​​den synoptiske forbindelse eller dens vægt w i.

Hver neuron har en aktuel tilstand, som normalt defineres som en vægtet sum af dens input:

· En neuron har en axon - denne neurons outputforbindelse, hvorfra signalet (excitation eller inhibering) ankommer til synapserne af følgende neuroner. Outputtet af en neuron er en funktion af dens tilstand:

Funktionen f kaldes aktiveringsfunktionen.



Ris. 3 - Aktiveringsfunktion

Aktiveringsfunktionen kan have forskellige former:

· tærskel (fig. 3.a),

stykkevis lineær (fig. 3.b),

· sigmoid (fig. 3.c, 3.d).

Sættet af alle neuroner i et kunstigt neuralt netværk kan opdeles i delmængder - de såkaldte. lag. Interaktionen mellem neuroner forekommer i lag.

Et lag af et kunstigt neuralt netværk er et sæt neuroner, der modtager parallelle signaler fra andre neuroner i netværket ved hvert tidstrin.

Valget af kunstig neural netværksarkitektur bestemmes af opgaven. For nogle klasser af opgaver findes der allerede optimale konfigurationer. Hvis problemet ikke kan reduceres til nogen af ​​de kendte klasser, skal udvikleren løse problemet med at syntetisere en ny konfiguration. Problemet med at syntetisere et kunstigt neuralt netværk er meget afhængig af opgaven, det er vanskeligt at give generelle detaljerede anbefalinger. I de fleste tilfælde opnås den optimale version af et kunstigt neuralt netværk eksperimentelt.

Kunstige neurale netværk kan være software- eller hardware-baserede. Hardwareimplementeringen er normalt en parallel computer bestående af mange simple processorer.

1.3 Neural netværksarkitektur

En ANN kan betragtes som en rettet graf med vægtede forbindelser, hvor kunstige neuroner er noder. Baseret på arkitekturen af ​​forbindelser kan ANN'er grupperes i to klasser (fig. 4): feed-forward-netværk, hvor grafer ikke har sløjfer, og tilbagevendende netværk eller netværk med feedback-forbindelser.

Følgelig tager det neurale netværk to tal som input og skal udsende et andet tal - svaret. Nu om de neurale netværk selv.

Hvad er et neuralt netværk?


Et neuralt netværk er en sekvens af neuroner forbundet med synapser. Strukturen af ​​et neuralt netværk kom til programmeringsverdenen direkte fra biologien. Takket være denne struktur får maskinen evnen til at analysere og endda huske forskellige informationer. Neurale netværk er også i stand til ikke kun at analysere indkommende information, men også gengive den fra deres hukommelse. For de interesserede, sørg for at se 2 videoer fra TED Talks: Video 1 , Video 2). Med andre ord er et neuralt netværk en maskinel fortolkning af den menneskelige hjerne, som indeholder millioner af neuroner, der transmitterer information i form af elektriske impulser.

Hvilke typer neurale netværk findes der?

Indtil videre vil vi overveje eksempler på den mest basale type neurale netværk - et feed-forward-netværk (herefter benævnt et feedforward-netværk). Også i de efterfølgende artikler vil jeg introducere flere begreber og fortælle dig om tilbagevendende neurale netværk. SPR, som navnet antyder, er et netværk med en sekventiel forbindelse af neurale lag, hvor information altid kun flyder i én retning.

Hvad er neurale netværk til?

Neurale netværk bruges til at løse komplekse problemer, der kræver analytiske beregninger svarende til, hvad den menneskelige hjerne gør. De mest almindelige anvendelser af neurale netværk er:

Klassifikation- fordeling af data efter parametre. For eksempel får du et sæt mennesker som input, og du skal beslutte, hvem af dem du vil give kredit til, og hvilke ikke. Dette arbejde kan udføres af et neuralt netværk, der analyserer information som alder, solvens, kredithistorik osv.

Forudsigelse- evnen til at forudsige det næste trin. For eksempel stigning eller fald af aktier baseret på situationen på aktiemarkedet.

Anerkendelse- I øjeblikket er den mest udbredte brug af neurale netværk. Bruges i Google, når du søger efter et billede eller i telefonkameraer, når det registrerer dit ansigts position og fremhæver det og meget mere.

Nu, for at forstå, hvordan neurale netværk fungerer, lad os tage et kig på dets komponenter og deres parametre.

Hvad er en neuron?


En neuron er en beregningsenhed, der modtager information, udfører enkle beregninger på den og sender den videre. De er opdelt i tre hovedtyper: input (blå), skjult (rød) og output (grøn). Der er også en forskydningsneuron og en kontekstneuron, som vi vil tale om i næste artikel. I det tilfælde, hvor et neuralt netværk består af et stort antal neuroner, introduceres udtrykket lag. Følgelig er der et inputlag, der modtager information, n skjulte lag (normalt ikke mere end 3), der behandler det, og et outputlag, der udsender resultatet. Hver neuron har 2 hovedparametre: inputdata og outputdata. I tilfælde af en inputneuron: input=output. I resten indeholder inputfeltet den samlede information af alle neuroner fra det forrige lag, hvorefter det normaliseres ved hjælp af aktiveringsfunktionen (for nu lad os bare forestille os det som f(x)) og ender i outputfeltet.


Vigtigt at huske at neuroner opererer med tal i området eller [-1,1]. Men hvordan, spørger du, så behandle tal, der falder uden for dette interval? På dette tidspunkt er det enkleste svar at dividere 1 med det tal. Denne proces kaldes normalisering, og den bruges meget ofte i neurale netværk. Mere om dette lidt senere.

Hvad er en synapse?


En synapse er en forbindelse mellem to neuroner. Synapser har 1 parameter - vægt. Takket være det ændres inputinformation, når den overføres fra en neuron til en anden. Lad os sige, at der er 3 neuroner, der overfører information til den næste. Så har vi 3 vægte svarende til hver af disse neuroner. For den neuron, hvis vægt er større, vil denne information være dominerende i den næste neuron (f.eks. blanding af farver). Faktisk er vægtsættet af et neuralt netværk eller vægtmatricen en slags hjerne i hele systemet. Det er takket være disse vægte, at inputinformationen behandles og omdannes til et resultat.

Vigtigt at huske, at under initialiseringen af ​​det neurale netværk placeres vægtene i en tilfældig rækkefølge.

Hvordan fungerer et neuralt netværk?


Dette eksempel viser en del af et neuralt netværk, hvor bogstaverne I betegner inputneuroner, bogstavet H betegner en skjult neuron, og bogstavet w betegner vægte. Formlen viser, at inputinformationen er summen af ​​alle inputdata ganget med deres tilsvarende vægte. Så vil vi give 1 og 0 som input. Lad w1=0.4 og w2 = 0.7 Indgangsdataene for neuron H1 vil være som følger: 1*0,4+0*0,7=0,4. Nu hvor vi har inputtet, kan vi få output ved at tilslutte inputtet til aktiveringsfunktionen (mere om det senere). Nu hvor vi har outputtet, giver vi det videre. Og så gentager vi for alle lag, indtil vi når outputneuronen. Efter at have lanceret et sådant netværk for første gang, vil vi se, at svaret langt fra er korrekt, fordi netværket ikke er trænet. For at forbedre resultaterne vil vi træne hende. Men før vi lærer, hvordan man gør dette, lad os introducere et par termer og egenskaber for et neuralt netværk.

Aktiveringsfunktion

En aktiveringsfunktion er en måde at normalisere inputdata på (vi talte om dette tidligere). Det vil sige, at hvis du har et stort tal ved indgangen, der passerer det gennem aktiveringsfunktionen, får du et output i det område, du har brug for. Der er ret mange aktiveringsfunktioner, så vi vil overveje de mest basale: Lineær, Sigmoid (logistisk) og Hyperbolsk tangent. Deres vigtigste forskelle er rækken af ​​værdier.

Lineær funktion


Denne funktion bruges næsten aldrig, undtagen når du skal teste et neuralt netværk eller sende en værdi uden konvertering.

Sigmoid


Dette er den mest almindelige aktiveringsfunktion, og dens rækkevidde af værdier er . Det er her de fleste eksempler på nettet vises, og det kaldes også nogle gange for logistikfunktionen. Derfor, hvis der i dit tilfælde er negative værdier (for eksempel kan aktier ikke kun gå op, men også ned), så skal du bruge en funktion, der også fanger negative værdier.

Hyperbolsk tangent


Det giver kun mening at bruge hyperbolsk tangent, når dine værdier kan være både negative og positive, da rækkevidden af ​​funktionen er [-1,1]. Det er ikke tilrådeligt kun at bruge denne funktion med positive værdier, da dette vil forværre resultaterne af dit neurale netværk betydeligt.

Træningssæt

Et træningssæt er en sekvens af data, som et neuralt netværk opererer på. I vores tilfælde af elimination eller (xor), har vi kun 4 forskellige udfald, det vil sige, vi vil have 4 træningssæt: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Gentagelse

Dette er en slags tæller, der stiger, hver gang det neurale netværk gennemgår ét træningssæt. Med andre ord er dette det samlede antal træningssæt, der er gennemført af det neurale netværk.

æra

Når det neurale netværk initialiseres, er denne værdi sat til 0 og har et manuelt indstillet loft. Jo større epoke, jo bedre trænet netværket og følgelig dets resultat. Epoken øges hver gang vi gennemgår hele sættet af træningssæt, i vores tilfælde 4 sæt eller 4 iterationer.


Vigtig forveksle ikke iteration med epoke og forstå rækkefølgen af ​​deres stigning. Første n
når iterationen øges, og derefter epoken og ikke omvendt. Med andre ord kan du ikke først træne et neuralt netværk på kun ét sæt, derefter på et andet, og så videre. Du skal træne hvert sæt én gang pr. æra. På denne måde kan du undgå fejl i beregningerne.

Fejl

Fejl er en procentdel, der afspejler forskellen mellem de forventede og modtagne svar. Fejlen dannes hver æra og skal aftage. Hvis dette ikke sker, så gør du noget forkert. Fejlen kan beregnes på forskellige måder, men vi vil kun overveje tre hovedmetoder: Mean Squared Error (herefter MSE), Root MSE og Arctan. Der er ingen begrænsning på brugen, som der er i aktiveringsfunktionen, og du kan frit vælge enhver metode, der vil give dig de bedste resultater. Du skal bare huske på, at hver metode tæller fejl forskelligt. Med Arctan vil fejlen næsten altid være større, da den fungerer efter princippet: Jo større forskel, jo større fejl. Root MSE vil have den mindste fejl, så det er mest almindeligt at bruge en MSE, der holder balance i fejlberegningen.