Programación diferenciable
Diferenciable programming es el descendiente de deep learning, y representa la convergencia de dos campos algorítmicos: machine learning y optimización numérica. La programación diferenciable desbloquea una serie de escenarios en supply chain que se consideraban en gran medida intratables: optimización conjunta de precios y stocks, optimización de surtido basada en la lealtad, forecast de demanda para productos no estándar (p.ej. piedras preciosas, obras de arte), optimización de flujos multi-escalon a gran escala, optimización conjunta de múltiples canales, optimización de stocks bajo valores electrónicos de stock parcialmente incorrectos, maximización de flujos a gran escala bajo numerosas restricciones, etc. Para muchos otros escenarios que ya eran abordables con métodos alternativos, la programación diferenciable ofrece resultados numéricos superiores con solo una fracción del esfuerzo, tanto en términos del trabajo de los data scientists como de los recursos computacionales.
Aplicación a Supply Chains
En esencia, la Programación Diferenciable (DP) ofrece un camino para unificar problemas que han permanecido desconectados por demasiado tiempo y resolverlos de manera conjunta: surtido, precios, forecast, planificación, merchandising. Aunque tal unificación pueda parecer irrealistamente ambiciosa, la realidad es que las empresas ya están aplicando una cantidad insana de cinta americana a sus propios procesos para hacer frente a los interminables problemas generados por el hecho de que esos desafíos se habían aislado dentro de la organización en primer lugar. Por ejemplo, los precios obviamente impactan la demanda y, sin embargo, tanto la planificación como el forecast casi siempre se realizan ignorando por completo los precios.
DP desbloquea la enorme oportunidad de ofrecer decisiones aproximadamente correctas desde una perspectiva holística del negocio, en lugar de estar exactamente equivocado al desplazar los problemas dentro de la organización en lugar de resolverlos.
De manera anecdótica, buscar la aproximación correcta teniendo en cuenta el negocio en su totalidad es exactamente de lo que tratan la mayoría de las organizaciones impulsadas por hojas de cálculo; y ante la falta de una tecnología -como DP- capaz de adoptar una perspectiva integral del negocio, las hojas de cálculo siguen siendo la opción menos terrible.
Ecommerce
Poder asociar el 100% de las unidades vendidas a clientes conocidos representa una enorme cantidad latente de información sobre el mercado; sin embargo, cuando se trata de optimización de precios e inventarios, la información de lealtad generalmente ni siquiera se utiliza en la actualidad. DP ofrece la posibilidad de pasar del forecast de series temporales al forecast de grafos temporales, donde cada par cliente-producto observado cuenta; conduciendo a decisiones más inteligentes tanto para stocks como para precios.
Marcas de lujo
La optimización de precios y surtidos - hasta el nivel de tienda - ha sido considerada durante mucho tiempo como en gran medida intratable debido a la escasez de datos, es decir, el muy bajo volumen de ventas por artículo por tienda - tan bajo como una unidad vendida por producto por tienda al año. DP ofrece enfoques para proporcionar clases de soluciones que funcionan en contextos ultra-escasos, ya que están diseñados para ofrecer una eficiencia de datos mucho mayor que los métodos convencionales de deep learning.
Marcas de moda
La optimización conjunta de stocks y precios es un requisito claro - ya que la demanda de muchos artículos puede ser altamente sensible al precio - sin embargo, la optimización conjunta tanto de compras como de precios no se pudo lograr debido a la falta de una herramienta capaz incluso de comprender esta correlación - es decir, la capacidad de comprar más a un precio menor genera mayor demanda (y viceversa). DP ofrece la expresividad necesaria para abordar este desafío.
Manufactura
La optimización numérica de redes multi-escalon de gran tamaño se desmorona cuando se intenta con solucionadores numéricos clásicos (véase “Más allá de la optimización branch-and-cut” a continuación). De hecho, esos solucionadores se vuelven en gran medida imprácticos cuando se trata de millones de variables o comportamientos estocásticos. Desafortunadamente, la manufactura exhibe ambos, numerosas variables y comportamientos estocásticos. DP ofrece un enfoque práctico para hacer frente al multi-escalon sin traicionar la complejidad de los patrones reales de flujo dentro de la red.
MRO (mantenimiento, reparación, overhaul)
Si falta una pieza necesaria para la reparación de un sistema, entonces todo el sistema - que podría ser, por ejemplo, un avión - queda inoperativo. Los forecast probabilísticos son el primer paso para abordar patrones de demanda erráticos e intermitentes, pero descifrar los detalles de la coocurrencia de las piezas requeridas y convertir este análisis en recomendaciones de inventario accionables era demasiado complejo para ser de utilidad práctica. DP simplifica la resolución de tales problemas.
Redes de Retail
Las canibalizaciones dentro de redes de retail - usualmente entre productos, pero a veces entre tiendas - han sido reconocidas como de importancia primordial desde hace mucho tiempo. Este problema se amplifica por las promociones, diseñadas precisamente para desviar clientes de una marca a otra. DP ofrece la posibilidad de abordar la canibalización en presencia de promociones. En lugar de simplemente “forecastear promociones”, DP ofrece la posibilidad de optimizarlas por lo que son: acuerdos rentables operados conjuntamente tanto por el canal de distribución como por la marca.
Más allá del bombo de la Inteligencia Artificial
La Inteligencia Artificial (IA) sin duda ha sido la palabra de moda tecnológica de 2018 y el bombo sigue fuerte en 2019. Sin embargo, aunque Lokad utiliza extensamente técnicas que generalmente califican para la etiqueta de IA -p.ej. deep learning- hemos mostrado reticencia a enfatizar la parte de “IA” en la tecnología de Lokad. De hecho, en lo que respecta a la optimización de Supply Chain Quantitativa, la IA empaquetada simplemente no funciona. Las supply chains no son nada comparables, por ejemplo, a la visión por computadora: los datos, métricas y tareas son extremadamente heterogéneos. Como resultado, las empresas que compraron supuestamente soluciones de IA “llave en mano” están empezando a darse cuenta de que esas soluciones simplemente nunca funcionarán, excepto quizás en las situaciones más simples donde sistemas “tontos” basados en reglas también hubieran funcionado perfectamente. En esencia, las supply chains son sistemas complejos, hechos por el hombre, y normalmente es irrazonable esperar que el sistema de IA -basado únicamente en datos- redescubra por sí solo conocimientos fundamentales sobre el dominio, tales como:
- hacer promociones para una marca de lujo es un gran no-no.
- los pedidos de ventas negativos en el ERP son en realidad devoluciones de producto.
- los productos alimenticios frescos deben ser transportados dentro de rangos de temperatura especificados.
- las variantes en colores podrían ser buenos sustitutos de ropa, pero no las variantes en tallas.
- el mantenimiento de aeronaves está impulsado por las horas de vuelo y los ciclos de vuelo.
- las ventas en el Reino Unido están realmente en GBP, incluso si el ERP muestra EUR como moneda.
- las personas compran piezas de automóviles para sus vehículos, no para sí mismas.
- cada diamante es único, pero los precios dependen principalmente del quilate, la claridad, el color y el corte.
- cualquier pieza NOGO que falte en un avión hace que el avión quede en tierra.
- muchas plantas químicas tardan semanas en reiniciarse después de haber sido apagadas.
En este sentido, el deep learning ha tenido un éxito tremendo porque, a diferencia de muchos enfoques anteriores en machine learning, el deep learning es profundamente composicional: es posible adaptar de manera extensa la estructura del modelo para aprender mejor en una situación específica. Adaptar la estructura del modelo es diferente de adaptar la entrada del modelo -una tarea conocida como feature engineering- que era, típicamente, la única opción disponible para la mayoría de los algoritmos de machine learning que no son deep.
Sin embargo, dado que los frameworks de deep learning surgieron a partir de los “Big Problems” del machine learning, a saber, visión por computadora, reconocimiento de voz, síntesis de voz, traducción automatizada, dichos frameworks han sido diseñados y ajustados en profundidad para escenarios que literalmente no se parecen a los problemas que enfrentan las supply chains. Así, aunque es posible aprovechar esos frameworks para fines de optimización de supply chain, no fue una tarea fácil ni ligera. En conclusión, con los frameworks de deep learning se puede lograr mucho para las supply chains, pero la falta de correspondencia entre las supply chains y los frameworks de deep learning existentes es fuerte; aumentando los costos, retrasos y limitando la aplicabilidad real de esas tecnologías.
Más allá de la optimización branch-and-cut
La mayoría de los problemas en las supply chains tienen tanto un ángulo de aprendizaje -causado por un conocimiento imperfecto del futuro, un conocimiento imperfecto del estado actual del mercado, y a veces incluso un conocimiento imperfecto del propio sistema de supply chain (p.ej. inexactitudes en el inventario)- como un ángulo de optimización numérica. Las decisiones deben ser optimizadas en función de los impulsores económicos mientras se satisfacen numerosas restricciones no lineales (p.ej. MOQ al comprar o tamaños de lote al producir).
En el ámbito de la optimización numérica, la programación entera y sus técnicas relacionadas, como el branch-and-cut, han dominado el campo durante décadas. Sin embargo, estos algoritmos branch-and-cut y sus soluciones de software asociadas han fallado en general al ofrecer la flexibilidad y escalabilidad necesarias para proporcionar soluciones operativas para muchos, si no la mayoría, de los desafíos en las supply chains. La programación entera es una herramienta increíblemente capaz cuando se trata de resolver problemas acotados con pocas variables (p.ej. la colocación de componentes dentro de un dispositivo electrónico de consumo), pero muestra limitaciones drásticas cuando se trata de problemas a gran escala en los que interviene la aleatoriedad (p.ej. reequilibrar stocks entre 10 millones de SKUs cuando se enfrentan a forecast probabilístico y tiempos de transporte probabilísticos).
Uno de los aspectos menos apreciados del deep learning es que su éxito se debe tanto a los avances en el área de aprendizaje como a los logros en el área de optimización. Esto se debe a que la comunidad científica ha descubierto que algoritmos tremendamente eficientes están realizando optimizaciones a gran escala. No solo estos algoritmos de optimización de “deep learning” —todos girando en torno al descenso de gradiente estocástico— son mucho más eficientes que sus contrapartes branch-and-cut, sino que se adaptan mucho mejor al hardware computacional que tenemos, a saber, CPU con SIMD y (GP)GPU, lo que en la práctica proporciona dos o tres órdenes de magnitud de velocidad extra. Estos avances en la optimización numérica pura son de gran relevancia para las supply chains a fin de optimizar decisiones. Sin embargo, si los frameworks de deep learning ya eran algo inadecuados para abordar problemas de aprendizaje en las supply chains, son aún menos adecuados para abordar los problemas de optimización en las supply chains. De hecho, estos problemas de optimización dependen aún más de la expresividad del framework para permitir que los supply chain scientists implementen las restricciones y métricas que deben ser, respectivamente, aplicadas y optimizadas.
Hacia la Programación Diferenciable
En teoría, no hay diferencia entre la teoría y la práctica. Pero, en la práctica, sí la hay. Walter J. Savitch, Pascal: Una Introducción al Arte y la Ciencia de la Programación (1984)
Differentiable Programming (DP) es la respuesta para llevar a supply chains lo mejor de lo que deep learning tiene para ofrecer tanto en el frente del aprendizaje como en el de la optimización numérica. A través de DP, supply chain scientists pueden aprovechar al máximo sus percepciones humanas para confeccionar recetas numéricas alineadas –a fondo– con los objetivos del negocio. No existe una delimitación absoluta entre deep learning y differentiable programming: es más un continuo que va desde los sistemas más escalables (deep learning) hasta los sistemas más expresivos (differentiable programming) con muchos constructos de programación que se están volviendo gradualmente disponibles –a costa de la escalabilidad bruta– al avanzar hacia differentiable programming. Sin embargo, nuestra experiencia en Lokad indica que la transición de herramientas diseñadas mayoritariamente para la visión por computadora a herramientas diseñadas para desafíos de supply chain marca precisamente la diferencia entre un prototipo “interesante” que nunca llega a producción y un sistema de grado industrial desplegado a escala.
| deep learning | Programación Diferenciable | |
|---|---|---|
| Propósito principal | Aprendizaje | Aprendizaje+Optimización |
| Uso típico | Aprender una vez, evaluar muchas veces | Aprender una vez, evaluar una vez |
| Granularidad de entrada | Objetos gruesos (imágenes, secuencias de voz, escaneos lidar, páginas de texto completas) | Objetos ligeros (productos, clientes, SKUs, precios) |
| Variedad de entrada | Objetos homogéneos (por ejemplo, imágenes con la misma relación altura/ancho) | Objetos heterogéneos (tablas relacionales, gráficos, series temporales) |
| Volumen de entrada | De megabytes a petabytes | De kilobytes a decenas de gigabytes |
| Aceleración por hardware | Aceleración por hardware | Bueno |
| Expresividad | Grafos estáticos de operaciones tensoriales | (Casi) programas arbitrarios |
| Recetas numéricas estocásticas | Integradas | Idem |
El uso típico es un punto sutil pero importante. Desde la perspectiva del “Big AI”, el tiempo de entrenamiento puede ser (casi) arbitrariamente largo: está bien que una red computacional se entrene durante semanas o incluso meses. Más tarde, la red computacional resultante normalmente necesita ser evaluada en tiempo real (por ejemplo, el reconocimiento de patrones para la conducción autónoma). Este ángulo es completamente distinto a los supply chains, donde los mejores resultados se obtienen reentrenando la red cada vez. Además, desde la perspectiva de DP, los parámetros entrenados son frecuentemente los mismos resultados que buscamos obtener, haciendo que toda la restricción de evaluación en tiempo real sea irrelevante. Las expectativas en torno a las entradas de datos, tanto en granularidad, variedad y volumen, también son muy diferentes. Típicamente, la perspectiva del “Big AI” enfatiza cantidades casi infinitas de datos de entrenamiento (por ejemplo, todas las páginas de texto de la web), donde el desafío principal es encontrar métodos tremendamente escalables que puedan aprovechar de manera eficaz esos conjuntos de datos masivos. En contraste, los problemas de supply chain deben abordarse con una cantidad limitada de datos altamente estructurados pero diversos. Esto orienta a deep learning hacia marcos basados en tensores, que pueden ser acelerados masivamente mediante hardware de computación dedicado, inicialmente GPUs y ahora cada vez más TPUs. Differentiable Programming, al basarse en el descenso de gradiente estocástico, también exhibe muchas buenas propiedades para la aceleración por hardware, pero en menor medida en comparación con los grafos estáticos de operaciones tensoriales. La importancia de las recetas numéricas estocásticas es doble. Primero, estas recetas juegan un papel importante desde la perspectiva del aprendizaje. Auto-encoders variacionales o dropouts son ejemplos de tales recetas numéricas. Segundo, estas recetas también desempeñan un papel importante desde la perspectiva del modelado para incorporar adecuadamente comportamientos probabilísticos dentro de los sistemas de supply chain (por ejemplo, tiempos de entrega variables). Por el contrario, existe una gran diferencia entre differentiable programming y la programación entera mixta –el enfoque dominante durante las últimas décadas ha sido realizar optimizaciones numéricas complejas.
| Programación entera mixta | Programación Diferenciable | |
|---|---|---|
| Propósito principal | Optimización | Aprendizaje+Optimización |
| Granularidad y variedad de entrada | Objetos ligeros, heterogéneos | Idem |
| Volumen de entrada | De bytes a decenas de megabytes | De kilobytes a decenas de gigabytes |
| Aceleración por hardware | Pobre | Buena |
| Expresividad | Desigualdades sobre formas lineales y cuadráticas | (Casi) programas arbitrarios |
| Recetas numéricas estocásticas | Ninguna | Integradas |
En defensa de las herramientas de programación entera mixta, estas –cuando logran abordar un problema– pueden a veces demostrar –en el sentido matemático– que han obtenido la solución óptima. Ni deep learning ni differentiable programming proporcionan ninguna prueba formal al respecto.
Conclusiones
Differentiable Programming es un avance importante para supply chains. Se construye sobre deep learning, que resultó tremendamente exitoso al resolver muchos problemas del “Big AI” como la visión por computadora, pero fue reingeniado en su núcleo para ser adecuado a los desafíos del mundo real que enfrentan los supply chains reales. Lokad ha estado construyendo sobre su tecnología de forecasting deep learning para transicionar hacia Differentiable Programming, que es la próxima generación de nuestra tecnología predictiva. Sin embargo, DP es más que simplemente ser predictivo, unifica optimización y aprendizaje liberando soluciones para una vasta cantidad de problemas que antes no tenían soluciones viables.