01 · De la pendiente al movimiento
Optimizar mediante una sucesión de puntos
La derivada no solo permite localizar candidatos resolviendo f′(x)=0. También indica una dirección local de mejora. A partir de una posición inicial x₀, podemos generar valores x₁,x₂,… que intenten acercarse a un extremo.
Estos métodos son útiles cuando resolver la ecuación de la derivada resulta difícil, pero sí podemos evaluarla. Su versión multidimensional, el descenso por gradiente, es central en optimización y aprendizaje automático.
02 · Dos objetivos
Descenso para mínimos, ascenso para máximos
Para minimizar, avanzamos en sentido opuesto a la derivada:
Para maximizar, avanzamos en el mismo sentido:
α>0 es el tamaño de paso o velocidad de aprendizaje. Puede ser constante, cambiar con k o elegirse mediante una búsqueda en cada iteración.
03 · Lectura geométrica
El signo decide la dirección
En descenso:
- si
f′(xk)>0, la función crece hacia la derecha y el método se mueve a la izquierda; - si
f′(xk)<0, la función decrece hacia la derecha y el método se mueve a la derecha; - si
f′(xk)=0, el paso es cero.
La magnitud |f′(xk)| escala el desplazamiento. Una pendiente grande genera un paso mayor cuando α permanece fijo.
04 · Modelo de referencia
Descenso sobre una función cuadrática
Consideremos:
El mínimo global está en x*=2. Con x₀=−3 y α=0,2:
| k | xk | f′(xk) | xk+1 |
|---|---|---|---|
0 | −3 | −10 | −1 |
1 | −1 | −6 | 0,2 |
2 | 0,2 | −3,6 | 0,92 |
3 | 0,92 | −2,16 | 1,352 |
Los puntos se acercan a 2 sin cruzarlo porque este paso contrae el error manteniendo su signo.
05 · Analizar la convergencia
Una recurrencia para la distancia al óptimo
Definimos el error ek=xk−2. Al sustituir la derivada en la regla de descenso:
Después de k pasos:
La sucesión converge a 2 exactamente cuando el factor tiene magnitud menor que uno:
06 · Elegir α
Convergencia, oscilación y divergencia
| Valor de α | Factor 1−2α | Comportamiento en el ejemplo |
|---|---|---|
0<α<0,5 | entre 0 y 1 | convergencia sin cruzar el mínimo |
α=0,5 | 0 | llega al mínimo en un paso |
0,5<α<1 | entre −1 y 0 | convergencia oscilatoria |
α=1 | −1 | oscila sin acercarse |
α>1 | menor que −1 | diverge oscilando |
Estos límites pertenecen a esta cuadrática. En otra función, la escala de la curvatura cambia el rango seguro de pasos.
07 · El papel de la segunda derivada
Curvas pronunciadas requieren pasos menores
Para la cuadrática general:
se cumple f′(x)=c(x−x*) y:
La convergencia exige 0<α<2/c. Una curvatura c grande reduce el rango estable. Por eso una misma velocidad de aprendizaje puede funcionar en una escala y divergir en otra.
En funciones más generales se buscan cotas sobre cómo cambia la derivada. No basta con que la función tenga un mínimo.
08 · Cuándo terminar
Criterios de convergencia
Un programa no puede iterar indefinidamente. Los criterios más comunes son:
- gradiente pequeño:
|f′(xk)|≤εg; - paso pequeño:
|xk+1−xk|≤εx; - mejora pequeña:
|f(xk+1)−f(xk)|≤εf; - máximo de iteraciones o evaluaciones.
Conviene combinar varios. Un paso pequeño puede deberse a un α diminuto, no a estar cerca del óptimo; una mejora pequeña puede ser producto del redondeo o del ruido.
09 · Mantener la factibilidad
Descenso proyectado sobre un intervalo
Si solo se admiten valores L≤x≤U, una actualización puede salir del dominio. La proyección recorta el candidato:
Un mínimo restringido puede quedar en una frontera aun cuando allí la derivada no sea cero. Si la proyección repite el mismo valor, debemos distinguir entre una solución de frontera y un paso bloqueado por una elección incorrecta de dirección.
10 · Dependencia del inicio
El método es local
En una función con varios valles, distintos puntos iniciales pueden converger a mínimos diferentes. La derivada describe el entorno actual, no compara todas las regiones del dominio.
Además, iniciar exactamente en un punto con f′(x)=0 produce un paso nulo aunque ese punto sea un máximo local o un estacionario sin extremo.
Para buscar soluciones globales se pueden usar varios inicios, una exploración previa en grilla o conocimiento adicional sobre convexidad. Si f es convexa y las condiciones del método se cumplen, cualquier mínimo local es global.
11 · Buscar máximos
Ascenso por la pendiente
Para maximizar g(x) usamos xk+1=xk+αg′(xk). Esto equivale a aplicar descenso a −g(x).
Por ejemplo, para g(x)=5−(x−3)²:
La recurrencia alrededor del máximo x*=3 tiene la misma forma que el descenso de la cuadrática convexa.
12 · No fijar α de antemano
Reducir el paso cuando no hay mejora
Una búsqueda hacia atrás comienza con un paso propuesto y lo reduce, por ejemplo multiplicándolo por 0,5, hasta que el nuevo punto disminuya la función.
- Calcular la dirección
d=−f′(x). - Probar
xnuevo=x+αd. - Si no mejora, reemplazar
αporβα, con0<β<1. - Detener si mejora o si el paso resulta demasiado pequeño.
Exigir solo f(xnuevo)<f(x) es una versión pedagógica. Métodos profesionales usan condiciones más precisas para garantizar una disminución suficiente.
13 · Cuando f′ no está disponible
Aproximar la pendiente tiene un costo
Una diferencia central aproxima la derivada:
Un h grande introduce error de truncamiento; uno extremadamente pequeño amplifica el redondeo y el ruido. Además, cada pendiente requiere al menos dos evaluaciones de la función.
Si la función proviene de mediciones ruidosas, el cociente puede ser muy inestable. En ese caso una búsqueda sin derivadas, un ajuste local o promedios repetidos pueden ser preferibles.
14 · Exploración interactiva
Laboratorio: trayectoria y tamaño de paso
Modificá α, el punto inicial y la cantidad de iteraciones. Las líneas unen la sucesión generada por descenso sobre f(x)=(x−2)²+1.
Descenso iterativo
xₖ₊₁ = xₖ − 0,2 · 2(xₖ−2)
Convergencia sin oscilación: el error conserva su signo y disminuye.
La parábola representa la función; los marcadores y segmentos muestran las posiciones visitadas por el algoritmo.
Preguntas para explorar
- Compará
α=0,2,α=0,5yα=0,8. - ¿Qué sucede en
α=1y por encima de ese valor? - Cambiá
x₀. ¿Se modifica el rango estable deα? - Con
α=0,05, ¿un paso final pequeño demuestra que ya alcanzamos el mínimo?
15 · Implementación
Descenso con validaciones y criterios de parada
function descenso(fn, derivada, inicio, {
paso = 0.1,
toleranciaGradiente = 1e-8,
maxIteraciones = 1000
} = {}) {
if (typeof fn !== "function" || typeof derivada !== "function") {
throw new TypeError("fn y derivada deben ser funciones");
}
if (!(paso > 0) || !(toleranciaGradiente > 0) ||
!Number.isInteger(maxIteraciones) || maxIteraciones < 1) {
throw new RangeError("Opciones inválidas");
}
let x = inicio;
const historial = [{ x, valor: fn(x) }];
let convergio = false;
for (let k = 0; k < maxIteraciones; k++) {
const gradiente = derivada(x);
if (!Number.isFinite(gradiente)) throw new Error("Gradiente no finito");
if (Math.abs(gradiente) <= toleranciaGradiente) {
convergio = true;
break;
}
const siguiente = x - paso * gradiente;
const valor = fn(siguiente);
if (!Number.isFinite(siguiente) || !Number.isFinite(valor)) {
throw new Error("La iteración divergió");
}
x = siguiente;
historial.push({ x, valor });
}
return { x, valor: fn(x), convergio, iteraciones: historial.length - 1, historial };
}
const f = x => (x - 2) ** 2 + 1;
const df = x => 2 * (x - 2);
const resultado = descenso(f, df, -3, { paso: 0.2 });
const { historial, ...resumen } = resultado;
console.log(resumen);
console.log("Primeros pasos:", historial.slice(0, 5));
Descenso con reducción automática del paso
function pasoConRetroceso(fn, derivada, x, pasoInicial = 1, factor = 0.5) {
if (!(pasoInicial > 0) || !(factor > 0 && factor < 1)) {
throw new RangeError("Paso o factor inválido");
}
const gradiente = derivada(x);
const valorActual = fn(x);
let paso = pasoInicial;
while (paso > Number.EPSILON * Math.max(1, Math.abs(x))) {
const candidato = x - paso * gradiente;
if (fn(candidato) < valorActual) {
return { x: candidato, paso, mejoro: true };
}
paso *= factor;
}
return { x, paso: 0, mejoro: false };
}
const f = x => (x - 2) ** 4 + (x - 2) ** 2 + 1;
const df = x => 4 * (x - 2) ** 3 + 2 * (x - 2);
console.log(pasoConRetroceso(f, df, -1));
16 · Leer una ejecución
Señales para diagnosticar el método
| Observación | Causa posible | Acción |
|---|---|---|
| avance muy lento | paso demasiado pequeño o zona plana | aumentar con cautela o adaptar α |
| oscila y se acerca | paso estable pero grande | aceptar o reducir α |
| valores crecen rápidamente | paso inestable | reducir α y reiniciar |
| se detiene lejos de un mínimo | punto estacionario o criterio débil | clasificar y probar otros inicios |
| trayectoria errática | derivada ruidosa | promediar o usar otro método |
Registrar xk, f(xk), f′(xk) y el paso efectivo convierte un fallo opaco en un comportamiento analizable.
17 · Comprensión
Confusiones frecuentes
«Siempre hay que moverse en el sentido de la derivada»
Eso produce ascenso. Para minimizar se utiliza el sentido opuesto.
«Un α mayor siempre converge más rápido»
Puede oscilar, saltar la región óptima o divergir. El rango estable depende de la curvatura.
«Gradiente cero garantiza un mínimo»
También aparece en máximos y otros puntos estacionarios. Hay que clasificar el resultado.
«Si f disminuye en un paso, el algoritmo convergerá»
Una mejora aislada no garantiza el comportamiento futuro ni la optimalidad global.
«El resultado no depende del punto inicial»
En funciones no convexas, diferentes inicios pueden terminar en extremos distintos.
«Un cambio pequeño en x demuestra convergencia»
También puede deberse a un tamaño de paso minúsculo o a límites de precisión.
18 · Práctica guiada
Ejercicios de aplicación
Ejercicio 1: una iteración
Para f(x)=x², x₀=3 y α=0,1, calculá x₁.
Ver solución
f′(x)=2x. Entonces x₁=3−0,1·6=2,4.
Ejercicio 2: determinar estabilidad
En f(x)=(x−2)²+1, ¿qué ocurre con α=0,75?
Ver respuesta
El factor es 1−2α=−0,5. El error cambia de signo y reduce su magnitud a la mitad: converge oscilando.
Ejercicio 3: curvatura diferente
Para f(x)=5(x−1)², hallá el intervalo de pasos constantes que converge.
Ver solución
La derivada es 10(x−1), por lo que el factor es 1−10α. Se exige |1−10α|<1, es decir, 0<α<0,2.
Ejercicio 4: ascenso
Para maximizar g(x)=4−(x−1)² desde x₀=0 con α=0,25, calculá x₁.
Ver solución
g′(x)=−2(x−1) y g′(0)=2. En ascenso, x₁=0+0,25·2=0,5.
Ejercicio 5: proyección
El dominio es [0,4] y una actualización de descenso propone x=−1,2. ¿Cuál es el punto proyectado?
Ver respuesta
min(4,max(0,−1,2))=0. La iteración queda en la frontera izquierda.
19 · Síntesis
Ideas para recordar
- El descenso resta una fracción de la derivada; el ascenso la suma.
- El tamaño de paso controla rapidez y estabilidad.
- La curvatura determina qué pasos constantes pueden converger.
- Conviene combinar tolerancias con un máximo de iteraciones.
- Las restricciones pueden incorporarse mediante proyección.
- El método es local y depende del punto inicial en funciones no convexas.
- Una búsqueda hacia atrás reduce pasos que no mejoran el objetivo.
- Registrar la trayectoria permite diagnosticar oscilación y divergencia.
En el próximo tema integraremos modelado, análisis y algoritmos en un proyecto completo de optimización y verificación.