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. 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