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.
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.
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.
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:
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.
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.
Sandbox interactivo
Deslizá x para mover el punto. Achicá h y mirá cómo la secante se confunde con la tangente.
- Tocá "Ir al mínimo" en la parábola:
x=0, la tangente es horizontal, derivada = 0. Esa es la clave de la optimización. - Tocá "Zona empinada izq": la tangente baja de izquierda a derecha. Derivada negativa.
- Tocá "Zona empinada der": la tangente sube. Derivada positiva.
- Achicá
hy mirá las tarjetas: la secante y la derivada exacta casi coinciden. Eso es el límite en acción. - Probá con la función "Pérdida típica": tiene dos valles. Esa es la forma típica de la función de error de una red neuronal — con varios mínimos locales donde la derivada se anula.
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:
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).
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:
- Suma: (f + g)′ = f′ + g′. La derivada de una suma es la suma de las derivadas.
- Producto: (fg)′ = f′g + fg′.
- Constante por función: (cf)′ = c · f′.
- Exponencial y logaritmo: (ex)′ = ex, (ln x)′ = 1/x.
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.
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
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:
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 marginalVelocidad ó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:
- Escribir el costo total como una función de la velocidad
v. - Calcular la derivada
dC/dv. - Igualar a cero y despejar
v*.
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):
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:
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:
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:
# 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:
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?
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.
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.
