Materi
Loss tidak bergantung langsung pada bobot; ia bergantung pada tebakan, dan tebakan bergantung pada bobot. Aturan rantai kalkulus menyambungkan keduanya: turunan loss terhadap bobot = (turunan loss terhadap tebakan) × (turunan tebakan terhadap bobot). Dive into Deep Learning §5.3 menyebut backpropagation sebagai penerapan aturan rantai ini secara berurutan dari keluaran ke masukan.
Untuk satu neuron linear ŷ = wx + b dan loss L = rata-rata (ŷ − y)²: ∂L/∂ŷ = 2(ŷ − y), ∂ŷ/∂w = x, dan ∂ŷ/∂b = 1. Jadi ∂L/∂w = rata-rata 2(ŷ − y)x dan ∂L/∂b = rata-rata 2(ŷ − y). Untuk neuron dengan sigmoid dan cross-entropy, d2l §4.1 menunjukkan bahwa turunan loss terhadap z menyederhana menjadi selisih peluang dan label, p − y.
Gradien hasil turunan bisa diperiksa dengan beda hingga: geser bobot sedikit ke atas dan ke bawah, hitung (L(w + h) − L(w − h)) / 2h. Untuk h kecil seperti 0,000001 hasilnya hampir sama dengan gradien analitis. Pemeriksaan ini lambat, jadi dipakai untuk menguji rumus, bukan untuk melatih.
import numpy as np
x = np.array([2.0, 4.0]); y = np.array([5.0, 9.0])
w, b = 1.0, 0.0
galat = w * x + b - y # [-3. -5.]
print(np.mean(2 * galat * x)) # dL/dw = -26.0
print(np.mean(2 * galat)) # dL/db = -8.0