Capítulo 1

Derivación Univariada

1.1 Definición de Derivada

La derivada mide la tasa de cambio instantánea:

f′(x)=dfdx=lim⁡h→0f(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)′=f′g+fg′(fg)' = f'g + fg'

Cociente

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

Cadena

(f∘g)′=f′(g(x))⋅g′(x)(f \circ g)' = f'(g(x)) \cdot g'(x)

Derivadas comunes

  • ddxxn=nxn−1\frac{d}{dx} x^n = nx^{n-1}
  • ddxex=ex\frac{d}{dx} e^x = e^x
  • ddxln⁡x=1/x\frac{d}{dx} \ln x = 1/x
  • ddxsin⁡x=cos⁡x\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+e−x)\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}")