Hoppa till innehållet
AI-grafen
D· AI-utvecklareLaboration· ca 75 min· container

Labb: ett neuronnät i ren NumPy — forward, backprop, gradientkontroll

Implementera forward pass, loss, backprop och träningsloop för ett tvålagersnät, verifiera gradienterna numeriskt och lära nätet XOR.

Lär ut: backpropagation · Kräver: neuronnatgradient-descent

Teori

z₁ = W₁x + b₁, a₁ = ReLU(z₁), z₂ = W₂a₁ + b₂, L = ½‖z₂ − y‖². Bakåt: δ₂ = z₂ − y; ∂L/∂W₂ = δ₂a₁ᵀ; δ₁ = (W₂ᵀδ₂) ⊙ 1[z₁>0]; ∂L/∂W₁ = δ₁xᵀ. Den numeriska kontrollen (L(w+ε) − L(w−ε))/2ε avslöjar varje fel i härledningen.

Deluppgifter

  1. forward — `forward(params, X)` returnerar (z1, a1, z2) för en batch X (n×d).
  2. backward — `backward(params, X, Y, cache)` returnerar gradienter för W1, b1, W2, b2 (medel över batchen).
  3. träna — `train(X, Y, hidden, lr, steps, seed)` tränar med gradient descent och returnerar params.

Evals: xor-loss (loss <= 0.05)

Logga in för att köra laborationen.

Förväntade resultat

Gradientkontrollen ger relativ skillnad < 1e-5 för alla parametrar. XOR-lossen efter 3000 steg < 0.05.

Vanliga fel

  • ReLU-derivatan glömd → δ₁ = W₂ᵀδ₂ utan maskering (gradientkontrollen för W1 faller).
  • Transponat fel: W₁ är h×d, så ∂L/∂W₁ = δ₁ᵀ-form beror på din layout — håll fast vid en.
  • Medelvärde över batchen saknas → gradienten n gånger för stor.