Nos enorgullece anunciar la disponibilidad inmediata de la beta privada de Lokad para programación diferenciable destinada a la optimización de la cadena de suministro cuantitativa. La programación diferenciable es el descendiente del deep learning y representa la convergencia de dos campos algorítmicos: el aprendizaje automático y la optimización numérica.

Línea de tiempo de la programación diferenciable en Lokad

La programación diferenciable desbloquea una serie de escenarios de la cadena de suministro que se consideraban en gran medida intratables: optimización conjunta de precios y stocks, optimización de surtido impulsada por la lealtad, pronóstico de la demanda de productos no estándar (por ejemplo, piedras preciosas, obras de arte), optimización de flujo multinivel a gran escala, optimización conjunta de múltiples canales, optimización de stocks con valores de stock electrónicos parcialmente incorrectos, maximización de flujo a gran escala bajo muchas 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 de los recursos, tanto en términos de esfuerzos de los científicos de datos como de recursos computacionales.

Aplicación a las cadenas de suministro

En su núcleo, la Programación Diferenciable (DP) ofrece un camino para unificar problemas que han permanecido desconectados durante demasiado tiempo y resolverlos conjuntamente: surtido, precios, pronóstico, planificación, comercialización. Si bien esta unificación puede parecer ambiciosa de manera irrealista, la realidad es que las empresas ya están aplicando una cantidad increíble de cinta adhesiva a sus propios procesos para hacer frente a los infinitos problemas generados por el hecho de que esos desafíos se han aislado dentro de la organización en primer lugar. Por ejemplo, los precios obviamente impactan en la demanda y, sin embargo, tanto la planificación como el pronóstico casi siempre se realizan sin tener en cuenta los precios.

DP desbloquea la enorme oportunidad de tomar decisiones aproximadamente correctas desde una perspectiva holística del negocio, en lugar de ser exactamente incorrectas al desplazar problemas dentro de la organización en lugar de resolverlos. Anecdóticamente, buscar la corrección aproximada teniendo en cuenta el negocio en su conjunto es exactamente de lo que se trata la mayoría de las organizaciones impulsadas por hojas de cálculo; y por falta de una tecnología, como DP, capaz de abarcar una perspectiva de negocio completa, 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 gran cantidad de información latente sobre el mercado; sin embargo, cuando se trata de fijación de precios y optimización de inventario, la información de lealtad generalmente ni siquiera se utiliza en la actualidad. DP ofrece la posibilidad de pasar de un pronóstico de series de tiempo a un pronóstico de gráfico temporal donde cada par cliente-producto observado importa; lo que lleva a decisiones más inteligentes tanto para los stocks como para los precios.

Marcas de lujo: la optimización de precios y surtidos, hasta el nivel de la tienda, se ha considerado durante mucho tiempo como en gran medida intratable debido a la escasez de datos, es decir, el volumen de ventas muy bajo por artículo por tienda, tan bajo como una unidad vendida por producto por tienda por año. DP proporciona ángulos para ofrecer clases de soluciones que funcionan en tales situaciones de ultra escasez, ya que están diseñadas para ofrecer una eficiencia de datos mucho mayor que los métodos regulares 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 muy sensible al precio; sin embargo, la optimización conjunta de compras y precios no se podía lograr debido a la falta de una herramienta capaz de comprender incluso este acoplamiento, es decir, la capacidad de comprar más a un precio más bajo genera más demanda (y viceversa). DP proporciona la expresividad necesaria para abordar este desafío.

Manufactura: la optimización numérica de redes multinivel de gran tamaño se desmorona cuando se intenta con solucionadores numéricos clásicos (ver “Más allá de la optimización de ramificación y corte” 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 con muchas variables y comportamientos estocásticos. DP ofrece un enfoque práctico para lidiar con el multinivel sin traicionar la complejidad de los patrones de flujo reales dentro de la red.

MRO (mantenimiento, reparación, revisión): Si falta una pieza necesaria para la reparación de un sistema, todo el sistema, que podría ser una aeronave, se detiene. Los pronósticos probabilísticos son el primer paso para lidiar con patrones de demanda erráticos e intermitentes, pero descubrir los detalles de las co-ocurrencias 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 minoristas: Las canibalizaciones dentro de las redes minoristas, generalmente entre productos pero a veces entre tiendas, se han reconocido como de importancia primordial durante mucho tiempo. Este problema se amplifica con las promociones, precisamente destinadas a dirigir a los clientes de una marca a otra. DP ofrece la posibilidad de abordar la canibalización en presencia de promociones. En lugar de simplemente “pronosticar promociones”, DP ofrece la posibilidad de optimizar las promociones por lo que son: acuerdos rentables operados conjuntamente por el canal de distribución y la marca.

Más allá de la exageración de la Inteligencia Artificial

La Inteligencia Artificial (IA) ciertamente ha sido la palabra de moda tecnológica de 2018 y la emoción sigue en aumento en 2019. Sin embargo, aunque Lokad utiliza ampliamente técnicas que generalmente califican para la palabra de moda de la IA, como el deep learning, hemos sido reacios a poner énfasis en la parte “IA” de la tecnología de Lokad. De hecho, en lo que respecta a la optimización cuantitativa de la cadena de suministro, la IA empaquetada simplemente no funciona. Las cadenas de suministro no se parecen en nada, por ejemplo, a la visión por computadora: los datos, las métricas y las tareas son extremadamente heterogéneos. Como resultado, las empresas que compraron supuestas soluciones de IA “llave en mano” están comenzando a darse cuenta de que esas soluciones simplemente nunca funcionarán, excepto tal vez en las situaciones más simples donde los sistemas basados en reglas “tontas” también habrían funcionado perfectamente bien.

En su esencia, las cadenas de suministro son sistemas complejos creados por el hombre, y generalmente es irrazonable esperar que el sistema de IA, basado únicamente en datos, redescubra por sí mismo conocimientos fundamentales sobre el dominio, como:

  • hacer promociones para una marca de lujo es un gran error.
  • los pedidos de ventas negativos en el ERP en realidad son devoluciones de productos.
  • los productos frescos deben transportarse dentro de rangos de temperatura especificados.
  • las variantes de colores pueden ser buenos sustitutos de ropa, pero no las variantes de tallas[^niños].
  • el mantenimiento de las aeronaves se basa en las horas de vuelo y los ciclos de vuelo.
  • las ventas en el Reino Unido están en GBP, incluso si el ERP muestra EUR como la 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 de los quilates, la claridad, el color y el corte.
  • cualquier pieza NOGO que falte en una aeronave hace que esta quede en tierra.
  • muchas plantas químicas tardan semanas en reiniciarse después de haber sido apagadas.

En un futuro lejano, podría haber un momento en el que el aprendizaje automático logre emular la inteligencia humana y obtenga resultados al enfrentar problemas complejos[^problemascomplejos], sin embargo, hasta ahora, los resultados solo se han obtenido en problemas relativamente estrechos. Las tecnologías de aprendizaje automático están empujando constantemente los límites de lo que constituye un problema “estrecho” cada año, y después de décadas de esfuerzos, problemas importantes como la conducción autónoma segura y las traducciones automatizadas decentes están resueltos, o muy cerca de resolverse.

Sin embargo, como se ilustra en la lista anterior, las cadenas de suministro siguen siendo desesperadamente heterogéneas para una aplicación directa de algoritmos de aprendizaje automático empaquetados. Incluso si el aprendizaje profundo proporciona las capacidades de generalización más fuertes hasta la fecha, aún se necesita la intervención de un Supply Chain Scientist para plantear el desafío de una manera lo suficientemente estrecha como para que los algoritmos funcionen.

En este sentido, el aprendizaje profundo ha tenido un gran éxito porque, a diferencia de muchos enfoques anteriores en el aprendizaje automático, el aprendizaje profundo es profundamente compositivo: es posible adaptar extensamente 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 ingeniería de características, que solía ser la única opción disponible para la mayoría de los algoritmos de aprendizaje automático no profundos, como los bosques aleatorios[^bosquesaleatorios].

Sin embargo, a medida que los marcos de aprendizaje profundo surgieron de los “Grandes Problemas” del aprendizaje automático, como la visión por computadora, el reconocimiento de voz, la síntesis de voz, la traducción automatizada. Esos marcos han sido diseñados y ajustados en profundidad para escenarios que no se parecen en absoluto a los problemas que se enfrentan en las cadenas de suministro. Por lo tanto, aunque es posible aprovechar esos marcos[^testamento] para fines de optimización de la cadena de suministro, no fue una tarea fácil ni liviana.

En conclusión, con los marcos de aprendizaje profundo, se puede lograr mucho para las cadenas de suministro, pero la falta de compatibilidad entre las cadenas de suministro y los marcos de aprendizaje profundo es fuerte; lo que aumenta los costos, los retrasos y limita la aplicabilidad en el mundo real de esas tecnologías.

programación diferenciable

Más allá de la optimización de ramificación y corte

La mayoría de los problemas en las cadenas de suministro tienen tanto un ángulo de aprendizaje, causado por un conocimiento imperfecto del futuro, un conocimiento imperfecto del estado actual del mercado e incluso un conocimiento imperfecto del propio sistema de la cadena de suministro (por ejemplo, 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 al tiempo que se satisfacen muchas restricciones no lineales (por ejemplo, MOQs al comprar o tamaños de lote al producir).

En el frente de la optimización numérica, la programación entera y sus técnicas relacionadas, como la ramificación y corte, han dominado el campo durante décadas. Sin embargo, estos algoritmos de ramificación y corte y sus soluciones de software asociadas en su mayoría no han logrado ofrecer la flexibilidad y escalabilidad necesarias para proporcionar soluciones operativas para muchos, si no la mayoría, de los desafíos de la cadena de suministro1. La programación entera es una herramienta increíblemente capaz cuando se trata de resolver problemas ajustados con pocas variables (por ejemplo, la ubicació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 (por ejemplo, el reequilibrio de existencias entre 10 millones de SKU cuando se enfrenta a la demanda probabilística y los tiempos de transporte probabilísticos).

Uno de los aspectos más subestimados del aprendizaje profundo es que su éxito se debe tanto a los avances en el lado del aprendizaje como a los avances en el lado de la optimización. Esto se debe a que la comunidad científica ha descubierto algoritmos tremendamente eficientes que realizan optimizaciones a gran escala2.

No solo estos algoritmos de optimización de “aprendizaje profundo”, todos ellos basados en el descenso de gradiente estocástico, son mucho más eficientes que sus contrapartes de ramificación y corte, sino que también se adaptan mucho mejor al hardware informático que tenemos, es decir, CPU SIMD y (GP)GPU, lo que en la práctica proporciona una velocidad adicional de dos o tres órdenes de magnitud.

Estos avances en la optimización numérica pura son de gran relevancia para las cadenas de suministro con el fin de optimizar decisiones. Sin embargo, si los marcos de aprendizaje profundo ya eran algo inadecuados para abordar problemas de aprendizaje en las cadenas de suministro, son aún menos adecuados para abordar los problemas de optimización en las cadenas de suministro. De hecho, estos problemas de optimización dependen aún más de la expresividad del marco para permitir que los científicos de la cadena de suministro 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)

La Programación Diferenciable (DP) es la respuesta para llevar a las cadenas de suministro lo mejor de lo que el aprendizaje profundo tiene para ofrecer tanto en el frente del aprendizaje como en el frente de la optimización numérica. A través de DP, los científicos de la cadena de suministro pueden aprovechar al máximo sus conocimientos humanos para diseñar recetas numéricas alineadas, en profundidad, con los objetivos comerciales.

No hay una delimitación absoluta entre el aprendizaje profundo y la programación diferenciable: es más bien un continuo desde los sistemas más escalables (aprendizaje profundo) hasta los sistemas más expresivos (programación diferenciable) con muchas construcciones de programación que gradualmente se van volviendo disponibles, a expensas de la escalabilidad en bruto, al avanzar hacia la programación diferenciable.

Sin embargo, nuestra experiencia en Lokad indica que la transición de herramientas predominantemente diseñadas para la visión por computadora a herramientas diseñadas para los desafíos de la cadena de suministro marca precisamente la diferencia entre un prototipo “interesante” que nunca llega a la producción y un sistema de calidad industrial implementado a gran escala.

Aprendizaje Profundo 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 grandes (imágenes, secuencias de voz, escaneos de lidar, páginas de texto completas) Objetos pequeños (productos, clientes, SKU, precios)
Variedad de entrada Objetos homogéneos (por ejemplo, imágenes con la misma relación de altura/ancho) Objetos heterogéneos (tablas relacionales, grafos, series de tiempo)
Volumen de entrada Desde megabytes hasta petabytes Desde kilobytes hasta decenas de gigabytes
Aceleración de hardware Excepcionalmente buena Buena
Expresividad Gráficos estáticos de operaciones tensoriales Programas (casi) arbitrarios
Recetas numéricas estocásticas Incorporadas Idem

El uso típico es un punto sutil pero importante. Desde la perspectiva de la “IA grande”, el tiempo de entrenamiento puede ser (casi) arbitrariamente largo: está bien que una red computacional se entrene durante semanas, si no meses. Más tarde, por lo general, la red computacional resultante debe evaluarse en tiempo real (por ejemplo, reconocimiento de patrones para la conducción autónoma). Este enfoque es completamente diferente al de las cadenas de suministro, donde se obtienen los mejores resultados al volver a entrenar la red cada vez. Además, desde la perspectiva de la programación diferenciable, los parámetros entrenados son con frecuencia los mismos resultados que buscamos obtener, lo que hace que la restricción de evaluación en tiempo real sea irrelevante.

Las expectativas en torno a las entradas de datos, tanto en cuanto a granularidad, variedad y volumen, también son muy diferentes. Por lo general, la perspectiva de la “IA grande” enfatiza cantidades cercanas a 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 eficazmente esos conjuntos de datos masivos. En contraste, los problemas de la cadena de suministro deben abordarse con una cantidad limitada de datos altamente estructurados pero diversos.

Esto lleva al aprendizaje profundo hacia los marcos basados en tensores, que pueden acelerarse masivamente mediante hardware informático dedicado, inicialmente GPUs y ahora cada vez más TPUs. La programación diferenciable, al basarse en el descenso de gradiente estocástico, también exhibe muchas propiedades buenas para la aceleración de hardware, pero en menor medida en comparación con los gráficos estáticos de operaciones tensoriales.

La importancia de las recetas numéricas estocásticas es doble. En primer lugar, estas recetas desempeñan un papel importante desde una perspectiva de aprendizaje. Los autoencoders variacionales o los dropouts son ejemplos de tales recetas numéricas. En segundo lugar, estas recetas también desempeñan un papel importante desde una perspectiva de modelado para factorizar adecuadamente los comportamientos probabilísticos dentro de los sistemas de la cadena de suministro (por ejemplo, tiempos de entrega variables).

Por otro lado, hay una gran brecha entre la programación diferenciable y la programación entera mixta: el enfoque dominante en 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 pequeños, heterogéneos Idem
Volumen de entrada Desde bytes hasta decenas de megabytes Desde kilobytes hasta decenas de gigabytes
Aceleración de hardware Pobre Buena
Expresividad Desigualdades sobre formas lineales y cuadráticas Programas (casi) arbitrarios
Recetas numéricas estocásticas Ninguna Incorporadas

En defensa de las herramientas de programación entera mixta, estas herramientas, cuando logran abordar un problema, a veces pueden demostrar - en el sentido matemático - que han obtenido la solución óptima. Ni el aprendizaje profundo ni la programación diferenciable proporcionan ninguna prueba formal en este sentido.

Conclusiones

La programación diferenciable es un avance importante para las cadenas de suministro. Se basa en el aprendizaje profundo, que ha demostrado ser tremendamente exitoso en la resolución de muchos problemas de “IA grande”, como la visión por computadora, pero se ha rediseñado en su núcleo para ser adecuado para los desafíos del mundo real que enfrentan las cadenas de suministro del mundo real.

Lokad ha estado construyendo sobre su tecnología de pronóstico de aprendizaje profundo para hacer la transición hacia la programación diferenciable, que es la próxima generación de nuestra tecnología predictiva. Sin embargo, la programación diferenciable es más que solo ser predictiva, unifica la optimización y el aprendizaje, desbloqueando soluciones para una gran cantidad de problemas que antes no tenían soluciones viables.

¿Interesado en participar en nuestra versión beta privada? Envíenos un correo electrónico a contact@lokad.com


  1. El software de optimización como CPLEX, Gurobi y ahora su equivalente de código abierto ha estado disponible durante más de 3 décadas. En teoría, cada situación de compra que enfrenta cantidades mínimas de pedido (MOQ) o descuentos de precios debería haberse abordado con software que brinde capacidades similares. Sin embargo, aunque he tenido la oportunidad de estar en contacto con más de 100 empresas en la última década en muchos sectores, nunca he visto ningún departamento de compras que utilice ninguna de estas herramientas en ninguna parte. Mi propia experiencia con dichas herramientas indica que pocos problemas realmente se ajustan a un conjunto de desigualdades estáticas que incluyen solo formas lineales y cuadráticas. ↩︎

  2. El algoritmo Adam (2015) es probablemente el mejor representante de esos algoritmos de optimización simples pero tremendamente eficientes que han hecho avanzar todo el campo del aprendizaje automático. ↩︎