Examen sobre optimización, incluyendo formulación, paisaje, algoritmos y ejemplos en Python. Todo lo que vimos en el módulo en clase, incluyendo la tarea.
Optimización
En IA, casi todo se reduce a optimizar: minimizar una pérdida, maximizar una utilidad, encontrar los mejores parámetros. Entrenar una red neuronal es resolver un problema de optimización. Ajustar una regresión es resolver un problema de optimización. Incluso elegir la mejor jugada en un juego puede verse como optimización.
Este módulo enseña el lenguaje de la optimización — cómo formular problemas, entender el paisaje de soluciones, y usar herramientas computacionales para resolverlos.
Convenciones rápidas (notas vs SciPy)
- Notas (matemáticas): solemos escribir desigualdades como (g(x) \le 0).
- SciPy (
minimize): una restricción"ineq"significafun(x) >= 0. - SciPy (
linprog,milp): solo minimizan. Si tu problema es de maximización, niega el objetivo. - No negatividad / cotas: cuando puedas, ponlas como
bounds(en lugar de inventar restricciones extra).
Flujo de trabajo: lee y haz
El módulo alterna entre lectura (notas) y práctica (notebooks). Sigue este orden:
| Paso | Actividad | Material |
|---|---|---|
| 1 | Lee 7.1: Formulación + regularización | Notas |
| 2 | Haz Función objetivo + producción (LP) | |
| 3 | Lee 7.2: Paisaje + convexidad + opt. entera | Notas |
| 4 | Haz Visualiza 1D, 2D, cuerdas de convexidad | |
| 5 | Lee 7.3: GD + convergencia + SGD | Notas (primera mitad) |
| 6 | Haz GD, learning rates, SGD vs batch | |
| 7 | Lee 7.3: Newton/BFGS + Lagrange + Simplex | Notas (segunda mitad) |
| 8 | Haz Rosenbrock vs L-BFGS-B, Lagrange, linprog |
|
| 9 | Lee 7.3: IP + SA + GA + comparación | Notas (tercio final) |
| 10 | Haz IP/MIP, SA, GA, comparación | |
| 11 | Lee 7.4: scipy reference + autodiff | Notas |
| 12 | Haz Autodiff + capstone |
Materiales
| Tipo | Archivo | Descripción |
|---|---|---|
| Notas | 7.1 Formulación | Objetivo, variables, restricciones, regularización |
| Notas | 7.2 Paisaje y conceptos | Mínimos, puntos silla, convexidad, opt. entera |
| Notas | 7.3 Algoritmos | GD, SGD, Newton, Lagrange, simplex, SA, GA, comparación |
| Notas | 7.4 scipy reference | Cheat sheet de scipy.optimize (8 patrones) + autodiff |
| Notebook | NB1: Formulación y paisaje | Interactivo: formula y visualiza |
| Notebook | NB2: Algoritmos y código | Interactivo: GD, SGD, scipy, LP, autodiff |
| Tarea | NB3: Tarea optimización | 5 problemas (LP, QP, IP, black-box, MIP) — 20 pts, entrega 23 feb |
| Lab | lab_optimization.py | Genera todas las visualizaciones |
Cómo correr el lab (para imágenes)
cd clase/07_optimization
python lab_optimization.py
Objetivos de aprendizaje
Al terminar este módulo podrás:
- Formular un problema de optimización: identificar objetivo $f(x)$, variables de decisión $x$, y restricciones.
- Distinguir entre mínimos locales, globales, puntos silla, y entender por qué importa.
- Explicar qué es convexidad y por qué simplifica la optimización (“todo mínimo local es global”).
- Describir intuitivamente cómo funcionan descenso de gradiente, SGD, métodos de segundo orden, multiplicadores de Lagrange y el método simplex.
- Resolver problemas de optimización en Python usando
scipy.optimize. - Conectar estos conceptos con el entrenamiento de modelos de ML (regularización, autodiff, SGD/Adam).
- Decidir qué algoritmo usar según las propiedades del problema (gradiente, convexidad, discreto).
- Implementar metaheurísticas (SA, GA) para funciones sin gradiente.
Siguiente: Formulación matemática →