Lección · Módulo 3 · Cálculo y optimización

Derivadas: la pendiente que aprende una IA

Una sola pregunta — ¿qué tan rápido cambia algo? — abre la puerta a todo el cálculo y a cómo las redes neuronales aprenden. La derivada es la pendiente de la tangente, y la tangente te dice hacia dónde moverte para bajar o subir.

Mate MathPlay · Lección 3.1 · Apertura del Módulo 3

9 minutosInteractivoVisualCon Python

Idea central: la derivada de una función en un punto es simplemente la pendiente de la línea recta tangente a la curva en ese punto. No es magia. Es la "inclinación" de la curva ahí. Y resulta que toda la maquinaria del entrenamiento de redes neuronales se reduce a usar esa pendiente para decidir hacia dónde mover los pesos. Si entendés cómo cambia una pendiente a lo largo de una curva, ya entendés la base del descenso por gradiente.

1 La pregunta original: ¿qué tan rápido cambia algo?

Imaginá un auto que viaja por una carretera. Su posición cambia con el tiempo. ¿Cuá>l es su velocidad en este momento exacto? No la velocidad promedio del viaje — la velocidad instantánea. Esa pregunta es lo que inventó el cálculo en el siglo XVII.

El truco: si tomaás dos momentos muy cercanos, calculás cuánto avanzó el auto entre ellos, y dividís por el tiempo transcurrido, tenés la velocidad promedio de ese tramo cortí>simo. Si esos dos momentos están cada vez más cerca, ese cociente se acerca a la velocidad instantánea.

velocidad ≈ (cambio de posición) / (cambio de tiempo)

La misma idea funciona para cualquier cosa que cambie: la temperatura de un horno, el costo de producción, la cantidad de mineral procesada, el error de una red neuronal mientras se entrena. La derivada es la versión exacta de esa pregunta cuando el "tramo cortito" se vuelve infinitamente pequeño.

2 La idea visual: la pendiente de la tangente

Pintar una función como una curva en un gráfico: el eje X es la entrada, el eje Y es la salida. Elegí un punto sobre la curva. Apoyar una regla en ese punto de modo que toque la curva sin cruzarla — eso es la tangente. La inclinación de esa regla es la derivada.

La derivada es la pendiente de la línea tangente x y f(x) pendiente suave f′(x) ≈ 0.2 pendiente fuerte f′(x) ≈ 1.5 casi plana f′(x) ≈ 0.08

Sobre el mismo gráfico, la derivada cambia de un punto a otro: en zonas planas la derivada es chica, en zonas empinadas la derivada es grande. Si la curva sube, la derivada es positiva; si baja, negativa; si está en un mínimo o máximo local, la derivada es cero.

3 Definición formal: el límite que define la derivada

El truco para "achicar el tramito hasta que sea infinitamente pequeño" se llama límite. La definición clásica:

f′(x) = límh→0 [ f(x + h) − f(x) ] / h

En palabras: tomás la diferencia f(x + h) − f(x) (cuánto cambia la función cuando te movés una distancia h), dividís por h, y achicás h tanto como puedas. El resultado es la derivada.

El cociente [f(x+h) − f(x)] / h es la pendiente entre dos puntos cercanos de la curva: la secante. Cuando h se hace muy chico, la secante se confunde con la tangente, y obtenés la pendiente exacta en el punto.

No hace falta hacerlo a mano

En la práctica nadie calcula derivadas con el límite. Hay reglas (regla de potencia, regla de la cadena, etc.) que te dan la derivada simbólica en una línea, y librerías como sympy o autograd que la calculan automáticamente. Lo importante es que entiendas qué significa.

4 Tu turno: mové el punto y mirá la tangente

Elegí una función con los botones y deslizá el punto rojo a lo largo de la curva. La línea naranja es la tangente en ese punto — su pendiente es f′(x). La línea gris punteada es la secante con un punto cercano (a distancia h); a medida que h se achica, la secante converge a la tangente.

Curva: f(x) Tangente: pendiente = f′(x) Secante: pendiente entre dos puntos

Sandbox interactivo

Deslizá x para mover el punto. Achicá h y mirá cómo la secante se confunde con la tangente.

x+0.80
h0.60
Valor de la función
f(x)
+0.64
Dónde está la curva en este x.
Derivada exacta
f′(x) (pendiente tangente)
+1.60
La curva sube: derivada positiva.
Aproximación por secante
[f(x+h) − f(x)] / h
+2.20
Achicá h y se acerca a la derivada exacta.

5 Las reglas que te ahorran la vida

En la práctica nadie calcula derivadas usando el límite. Hay cuatro o cinco reglas que cubren el 99% de los casos. Las dos más útiles:

Regla de potencia: si f(x) = xn, entonces f′(x) = n · xn−1

Si f(x) = x2, su derivada es 2x. Si f(x) = x3, su derivada es 3x2. Si es una constante, su derivada es 0 (las constantes no cambian con x).

Regla de la cadena: (f ∘ g)′(x) = f′(g(x)) · g′(x)

Cuando una función está "dentro" de otra (como en una red neuronal con muchas capas), su derivada es el producto de las derivadas individuales. Esa es la regla que permite hacer backpropagation, el algoritmo que entrena redes neuronales.

Otras reglas que vas a ver repetidas:

6 Por qué importa en IA: la derivada manda a bajar la colina

Una red neuronal aprende ajustando sus pesos para que el error sea cada vez más chico. El error es una función de los pesos: si cambiás un peso, el error cambia. La pregunta clave: ¿hacia dónde mover el peso para que el error baje?

La respuesta es directa: mové el peso en la dirección contraria a la derivada. Si la derivada es positiva (el error sube cuando aumentás el peso), entonces hay que bajar el peso. Si la derivada es negativa, hay que subirlo. Y la magnitud del paso es proporcional al tamaño de la derivada.

La derivada en cada punto te dice cómo bajar al mínimo peso w error w₀ pendiente negativa → subir w w₁ tangente horizontal derivada = 0 (mínimo) w₂ pendiente positiva → bajar w
wnuevo = wactual − α · f′(w)

Esa es la regla del descenso por gradiente, el algoritmo que entrena prácticamente todos los modelos de IA modernos. La constante α (learning rate, o tasa de aprendizaje) controla cuán grande es el paso. La derivada decide la dirección. Una sola idea matemática resuelve el problema de aprendizaje de millones de modelos.

7 Caso aplicado: optimización en operaciones mineras

Caso aplicado · punto óptimo en planta concentradora

Curva de recuperación vs. dosis de reactivo

En la flotación de Cu, la recuperación metá>lurgica depende de la dosis de colector. Si dosificás muy poco, la recuperación es baja. Si dosificás mucho, ganás poco y gastá>s reactivo de más. La curva tiene típicamente la forma:

recuperación(dosis) = Rmáx · (1 − e−k·dosis)

Esta es una función con saturación: sube rápido al principio y se va aplanando. La derivada de esta curva te dice cuánto ganás de recuperación por cada gramo adicional de reactivo. Cuando la derivada baja por debajo del costo unitario del reactivo, dosificar más deja de ser rentable.

Punto óptimo de dosis: donde la derivada de la recuperación iguala al costo marginal

Velocidad óptima de transportadora

Una transportadora minera tiene una curva de costo total que es la suma del consumo de energía (sube con la velocidad) y del costo de mantenimiento (baja con la velocidad, porque a baja velocidad la transportadora trabaja más tiempo). Para encontrar la velocidad óptima:

  1. Escribir el costo total como una función de la velocidad v.
  2. Calcular la derivada dC/dv.
  3. Igualar a cero y despejar v*.
Optimización industrial = derivar el costo total y buscar donde se anula

Calibración de un modelo predictivo de ley

Cuando entrenás un modelo de regresión para predecir la ley de mineral, calculás un error cuadrático medio entre lo predicho y lo real. Ese error es una función de los parámetros del modelo. Para que el modelo aprenda, la librerí>a (sklearn, pytorch, etc.) calcula la derivada del error con respecto a cada parámetro y ajusta los parámetros en la dirección contraria.

Entrenar un modelo = aplicar descenso por gradiente cientos o miles de veces

+ Más parientes del concepto

La derivada es la apertura del cálculo. Tiene varias variantes que aparecen seguido:

Derivadas de orden superiorVer

La derivada de una derivada es la segunda derivada, f″(x). Te dice la concavidad: si es positiva, la curva es cóncava hacia arriba (forma de "U"); si es negativa, hacia abajo. En física, si x(t) es posición, su segunda derivada es la aceleración. En optimización, la segunda derivada distingue mínimos de máximos cuando la primera derivada se anula.

Derivadas parciales (la próxima lección)Ver

Cuando una función depende de varias variables — como el error de una red neuronal, que depende de millones de pesos — calculás una derivada por cada variable, manteniendo las otras fijas. Esas son las derivadas parciales. El vector con todas ellas es el gradiente. Lo cuenta la lección 3.2.

Diferenciación automática (autodiff)Ver

Frameworks como PyTorch y TensorFlow calculan derivadas automáticamente, sin que vos escribas la fórmula. Recorren el grafo computacional aplicando la regla de la cadena en cada nodo. Esa magia es lo que hace práctico entrenar redes con millones o billones de parámetros sin derivar a mano.

Funciones no diferenciables (ReLU, mín, máx)Ver

Algunas funciones (como la ReLU, que tiene una esquina en 0) no son derivables en todos los puntos. Pero los frameworks usan subgradientes: una elección razonable de pendiente en los puntos problemáticos. En la práctica funciona perfectamente para entrenar redes.

Ver el código en Python: derivadas numéricas, simbólicas y descenso por gradiente Click para abrir

Cinco snippets que van de calcular una derivada a mano hasta ver el descenso por gradiente en acción.

1. Derivada numérica (definición por límite):

01_derivada_numerica.pyPYTHON
def derivada_numerica(f, x, h=1e-5):
    """Aproxima f'(x) usando la definicion de limite."""
    return (f(x + h) - f(x - h)) / (2 * h)

# Funcion: f(x) = x^2
f = lambda x: x**2

print(f"f'(2)  = {derivada_numerica(f, 2):.6f}")  # esperado: 4
print(f"f'(-3) = {derivada_numerica(f, -3):.6f}") # esperado: -6
print(f"f'(0)  = {derivada_numerica(f, 0):.6f}")  # esperado: 0 (minimo)

2. Derivada simbólica con sympy:

02_derivada_simbolica.pyPYTHON
import sympy as sp

x = sp.symbols('x')

# Funciones que vas a usar todo el tiempo
funciones = [
    x**2,
    x**3,
    sp.sin(x),
    sp.exp(x),
    sp.log(x),
    1 / (1 + sp.exp(-x)),   # sigmoide
]

for f in funciones:
    df = sp.diff(f, x)
    print(f"d/dx [{f}] = {df}")

3. Encontrar el mínimo con derivada = 0:

03_minimo_analitico.pyPYTHON
import sympy as sp

x = sp.symbols('x')

# Funcion de costo: f(x) = (x - 3)^2 + 2
f = (x - 3)**2 + 2
df = sp.diff(f, x)
print(f"Derivada: f'(x) = {df}")

# Igualar derivada a cero y resolver
puntos_criticos = sp.solve(df, x)
print(f"Puntos criticos: {puntos_criticos}")

# Verificar con segunda derivada (positivo = minimo)
d2f = sp.diff(df, x)
print(f"f''(3) = {d2f.subs(x, 3)}")
# Positivo: es un minimo

4. Descenso por gradiente paso a paso:

04_descenso_gradiente.pyPYTHON
# Minimizar f(x) = (x - 3)^2 + 2 con descenso por gradiente
def f(x):       return (x - 3)**2 + 2
def df(x):      return 2 * (x - 3)

x = 0.0           # punto inicial
alpha = 0.1       # learning rate
iteraciones = 20

for i in range(iteraciones):
    grad = df(x)
    x = x - alpha * grad
    print(f"Iter {i+1:2d}: x = {x:.4f}, f(x) = {f(x):.4f}, grad = {grad:.4f}")

print(f"
Minimo encontrado: x = {x:.4f}")
# Esperado: x converge a 3, que es el minimo verdadero

5. Optimizar dosis de reactivo en flotación:

05_dosis_optima.pyPYTHON
import numpy as np
from scipy.optimize import minimize_scalar

# Parametros: recuperacion maxima (%) y constante de cinetica
R_max = 92
k = 0.04
precio_Cu = 9000    # USD/ton concentrado por punto recuperado
costo_kg_reactivo = 3.5

def recuperacion(dosis):
    return R_max * (1 - np.exp(-k * dosis))

def beneficio_neto(dosis):
    # Negativo para que minimize_scalar busque el maximo
    return -(recuperacion(dosis) * precio_Cu - dosis * costo_kg_reactivo)

resultado = minimize_scalar(beneficio_neto, bounds=(0, 200), method='bounded')
dosis_optima = resultado.x

print(f"Dosis optima: {dosis_optima:.1f} g/t")
print(f"Recuperacion en optimo: {recuperacion(dosis_optima):.2f}%")
print(f"Beneficio neto: USD {-resultado.fun:.0f}")
# scipy.optimize por dentro usa derivadas para encontrar el optimo

8 Pregunta de chequeo

Una función de pérdida L(w) tiene L′(w) = -3 en el punto actual w = 5. Si querés minimizar la pérdida con descenso por gradiente, ¿hacia dónde mover w en el próximo paso?

Próxima lección

Hasta acá trabajamos con una función de una sola variable. Pero las redes neuronales tienen millones de pesos al mismo tiempo. Para optimizar funciones que dependen de muchas variables a la vez necesitamos las derivadas parciales y el gradiente. Esa es la lección 3.2.

LinkedIn WhatsApp

Regístrate al boletín MathPlay

De la idea al laboratorio que funciona: datos, simulación, visualización e IA explicadas con imágenes que se mueven. Te escribo cuando hay algo nuevo que vale la pena compartir.

Sin calendario fijo. Sin spam.

Listo. Te escribo cuando haya algo nuevo.

M
Mate MathPlay
Matemática visual abierta

MathPlay conecta matemática, programación y visualización para que los conceptos se entiendan jugando, no memorizando. Cada lección se sostiene por sí sola y trae código Python para que pruebes en tu máquina.

Más de MathPlay
← Lección anterior: transformaciones linealesSiguiente: gradiente →Volver al módulo