Programmation Différentiable

power-clouds
La programmation différentiable est le descendant du deep learning, et représente la convergence de deux domaines algorithmiques : l’apprentissage automatique et l’optimisation numérique. La programmation différentiable débloque une série de scénarios de la supply chain qui étaient largement considérés comme inextricables : optimisation conjointe des prix et des stocks, optimisation de l’assortiment axée sur la fidélité, prévision de la demande pour des produits non standard (par exemple, pierres précieuses, œuvres d’art), optimisation de flux multi-échelons à grande échelle, optimisation conjointe à plusieurs canaux, optimisation des stocks sous des valeurs de stocks électroniques partiellement incorrectes, maximisation des flux à grande échelle sous de nombreuses contraintes, etc. Pour de nombreux autres scénarios qui étaient déjà abordables avec des méthodes alternatives, la programmation différentiable offre des résultats numériques supérieurs avec seulement une fraction des coûts, tant en termes d’efforts des data scientists que de ressources computationnelles.

Application aux Supply Chains

Au cœur de la Programmation Différentiable (DP), il offre un chemin pour unifier des problèmes qui sont restés déconnectés pendant trop longtemps et les résout conjointement : assortiment, tarification, prévision, planification, merchandising. Alors qu’une telle unification peut sembler ambitieuse de manière irréaliste, la réalité est que les entreprises appliquent déjà une quantité insensée de rustines à leurs propres processus pour faire face aux problèmes sans fin générés par le fait que ces défis ont été cloisonnés au sein de l’organisation en premier lieu. Par exemple, la tarification impacte évidemment la demande et pourtant la planification et la prévision sont presque toujours effectuées en ignorant totalement les prix.

DP débloque l’opportunité massive de fournir des décisions approximativement correctes d’une perspective holistique sur l’entreprise, au lieu d’être exactement faux tout en déplaçant les problèmes au sein de l’organisation au lieu de les résoudre.

Anecdotiquement, chercher une exactitude approximative tout en tenant compte de l’entreprise dans son ensemble est exactement ce que la plupart des organisations basées sur des feuilles de calcul sont; et faute d’une technologie - comme DP - capable d’embrasser une perspective globale de l’entreprise, les feuilles de calcul restent l’option la moins terrible.

E-commerce

Pouvoir attacher 100% des unités vendues à des clients connus représente une quantité massive d’informations latentes sur le marché; pourtant, en ce qui concerne la tarification et l’optimisation des stocks, les informations sur la fidélité ne sont généralement même pas utilisées de nos jours. DP offre la possibilité de passer de la prévision des séries temporelles à la prévision des graphes temporels où chaque paire client-produit jamais observée compte; conduisant à des décisions plus intelligentes à la fois pour les stocks et les prix.

Marques de luxe

L’optimisation de la tarification et des assortiments - jusqu’au niveau du magasin - a longtemps été considérée comme largement inextricable en raison de la rareté des données, c’est-à-dire le très faible volume de ventes par article par magasin - aussi bas qu’une unité vendue par produit par magasin par an. DP offre des angles pour fournir des classes de solutions qui fonctionnent sur de telles ultra-éparpilles, car elles sont conçues pour offrir une efficacité de données beaucoup plus grande que les méthodes d’apprentissage profond régulières.

Marques de mode

L’optimisation conjointe des stocks et des prix est une exigence claire - car la demande pour de nombreux articles peut être très sensible au prix - pourtant, l’optimisation conjointe des achats et de la tarification n’a pas pu être réalisée en raison du manque d’un outil capable de même appréhender ce couplage - c’est-à-dire la capacité d’acheter plus à un prix plus bas génère plus de demande (et vice versa). DP offre l’expressivité pour relever ce défi.

Fabrication

L’optimisation numérique de réseaux multi-échelons de taille importante s’effondre lorsqu’elle est tentée avec des solveurs numériques classiques (voir “Au-delà de l’optimisation de la coupe et de la branche” ci-dessous). En effet, ces solveurs deviennent largement impraticables lorsqu’ils traitent soit des millions de variables, soit des comportements stochastiques. Malheureusement, la fabrication présente les deux avec de nombreuses variables et des comportements stochastiques. DP offre un angle pratique pour faire face au multi-échelon sans trahir la complexité des schémas de flux réels au sein du réseau.

MRO (maintenance, réparation, révision)

Si une pièce nécessaire pour la réparation d’un système manque, alors tout le système - qui pourrait être un avion - reste en panne. Les prévisions probabilistes sont la première étape pour traiter de tels modèles de demande erratiques et intermittents, mais comprendre les détails des co-occurrences des pièces requises et transformer cette analyse en recommandations d’inventaire exploitables était trop complexe pour être d’une utilité pratique. DP rationalise la résolution de tels problèmes.

Réseaux de vente au détail

Les cannibalisations au sein des réseaux de vente au détail - généralement entre les produits mais parfois entre les magasins - ont été reconnues comme étant d’une importance primordiale depuis longtemps. Ce problème est amplifié par les promotions, précisément conçues pour orienter les clients d’une marque à une autre. DP offre la possibilité de traiter la cannibalisation en présence de promotions. Au lieu de simplement “prévoir des promotions”, DP offre la possibilité d’optimiser les promotions pour ce qu’elles sont : des offres rentables gérées conjointement par le canal de distribution et la marque.

Au-delà de l’engouement pour l’intelligence artificielle

L’intelligence artificielle (IA) a certainement été le mot à la mode technologique de 2018 et l’engouement est toujours aussi fort en 2019. Cependant, bien que Lokad utilise largement des techniques qui entrent généralement dans la catégorie du buzzword de l’IA - par exemple, le deep learning - nous avons été réticents à mettre l’accent sur la partie “IA” de la technologie de Lokad. En effet, en ce qui concerne l’optimisation quantitative de la supply chain, l’IA prête à l’emploi ne fonctionne tout simplement pas. Les supply chains ne ressemblent en rien, disons, à la vision par ordinateur : les données, les métriques et les tâches sont tous extrêmement hétérogènes. En conséquence, les entreprises qui ont acheté des solutions d’IA soi-disant “clés en main” commencent à réaliser que ces solutions ne fonctionneront tout simplement jamais, sauf peut-être dans les situations les plus simples où des systèmes basés sur des règles “bêtes” auraient également très bien fonctionné de toute façon. Au cœur, les supply chains sont des systèmes complexes créés par l’homme, et il est généralement déraisonnable de s’attendre à ce que le système d’IA - basé uniquement sur les données - redécouvre de lui-même des idées fondamentales sur le domaine telles que :

  • faire des promotions pour une marque de luxe est une grosse erreur.
  • les commandes de vente négatives dans l’ERP sont en réalité des retours de produits.
  • les produits alimentaires frais doivent être transportés dans des plages de température spécifiées.
  • les variantes de couleurs peuvent être de bons substituts vestimentaires, mais pas les variantes de tailles.
  • la maintenance des avions est basée sur les heures de vol et les cycles de vol.
  • les ventes au Royaume-Uni sont en réalité en GBP même si l’ERP affiche l’EUR comme devise.
  • les gens achètent des pièces de voiture pour leurs véhicules, pas pour eux-mêmes.
  • chaque diamant est unique, mais les prix dépendent principalement du carat, de la clarté, de la couleur et de la taille.
  • toute pièce NOGO manquante sur un avion entraîne l’immobilisation de l’avion.
  • de nombreuses usines chimiques mettent des semaines à redémarrer après avoir été éteintes.
power-clouds Dans un avenir lointain, il pourrait y avoir un moment où l'apprentissage automatique réussira à émuler l'intelligence humaine et obtiendra des résultats face à des problèmes complexes, cependant, jusqu'à présent, les résultats n'ont été obtenus que sur des problèmes relativement étroits. Les technologies d'apprentissage automatique repoussent chaque année les limites de ce qui constitue un problème "étroit", et après des décennies d'efforts, des problèmes importants tels que la conduite autonome sûre et les traductions automatisées décentes sont résolus, ou très proches d'être résolus. Néanmoins, comme illustré par la liste ci-dessus, les chaînes d'approvisionnement restent désespérément trop hétérogènes pour une application directe d'algorithmes d'apprentissage automatique prêts à l'emploi. Même si l'apprentissage profond offre les capacités de généralisation les plus puissantes à ce jour, il faut toujours l'intervention d'un scientifique de la supply chain pour cadrer le défi de manière suffisamment étroite pour que les algorithmes fonctionnent du tout.

À cet égard, l’apprentissage profond a été extrêmement réussi car, contrairement à de nombreuses approches antérieures en apprentissage automatique, l’apprentissage profond est profondément compositionnel : il est possible de personnaliser considérablement la structure du modèle pour mieux apprendre dans une situation spécifique. Personnaliser la structure du modèle est différent de personnaliser l’entrée du modèle - une tâche connue sous le nom d’ingénierie des caractéristiques - qui était généralement la seule option disponible pour la plupart des algorithmes d’apprentissage automatique non profonds tels que les forêts aléatoires.

Cependant, à mesure que les cadres d’apprentissage profond émergeaient des “Grands Problèmes” de l’apprentissage automatique, à savoir la vision par ordinateur, la reconnaissance vocale, la synthèse vocale, la traduction automatique. Ces cadres ont été conçus et ajustés en profondeur pour des scénarios qui ne ressemblent littéralement en rien aux problèmes rencontrés dans les chaînes d’approvisionnement. Ainsi, bien qu’il soit possible de tirer parti de ces cadres pour des objectifs d’optimisation de la chaîne d’approvisionnement, ce n’était pas une tâche facile ni légère. En conclusion, avec les cadres d’apprentissage profond, beaucoup peut être réalisé pour les chaînes d’approvisionnement, mais le désaccord d’impédance entre les chaînes d’approvisionnement et les cadres d’apprentissage profond existants est fort ; augmentant les coûts, les retards et limitant l’applicabilité réelle de ces technologies.

Au-delà de l’optimisation par branch-and-cut

La plupart des problèmes dans les chaînes d’approvisionnement ont à la fois un angle d’apprentissage - causé par une connaissance imparfaite de l’avenir, une connaissance imparfaite de l’état actuel du marché, et parfois même une connaissance imparfaite du système de la chaîne d’approvisionnement lui-même (par exemple, des inexactitudes d’inventaire) - mais aussi un angle d’optimisation numérique. Les décisions doivent être optimisées par rapport aux moteurs économiques tout en satisfaisant de nombreuses contraintes non linéaires (par exemple, les quantités minimales de commande lors de l’achat ou les tailles de lot lors de la production).

Sur le front de l’optimisation numérique, la programmation entière et ses techniques associées telles que le branch-and-cut dominent le domaine depuis des décennies. Cependant, ces algorithmes branch-and-cut et leurs solutions logicielles associées ont principalement échoué à offrir la flexibilité et la scalabilité nécessaires pour fournir des solutions opérationnelles à de nombreux, voire la plupart, des défis de la chaîne d’approvisionnement. La programmation entière est un outil incroyablement capable lorsqu’il s’agit de résoudre des problèmes serrés avec peu de variables (par exemple, le placement des composants dans un appareil électronique grand public) mais montre des limitations drastiques lorsqu’il s’agit de problèmes à grande échelle impliquant de l’aléatoire (par exemple, rééquilibrer les stocks entre 10 millions de références lorsque l’on fait face à la demande probabiliste et aux temps de transport probabilistes).

Un des aspects les plus sous-estimés du deep learning est que son succès est autant le résultat de percées du côté de l’apprentissage que du côté de l’optimisation. C’est parce que la communauté scientifique a découvert que des algorithmes extrêmement efficaces réalisent des optimisations à grande échelle. Non seulement ces algorithmes d’optimisation “deep learning” - tous basés sur la descente de gradient stochastique - sont nettement plus efficaces que leurs homologues branch-and-cut, mais ils s’adaptent beaucoup mieux au matériel informatique que nous possédons, à savoir les CPU SIMD et (GP)GPU qui, en pratique, offrent un gain de vitesse de deux à trois ordres de grandeur supplémentaires. Ces percées en matière d’optimisation numérique pure sont d’une grande pertinence pour les chaînes d’approvisionnement afin d’optimiser les décisions. Cependant, si les cadres de deep learning étaient déjà quelque peu mal adaptés pour résoudre les problèmes d’apprentissage dans les chaînes d’approvisionnement, ils le sont encore moins pour résoudre les problèmes d’optimisation dans les chaînes d’approvisionnement. En effet, ces problèmes d’optimisation dépendent encore plus de l’expressivité du cadre pour permettre aux scientifiques de la chaîne d’approvisionnement de mettre en œuvre les contraintes et les métriques à respectivement appliquer et optimiser.

Vers la programmation différentiable

En théorie, il n’y a pas de différence entre la théorie et la pratique. Mais, en pratique, il y en a. Walter J. Savitch, Pascal: An Introduction to the Art and Science of Programming (1984)

La Programmation Différentiable (DP) est la réponse pour apporter aux chaînes d’approvisionnement le meilleur de ce que le deep learning a à offrir à la fois du côté de l’apprentissage et du côté de l’optimisation numérique. Grâce à la DP, les scientifiques de la chaîne d’approvisionnement peuvent tirer le meilleur parti de leurs intuitions humaines pour élaborer des recettes numériques alignées - en profondeur - avec les objectifs commerciaux. Il n’y a pas de délimitation absolue entre le deep learning et la programmation différentiable : c’est plutôt un continuum des systèmes les plus évolutifs (deep learning) aux systèmes les plus expressifs (programmation différentiable) avec de nombreux concepts de programmation qui deviennent progressivement disponibles - au détriment de la scalabilité brute - en se dirigeant vers la programmation différentiable. Pourtant, notre expérience chez Lokad indique que passer d’outils principalement conçus pour la vision par ordinateur à des outils conçus pour les défis de la chaîne d’approvisionnement fait précisément la différence entre un prototype “intéressant” qui ne parvient jamais à la production et un système de qualité industrielle déployé à grande échelle.

Deep Learning Programmation Différentiable
Objectif principal Apprentissage Apprentissage+Optimisation
Utilisation typique Apprendre une fois, Évaluer plusieurs fois Apprendre une fois, Évaluer une fois
Granularité de l’entrée Objets volumineux (images, séquences vocales, scans lidar, pages de texte complètes) Objets minces (produits, clients, SKUs, prix)
Variété de l’entrée Objets homogènes (par ex. des images ayant toutes le même ratio hauteur/largeur) Objets hétérogènes (tables relationnelles, graphiques, séries temporelles)
Volume de l’entrée De mégaoctets à pétaoctets De kilooctets à dizaines de gigaoctets
Accélération matérielle Accélération matérielle Bonne
Expressivité Graphes statiques d’opérations tensorielles Programmes (presque) arbitraires
Recettes numériques stochastiques Intégrées Idem

L’utilisation typique est un point subtil mais important. Du point de vue de l’ “IA Big”, le temps d’entraînement peut être (presque) arbitrairement long : il est acceptable qu’un réseau computationnel soit entraîné pendant des semaines, voire des mois. Plus tard, le réseau computationnel résultant doit généralement être évalué en temps réel (par exemple, la reconnaissance de motifs pour la conduite autonome). Cet angle est complètement différent de celui des chaînes d’approvisionnement, où les meilleurs résultats sont obtenus en ré-entraînant le réseau à chaque fois. De plus, du point de vue de la DP, les paramètres entraînés sont fréquemment les résultats mêmes que nous cherchons à obtenir ; rendant ainsi la contrainte d’évaluation en temps réel tout à fait caduque. Les attentes entourant les entrées de données en termes de granularité, de variété et de volume sont également largement différentes. Typiquement, le point de vue de l’ “IA Big” met l’accent sur des quantités presque infinies de données d’entraînement (par exemple, toutes les pages de texte du web) où le principal défi est de trouver des méthodes extrêmement évolutives qui peuvent exploiter efficacement ces ensembles de données massifs. En revanche, les problèmes de chaîne d’approvisionnement doivent être abordés avec une quantité limitée de données hautement structurées mais diverses. Cela oriente l’apprentissage profond vers des cadres basés sur les tenseurs, qui peuvent être massivement accélérés grâce à du matériel informatique dédié, initialement des GPU et maintenant de plus en plus des TPU. La Programmation Différentiable, basée sur la descente de gradient stochastique, présente également de nombreuses bonnes propriétés pour l’accélération matérielle, mais dans une moindre mesure par rapport aux graphes statiques d’opérations tensorielles. L’importance des recettes numériques stochastiques est double. Premièrement, ces recettes jouent un rôle important du point de vue de l’apprentissage. Les auto-encodeurs variationnels ou les dropouts sont des exemples de telles recettes numériques. Deuxièmement, ces recettes jouent également un rôle important du point de vue de la modélisation afin de factoriser correctement les comportements probabilistes au sein des systèmes de chaîne d’approvisionnement (par exemple, les délais de livraison variables). En revanche, il existe un écart énorme entre la programmation différentiable et la programmation entière mixte - l’approche dominante au cours des dernières décennies a été d’effectuer des optimisations numériques complexes.

Programmation Entière Mixte Programmation Différentiable
Objectif principal Optimisation Apprentissage+Optimisation
Granularité et variété de l’entrée Objets minces, hétérogènes Idem
Volume de l’entrée De bytes à dizaines de mégaoctets De kilooctets à dizaines de gigaoctets
Accélération matérielle Faible Bonne
Expressivité Inégalités sur des formes linéaires et quadratiques Programmes (presque) arbitraires
Recettes numériques stochastiques Aucune Intégrées

En défense des outils de programmation entière mixte, ces outils - lorsqu’ils réussissent à résoudre un problème - peuvent parfois prouver - au sens mathématique - qu’ils ont obtenu la solution optimale. Ni le deep learning ni la programmation différentiable ne fournissent de preuve formelle à cet égard.

Conclusions

La Programmation Différentiable est une avancée majeure pour les chaînes d’approvisionnement. Elle est construite sur le deep learning, qui s’est avéré extrêmement efficace pour résoudre de nombreux problèmes “Big AI” tels que la vision par ordinateur, mais réinventé au cœur pour être adapté aux défis du monde réel tels que ceux rencontrés par les chaînes d’approvisionnement réelles. Lokad a développé sa technologie de prévision basée sur le deep learning pour passer à la Programmation Différentiable, qui est la prochaine génération de notre technologie prédictive. Cependant, la PD va au-delà de la simple prédiction, elle unifie l’optimisation et l’apprentissage débloquant des solutions pour une grande quantité de problèmes qui n’avaient pas de solutions viables auparavant.