Deep Learning Neural Networks forklaret på almindeligt engelsk

Maskinindlæring og især dyb læring er to teknologier, der ændrer verden.

Efter en lang "AI-vinter", der strakte sig over 30 år, har computerkraft og datasæt endelig fanget op til de algoritmer for kunstig intelligens, der blev foreslået i anden halvdel af det tyvende århundrede.

Dette betyder, at modeller for dyb læring endelig bruges til at forudsige effektive forudsigelser, der løser virkelige problemer.

Det er vigtigere end nogensinde for dataforskere og softwareingeniører at have en høj forståelse af, hvordan dyb læringsmodeller fungerer. Denne artikel vil forklare historien og de grundlæggende begreber inden for dyb læring neurale netværk på almindelig engelsk.

Historien om dyb læring

Dyb læring blev konceptualiseret af Geoffrey Hinton i 1980'erne. Han anses bredt for at være den grundlæggende far til området for dyb læring. Hinton har arbejdet hos Google siden marts 2013, da hans firma, DNNresearch Inc., blev købt.

Hintons hovedbidrag inden for dyb læring var at sammenligne maskinlæringsteknikker med den menneskelige hjerne.

Mere specifikt skabte han konceptet med et "neuralt netværk", som er en dyb læringsalgoritme struktureret svarende til organiseringen af ​​neuroner i hjernen. Hinton tog denne tilgang, fordi den menneskelige hjerne uden tvivl er den mest kraftfulde beregningsmotor, der er kendt i dag.

Strukturen, som Hinton oprettede, blev kaldt et kunstigt neuralt netværk (eller kort sagt kunstigt neuralt net). Her er en kort beskrivelse af, hvordan de fungerer:

  • Kunstige neurale netværk er sammensat af lag af knudepunkter
  • Hver knude er designet til at opføre sig på samme måde som en neuron i hjernen
  • Det første lag af et neuralt net kaldes inputlaget, efterfulgt af hiddenlag og derefter endelig outputlaget
  • Hver knude i det neurale net udfører en slags beregning, som sendes videre til andre noder dybere i det neurale net

Her er en forenklet visualisering for at demonstrere, hvordan dette fungerer:

En visualisering af et kunstigt neuralt net

Neurale net repræsenterede et enormt skridt fremad inden for dyb læring.

Det tog dog årtier for maskinlæring (og især dyb læring) at få fremtrædende plads.

Vi undersøger hvorfor i næste afsnit.

Hvorfor dyb læring ikke fungerede med det samme

Hvis dyb læring oprindeligt blev udtænkt for årtier siden, hvorfor begynder den lige nu at få fart i dag?

Det er fordi enhver moden dyb læringsmodel kræver en overflod af to ressourcer:

  • Data
  • Computerkraft

På tidspunktet for dyb lærings konceptuelle fødsel havde forskere ikke adgang til nok af data eller computerkraft til at opbygge og træne meningsfulde dyb læringsmodeller. Dette har ændret sig over tid, hvilket har ført til dyb lærings fremtrædende plads i dag.

Forståelse af neuroner i dyb læring

Neuroner er en kritisk komponent i enhver dyb læringsmodel.

Faktisk kan man argumentere for, at du ikke fuldt ud kan forstå dyb læring med at have en dyb viden om, hvordan neuroner fungerer.

Dette afsnit introducerer dig til begrebet neuroner i dyb læring. Vi vil tale om oprindelsen af ​​neuroner med dyb læring, hvordan de blev inspireret af den menneskelige hjernes biologi, og hvorfor neuroner er så vigtige i dyb læringsmodeller i dag.

Hvad er en neuron i biologi?

Neuroner i dyb læring blev inspireret af neuroner i den menneskelige hjerne. Her er et diagram over hjernens neurons anatomi:

Anatomi af en neuron i hjernen

Som du kan se, har neuroner en ganske interessant struktur. Grupper af neuroner arbejder sammen inde i den menneskelige hjerne for at udføre den funktionalitet, som vi har brug for i vores daglige liv.

Spørgsmålet, som Geoffrey Hinton stillede under sin sædvanlige forskning i neurale netværk, var, om vi kunne bygge computeralgoritmer, der opfører sig på samme måde som neuroner i hjernen. Håbet var, at ved at efterligne hjernens struktur, kunne vi fange noget af dets evne.

For at gøre dette undersøgte forskere den måde, hvorpå neuroner opførte sig i hjernen. En vigtig observation var, at en neuron i sig selv er ubrugelig. I stedet kræver du netværk af neuroner for at generere enhver meningsfuld funktionalitet.

Dette skyldes, at neuroner fungerer ved at modtage og sende signaler. Mere specifikt modtager neuronerne dendritessignaler og sender disse signaler gennem axon.

Den dendritesene neurons forbindelse til den axonanden neurons. Disse forbindelser kaldes synapses, hvilket er et koncept, der er blevet generaliseret til området med dyb læring.

Hvad er en neuron i dyb læring?

Neuroner i modeller for dyb læring er noder, gennem hvilke data og beregninger strømmer.

Neuroner fungerer sådan her:

  • De modtager et eller flere indgangssignaler. Disse indgangssignaler kan komme fra enten rådatasættet eller fra neuroner placeret på et tidligere lag af det neurale net.
  • De udfører nogle beregninger.
  • De sender nogle udgangssignaler til neuroner dybere i det neurale net gennem en synapse.

Her er et diagram over en neurons funktionalitet i et neuralt net med dyb læring:

Funktionen af ​​en neuron i en dyb læringsmodel

Lad os gå gennem dette diagram trin for trin.

Som du kan se, er neuroner i en dyb læringsmodel i stand til at have synapser, der forbinder til mere end en neuron i det foregående lag. Hver synaps har en tilknyttet weight, som påvirker den foregående neurons betydning i det samlede neurale netværk.

Vægt er et meget vigtigt emne inden for dyb læring, fordi justering af en models vægte er den primære måde, hvorpå dyb læringsmodeller trænes. Du kan se dette i praksis senere, når vi bygger vores første neurale netværk fra bunden.

Når en neuron modtager sine input fra neuronerne i det foregående lag af modellen, tilføjer det hvert signal ganget med dets tilsvarende vægt og overfører dem til en aktiveringsfunktion, som denne:

En neurons aktiveringsfunktion

Aktiveringsfunktionen beregner neuronens outputværdi. Denne outputværdi sendes derefter videre til det næste lag i det neurale netværk gennem en anden synaps.

Dette tjener som et bredt overblik over dyb læringsneuroner. Bare rolig, hvis det var meget at tage i - vi lærer meget mere om neuroner i resten af ​​denne vejledning. For nu er det tilstrækkeligt for dig at have en høj forståelse af, hvordan de er struktureret i en dyb læringsmodel.

Funktioner til aktivering af dyb læring

Aktiveringsfunktioner er et kernekoncept at forstå i dyb læring.

De er det, der gør det muligt for neuroner i et neuralt netværk at kommunikere med hinanden gennem deres synapser.

I dette afsnit lærer du at forstå vigtigheden og funktionaliteten af ​​aktiveringsfunktioner i dyb læring.

Hvad er aktiveringsfunktioner i dyb læring?

I det sidste afsnit lærte vi, at neuroner modtager indgangssignaler fra det foregående lag i et neuralt netværk. En vægtet sum af disse signaler føres ind i neuronens aktiveringsfunktion, hvorefter aktiveringsfunktionens output sendes til det næste lag af netværket.

Der er fire hovedtyper af aktiveringsfunktioner, som vi diskuterer i denne vejledning:

  • Tærskelfunktioner
  • Sigmoid-funktioner
  • Ensretterfunktioner eller ReLU'er
  • Hyperboliske tangentfunktioner

Lad os gennemgå disse aktiveringsfunktioner en efter en.

Tærskelfunktioner

Tærskelfunktioner beregner et andet udgangssignal afhængigt af, om dets input ligger over eller under en bestemt tærskel. Husk, inputværdien til en aktiveringsfunktion er den vægtede sum af inputværdierne fra det foregående lag i det neurale netværk.

Matematisk set er her den formelle definition af en dyb læringstærskelfunktion:

Tærskelfunktioner

Som billedet ovenfor antyder, kaldes tærskelfunktionen undertiden også a unit step function.

Tærskelfunktioner svarer til boolske variabler i computerprogrammering. Deres beregnede værdi er enten 1(svarende til True) eller 0(svarende til False).

Sigmoid-funktionen

Sigmoid-funktionen er velkendt blandt datavidenskabssamfundet på grund af dens anvendelse i logistisk regression, en af ​​de grundlæggende maskinindlæringsteknikker, der bruges til at løse klassificeringsproblemer.

Sigmoid-funktionen kan acceptere enhver værdi, men beregner altid en værdi mellem 0og 1.

Her er den matematiske definition af sigmoid-funktionen:

Sigmoid-funktioner

En fordel ved sigmoid-funktionen over tærskelfunktionen er, at dens kurve er jævn. Dette betyder, at det er muligt at beregne derivater på ethvert punkt langs kurven.

Rectifier-funktionen

Ensretterfunktionen har ikke den samme glathedsegenskab som sigmoid-funktionen fra det sidste afsnit. Det er dog stadig meget populært inden for dyb læring.

Ensretterfunktionen er defineret som følger:

  • Hvis inputværdien er mindre end 0, udgives funktionen0
  • Hvis ikke, udsender funktionen sin inputværdi

Her er dette koncept forklaret matematisk:

Ensretterfunktioner

Ensretterfunktioner kaldes ofte Rectified Linear Unitaktiveringsfunktioner eller ReLUskort sagt.

Den hyperbolske tangentfunktion

Den hyperbolske tangensfunktion er den eneste aktiveringsfunktion, der er inkluderet i denne vejledning, der er baseret på en trigonometrisk identitet.

Den matematiske definition er nedenfor:

Hyperbolsk tangensfunktion

Den hyperbolske tangensfunktion ligner sigmoidfunktionen, men dens outputværdier forskydes alle nedad.

Hvordan fungerer neurale netværk virkelig?

Indtil videre i denne vejledning har vi diskuteret to af byggestenene til bygning af neurale netværk:

  • Neuroner
  • Aktiveringsfunktioner

Du er dog sandsynligvis stadig lidt forvirret over, hvordan neurale netværk virkelig fungerer.

Denne vejledning sammensætter de stykker, vi allerede har diskuteret, så du kan forstå, hvordan neurale netværk fungerer i praksis.

Eksemplet vi bruger i denne vejledning

Denne vejledning vil arbejde igennem et eksempel fra den virkelige verden trin for trin, så du kan forstå, hvordan neurale netværk giver forudsigelser.

Mere specifikt vil vi beskæftige os med ejendomsværdiansættelser.

Du ved sikkert allerede, at der er masser af faktorer, der påvirker huspriserne, herunder økonomi, rentesatser, antallet af soveværelser / badeværelser og dets placering.

Den høje dimensionalitet af dette datasæt gør det til en interessant kandidat til at opbygge og træne et neuralt netværk på.

En advarsel om dette afsnit er det neurale netværk, vi vil bruge til at komme med forudsigelser, er allerede blevet trænet . Vi undersøger processen med at træne et nyt neuralt netværk i næste afsnit af denne vejledning.

Parametrene i vores datasæt

Lad os starte med at diskutere parametrene i vores datasæt. Mere specifikt, lad os forestille os, at datasættet indeholder følgende parametre:

  • Firkantede optagelser
  • Soveværelser
  • Afstand til centrum
  • Husets alder

Disse fire parametre vil danne inputlaget til det kunstige neurale netværk. Bemærk, at der i virkeligheden sandsynligvis er mange flere parametre, som du kan bruge til at træne et neuralt netværk til at forudsige boligpriser. Vi har begrænset dette tal til fire for at holde eksemplet rimeligt enkelt.

Den mest basale form for et neuralt netværk

I sin mest basale form har et neuralt netværk kun to lag - inputlaget og outputlaget. Outputlaget er den komponent i det neurale net, der faktisk forudsiger.

For eksempel, hvis du ønskede at forudsige ved hjælp af en simpel vægtet model (også kaldet lineær regression), ville dit neurale netværk have følgende form:

Et grundlæggende neuralt netværk

Mens dette diagram er lidt abstrakt, er pointen, at de fleste neurale netværk kan visualiseres på denne måde:

  • Et inputlag
  • Eventuelt nogle skjulte lag
  • Et outputlag

Det er det skjulte neuronlag, der får neurale netværk til at være så stærke til beregning af forudsigelser.

For hver neuron i et skjult lag udfører den beregninger ved hjælp af nogle (eller alle) neuronerne i det sidste lag i det neurale netværk. Disse værdier bruges derefter i det næste lag i det neurale netværk.

Formålet med neuroner i det skjulte lag af et neuralt netværk

Du sandsynligvis spørger - hvad der præcist gør hver neuron i skjulte lag middelværdien ? Sagt forskelligt, hvordan skal maskinlæringsudøvere fortolke disse værdier?

Generelt aktiveres neuroner i mellemlagene i et neuralt net (hvilket betyder, at deres aktiveringsfunktion vender tilbage 1) for en inputværdi, der opfylder visse underegenskaber.

For vores model til forudsigelse af boligpriser kan et eksempel være huse med 5 soveværelser med små afstande til byens centrum.

I de fleste andre tilfælde er det ikke så let at beskrive de egenskaber, der ville få en neuron i et skjult lag til at aktivere.

Hvordan neuroner bestemmer deres inputværdier

Tidligere i denne tutorial skrev jeg "For hver neuron i et skjult lag udfører den beregninger ved hjælp af nogle (eller alle) neuronerne i det sidste lag i det neurale netværk."

Dette illustrerer et vigtigt punkt - at hver neuron i et neuralt net ikke behøver at bruge hver neuron i det foregående lag.

Processen, hvorigennem neuroner bestemmer hvilke inputværdier, der skal bruges fra det foregående lag af det neurale net, kaldes træning af modellen. Vi lærer mere om træning af neurale net i det næste afsnit af dette kursus.

Visualisering af et neuralt nets forudsigelsesproces

Når vi visualiserer et neutralt netværk, tegner vi generelt linjer fra det forrige lag til det aktuelle lag, hver gang den foregående neuron har en vægt over 0i den vægtede sumformel for den nuværende neuron.

Følgende billede hjælper med at visualisere dette:

Et færdigt neuralt netværk

Som du kan se, er ikke alle neuron-neuron-par synaps. x4føder kun tre ud af de fem neuroner i det skjulte lag, som et eksempel. Dette illustrerer et vigtigt punkt ved opbygning af neurale netværk - at ikke alle neuroner i et foregående lag skal bruges i det næste lag i et neuralt netværk.

Hvordan neurale netværk trænes

Indtil videre har du lært følgende om neurale netværk:

  • At de er sammensat af neuroner
  • At hver neuron bruger en aktiveringsfunktion anvendt på den vægtede sum af outputene fra det foregående lag i det neurale netværk
  • En bred oversigt uden kode om, hvordan neurale netværk giver forudsigelser

Vi har endnu ikke dækket en meget vigtig del af neuronetværksteknologiprocessen: hvordan neurale netværk trænes.

Nu vil du lære, hvordan neurale netværk trænes. Vi diskuterer datasæt, algoritmer og brede principper, der bruges til at træne moderne neurale netværk, der løser problemer i den virkelige verden.

Hard-Coding vs. Soft-Coding

Der er to hovedmåder, du kan udvikle computerapplikationer på. Før du går ind i, hvordan neurale netværk trænes, er det vigtigt at sikre dig, at du har en forståelse af forskellen mellem hard-codingog soft-codingcomputerprogrammer.

Hårdkodning betyder, at du eksplicit angiver inputvariabler og dine ønskede outputvariabler. Sagt forskelligt efterlader hardcoding ikke plads til computeren for at fortolke det problem, du prøver at løse.

Soft-kodning er det helt modsatte. Det giver plads til programmet at forstå, hvad der sker i datasættet. Soft-coding gør det muligt for computeren at udvikle sine egne problemløsningsmetoder.

Et specifikt eksempel er nyttigt her. Her er to forekomster af, hvordan du kan identificere katte i et datasæt ved hjælp af soft-coding og hard-coding teknikker.

  • Hårdkodning: du bruger specifikke parametre til at forudsige, om et dyr er en kat. Mere specifikt kan du sige, at hvis et dyrs vægt og længde ligger inden for visse
  • Soft-kodning: du angiver et datasæt, der indeholder dyr, der er mærket med deres art og egenskaber ved disse dyr. Derefter bygger du et computerprogram til at forudsige, om et dyr er en kat eller ikke baseret på karakteristika i datasættet.

Som du måske forestiller dig, træner neurale netværk i kategorien soft-coding. Husk dette, når du fortsætter gennem dette kursus.

Træning af et neuralt netværk ved hjælp af en omkostningsfunktion

Neurale netværk trænes ved hjælp af a cost function, som er en ligning, der bruges til at måle fejlen i et netværks forudsigelse.

Formlen for en dyb læringsomkostningsfunktion (hvoraf der er mange - dette er kun et eksempel) er nedenfor:

Omkostningsfunktionsligning

Bemærk: denne omkostningsfunktion kaldes for mean squared error, hvorfor der er en MSE på venstre side af ligestegnet.

Mens der er masser af formelmatematik i denne ligning, opsummeres den bedst som følger:

Take the difference between the predicted output value of an observation and the actual output value of that observation. Square that difference and divide it by 2.

For at gentage skal du bemærke, at dette simpelthen er et eksempel på en omkostningsfunktion, der kan bruges til maskinindlæring (selvom det ganske vist er det mest populære valg). Valget af, hvilken omkostningsfunktion der skal bruges, er et komplekst og interessant emne alene og uden for omfanget af denne vejledning.

Som nævnt er målet med et kunstigt neuralt netværk at minimere værdien af ​​omkostningsfunktionen. Omkostningsfunktionen minimeres, når din algoritmes forudsagte værdi er så tæt på den faktiske værdi som muligt. Sagt forskelligt er målet med et neuralt netværk at minimere den fejl, det laver i dets forudsigelser!

Ændring af et neuralt netværk

Når et oprindeligt neuralt netværk er oprettet, og dets omkostningsfunktion er beregnet, foretages ændringer i det neurale netværk for at se, om de reducerer værdien af ​​omkostningsfunktionen.

Mere specifikt er den aktuelle komponent i det neurale netværk, der er modificeret, vægten af ​​hver neuron ved sin synaps, der kommunikerer til det næste lag af netværket.

Den mekanisme, hvorigennem vægtene modificeres for at flytte det neurale netværk til vægte med mindre fejl kaldes gradient descent. For nu er det nok for dig at forstå, at processen med at træne neurale netværk ser sådan ud:

  • Indledende vægte for inputværdierne for hver neuron tildeles
  • Forudsigelser beregnes ved hjælp af disse indledende værdier
  • Forudsigelserne tilføres en omkostningsfunktion til at måle det neurale netværks fejl
  • En gradientafstigningsalgoritme ændrer vægten for hver neurons inputværdier
  • Denne proces fortsættes, indtil vægtene holder op med at ændre sig (eller indtil størrelsen af ​​deres ændring ved hver iteration falder under en specificeret tærskel)

Dette kan virke meget abstrakt - og det er OK! Disse begreber forstås normalt kun fuldt ud, når du begynder at træne dine første maskinlæringsmodeller.

Afsluttende tanker

I denne vejledning lærte du om, hvordan neurale netværk udfører beregninger for at komme med nyttige forudsigelser.

Hvis du er interesseret i at lære mere om bygning, træning og implementering af banebrydende maskinlæringsmodel, lærer min e-bog Pragmatic Machine Learning dig, hvordan du bygger 9 forskellige maskinlæringsmodeller ved hjælp af virkelige projekter.

Du kan distribuere koden fra e-bogen til din GitHub eller personlige portefølje for at vise dem til potentielle arbejdsgivere. Bogen lanceres den 3. august - forudbestil den til 50% rabat nu!