Capítulo 1

Derivación Univariada

1.1 Definición de Derivada

La derivada mide la tasa de cambio instantánea:

f(x)=dfdx=limh0f(x+h)f(x)hf'(x) = \frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}

1.2 Reglas de Derivación

Producto

(fg)=fg+fg(fg)' = f'g + fg'

Cociente

(fg)=fgfgg2\left(\frac{f}{g}\right)' = \frac{f'g - fg'}{g^2}

Cadena

(fg)=f(g(x))g(x)(f \circ g)' = f'(g(x)) \cdot g'(x)

Derivadas comunes

  • ddxxn=nxn1\frac{d}{dx} x^n = nx^{n-1}
  • ddxex=ex\frac{d}{dx} e^x = e^x
  • ddxlnx=1/x\frac{d}{dx} \ln x = 1/x
  • ddxsinx=cosx\frac{d}{dx} \sin x = \cos x

En ML

La regla de la cadena es la base del backpropagation. La derivada de σ(x)=1/(1+ex)\sigma(x) = 1/(1+e^{-x}) es σ(x)(1σ(x))\sigma(x)(1-\sigma(x)).

1.3 Descenso de Gradiente (1D)

Para minimizar f(x)f(x), iteramos:xt+1=xtηf(xt)x_{t+1} = x_t - \eta f'(x_t), donde η es la tasa de aprendizaje.

Visualización interactiva: ajusta η, pasos y punto inicial. Los puntos muestran el progreso del descenso.

xf(x)
Inicio: x = 2.000, f(x) = 3.860Final: x = -0.316, f(x) = -0.306

1.4 Optimización

Para encontrar mínimos/máximos, buscamos puntos donde f(x)=0f'(x) = 0.

Punto crítico

f(x)=0f'(x) = 0

Segunda derivada

f(x)>0    mıˊnimo,f(x)<0    maˊximof''(x) > 0 \implies \text{mínimo}, \quad f''(x) < 0 \implies \text{máximo}
python
import numpy as np
from scipy.optimize import minimize_scalar

# Minimizar f(x) = x^2 + 0.5*sin(3x)
def f(x):
    return x**2 + 0.5 * np.sin(3 * x)

resultado = minimize_scalar(f, bounds=(-2, 2), method='bounded')
print(f"Mínimo en x = {resultado.x:.4f}")
print(f"f(x) = {resultado.fun:.4f}")

# Con gradiente (descenso manual)
def df(x):
    return 2*x + 1.5 * np.cos(3*x)

x = 2.0
lr = 0.1
for i in range(20):
    x -= lr * df(x)
    print(f"Paso {i+1}: x = {x:.4f}")
print(f"Final: x = {x:.4f}, f(x) = {f(x):.4f}")