Why this matters for ML
Tu modelo tiene miles o millones de parámetros: la loss es una función de muchas variables. El gradient es el vector de todas las derivadas parciales, y apunta en la dirección de máximo crecimiento de la loss. Gradient descent — el algoritmo que entrena casi todo el ML — simplemente da pasos en la dirección opuesta al gradient. Este módulo es donde el cálculo se vuelve el motor del aprendizaje.
Concepts covered
- Funciones de varias variables
- Partial derivatives
- Gradient (vector de parciales)
- Directional derivative
- El gradient como dirección de máximo ascenso
- Interpretación geométrica (superficies, level sets)
Intuition first
🎬 3Blue1Brown Essence of Calculus cap. 7 (implica gradiente) y sobre todo Khan Academy — Multivariable Calculus (unidades de partial derivatives y gradient). Idea: la parcial mide la pendiente si te mueves solo por un eje.
Theory & key results
Función multivariable: toma un vector y devuelve un escalar (p. ej. la loss). Su gráfica es una "superficie" en dimensión alta.
Partial derivative: = deriva respecto a tratando las demás variables como constantes. Mide la tasa de cambio si te mueves solo en la dirección del eje .
Gradient: junta todas las parciales en un vector: Dos hechos clave:
- apunta en la dirección de máximo ascenso (donde crece más rápido). Su magnitud es la pendiente en esa dirección.
- es perpendicular a los level sets (curvas/superficies donde es constante).
Directional derivative: la tasa de cambio en una dirección unitaria es . Es máxima cuando apunta como (por eso el gradient es "la mejor dirección").
Conexión con ML — gradient descent: para minimizar la loss , muévete contra el gradient: con learning rate . Repetir esto es, en esencia, cómo aprende un modelo (detalles en Calc-10).
Worked example
.
- (y es constante).
- .
- . En : .
Directional derivative en hacia : . Hacia la dirección de mismo (normalizado) sería , el máximo posible.
Notebook exercises (by hand)
- : calcula y .
- para ; ¿qué dirección apunta y por qué tiene sentido geométrico?
- Para (plano), calcula y nota que es constante. ¿Dirección de máximo ascenso?
- Directional derivative de en hacia .
- Deriva componente a componente (¡es el gradiente de la loss de regresión!).
- Explica por qué gradient descent resta el gradient en vez de sumarlo.
Python lab
import numpy as np, sympy as sp
x, y = sp.symbols("x y")
f = x**2 + 3*x*y + y**2
grad = [sp.diff(f, v) for v in (x, y)]
print("grad simbólico:", grad)
print("grad en (1,2):", [g.subs({x:1, y:2}) for g in grad]) # [8, 7]
# gradiente numérico de una f: R^n -> R
def num_grad(f, p, h=1e-6):
p = np.asarray(p, float); g = np.zeros_like(p)
for i in range(len(p)):
e = np.zeros_like(p); e[i] = h
g[i] = (f(p+e) - f(p-e)) / (2*h)
return g
F = lambda v: v[0]**2 + 3*v[0]*v[1] + v[1]**2
print("grad numérico en (1,2):", num_grad(F, [1., 2.])) # ~[8, 7]
# un paso de gradient descent para minimizar F
theta = np.array([3., 3.]); eta = 0.1
for _ in range(20):
theta = theta - eta * num_grad(F, theta)
print("tras 20 pasos:", theta) # se acerca a (0,0)
Examen final 📝
Intenta cada nivel antes de abrir las soluciones.
🟡 Medio
- para ; evalúalo en .
- para .
🟠 Medio-difícil
- Para : dibuja/argumenta que en es perpendicular al level set (círculo) que pasa por ese punto.
- Calcula la directional derivative de en hacia , e indica en qué dirección crece más rápido.
🔴 Difícil
- Deriva para (regresión lineal multivariable), primero componente a componente y luego en forma matricial .
- Demuestra que la dirección de máximo ascenso de en un punto es exactamente (maximiza sobre vectores unitarios ; usa Cauchy–Schwarz, LA-01).
✅ Soluciones
- ; en : .
- .
- en , que es paralelo a = el radio; la tangente al círculo en es perpendicular al radio ⇒ level set.
- en . . Crece más rápido en dirección (normalizada).
- Componente : . Apilando sobre : .
- Maximizar con : por Cauchy–Schwarz , con igualdad cuando . Luego el máximo es en .