Expansión de Taylor -- aproximar cualquier función con polinomios
Cualquier función suave puede aproximarse con un polinomio cerca de un punto.
La expansión de Taylor de primer orden es la base del descenso de gradiente; la de segundo orden conduce al método de Newton. En este capítulo solo necesitas comprenderlo, no es necesario profundizar en los detalles de la derivación.
Análisis conceptual
Taylor de primer orden = aproximación lineal (base del descenso de gradiente)
\[ f(x) \approx f(a) + f'(a)(x - a) \]Esto es "dibujar una recta tangente en el punto a y aproximar el valor de la función con el valor de la tangente".
Taylor de segundo orden = considerar la curvatura
\[ f(x) \approx f(a) + f'(a)(x - a) + \frac{f''(a)}{2}(x - a)^2 \]Al agregar el término de segundo orden se puede capturar el grado de "curvatura" de la función — esta es la idea del método de Newton.
Expansiones de funciones importantes
| Función | Expansión en x=0 |
|---|---|
| \( e^x \) | \( 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots \) |
| \( \sin x \) | \( x - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots \) |
El descenso de gradiente solo usa información de primer orden (dirección). El método de Newton usa información de segundo orden (curvatura), converge más rápido pero con un mayor costo computacional.
Ejemplos de la vida real
Estimar sin(0.1): sin(0)=0, sin'(0)=cos(0)=1. Aproximación de primer orden: 0 + 1×0.1 = 0.1.
El valor real es aproximadamente 0.0998 — con solo suma y multiplicación se obtiene una aproximación de alta precisión.
Manos a la obra con Python
Ejemplo
x0 = 0.5
true_val = np.sin(x0)
print(f"Aproximación de Taylor de sin({x0}) vs valor real {true_val:.8f}:")
# Calcular manualmente los primeros términos de la expansión de Taylor
import math
approx = 0.0
for n in range(6):
if n % 2 == 1: # Los términos pares son 0
coef = (-1)**((n-1)//2) / math.factorial(n)
approx += coef * x0**n
err = abs(approx - true_val)
print(f" {n} términos: {approx:.8f} error: {err:.2e}")
Salida:
sin(0.5) 的泰勒近似 vs 真实值 0.47942554: 1项: 0.50000000 误差: 2.06e-02 3项: 0.47916667 误差: 2.59e-04 5项: 0.47942708 误差: 1.54e-06
Escenarios de aplicación en IA
Descenso de gradiente = aproximación de Taylor de primer orden
El descenso de gradiente asume que la función de pérdida puede aproximarse localmente mediante la expansión de Taylor de primer orden (aproximación lineal). Dar un paso en la dirección del gradiente negativo equivale a realizar la actualización óptima bajo la aproximación de primer orden. Es por esto que el descenso de gradiente necesita una tasa de aprendizaje pequeña: si la tasa de aprendizaje es demasiado grande, se sale del intervalo donde la aproximación lineal es válida.
Método de Newton = optimización de Taylor de segundo orden
Si se agrega el término de segundo orden (usando la matriz Hessiana), se puede aproximar con precisión la pérdida localmente con una función cuadrática y saltar directamente al punto óptimo de la aproximación cuadrática. En teoría converge más rápido, pero la matriz Hessiana es del tamaño del cuadrado del número de parámetros: un modelo con un millón de parámetros necesita un Hessiano de escala de billones, cuyo cálculo y almacenamiento no son realistas.
Función objetivo de XGBoost
En cada iteración, XGBoost usa la expansión de Taylor de segundo orden de la función de pérdida para aproximar el objetivo, utilizando tanto el gradiente de primer orden como el Hessiano de segundo orden (llamado hess en XGBoost). En comparación con GBDT, que solo usa el gradiente de primer orden, converge más rápido y es más estable. Esta es la aplicación más exitosa de la información de segundo orden en ML a nivel industrial.
Otras extensiones