Neural Network Training Labs
Laboratorio 10 · Central · 11 / 31

🕹️ DQN para inventario con demanda real

DQN para inventario con demanda real

Objetivo

Aprender una política de reposición usando una secuencia de demanda observada en transacciones reales.

Dataset real

La dinámica de inventario es un entorno educativo, pero la demanda diaria se construye exclusivamente desde transacciones reales de Online Retail.

Diseño

La serie diaria se divide cronológicamente. La política aprende con train, se selecciona con validation y se evalúa una sola vez sobre test. El estado contiene inventario, demanda reciente y posición temporal; las acciones son cantidades discretas de reposición.

Línea base

Política de reposición periódica basada en demanda media histórica.

Ejecución

python labs/10_dqn_reinforcement/train.py --quick
python labs/10_dqn_reinforcement/train.py --config improved

Métricas

mean_return, stockout_rate, holding_cost y service_level.

Límites

El historial de demanda es real. Los costos y reglas de inventario son parámetros educativos y deben sustituirse por costos de negocio antes de cualquier uso operacional.

Material formativo v3

Comandos profesionales

neural-labs quality --lab 10_dqn_reinforcement --quick
neural-labs benchmark --lab 10_dqn_reinforcement --quick --split-seed 42 --training-seeds 41 42 43
neural-labs leaderboard

Sellado del experimento

La partición se controla con split_seed; la inicialización y el entrenamiento con training_seed. El conjunto test se abre solamente después de seleccionar el checkpoint mediante validación y escribir experiment.lock.json.

🧠 Teoría

Teoría — DQN para inventario con demanda real

Propósito

Aprender una política de reposición usando una secuencia de demanda observada en transacciones reales.

Idea central

Este laboratorio estudia valor de acciones con demanda histórica usando online_retail, un dataset público real procedente de UCI.

El problema se plantea como aprendizaje por refuerzo: un agente observa el estado del inventario, elige cuánto reponer, y recibe una recompensa que penaliza tanto quedarse sin stock (ventas perdidas) como mantener inventario en exceso (coste de almacenamiento). No hay etiquetas de "acción correcta"; el agente debe descubrir una política —una regla que mapea estados a acciones— probando y observando consecuencias a lo largo del tiempo. La dificultad propia del refuerzo es que las decisiones tienen efectos diferidos: reponer poco hoy puede ahorrar coste ahora pero causar un quiebre de stock costoso mañana. El agente debe optimizar la recompensa acumulada, no la inmediata.

La pieza clave es aprender el valor de cada acción en cada estado: cuánta recompensa futura total cabe esperar si tomo esta acción y luego actúo bien. Con esa función de valor Q(s, a), la política óptima es trivial: en cada estado elegir la acción de mayor Q. DQN (Deep Q-Network) aproxima Q con una red neuronal, lo que permite manejar estados continuos (inventario, demanda reciente, posición temporal) sin tabular todos los casos. Lo distintivo de este laboratorio es que la demanda de cada paso no la genera un simulador arbitrario: proviene del historial real de transacciones de Online Retail, de modo que la política se enfrenta a la variabilidad genuina de la demanda.

Fundamento matemático

El valor Q óptimo satisface la ecuación de Bellman de optimalidad, que expresa el valor de un par (s, a) como la recompensa inmediata más el mejor valor posible del estado siguiente, descontado:

Q*(s, a) = 𝔼[ r + γ · max_{a′} Q*(s′, a′) | s, a ]

Aquí r es la recompensa recibida al ejecutar a en s, s′ es el estado siguiente, y γ ∈ [0, 1) es el factor de descuento, que fija cuánto pesan las recompensas futuras frente a las inmediatas (γ cercano a 1 → agente previsor). DQN entrena una red Q(s, a; θ) para satisfacer esta ecuación minimizando el error de diferencia temporal (TD) contra un objetivo (target):

y = r + γ · max_{a′} Q_target(s′, a′; θ⁻)        ℒ(θ) = 𝔼_{(s,a,r,s′)∼𝒟}[ ( y − Q(s, a; θ) )² ]

Dos ingredientes hacen esto estable. Primero, la repetición de experiencias (replay buffer 𝒟): las transiciones (s, a, r, s′) se guardan y se muestrean en minibatches aleatorios, rompiendo la correlación temporal entre muestras consecutivas. Segundo, la red objetivo con parámetros θ⁻: una copia rezagada de θ que se actualiza cada cierto tiempo; usarla para calcular y evita que el objetivo persiga a la propia red en cada paso, lo que provocaría oscilaciones. La demanda de cada paso proviene del historial real, no de un generador. Conectando con los cuatro elementos: la representación de entrada es el vector de estado s (inventario, demanda reciente, tiempo); la función del modelo es la red Q que produce un valor por cada acción discreta de reposición; la función de pérdida es el error TD cuadrático de arriba; y la regla de actualización es descenso de gradiente, θ ← θ − η ∇_θ ℒ. El notebook muestra las dimensiones de los tensores y conserva la misma implementación que el script de terminal.

Este laboratorio incorpora dos mejoras estándar sobre el DQN original. Double DQN corrige la sobreestimación del valor: el operador max en el target tiende a elegir acciones cuyo Q está inflado por ruido, así que se desacopla la selección de la evaluación —la red en línea elige la acción y la red objetivo la valora: y = r + γ · Q_target(s′, argmax_{a′} Q(s′, a′; θ); θ⁻). Dueling DQN reorganiza la arquitectura separando el valor del estado V(s) de la ventaja A(s, a) de cada acción, y las recombina como Q(s, a) = V(s) + ( A(s, a) − (1/|𝒜|) Σ_{a′} A(s, a′) ). La resta de la ventaja media es un truco de identificabilidad que estabiliza el aprendizaje; la intuición es que en muchos estados el valor depende poco de la acción concreta, y estimar V(s) por separado hace el aprendizaje más eficiente.

Por último, el agente equilibra exploración y explotación típicamente con una política ε-greedy: con probabilidad ε toma una acción aleatoria (explora) y con probabilidad 1−ε toma argmax_a Q(s, a) (explota), reduciendo ε a lo largo del entrenamiento. Sin exploración suficiente, el agente podría fijar prematuramente una política de reposición subóptima.

Protocolo científico

Riesgos de interpretación

La dinámica de inventario es un entorno educativo, pero la demanda diaria se construye exclusivamente desde transacciones reales de Online Retail.

El dataset refleja su proceso de recolección y no representa automáticamente otros períodos, países o poblaciones. Una asociación predictiva no demuestra causalidad.

Pregunta crítica

¿La política es robusta a cambios en costo y demanda?

Las referencias apuntan a las obras; no se reproduce su contenido, la redacción es original.

🔗 Referencias

🔬 Experimentos

Plan de experimentos — DQN para inventario con demanda real

Hipótesis principal

Aprender una política de reposición usando una secuencia de demanda observada en transacciones reales. La hipótesis debe aceptarse o rechazarse comparando el modelo con Política de reposición periódica basada en demanda media histórica y no solo observando que la pérdida disminuye.

Experimento mínimo

  1. Ejecutar baseline.yaml con tres semillas.
  2. Ejecutar improved.yaml con las mismas semillas.
  3. Mantener fija la partición de datos dentro de cada semilla.
  4. Elegir la variante con validation.
  5. Comparar la variante elegida contra la línea base en test.
  6. Revisar intervalos de confianza, errores y costo computacional.

Experimento específico

Comparar retorno contra políticas heurísticas.

Variables controladas

Tabla que debe completarse

Variante Semilla Métrica validation Métrica test Tiempo Parámetros Observación
baseline 41
baseline 42
baseline 43
improved 41
improved 42
improved 43

Criterio de conclusión

La conclusión debe declarar magnitud de la mejora, incertidumbre, costo adicional, errores relevantes y condiciones bajo las cuales el resultado podría no repetirse.

📝 Evaluación

Evaluación — DQN para inventario con demanda real

Evidencias obligatorias

Preguntas

  1. Explique con sus palabras: y=r+γ max_a Q_target(s′,a); la demanda de cada paso proviene del historial real, no de un generador.
  2. ¿Qué información del dataset solo puede utilizarse durante entrenamiento?
  3. ¿Por qué la línea base Política de reposición periódica basada en demanda media histórica es una comparación razonable?
  4. ¿La política es robusta a cambios en costo y demanda?
  5. ¿Qué cambiaría antes de usar este modelo fuera del laboratorio?

Rúbrica

Criterio Insuficiente Adecuado Excelente Peso
Integridad de datos mezcla particiones separación correcta auditoría, hashes y justificación 20%
Implementación no ejecuta entrena y evalúa código claro, reusable y probado 20%
Diseño experimental resultado aislado comparación controlada multi-semilla e incertidumbre 20%
Análisis repite métricas interpreta errores identifica sesgos, límites y costo 25%
Comunicación incompleta reporte entendible model card y conclusiones verificables 15%

La aprobación exige al menos 70% y cero errores críticos de fuga de datos.