stub Hvad er Backpropagation? - Unite.AI
Følg os

AI 101

Hvad er Backpropagation?

mm
Opdateret on

Hvad er Backpropagation?

Deep learning-systemer er i stand til at lære ekstremt komplekse mønstre, og de opnår dette ved at justere deres vægte. Hvordan justeres vægten af ​​et dybt neuralt netværk præcist? De er justeret igennem et forløb kaldet tilbageudbredelse. Uden backpropagation ville dybe neurale netværk ikke være i stand til at udføre opgaver som at genkende billeder og fortolke naturligt sprog. At forstå, hvordan backpropagation fungerer, er afgørende for at forstå dybe neurale netværk generelt, så lad os diskutere backpropagation og se, hvordan processen bruges til at justere et netværks vægte.

Backpropagation kan være svær at forstå, og de beregninger, der bruges til at udføre backpropagation, kan være ret komplekse. Denne artikel vil bestræbe sig på at give dig en intuitiv forståelse af backpropagation, ved at bruge lidt i vejen for kompleks matematik. Men en vis diskussion af matematikken bag backpropagation er nødvendig.

Målet med Backpropagation

Lad os starte med at definere målet for backpropagation. Vægten af ​​et dybt neuralt netværk er styrken af ​​forbindelser mellem enheder i et neuralt netværk. Når det neurale netværk er etableret, laves der antagelser om, hvordan enhederne i et lag er forbundet med de lag, der er forbundet med det. Efterhånden som dataene bevæger sig gennem det neurale netværk, beregnes vægtene, og der foretages antagelser. Når dataene når det sidste lag af netværket, laves en forudsigelse om, hvordan funktionerne er relateret til klasserne i datasættet. Forskellen mellem de forudsagte værdier og de faktiske værdier er tabet/fejlen og målet med tilbageudbredelse er at reducere tabet. Dette opnås ved at justere vægten af ​​netværket, hvilket gør antagelserne mere som de sande forhold mellem inputfunktionerne.

Træning af et dybt neuralt netværk

Før tilbageformering kan udføres på en neurale netværk, skal det regelmæssige/fremadrettede træningspas af et neuralt netværk udføres. Når et neuralt netværk oprettes, initialiseres et sæt vægte. Værdien af ​​vægtene vil blive ændret, efterhånden som netværket trænes. Det fremadrettede træningspas af et neuralt netværk kan opfattes som tre diskrete trin: neuronaktivering, neuronoverførsel og fremadrettet udbredelse.

Når vi træner et dybt neuralt netværk, skal vi gøre brug af flere matematiske funktioner. Neuroner i et dybt neuralt netværk består af de indkommende data og en aktiveringsfunktion, som bestemmer den nødvendige værdi for at aktivere noden. Aktiveringsværdien af ​​en neuron beregnes med flere komponenter, der er en vægtet sum af inputs. Vægtene og inputværdierne afhænger af indekset for de noder, der bruges til at beregne aktiveringen. Et andet tal skal tages i betragtning ved beregning af aktiveringsværdien, en biasværdi. Bias-værdier svinger ikke, så de ganges ikke sammen med vægten og input, de lægges blot sammen. Alt dette betyder, at følgende ligning kan bruges til at beregne aktiveringsværdien:

Aktivering = sum(vægt * input) + bias

Efter at neuronen er aktiveret, bruges en aktiveringsfunktion til at bestemme, hvad outputtet af neuronets faktiske output vil være. Forskellige aktiveringsfunktioner er optimale til forskellige læringsopgaver, men almindeligt anvendte aktiveringsfunktioner omfatter sigmoid-funktionen, Tanh-funktionen og ReLU-funktionen.

Når outputtet af neuronen er beregnet ved at køre aktiveringsværdien gennem den ønskede aktiveringsfunktion, udføres fremadgående udbredelse. Fremadgående udbredelse er blot at tage output fra et lag og gøre dem til input fra det næste lag. De nye input bruges derefter til at beregne de nye aktiveringsfunktioner, og outputtet fra denne operation sendes videre til det følgende lag. Denne proces fortsætter hele vejen igennem til slutningen af ​​det neurale netværk.

Backpropagation i netværket

Processen med backpropagation tager de endelige beslutninger af en models træningspas, og derefter bestemmer den fejlene i disse beslutninger. Fejlene beregnes ved at sammenligne netværkets output/beslutninger og netværkets forventede/ønskede output.

Når fejlene i netværkets beslutninger er blevet beregnet, forplantes denne information tilbage gennem netværket, og netværkets parametre ændres undervejs. Metoden, der bruges til at opdatere netværkets vægte, er baseret på beregning, specifikt, den er baseret på kædereglen. En forståelse af calculus er dog ikke nødvendig for at forstå ideen om bagudbredelse. Du skal bare vide, at når en outputværdi leveres fra en neuron, beregnes hældningen af ​​outputværdien med en overførselsfunktion, der producerer et afledt output. Når man laver backpropagation, beregnes fejlen for en specifik neuron i henhold til følgende Formula:

fejl = (forventet_output – faktisk_output) * hældning af neurons outputværdi

Når man opererer på neuronerne i outputlaget, bruges klasseværdien som forventet værdi. Efter at fejlen er blevet beregnet, bruges fejlen som input for neuronerne i det skjulte lag, hvilket betyder, at fejlen for dette skjulte lag er de vægtede fejl af neuronerne fundet i outputlaget. Fejlberegningerne går baglæns gennem netværket langs vægtnetværket.

Efter at fejlene for netværket er beregnet, skal vægtene i netværket opdateres. Som nævnt involverer beregning af fejlen at bestemme hældningen af ​​outputværdien. Efter at hældningen er blevet beregnet, kan en proces kendt som gradient descent bruges til at justere vægtene i netværket. En gradient er en hældning, hvis vinkel/stejlhed kan måles. Hældningen beregnes ved at plotte "y over" eller "stigningen" over "løbet". I tilfælde af det neurale netværk og fejlraten er "y" den beregnede fejl, mens "x" er netværkets parametre. Netværkets parametre har en relation til de beregnede fejlværdier, og efterhånden som netværkets vægte justeres, stiger eller falder fejlen.

"Gradient descent" er processen med at opdatere vægtene, så fejlraten falder. Backpropagation bruges til at forudsige forholdet mellem det neurale netværks parametre og fejlraten, som sætter netværket op til gradientnedstigning. Træning af et netværk med gradientnedstigning involverede at beregne vægtene gennem fremadgående udbredelse, tilbagepropagere fejlen og derefter opdatere netværkets vægte.

Blogger og programmør med speciale i Maskinelæring , Deep Learning emner. Daniel håber at kunne hjælpe andre med at bruge AI's kraft til socialt gode.