Hva er nevrale nettverk og hvordan fungerer de?
Hvis du holder på med teknisk nyheter, har du sannsynligvis kommet over begrepet nevrale nettverk (også kjent som nevrale nett).
I 2016, for eksempel, slår Googles AlphaGo-neurale nettverk en av de beste profesjonelle Go-spillerne i verden i en 4-1-serie. YouTube annonserte også at de ville bruke neurale nettverk for å bedre forstå sine videoer. YouTube vil bruke nevrale nettverk til å forstå videoer. YouTube vil bruke neurale nettverk til å forstå de faktiske videoene. Søke YouTube kan være frustrerende fordi YouTube ikke ser videoene slik som en person gjør det. Nylig, Google dokumenterer et patent som kan endre det. Les mer . Tusenvis av andre historier kan komme til tankene.
Men hva er et neuralt nettverk? Hvordan virker det? Og hvorfor er det så populært i maskinlæring?
En datamaskin som en hjerne
Moderne nevrologer diskuterer ofte hjernen som en type datamaskin. Nevrale nettverk har som mål å gjøre det motsatte: Bygg en datamaskin som fungerer som en hjerne.
Selvfølgelig har vi bare en oversiktlig forståelse av hjernens ekstremt komplekse funksjoner, men ved å lage en forenklet simulering av hvordan hjernen behandler data, kan vi bygge en type datamaskin som fungerer svært forskjellig fra en standard en.
Dataprosessorer behandler data serielt (“i rekkefølge”). De utfører mange operasjoner på et sett med data, en om gangen. Parallell behandling (“behandler flere bekker samtidig”) øker hastigheten på datamaskinen ved å bruke flere prosessorer i serie.
I bildet nedenfor krever parallellbehandlingseksemplet fem forskjellige prosessorer:
Et kunstig nevralt nettverk (såkalt for å skille det fra de faktiske nevrale nettverkene i hjernen) har en fundamentalt forskjellig struktur. Det er svært sammenkoblet. Dette gjør det mulig å behandle data veldig raskt, lære av dataene og oppdatere sin egen interne struktur for å forbedre ytelsen.
Den høye grad av sammenkobling har imidlertid noen forbløffende effekter. For eksempel er neurale nettverk veldig gode til å gjenkjenne obskure mønstre i data.
Evnen til å lære
Evnen til et neuralt nettverk å lære er dets største styrke. Med standard databehandlingarkitektur må en programmerer utvikle en algoritme som forteller datamaskinen hva de skal gjøre med innkommende data for å sikre at datamaskinen gir den riktige responsen.
Et svar på input-output kan være så enkelt som “Når A-tasten trykkes, viser 'A' på skjermen” eller så komplisert som å utføre komplekse statistikker. Nevrale nettverk, derimot, trenger ikke samme type algoritmer. Gjennom læringsmekanismer kan de i hovedsak designe sine egne algoritmer 4 Maskininlæringsalgoritmer som lager livet ditt 4 Maskininlæringsalgoritmer som lager livet ditt Du kan ikke innse det, men maskinlæring er allerede rundt deg, og det kan utøve en overraskende grad av innflytelse over livet ditt. Tro ikke på meg? Du kan bli overrasket. Les mer som sikrer at de fungerer riktig.
Det er viktig å merke seg at fordi nevrale nettverk er programvare skrevet på maskiner som bruker standard seriell prosesseringsmaskinvare, stiller nåværende teknologi begrensninger. Faktisk å bygge en maskinvareversjon av et neuralt nettverk er et annet problem helt.
Fra Neuroner til Noder
Nå som vi har lagt grunnlaget for hvordan nevrale nettverk fungerer, kan vi begynne å se på noen av detaljene. Den grunnleggende strukturen til et kunstig nevralt nettverk ser slik ut:
Hver av kretsene kalles a “node” og det simulerer en enkelt neuron. Til venstre er inntastingsnoder, i midten er skjulte noder, og til høyre er utgangsnoder.
I svært enkle termer aksepterer inngangsnodene inngangsverdier, som kan være en binær 1 eller 0, en del av en RGB-fargevare, statusen til et sjakkbrikke eller noe annet. Disse noderne representerer informasjonen som strømmer inn i nettverket.
Hver inngangsnode er koblet til et antall skjulte noder (noen ganger til hver skjult knutepunkt, noen ganger til en delmengde). Inndata noder tar informasjonen de er gitt og sender den videre til det skjulte laget.
For eksempel kan en inngangskode sende et signal (“Brann,” i nevrologi av nevrovitenskap) hvis den mottar en 1, og forblir sovende dersom den mottar null. Hver skjult knute har en terskel: hvis alle sine summerte innganger når en viss verdi, brenner den.
Fra synapses til tilkoblinger
Hver forbindelse, tilsvarende en anatomisk synaps, blir også gitt en spesifikk vekt, noe som gjør at nettverket kan legge sterkere vekt på virkningen av en bestemt knute. Her er et eksempel:
Som du kan se er vekten av tilkobling B høyere enn den for tilkobling A og C. La oss si at skjult knutepunkt 4 bare brenner hvis den mottar en totalinngang på 2 eller høyere. Det betyr at hvis 1 eller 3 brann alene så vil 4 ikke utløses, men 1 og 3 sammen vil utløse noden. Node 2 kan også utløse noden på egen hånd gjennom tilkobling B.
La oss ta vær som et praktisk eksempel. Si at du designer et enkelt neuralt nettverk for å avgjøre om det skulle være en vinterstormadvarsel.
Ved å bruke ovennevnte tilkoblinger og vekter, kan knutepunkt 4 bare brenne hvis temperaturen er under 0 F og vind er over 30 MPH, eller det ville brann hvis det er mer enn 70 prosent sjanse for snø. Temperaturen vil bli matet inn i knutepunkt 1, vind til knutepunkt 3 og sannsynlighet for snø i knutepunkt 2. Nå kan knutepunkt 4 ta hensyn til alle disse når man bestemmer hvilket signal som skal sendes til utgangslaget.
Bedre enn enkel logikk
Selvfølgelig kan denne funksjonen enkelt utføres med enkle OG / ELLER logiske porter. Men mer komplekse nevrale nettverk, som den nedenfor, er i stand til betydelig mer komplekse operasjoner.
Utgangslagsnoder fungerer på samme måte som skjulte lag: Utgangssnoder sumer innspillet fra det skjulte laget, og hvis de når en viss verdi, brenner utgangsbodene og sender bestemte signaler. Ved slutten av prosessen vil utgangslaget sende et sett med signaler som indikerer resultatet av inngangen.
Mens nettverket vist ovenfor er enkelt, kan dype nevrale nettverk ha mange skjulte lag og hundrevis av noder.
Feilretting
Prosessen, så langt, er relativt enkel. Men hvor nevrale nettverk virkelig skinner er i læring. De fleste neuralnett bruker en prosess som kalles backpropagation, som sender signaler bakover gjennom nettverket.
Før programmerer bruker et neuralt nettverk, kjører de det gjennom en treningsfase der den mottar et sett med innganger med kjente resultater. For eksempel kan en programmerer lære et neuralt nettverk å gjenkjenne bilder Bruk din smarttelefon til å identifisere noe med CamFind Bruk din smarttelefon til å identifisere noe med CamFind Denne appen kan virkelig identifisere omtrent ethvert objekt du kaster på det. Det er ikke bare kult, men det har også en rekke praktiske bruksområder! Les mer . Inngangen kan være et bilde av en bil, og riktig utgang ville være ordet “bil.”
Programmereren gir bildet som inngang og ser hva som kommer ut av utgangsnodene. Hvis nettverket reagerer med “fly,” programmereren forteller datamaskinen at den er feil.
Nettverket gjør deretter tilpasninger til sine egne forbindelser, og endrer vekter av forskjellige koblinger mellom noder. Denne handlingen styres av en spesifikk læring algoritme lagt til nettverket. Nettverket fortsetter å justere tilkoblingsvektene til det gir riktig utgang.
Dette er en forenkling, men nevrale nettverk kan lære svært komplekse operasjoner ved hjelp av lignende prinsipper.
Kontinuerlig forbedring
Selv etter trening fortsetter backpropagation - og det er her nevrale nettverk blir veldig kule. De fortsetter å lære som de er brukt, integrere ny informasjon og gjøre tweaks til vikene av forskjellige forbindelser, blir mer og mer effektive og effektive i oppgaven de ble designet for.
Dette kan være så enkelt som bildegenkjenning eller like komplisert som å spille Go.
På denne måten endrer nevrale nettverk alltid og forbedrer seg. Og dette kan ha overraskende effekter, noe som resulterer i nettverk som prioriterer ting en programmerer ikke hadde tenkt å prioritere.
I tillegg til prosessen skissert ovenfor, som kalles veiledet læring, det er også en annen metode: uovervåket læring.
I denne situasjonen tar nevrale nettverk innspill og prøver å gjenskape det nøyaktig i sin produksjon, ved hjelp av tilbakemelding for å oppdatere sine tilkoblinger. Dette kan høres ut som en fruktløs øvelse, men på den måten lærer nettverket å trekke ut nyttige funksjoner og generalisere disse funksjonene for å forbedre sine modeller.
Dybdeproblemer
Backpropagation er en svært effektiv måte å undervise nevrale nettverk på når de er bare noen få lag dypt. Etter hvert som antall skjulte lag øker, reduseres effektiviteten av tilbaketrekning. Dette er et problem for dype nettverk. Ved hjelp av tilbakekalling er de ofte ikke mer effektive enn enkle nettverk.
Forskere har kommet opp med en rekke løsninger på dette problemet, hvis konkrete er ganske kompliserte og utover omfanget av denne innledende delen. Hva mange av disse løsningene forsøker å gjøre, er enkle å redusere kompleksiteten til nettverket ved å trene det til “komprimere” dataen.
For å gjøre dette lærer nettverket å trekke ut et mindre antall identifiserende funksjoner av inngangen, og etter hvert bli effektivere i beregningene. I virkeligheten gjør nettverket generaliseringer og abstraksjoner, mye på samme måte som mennesker lærer.
Etter denne læringen kan nettverket knuse noder og forbindelser som den anser mindre viktige. Dette gjør nettverket mer effektivt og læring blir enklere.
Neural Network Applications
Så nevrale nettverk simulerer hvordan hjernen lærer ved å bruke flere lag med noder - innspill, skjult og utdata - og de kan lære både i overvåtte og uovervåtte situasjoner. Komplekse nett kan gjøre abstraksjoner og generalisere, gjøre dem mer effektive og bedre i stand til å lære.
Hva kan vi bruke disse fascinerende systemene for?
I teorien kan vi bruke neuralnett for nesten alt. Og du har sikkert brukt dem uten å innse det. De er svært vanlige i tale og visuell anerkjennelse, for eksempel fordi de kan lære å plukke ut bestemte trekk som lyder eller bilder har til felles.
Så når du spør Siri 8 ting du sikkert ikke skjønte Siri kunne gjøre 8 ting du sikkert ikke skjønte Siri kunne gjøre Siri har blitt en av iPhones definerende funksjoner, men for mange er det ikke alltid den mest nyttige. Selv om noe av dette skyldes begrensningene i talegjenkjennelse, er det rar på å bruke ... Les mer hvor nærmeste bensinstasjon er, iPhone setter talen din gjennom et neuralt nettverk for å finne ut hva du sier. Det kan være et annet neuralt nettverk som lærer å forutsi hva slags ting du sannsynligvis vil be om.
Selvkjørende biler kan bruke nevrale nettverk til å behandle visuelle data, og dermed følge veiereglene og unngå kollisjoner. Roboter av alle typer kan ha nytte av nevrale nettverk som hjelper dem å lære å fullføre oppgaver effektivt. Datamaskiner kan lære å spille spill som sjakk, Go og Atari klassikere. Hvis du noen gang har snakket med en chatbot, er det en sjanse for at det ble brukt et neuralt nettverk for å tilby passende svar.
Internett-søk kan ha stor nytte av nevrale nettverk, da den høye effektive parallelle prosessormodellen raskt kan kaste mye data. Et neuralt nettverk kan også lære vaner for å tilpasse søkeresultatene eller forutsi hva du skal søke etter i nær fremtid. Denne prediksjonsmodellen vil åpenbart være svært verdifull for markedsførere (og alle andre som må forutsi komplekse menneskelige oppførsel).
Bildegjenkjenning, optisk tegngjenkjenning De 5 beste OCR-verktøyene for å trekke ut tekst fra bilder De 5 beste OCR-verktøyene for å trekke ut tekst fra bilder Når du har rammer av papir, hvordan får du alt den utskrevne teksten konverteres til noe som et digitalt program vil bli Kunne gjenkjenne og indeksere? Hold en god OCR-programvare i nærheten. Les mer, aksjemarkedsprognose, ruteoppdagelse, stor databehandling, medisinsk kostnadsanalyse, salgsprognose, videospill AI ... mulighetene er nesten uendelige. Evnen til nevrale nettverk til å lære mønstre, gjøre generaliseringer, og vellykket forutsi atferd gjør dem verdifulle i utallige situasjoner.
Fremtiden for neurale nett
Nevrale nettverk har avansert fra veldig enkle modeller til svært komplekse læring simuleringer. De er i våre telefoner, våre tabletter, og kjører mange av de webtjenestene vi bruker. Det er mange andre maskinlæringssystemer der ute.
Men nevrale nettverk, på grunn av deres likhet (på en veldig forenklet måte) til den menneskelige hjerne, er noen av de mest fascinerende. Som vi fortsetter å utvikle og forfine modeller, er det ingen å fortelle hva de vil være i stand til.
Kjenner du til noen interessante bruksområder av nevrale nettverk? Har du erfaring med dem selv? Hva finner du mest interessant om denne teknologien? Del dine tanker i kommentarene nedenfor!
Utforsk mer om: Futurology, Neural Networks, Technology.