Programación diferenciable

La programación diferenciable (Differentiable Programming) es la descendiente del deep learning y representa la convergencia de dos campos algorítmicos: el machine learning y la optimización numérica. La programación diferenciable permite abordar una serie de escenarios de cadena de suministro que hasta ahora se consideraban intrincados: optimización conjunta de precios y stocks, optimización de surtido impulsada por la fidelidad, pronóstico de demanda de productos no estándar (por ej., piedras preciosas, obras de arte), optimización de flujo multinivel de gran escala, optimización conjunta multicanal, optimización de stock con valores de stock electrónicos parcialmente incorrectos, maximización de flujo de gran escala con muchas limitaciones, etc. Para muchos otros escenarios que ya eran abordables con métodos alternativos, la programación diferenciable proporciona mejores resultados numéricos con solo una fracción de la sobrecarga de trabajo, tanto en términos de esfuerzos de los científicos de datos como de recursos computacionales.


Programación diferenciable en acción




Aplicación a las cadenas de suministro

En su esencia, la programación diferenciable (Differentiable Programming o DP) ofrece un abordaje para unificar problemas que han quedado desconectados durante demasiado tiempo y para resolverlos en forma conjunta: surtido, fijación de precios, pronóstico, planificación, comercialización. Si bien este tipo de unificación puede parecer muy ambicioso, la realidad es que las empresas ya están aplicando una cantidad descabellada de parches en sus procesos para lidiar con los incontables problemas que genera el hecho de que esos desafíos han estado aislados dentro de la organización. Por ejemplo, la fijación de precios claramente afecta la demanda y, sin embargo, tanto la planificación como el pronóstico casi siempre se realizan ignorando completamente los precios.

La DP permite aprovechar la enorme oportunidad de entregar decisiones aproximadamente correctas desde una perspectiva holística del negocio, en lugar de ofrecer respuestas exactamente equivocadas desplazando los problemas dentro de la organización en lugar de resolverlos.

Como detalle anecdótico, la búsqueda de la corrección aproximada teniendo en cuenta el negocio en conjunto es exactamente lo que hacen la mayoría de las organizaciones que utilizan hojas de cálculo; y, a falta de una tecnología adecuada —como la DP— capaz de aplicar una perspectiva del negocio en conjunto, las hojas de cálculo siguen siendo la opción menos peor.

E-commerce

Lograr asignar el 100 % de las unidades vendidas a clientes conocidos representa una cantidad enorme de información latente sobre el mercado; sin embargo, cuando se trata de la fijación de precios y la optimización del inventario, la información sobre la fidelidad generalmente ni siquiera se usa, La DP ofrece la posibilidad de pasar del pronóstico de series de tiempo al pronóstico de gráfico temporal en el que cada par cliente-producto observado es relevante, lo que lleva a la toma de decisiones más inteligentes, tanto de stocks como de precios.

Marcas de lujo

La optimización de la fijación de precios y de los surtidos —hasta el nivel de tienda— se han considerado durante mucho tiempo casi impracticables debido a la escasez de datos, es decir, el bajo volumen de ventas de artículo por tienda, que puede ser de hasta una unidad vendida de un producto por tienda en un año. La DP proporciona perspectivas para entregar clases de soluciones que funcionan en este tipo de escenarios, porque están diseñados para proporcionar una eficiencia de datos muy superior a la de los métodos de deep learning normales.

Marcas de moda

La optimización conjunta de stocks y precios es una necesidad clara —ya que la demanda de muchos artículos puede ser altamente sensible al precio—; sin embargo, la optimización conjunta de la compra y la fijación de precios no puede lograrse debido a la falta de una herramienta capaz de siquiera aprehender esta combinación: que la capacidad de comprar más a un precio menor genera más demanda (y viceversa). La DP proporciona la expresividad necesaria para abordar este desafío.

Fabricación

La optimización numérica de redes multinivel de grandes dimensiones se desmorona cuando se aborda con solvers numéricos clásicos (ver "Más allá de la optimización Branch and Cut" más adelante). De hecho, estos solvers se vuelven poco prácticos cuando se trabaja con millones de variables o con comportamientos aleatorios. Lamentablemente, el sector de la fabricación presenta tanto muchas variables como comportamientos aleatorios. La DP ofrece un abordaje práctico para afrontar el multinivel sin traicionar la complejidad del flujo real de patrones dentro de la red.

MRO (mantenimiento, reparación y reacondicionamiento)

Si la pieza que se necesita para la reparación de un sistema no está disponible, todo el sistema —que puede ser un avión— queda varado en tierra. Los pronósticos probabilísticos son el primer paso para afrontar estos patrones de demanda erráticos e intermitentes, pero descifrar los detalles de las co-ocurrencias de las piezas necesarias y convertir este análisis en recomendaciones de inventario que pueden ejecutarse era demasiado complejo para el uso práctico. La DP optimiza las resoluciones de estos problemas.

Redes minoristas

Desde hace mucho tiempo se ha reconocido la primordial importancia de las canibalizaciones en redes minoristas (generalmente entre productos, pero a veces entre tiendas). Este problema se amplifica con las promociones, precisamente pensadas para llevar a los clientes de una marca a otra. La DP ofrece la posibilidad de abordar la canibalización cuando hay promociones. En lugar de simplemente "pronosticar promociones", la DP ofrece la posibilidad de optimizar las promociones por lo que son: ofertas rentables operadas en conjunto entre el canal de distribución y la marca.

Más allá del furor de la inteligencia artificial

La inteligencia artificial (IA) ha sido, sin dudas, la palabra de moda de 2018 en tecnología, y sigue siendo furor en 2019. Sin embargo, si bien Lokad utiliza mucho técnicas que generalmente se categorizan dentro de la IA —por ejemplo, el deep learning—, hemos sido reticentes a poner énfasis en el componente de "IA" de la tecnología de Lokad. De hecho, en lo que tiene que ver con la optimización de la cadena de suministro cuantitativa, la IA preconfigurada simplemente no funciona. Las cadenas de suministro no se parecen en nada a, por ejemplo, la visión computacional: datos, métricas y tareas son extremadamente heterogéneos. Como resultado, las empresas que compraron soluciones de IA supuestamente "listas para usar" están empezando a darse cuenta de que esas soluciones no funcionarán nunca, con excepción, quizás, de las situaciones más simples en las que sistemas "tontos" basados en reglas hubieran funcionado igual de bien de todas maneras. En su esencia, las cadenas de suministro son sistemas complejos diseñados por humanos y, a menudo, es irracional esperar que el sistema de IA —basado solo en datos— redescubra por sí solo información estratégica fundamental sobre el sector; por ejemplo:

  • Hacer promociones para una marca de lujo es inadmisible.
  • Los pedidos de venta negativos en el ERP son en realidad devoluciones de productos.
  • Los productos comestibles frescos deben transportarse a temperaturas específicas.
  • Variantes de color pueden ser buenos sustitutos de ropa, pero no sucede lo mismo con variantes de tallas1.
  • El mantenimiento de aviones está determinado por horas de vuelo y ciclos de vuelo.
  • Las ventas en el Reino Unido son en GBP aunque el ERP muestre EUR como moneda.
  • Las personas compran repuestos de coches para sus vehículos, no para sí mismas.
  • Cada diamante es único, pero los precios dependen de los quilates, la pureza, el color y el corte.
  • Cualquier pieza NOGO que falta de un avión hace que este quede varado en tierra.
  • A muchas plantas químicas les lleva semanas reiniciar las actividades después de haberse detenido.
En un futuro lejano, puede ser que el machine learning llegue a emular la inteligencia humana y obtenga buenos resultados al enfrentarse a problemas complejos (wicked problems)2; sin embargo, hasta el momento, se han obtenido resultados solo en problemas relativamente acotados. Cada año, las tecnologías de machine learning empujan cada vez más allá los límites de lo que constituye un problema "acotado" y, después de décadas de esfuerzos, problemas importantes como la conducción autónoma segura o traducciones automáticas aceptables se han resuelto, o están muy cerca de resolverse. No obstante, como se ilustró en la lista anterior, las cadenas de suministro siguen siendo demasiado heterogéneas para permitir una aplicación directa de algoritmos de machine learning preconfigurados. Aunque el deep learning proporcione las capacidades de generalización más sólidas hasta la fecha, sigue siendo necesaria la intervención de un Supply Chain Scientist para encuadrar el desafío de un modo que sea lo suficientemente acotado como para que los algoritmos funcionen.

En este sentido, el deep learning ha sido tremendamente exitoso, porque, a diferencia de muchos de los abordajes anteriores en machine learning, el deep learning es profundamente compositivo: es posible adaptar significativamente la estructura del modelo para que aprenda mejor en una situación específica. La adaptación de la estructura del modelo es diferente de la adaptación de la entrada, una tarea conocida como ingeniería de características (o feature engineering), que generalmente era la única opción disponible para la mayoría de los algoritmos de machine learning no pertenecientes al deep learning, como los bosques aleatorios (o random forests)3.

Sin embargo, debido a que los marcos de deep learning emergieron de los "grandes problemas" del machine learning, como la visión computacional, el reconocimiento vocal, la síntesis vocal y la traducción automática, esos marcos han sido rediseñados y adaptados en profundidad para escenarios que no tienen nada que ver con los problemas que afrontan las cadenas de suministro. Por lo tanto, si bien es posible aprovechar esos marcos4 en la optimización de la cadena de suministro, no es una empresa sencilla ni ligera. En conclusión, con los marcos de deep learning, puede lograrse mucho en las cadenas de suministro, pero el desajuste entre las cadenas de suministro y los marcos de deep learning existentes es grande, lo que aumenta los costos y los retrasos y limita la aplicabilidad real de esas tecnologías.

Más allá de la optimización Branch and Cut

La mayoría de los problemas de la cadena de suministro tienen un aspecto relacionado con el aprendizaje —causado por un conocimiento imperfecto del futuro, un conocimiento imperfecto del estado actual del mercado y, a veces, incluso un conocimiento imperfecto del sistema de la cadena de suministro en sí (por ej. imprecisiones de inventario)—, pero también tiene un aspecto relacionado con la optimización numérica. Las decisiones deben ser optimizadas considerando impulsores económicos, satisfaciendo al mismo tiempo muchas limitaciones no lineales (por ej., MOQ en la compra o tamaños de lote en la producción).

En el aspecto relacionado con la optimización numérica, la programación en enteros y las técnicas relacionadas, como el método Branch and Cut han dominado el sector durante décadas. Sin embargo, estos algoritmos Branch and Cut y las soluciones de software que los aplican no han logrado, en su mayoría,5 proporcionar la flexibilidad y la escalabilidad necesarias para equipar a las soluciones operativas para que afronten muchos, si no la mayoría, de los desafíos de la cadena de suministro. La programación en enteros es una herramienta de una capacidad impresionante cuando se trata de resolver problemas acotados con pocas variables (por ej., ubicación de componentes en un dispositivo electrónico de consumidor), pero presenta limitaciones drásticas cuando se trata de problemas de gran escala que implican aleatoriedad (por ej., reequilibrado de stocks entre 10 millones de SKU al afrontar demanda y tiempos de transporte probabilísticos).

Uno de los aspectos más infravalorados del deep learning es que su éxito es en igual medida resultado de los avances en el aprendizaje y en la optimización. Esto se debe a que la comunidad científica ha descubierto que algoritmos enormemente eficientes están realizando optimizaciones de gran escala6. Estos algoritmos de optimización de "deep learning" —que funcionan en torno al descenso estocástico de gradiente— no solo son mucho más eficientes que sus equivalentes Branch and Cut, sino que se adaptan mucho mejor al hardware informático que tenemos, por ejemplo CPU SIMD y (GP)GPU, que en la práctica proporcionan dos o tres órdenes de magnitud superior de velocidad adicional. Estos avances en la optimización numérica pura son de gran relevancia para la optimización de las decisiones en las cadenas de suministro. Sin embargo, si los marcos de deep learning ya eran poco adecuados para abordar problemas de aprendizaje en las cadenas de suministro, lo son incluso menos para abordar los problemas de optimización de las cadenas de suministro. De hecho, estos problemas de optimización dependen aún más de la expresividad del marco para permitirle a los expertos en cadena de suministro implementar las limitaciones y las métricas que deben aplicarse y optimizarse respectivamente.

Hacia la programación diferenciable

En teoría, no hay diferencia entre la teoría y la práctica. Pero, en la práctica, 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 que permite aplicar en las cadenas de suministro lo mejor de lo que el deep learning tiene para ofrecer, tanto en el aprendizaje como en la optimización numérica. A través de la DP, los expertos en cadena de suministro pueden explotar al máximo su aporte humano para adaptar las recetas numéricas alineadas —en profundidad— con los objetivos de negocio. No existe una división absoluta entre el deep learning y la programación diferenciable: se trata más bien de un continuo desde los sistemas más escalables (deep learning) hasta los sistemas más expresivos (programación diferenciable) con muchas construcciones de programación que van apareciendo —a expensas de la escalabilidad sin procesar— al avanzar hacia la programación diferenciable. No obstante, nuestra experiencia en Lokad indica que la transición de herramientas diseñadas principalmente para la visión computacional a herramientas diseñadas para los desafíos de la cadena de suministro hacen la diferencia entre un prototipo "interesante" que nunca llega a la producción y un sistema de nivel industrial implementado a escala.

Deep LearningProgramación diferenciable
Principal finalidad Aprendizaje Aprendizaje+Optimización
Uso habitual Aprendizaje único, múltiples evaluaciones Aprendizaje único, evaluación única
Granularidad de la entrada Objetos fat (imágenes, secuencias vocales, escaneos lidar, páginas de texto completo) Objetos thin (productos, clientes, SKU, precios)
Variedad de la entrada Objetos homogéneos (por ej. imágenes que tienen el mismo ratio altura/ancho) Objetos heterogéneos (tablas relacionales, gráficos, series de tiempo)
Volumen de entrada De megabytes a petabytes De kilobytes a 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 Integradas Ídem

El uso habitual es un punto delicado, pero importante. Desde el panorama general de la IA, el tiempo de entrenamiento puede ser (casi) arbitrariamente largo: es posible tener una red computacional que se entrena durante semanas, si no meses. Más adelante, la red computacional resultante generalmente debe ser evaluada en tiempo real (por ej. reconocimiento de patrones para la conducción autónoma). Esta perspectiva es completamente diferente a las cadenas de suministro, en las que los mejores resultados se obtienen volviendo a entrenar la red cada vez. Además, desde una perspectiva de DP, los parámetros entrenados a menudo son precisamente los resultados que buscamos obtener, lo que hace que toda la limitación de la evaluación en tiempo real sea irrelevante. Las expectativas en torno a las entradas de datos en granularidad, variedad y volumen también son muy diferentes. Generalmente, en el panorama general de IA, se enfatizan cantidades casi infinitas de datos de entrenamiento (por ej., todas las páginas de texto de la web), donde el desafío principal es encontrar métodos enormemente escalables que puedan analizar de manera eficaz esos conjuntos de datos gigantes. En cambio, los problemas de la cadena de suministro deben abordarse con una cantidad limitada de datos altamente estructurados, aunque diversos. Esto conduce al deep learning hacia los marcos basados en tensores, que pueden acelerarse enormemente gracias a hardware computacional específico, en un principio las GPU y ahora cada vez más las TPU. La programación diferenciable, al basarse en el descenso estocástico de gradiente, también presenta muchas buenas propiedades para la aceleración de hardware, pero a un grado reducido con respecto a los gráficos estáticos de los cálculos tensoriales. La importancia de las recetas numéricas estocásticas es doble. En primer lugar, estas recetas desempeñan un papel importante en el aprendizaje. Los autocodificadores (auto-encoders) variables o los dropouts son ejemplos de este tipo de recetas numéricas. En segundo lugar, estas recetas también desempeñan un papel importante en el modelado para incluir adecuadamente los comportamientos probabilísticos en los sistemas de cadena de suministro (por ej. tiempo de entrega variable). Por el contrario, existe un salto enorme entre la programación diferenciable y la programación en enteros mixtos, el enfoque dominante en las últimas décadas ha sido realizar optimización numéricas complejas.

Programación en enteros mixtosProgramación diferenciable
Principal finalidad Optimización Aprendizaje+Optimización
Granularidad y variedad de la entrada Objetos thin, heterogéneos Ídem
Volumen de entrada De bytes a decenas de megabytes De kilobytes a decenas de gigabytes
Aceleración de hardware Baja Buena
Expresividad Desigualdades en formas lineales y cuadráticas Programas (casi) arbitrarios
Recetas numéricas estocásticas Ninguna Integradas

En defensa de las herramientas de programación en enteros mixtos, esas herramientas, cuando logran afrontar un problema, a veces pueden probar, en el sentido matemático, que han obtenido una solución óptima. Ni el deep learning ni la programación diferenciable proporcionan pruebas formales en este sentido.

Conclusiones

La programación diferenciable es un enorme avance para las cadenas de suministro. Se apoya en el deep learning , que demostró ser enormemente exitoso en la resolución de muchos problemas del panorama general de la IA, como la visión computacional, pero con un rediseño de la esencia que la hace adecuada para los desafíos del mundo real que afrontan las cadenas de suministro reales. Lokad ha estado desarrollando su tecnología de pronóstico con deep learning para pasar a la programación diferenciable, que es la próxima generación de nuestra tecnología predictiva. Sin embargo, la DP es más que predictiva: unifica la optimización y el aprendizaje, habilitando soluciones para una gran cantidad de problemas que antes no tenían soluciones viables.