¿Qué es?
: 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 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 diferenciable en , es el único vector tal que
La derivada direccional en una dirección unitaria es , que se maximiza con (Cauchy–Schwarz) y vale como máximo . Si , es ortogonal al conjunto de nivel .
Fórmulas
- máximo ascenso a lo largo de
- descenso de gradiente
- normal unitaria de una superficie implícita
¿Cómo se calcula?
A mano: todas las derivadas parciales. En software, para una pérdida escalar de parámetros, la diferenciación automática en modo inverso calcula el gradiente completo por una pequeña constante por el coste de evaluar (Baur–Strassen), mientras que las diferencias finitas necesitarían evaluaciones.
Ejemplo
(un cuenco alargado). . En : , que no apunta hacia el mínimo : 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 . 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 ().
Aplicaciones en informática
La normal de una superficie implícita es .
Para una distancia con signo , y es la normal; los ray marchers la estiman con diferencias finitas.
Los bordes son grandes; los descriptores HOG son histogramas de direcciones del gradiente.
Las fuerzas conservativas son menos el gradiente de un potencial: .
Dónde aparece en IA
La actualización 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:
ℒ IA y machine learning
- Descenso de gradiente★★★★★
- Descenso de gradiente→Learning rate (tasa de aprendizaje)★★★★★
- Descenso de gradiente→Retropropagación (backpropagation)★★★★★
- Descenso de gradiente→Descenso de gradiente estocástico (SGD)★★★★★
- Matriz hessiana→Paisaje de la pérdida (loss landscape)★★★★★
- Multiplicadores de Lagrange→Máquinas de vectores soporte (SVM)★★★★★
- +12
3D Gráficos por computador
- Normales de superficie★★★★★
- Campos de distancia con signo y ray marching★★★★★
- Normales de superficie→Iluminación y sombreado★★★★★
- Normales de superficie→Ray tracing (trazado de rayos)★★★★★
- Laplaciano→Procesado de mallas (geometría diferencial discreta)★★★★★
- Normales de superficie→Ray tracing (trazado de rayos)→La ecuación de renderizado★★★★★
Qué depende de él
Ejercicios
Halla para en y la tasa de aumento en la dirección .
Solución
. ; el máximo posible es .
Dibuja las curvas de nivel de y el gradiente en . ¿Por qué la flecha no apunta al origen?
Solución
Las curvas de nivel son elipses, más anchas en . El gradiente es perpendicular a la elipse que pasa por , y esa no es la dirección radial porque la elipse no es una circunferencia.
¿Por qué la diferenciación automática en modo inverso calcula en el tiempo de unas 3–5 evaluaciones de , mientras que las diferencias finitas necesitarían ?
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 ; 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).