Estabilidad numérica

Qué tan confiables son los cálculos en presencia de errores

La estabilidad numérica describe qué tan sensible es un algoritmo o cálculo a errores pequeños, como redondeos, truncamientos o ruido en los datos.

👉 En machine learning y computación científica, es crucial porque todos los cálculos se realizan con precisión finita.

Definición corta

La estabilidad numérica mide la capacidad de un algoritmo para resistir errores pequeños sin producir grandes desviaciones.

Definición detallada

Un algoritmo es numéricamente estable si:

👉 pequeños errores en la entrada producen pequeños errores en la salida

Un algoritmo es inestable si:

👉 pequeños errores → grandes desviacione

La estabilidad numérica responde:

👉 “¿Puedo confiar en este resultado aunque haya errores de cálculo?”

Ejemplo

0.1 + 0.2 ≠ 0.3 exacto

👉 Error de representación en punto flotante.

Fuentes de error

🔹 1. Precisión finita

  • uso de floats
  • redondeo

🔹 2. Cancelación numérica

1.0000011.0000001.000001 – 1.0000001.000001−1.000000

👉 pérdida de precisión

🔹 3. Overflow / Underflow

  • números muy grandes → overflow
  • números muy pequeños → underflow

Relación con otros conceptos

  • Número de condición
  • Gradientes
  • Optimización
  • Log-likelihood

Ejemplo clásico: softmax inestable

softmax(xi)=exiexj\text{softmax}(x_i) = \frac{e^{x_i}}{\sum e^{x_j}}softmax(xi​)=∑exj​exi​​


👉 Problema:

  • valores grandes → overflow

Solución estable

softmax(xi)=eximax(x)exjmax(x)\text{softmax}(x_i) = \frac{e^{x_i – \max(x)}}{\sum e^{x_j – \max(x)}}softmax(xi​)=∑exj​−max(x)exi​−max(x)​

👉 evita overflow.

Estabilidad en redes neuronales

🔹 1. Gradientes

  • explosión
  • desvanecimiento

🔹 2. Funciones de pérdida

Uso de log:

👉 mejora estabilidad

🔹 3. Normalización

  • BatchNorm
  • LayerNorm

👉 estabilizan entrenamiento

🔹 4. Inicialización

Pesos adecuados:

👉 evitan problemas numéricos

Ejemplo paso a paso

Cálculo directo → error acumulado  
Cálculo estable → resultado correcto

Relación con número de condición

  • matriz mal condicionada → inestabilidad
  • matriz bien condicionada → estabilidad

Ejemplo conceptual

Pequeño error → gran impacto  
→ sistema inestable

Ejemplo en Python (error de precisión)

print(0.1 + 0.2)

👉 Resultado: 0.30000000000000004

Ejemplo de cancelación numérica

x = 1.000001
y = 1.000000
print(x - y)

👉 pérdida de precisión.

Ejemplo de softmax estable

import numpy as np
x = np.array([1000, 1001, 1002])
# Softmax estable
x_stable = x - np.max(x)
softmax = np.exp(x_stable) / np.sum(np.exp(x_stable))
print("Softmax:", softmax)

Ejemplo en PyTorch

import torch
import torch.nn.functional as F
x = torch.tensor([1000.0, 1001.0, 1002.0])
softmax = F.softmax(x, dim=0)
print("Softmax:", softmax)

Ejemplo con log-sum-exp

import torch
x = torch.tensor([1000.0, 1001.0, 1002.0])
result = torch.logsumexp(x, dim=0)
print("LogSumExp:", result.item())

Qué muestra este ejemplo

  • errores de precisión
  • soluciones estables
  • importancia en ML

Errores comunes

Ignorar estabilidad

Puede romper modelos.

Usar exponenciales sin control

Causa overflow.


No usar logs

Reduce precisión

Ejemplo conceptual en ML

Modelo correcto  

Cálculo inestable

Resultado incorrecto

Interpretación profunda

La estabilidad numérica permite:

  • resultados confiables
  • entrenamiento estable
  • cálculos precisos
  • evitar errores acumulativos

👉 Es esencial para sistemas robustos.

Conclusión

La estabilidad numérica es crítica para garantizar que los cálculos en machine learning sean confiables. Sin ella, incluso modelos correctos pueden fallar.

👉 Un buen modelo necesita no solo buena teoría, sino cálculos estables.

Related Concepts