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ónExpansió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

import numpy as np

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