English · Español
Fase 8 — Quizzes¶
Espejo legible de
data/quizzes/phase-08-tensor-autograd.yaml. Centrado en los dos problemas nuevos de la fase: gradientes con broadcasting y derivadas de matmul/softmax-CE batcheado.
Fuente de verdad: data/quizzes/phase-08-tensor-autograd.yaml.
q-08-01 — Broadcasting en el backward¶
a + b con a.shape = (3,), b.shape = (4, 3). El gradiente upstream es (4, 3). ¿Cómo recibe a un gradiente de forma (shape) (3,)?
- Reshape
(4, 3)a(3,)descartando el primer eje. - Sumar el gradiente upstream a lo largo de los ejes de broadcasting (replicados) (aquí el eje 0) →
(3,). - Multiplicar por un one-hot del eje de broadcasting.
- NumPy lo gestiona automáticamente.
Respuesta
**Opción 2.** El broadcasting en forward es replicación virtual a lo largo de ejes ausentes o de longitud 1. El gradiente respecto a `a` suma las contribuciones de cada copia replicada — así que el backward debe hacer `grad.sum(axis=...)` explícitamente. NumPy **no** lo hace por ti.q-08-02 — Gradientes de matmul (multi-opción)¶
C = A @ B, A: (M, K), B: (K, N), upstream dC: (M, N).
dA = dC @ B.TdB = A.T @ dCdA = B @ dC.TdB = dC @ AdA = dC * B.T(elementwise)
Respuesta
**Opciones 1 y 2.** El gradiente de matmul es a su vez un matmul: `dA = dC B^T`, `dB = A^T dC`. Las formas (shapes) lo confirman.q-08-03 — Gradiente de s = x.sum() (libre)¶
x.shape = (3, 5), ds = 1. ¿Qué vale dx?
Respuesta
`dx` tiene forma (shape) `(3, 5)` y cada entrada vale `1` (es decir, `np.ones_like(x) * ds`). Razón: `∂s/∂x_ij = 1` para todo `(i, j)`.q-08-04 — ¿Por qué diferencias centradas en gradcheck?¶
- Más baratas computacionalmente.
- Error de truncamiento
O(ε²)(los términos de Taylor de orden par se cancelan) frente aO(ε)para diferencias hacia delante. - Las diferencias hacia delante necesitan conocer la derivada en el borde.
- La central es la única opción diferenciable.
Respuesta
**Opción 2.** La central cancela el término dominante `O(ε)`; obtienes ~8 dígitos buenos con ε ≈ 1e-4 frente a ~4 con la forward.q-08-05 — Gradiente de softmax CE batcheado (libre)¶
z: (B, K), y: (B,). Indica dL/dz.