chain rule
Kædereglen er en matematisk formel til at beregne den afledte af en sammensat funktion, og den er central i backpropagation til at opdatere vægte i neurale netværk.
Kort fortalt
Kort fortalt: Kædereglen lader dig beregne, hvordan en ændring i én parameter påvirker den endelige fejl i et neuralt netværk, trin for trin.
- Kategori
- begreb
- Niveau
- øvet
Betydninger
1- 1
Kædereglen er en regel i differentialregning, som angiver, at den afledte af en sammensat funktion er lig produktet af de afledte af de enkelte funktioner i sammensætningen.
- For at beregne gradienten af tabsfunktionen med hensyn til vægtene i et neuralt netværk anvender man kædereglen gentagne gange. — Goodfellow, Bengio, Courville - Deep Learning (2016)
- Backpropagation er i bund og grund en effektiv anvendelse af kædereglen til at beregne partielle afledte. — Rumelhart, Hinton, Williams - Learning representations by back-propagating errors (1986)
Hvornår bruges det
Kædereglen anvendes i backpropagation-algoritmen til at beregne gradienter af tabsfunktionen med hensyn til hver vægt i netværket. Den muliggør effektiv træning af dybe neurale netværk ved at propagere fejlen baglæns gennem lagene.
Formel
h'(x) = f'(g(x)) * g'(x) for h(x) = f(g(x)). I flerdimensionel sammenhæng: ∇_θ L = (∂L/∂a) · (∂a/∂θ), hvor a er aktivering og θ er parametre.Kodeeksempel
import numpy as np
def sigmoid(x):
return 1/(1+np.exp(-x))
def sigmoid_derivative(x):
return sigmoid(x)*(1-sigmoid(x))
# Forward pass
x = np.array([0.5])
w1 = np.array([0.8])
w2 = np.array([0.2])
b = 0.1
y_true = 1.0
z1 = x * w1
a1 = sigmoid(z1)
z2 = a1 * w2 + b
y_pred = sigmoid(z2)
# Loss (MSE)
loss = 0.5 * (y_pred - y_true)**2
# Backward pass using chain rule
dL_dy = y_pred - y_true
dy_dz2 = sigmoid_derivative(z2)
dz2_dw2 = a1
dL_dw2 = dL_dy * dy_dz2 * dz2_dw2
dz2_da1 = w2
da1_dz1 = sigmoid_derivative(z1)
dz1_dw1 = x
dL_dw1 = dL_dy * dy_dz2 * dz2_da1 * da1_dz1 * dz1_dw1
print(f"Gradient w.r.t w2: {dL_dw2}")
print(f"Gradient w.r.t w1: {dL_dw1}")Eksempel på manuel backpropagation med kædereglen for et to-lags neuralt netværk.
Oprindelse
Begrebet stammer fra differentialregning og blev formaliseret af Gottfried Wilhelm Leibniz i 1600-tallet. I maskinlæring blev det introduceret til backpropagation i 1980'erne af Rumelhart, Hinton og Williams.
Kilder
2- Learning representations by back-propagating errors (1986)
- Deep Learning (2016) - Goodfellow, Bengio, Courville