AI 101
Hvad er Backpropagation?

Hvad er Backpropagation?
Dybe læringssystemer kan lære ekstremt komplekse mønstre, og de opnår dette ved at justere deres vægte. Hvordan justeres vægtene af et dybt neuralt netværk nøjagtigt? De justeres gennem en proces kaldet backpropagation. 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 en nets vægte.
Backpropagation kan være svært at forstå, og beregningerne, der bruges til at udføre backpropagation, kan være ret komplekse. Denne artikel vil forsøge at give dig en intuitiv forståelse af backpropagation, ved at bruge lidt kompleks matematik. Dog er nogen diskussion af matematikken bag backpropagation nødvendig.
Målet med Backpropagation
Lad os starte med at definere målet med backpropagation. Vægtene af et dybt neuralt netværk er styrken af forbindelserne mellem enhederne i et neuralt netværk. Når neuralt netværk er etableret, gøres antagelser om, hvordan enhederne i et lag er forbundet med de lag, der er forbundet med det. Når dataene bevæger sig gennem neuralt netværk, beregnes vægtene og gøres antagelser. Når dataene når det sidste lag af netværket, gøres en forudsigelse om, hvordan funktionerne er relateret til klasserne i datasættet. Forskellen mellem de forudsagte værdier og de faktiske værdier er tab/fejl, og målet med backpropagation er at reducere tabet. Dette opnås ved at justere vægtene af netværket, så antagelserne bliver mere som de sande relationer mellem inputfunktionerne.
Træning af et Dybt Neuralt Netværk
Før backpropagation kan udføres på et neuralt netværk, skal den normale/forwards træningsgang af et neuralt netværk udføres. Når et neuralt netværk oprettes, initialiseres en sæt af vægte. Værdien af vægtene vil blive ændret, mens netværket trænes. Den forwards træningsgang af et neuralt netværk kan opfattes som tre separate trin: neuronaktivering, neurontransfer og forwardspropagation.
Når vi træner et dybt neuralt netværk, har vi brug for at bruge flere matematiske funktioner. Neuroner i et dybt neuralt netværk består af indgående data og en aktiveringsfunktion, der bestemmer værdien, der er nødvendig for at aktivere noden. Aktiveringsværdien af en neuron beregnes med flere komponenter, der er en vægtet sum af input. Vægtene og inputværdierne afhænger af indekset for noden, der bruges til at beregne aktiveringen. En anden værdi skal også tages i betragtning, når aktiveringsværdien beregnes, en biasværdi. Biasværdierne ændrer sig ikke, så de bliver ikke multipliceret sammen med vægten og input, de bliver bare tilføjet. Alt dette betyder, at følgende ligning kan bruges til at beregne aktiveringsværdien:
Aktivering = sum(vægt * input) + bias
Efter neuronen er aktiveret, bruges en aktiveringsfunktion til at bestemme, hvad outputtet af neuronen vil være. Forskellige aktiveringsfunktioner er optimale for forskellige læringsopgaver, men almindelige aktiveringsfunktioner inkluderer sigmoidfunktionen, Tanh-funktionen og ReLU-funktionen.
Når outputtet af neuronen er beregnet ved at køre aktiveringsværdien gennem den ønskede aktiveringsfunktion, udføres forwardspropagation. Forwardspropagation er bare at tage outputtet af et lag og gøre det til input for det næste lag. De nye input bruges til at beregne de nye aktiveringsfunktioner, og outputtet af denne operation overføres til det følgende lag. Denne proces fortsætter hele vejen gennem neuralt netværk.
Backpropagation i Netværket
Processen med backpropagation tager de endelige beslutninger fra en models træningsgang og bestemmer derefter fejlene i disse beslutninger. Fejlene beregnes ved at kontrastere outputtet/beslutningerne fra netværket og de forventede/ønskede output fra netværket.
Når fejlene i netværkets beslutninger er beregnet, backpropageres denne information gennem netværket, og parametrene i netværket ændres undervejs. Metoden, der bruges til at opdatere vægtene af netværket, er baseret på kalkulus, specifikt på kæderegel. Dog er en forståelse af kalkulus ikke nødvendig for at forstå idéen bag backpropagation. Du skal bare vide, at når en outputværdi er givet fra en neuron, beregnes skråningen af outputværdien med en transferfunktion, der producerer en afledt output. Når backpropagation udføres, beregnes fejlen for en bestemt neuron i henhold til følgende formel:
fejl = (forventet_output – faktisk_output) * skråning af neuronnets outputværdi
Når der opereres på neuronerne i outputlaget, bruges klassenværdien som den forventede værdi. Efter at fejlen er beregnet, bruges fejlen som input for neuronerne i det skjulte lag, hvilket betyder, at fejlen for dette skjulte lag er den vægtede fejl af neuronerne i outputlaget. Fejlberegningerne rejser baglæns gennem netværket langs vægtene.
Efter at fejlene for netværket er beregnet, skal vægtene i netværket opdateres. Som nævnt tidligere, indebærer fejlberegning at bestemme skråningen af outputværdien. Efter at skråningen er beregnet, kan en proces kaldet gradient descent bruges til at justere vægtene i netværket. En gradient er en skråning, hvis vinkel/størrelse kan måles. Skråning beregnes ved at plotte “y over” eller “stigning” over “løb”. I tilfældet af neuralt 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 når netværkets vægte justeres, øges eller formindskes fejlen.
“Gradient descent” er processen med at opdatere vægtene, så fejlraten formindskes. Backpropagation bruges til at forudsige relationen mellem neuralt netværks parametre og fejlraten, hvilket sætter netværket op til gradient descent. Træning af et netværk med gradient descent indebærer at beregne vægtene gennem forwardspropagation, backpropagere fejlen og derefter opdatere vægtene af netværket.












