Gradiente

Nivel UniversitarioDificultad ★★★★★Concepto⌖ Ver en el mapa

¿Qué es?

∇f=(∂f∂x1,…,∂f∂xn)\nabla f = \left(\frac{\partial f}{\partial x_1}, \dots, \frac{\partial f}{\partial x_n}\right): el vector de todas las derivadas parciales. Apunta en la dirección de máximo ascenso, su longitud es esa pendiente máxima y es perpendicular a los conjuntos de nivel. Si caminas en contra bajas lo más deprisa posible.

¿Por qué existe?

Queremos un objeto que responda a «¿hacia dónde es cuesta arriba, y cuánto?» para una función de muchas variables. Las derivadas parciales son nn números sueltos; juntos en un vector adquieren un significado geométrico que no depende del sistema de coordenadas, y que convierte la optimización en «seguir una flecha».

Intuición

Estás en una ladera con niebla. El gradiente es la flecha en el suelo que apunta directamente cuesta arriba; las curvas de nivel van perpendiculares a ella. Su longitud es la pendiente en esa dirección. El descenso de gradiente es: mira la flecha, da un paso en sentido contrario, repite.

               ∇f
               ↑
               │
       ╭───────●───────╮   ← curva de nivel f = c
     ╭─┴───────────────┴─╮

Definición formal

Para f:ℝn→ℝf : \R^n \to \R diferenciable en aa, ∇f(a)\nabla f(a) es el único vector tal que

f(a+h)=f(a)+∇f(a)⋅h+o(∥h∥).f(a + h) = f(a) + \nabla f(a)\cdot h + o(\norm h).

La derivada direccional en una dirección unitaria uu es Duf(a)=∇f(a)⋅uD_u f(a) = \nabla f(a)\cdot u, que se maximiza con u=∇f/∥∇f∥u = \nabla f/\norm{\nabla f} (Cauchy–Schwarz) y vale como máximo ∥∇f(a)∥\norm{\nabla f(a)}. Si ∇f(a)≠0\nabla f(a) \ne 0, es ortogonal al conjunto de nivel {f=f(a)}\{f = f(a)\}.

Fórmulas

∇f=(∂f∂x1,…,∂f∂xn)\nabla f = \left(\frac{\partial f}{\partial x_1}, \dots, \frac{\partial f}{\partial x_n}\right)
Duf=∇f⋅u≤∥∇f∥D_u f = \nabla f\cdot u \le \norm{\nabla f}
máximo ascenso a lo largo de ∇f\nabla f
θk+1=θk−η ∇L(θk)\theta_{k+1} = \theta_k - \eta\,\nabla L(\theta_k)
descenso de gradiente
n=∇F∥∇F∥n = \frac{\nabla F}{\norm{\nabla F}}
normal unitaria de una superficie implícita F(x,y,z)=0F(x,y,z) = 0

¿Cómo se calcula?

A mano: todas las derivadas parciales. En software, para una pérdida escalar de nn parámetros, la diferenciación automática en modo inverso calcula el gradiente completo por una pequeña constante por el coste de evaluar ff (Baur–Strassen), mientras que las diferencias finitas necesitarían n+1n + 1 evaluaciones.

Ejemplo

f(x,y)=x2+4y2f(x, y) = x^2 + 4y^2 (un cuenco alargado). ∇f=(2x,8y)\nabla f = (2x, 8y). En (2,1)(2, 1): ∇f=(4,8)\nabla f = (4, 8), que no apunta hacia el mínimo (0,0)(0, 0): apunta a través del valle estrecho. Por eso el descenso de gradiente simple zigzaguea en problemas mal condicionados (pruébalo en la demo de Descenso de gradiente).

¿Por qué importa?

El gradiente es el puente del cálculo a la IA moderna: todo modelo entrenado por descenso de gradiente, de la regresión lineal a los grandes modelos de lenguaje, sigue −∇L-\nabla L. También es como los renderizadores obtienen normales de formas implícitas, como los detectores de bordes encuentran fronteras y como la física deduce fuerzas de potenciales (F=−∇UF = -\nabla U).

Aplicaciones en informática

  • Normales de superficie★★★★★fundamentalGráficos por computador

    La normal de una superficie implícita F=0F = 0 es ∇F/∥∇F∥\nabla F/\norm{\nabla F}.

  • Campos de distancia con signo y ray marching★★★★★fundamentalGráficos por computador

    Para una distancia con signo dd, ∥∇d∥=1\norm{\nabla d} = 1 y ∇d\nabla d es la normal; los ray marchers la estiman con diferencias finitas.

  • Procesamiento de imagen y visión artificial★★★★★frecuenteSeñales, multimedia y visión

    Los bordes son ∥∇I∥\norm{\nabla I} grandes; los descriptores HOG son histogramas de direcciones del gradiente.

  • Mecánica clásica★★★★★frecuenteFísica y simulación

    Las fuerzas conservativas son menos el gradiente de un potencial: F=−∇UF = -\nabla U.

Dónde aparece en IA

  • Descenso de gradiente★★★★★fundamentalIA y machine learning

    La actualización θ←θ−η∇L(θ)\theta \leftarrow \theta - \eta\nabla L(\theta) es el gradiente usado como dirección.

¿Dónde se utiliza?

Temas de informática a los que se llega desde aquí, con la cadena de ideas que lleva a ellos:

Qué depende de él

Ejercicios

1Cálculo directo

Halla ∇f\nabla f para f(x,y,z)=x2y+yz3f(x,y,z) = x^2y + yz^3 en (1,2,−1)(1, 2, -1) y la tasa de aumento en la dirección (1,1,1)/3(1,1,1)/\sqrt3.

Solución

∇f=(2xy,x2+z3,3yz2)=(4,0,6)\nabla f = (2xy, x^2 + z^3, 3yz^2) = (4, 0, 6). Duf=(4+0+6)/3=10/3≈5,77D_u f = (4 + 0 + 6)/\sqrt3 = 10/\sqrt3 \approx 5{,}77; el máximo posible es ∥∇f∥=52≈7,21\norm{\nabla f} = \sqrt{52} \approx 7{,}21.

2Interpretación gráfica

Dibuja las curvas de nivel de f(x,y)=x2+4y2f(x,y) = x^2 + 4y^2 y el gradiente en (2,1)(2, 1). ¿Por qué la flecha no apunta al origen?

Solución

Las curvas de nivel son elipses, más anchas en xx. El gradiente (4,8)(4, 8) es perpendicular a la elipse que pasa por (2,1)(2,1), y esa no es la dirección radial (2,1)(2, 1) porque la elipse no es una circunferencia.

3IA

¿Por qué la diferenciación automática en modo inverso calcula ∇L∈ℝ109\nabla L \in \R^{10^9} en el tiempo de unas 3–5 evaluaciones de LL, mientras que las diferencias finitas necesitarían 10910^9?

Solución

Las diferencias finitas perturban un parámetro cada vez. El modo inverso ejecuta el programa una vez hacia delante y otra hacia atrás propagando ∂L/∂(intermedio)\partial L/\partial(\text{intermedio}); cada intermedio se visita una vez, así que el coste es un múltiplo constante de la pasada hacia delante, independiente del número de parámetros (con una única salida escalar).

↑ ↓ para navegar · ↵ · Esc