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
- Dataset:
online_retail - Fuente: UCI
- Referencia: https://archive.ics.uci.edu/dataset/352/online+retail
- Licencia: CC BY 4.0
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
theory.md: fundamento, protocolo y riesgos de interpretación.experiments.md: hipótesis, variables controladas y tabla multi-semilla.assessment.md: preguntas y rúbrica de evaluación.lesson.yaml: resultados de aprendizaje, prerrequisitos y entregables.
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
- Ajustar transformaciones, vocabulario, normalización y selección de variables solo con
train. - Usar
validationpara arquitectura, hiperparámetros, checkpoint y umbrales. - Evaluar
testuna vez, después de congelar las decisiones. - Comparar contra Política de reposición periódica basada en demanda media histórica.
- Reportar variación entre semillas e intervalos de confianza; una métrica puntual no expresa toda la incertidumbre.
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
- Sutton & Barto — Reinforcement Learning: An Introduction (2.ª ed., MIT Press) — texto canónico: procesos de decisión de Markov, ecuación de Bellman, Q-learning y equilibrio exploración–explotación.
- Mnih et al. (2015), Human-level control through deep reinforcement learning (DQN), Nature — DQN con replay buffer y red objetivo, base del laboratorio.
- van Hasselt, Guez & Silver (2016), Deep Reinforcement Learning with Double Q-learning, AAAI — corrección de la sobreestimación desacoplando selección y evaluación.
- Wang et al. (2016), Dueling Network Architectures for Deep Reinforcement Learning, ICML — separación de valor de estado y ventaja de acción.
- Fuente del dataset: https://archive.ics.uci.edu/dataset/352/online+retail
- Consulte
docs/experiment-protocol.md,docs/reproducibility.mdydocs/ethics-and-licenses.md.
🔬 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
- Ejecutar
baseline.yamlcon tres semillas. - Ejecutar
improved.yamlcon las mismas semillas. - Mantener fija la partición de datos dentro de cada semilla.
- Elegir la variante con
validation. - Comparar la variante elegida contra la línea base en
test. - Revisar intervalos de confianza, errores y costo computacional.
Experimento específico
Comparar retorno contra políticas heurísticas.
Variables controladas
- Dataset y política de partición.
- Semillas declaradas.
- Presupuesto de épocas y criterio de parada.
- Métrica de selección:
mean_returno la especificada en la configuración. - Hardware y versiones registradas en
environment.json.
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
- Dataset preparado y auditoría sin solapamientos.
- Notebook ejecutado sin celdas omitidas.
- Línea base y modelo neuronal comparados.
- Resultados de al menos tres semillas o justificación del costo.
- Análisis de errores y limitaciones.
- Model card actualizada.
Preguntas
- 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.
- ¿Qué información del dataset solo puede utilizarse durante entrenamiento?
- ¿Por qué la línea base Política de reposición periódica basada en demanda media histórica es una comparación razonable?
- ¿La política es robusta a cambios en costo y demanda?
- ¿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.