🧮 Computational Mathematics

Inicio · Parte 12 — Optimización matemática y computacional

257 — Condiciones KKT

avanzado clase 17 de 20 4 horas demostración kkt_conditions

La holgura complementaria formaliza que una restricción inactiva no influye.

Fórmulas

estacionariedad: ∇f + Σμᵢ·∇gᵢ = 0
factibilidad: gᵢ(x) ≤ 0;   no negatividad: μᵢ ≥ 0
holgura complementaria: μᵢ·gᵢ(x) = 0

Desarrollo

Las condiciones de Karush-Kuhn-Tucker extienden Lagrange a restricciones de desigualdad, y son las condiciones necesarias de optimalidad que fundamentan toda la optimización con restricciones. En problemas convexos con cualificación de restricciones son además suficientes.

La novedad conceptual es que una desigualdad puede estar activa —el óptimo está justo sobre la frontera— o inactiva —el óptimo cae en el interior y la restricción no estorba—. La holgura complementaria μᵢ·gᵢ(x) = 0 codifica exactamente esa alternativa: o la restricción se cumple con igualdad, o su multiplicador es cero.

La lectura es directa e intuitiva: una restricción que no aprieta no tiene precio. Si el presupuesto sobra, un euro más no vale nada; si está agotado, su precio sombra es positivo. Esa dicotomía es lo que hace de KKT una herramienta de análisis y no solo de cálculo.

La condición de no negatividad de los multiplicadores es la que distingue las desigualdades de las igualdades: la restricción solo puede empujar en un sentido. Cuando todas las restricciones son de igualdad, KKT se reduce exactamente a Lagrange, y esa reducción confirma que es la generalización correcta.

Ejemplo trabajado

La misma función con dos restricciones distintas.

objetivo: minimizar (x − 3)²

Caso A — restricción activa:   x ≤ 1
  óptimo sin restricción: x = 3, no factible
  x* = 1                (sobre la frontera)
  gradiente del objetivo en x*: −4
  μ = 4 > 0
  holgura: μ·g(x*) = 4·(1−1) = 0                     ✓

Caso B — restricción inactiva: x ≤ 5
  óptimo sin restricción: x = 3, factible
  x* = 3                (en el interior)
  gradiente del objetivo en x*: 0
  μ = 0
  holgura: μ·g(x*) = 0·(3−5) = 0                     ✓

En ambos casos la holgura complementaria se cumple,
pero por motivos opuestos.

Qué calcula el laboratorio

KKT: restricciones de desigualdad activas e inactivas.

python classes/part-12-optimizacion-matematica-y-computacional/257-condiciones-kkt/lab.py
compmath run 257

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "condiciones_KKT": [
    "estacionariedad: ∇f + Σμᵢ∇gᵢ = 0",
    "factibilidad primal: gᵢ(x) ≤ 0",
    "factibilidad dual: μᵢ ≥ 0",
    "holgura complementaria: μᵢ·gᵢ(x) = 0"
  ],
  "caso_restriccion_activa": {
    "objetivo": "(x-3)²",
    "restriccion": "x ≤ 1",
    "x*": 1.0,
    "gradiente_objetivo": -4.0,
    "mu": 4.0,
    "activa": true
  },
  "caso_restriccion_inactiva": {
    "objetivo": "(x-3)²",
    "restriccion": "x ≤ 5",
    "x*": 3.0,
    "gradiente_objetivo": 0.0,
    "mu": 0.0,
    "activa": false
  },
  "holgura_complementaria_activo": 0.0,
  "holgura_complementaria_inactivo": -0.0,
  "generaliza_a_Lagrange": "con solo igualdades, KKT se reduce a Lagrange"
}

Errores comunes

Dónde se usa

SVM con margen blando, programación no lineal, optimización de carteras con límites y diseño de ingeniería con especificaciones.

Idea rectora de la parte

El learning rate es el hiperparámetro que más veces explica una divergencia.

Error a evitar

Aplicar weight decay dentro del gradiente en Adam (y no como AdamW).

Conexión con IA

AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.

Bibliografía de la clase

Archivos de la clase