Programmation Différentiable

power-clouds
La programmation différentiable est le descendant de l’apprentissage profond et représente la convergence de deux domaines algorithmiques : l’apprentissage automatique et l’optimisation numérique. La programmation différentiable ouvre la voie à une série de scénarios de chaîne d’approvisionnement qui étaient considérés comme largement 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, des pierres précieuses, des œuvres d’art), optimisation de flux multi-échelons à grande échelle, optimisation conjointe à plusieurs canaux, optimisation des stocks en cas de 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 efforts des data scientists et des ressources informatiques.

Application aux Chaînes d’Approvisionnement

Au cœur de la Programmation Différentiable (DP), il y a une voie pour unifier des problèmes qui sont restés déconnectés pendant trop longtemps et les résoudre conjointement : l’assortiment, la tarification, la prévision, la planification, la marchandisation. Bien que cette unification puisse 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 a évidemment un impact sur la demande et pourtant la planification et la prévision sont presque toujours effectuées en ignorant totalement les prix.

DP offre la possibilité de prendre des décisions approximativement correctes à partir d’une perspective globale sur l’entreprise, au lieu d’être exactement incorrect 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 font ; et faute d’une technologie - comme DP - capable d’adopter une perspective globale sur l’entreprise, les feuilles de calcul restent l’option la moins terrible.

E-commerce

Pouvoir associer 100% des unités vendues à des clients connus représente une quantité d’informations latentes massives 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 ; ce qui permet de prendre 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 du 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 tels ultra-épars, 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 comprendre même ce couplage - c’est-à-dire la capacité à acheter plus à un prix plus bas génère plus de demande (et vice versa). DP offre l’expressivité nécessaire pour relever ce défi.

Fabrication

L’optimisation numérique de réseaux multi-échelons importants s’effondre lorsqu’elle est tentée avec des solveurs numériques classiques (voir “Au-delà de l’optimisation par branch-and-cut” ci-dessous). En effet, ces solveurs deviennent largement impraticables lorsqu’il s’agit de traiter des millions de variables ou des comportements stochastiques. Malheureusement, la fabrication présente à la fois 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 à la réparation d’un système est manquante, alors tout le système - qui pourrait être un avion - reste en panne. Les prévisions probabilistes sont la première étape pour faire face à 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 simplifie 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 destinées à 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 exploitées conjointement par le canal de distribution et la marque.

Au-delà du battage médiatique sur l’intelligence artificielle

L’intelligence artificielle (IA) a certainement été le mot à la mode technologique de 2018 et le battage médiatique est toujours aussi fort en 2019. Cependant, bien que Lokad utilise largement des techniques qui correspondent généralement au terme à la mode “IA” - par exemple, l’apprentissage profond - 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é-emballée ne fonctionne tout simplement pas. Les supply chains ne ressemblent en rien, par exemple, à la vision par ordinateur : les données, les mesures et les tâches sont tous extrêmement hétérogènes. En conséquence, les entreprises qui ont acheté des solutions prétendument “clés en main” d’IA 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é. Au cœur de leur fonctionnement, 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 connaissances fondamentales sur le domaine telles que :

  • faire des promotions pour une marque de luxe est une très mauvaise idée.
  • 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é arrêtées.
power-clouds Dans un futur lointain, il pourrait y avoir un moment où l'apprentissage automatique réussit à émuler l'intelligence humaine et à obtenir 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 restreints. Les technologies d'apprentissage automatique repoussent chaque année les limites de ce qui constitue un problème "restreint", et après des décennies d'efforts, des problèmes importants tels que la conduite autonome sécurisée et les traductions automatisées correctes sont résolus, ou très proches d'être résolus. Néanmoins, comme l'illustre 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 Supply Chain Scientist pour définir le défi de manière suffisamment restreinte pour que les algorithmes puissent fonctionner.

À cet égard, l’apprentissage profond a connu un succès considérable car, contrairement à de nombreuses approches antérieures en apprentissage automatique, l’apprentissage profond est profondément compositionnel : il est possible d’adapter considérablement la structure du modèle pour mieux apprendre dans une situation spécifique. Adapter la structure du modèle est différent d’adapter 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 frameworks d’apprentissage profond ont émergé des “grands problèmes” de l’apprentissage automatique, à savoir la vision par ordinateur, la reconnaissance vocale, la synthèse vocale, la traduction automatisée. Ces frameworks ont été conçus et ajustés en profondeur pour des scénarios qui ne ressemblent en rien aux problèmes auxquels sont confrontées les chaînes d’approvisionnement. Ainsi, bien qu’il soit possible de tirer parti de ces frameworks pour l’optimisation des chaînes d’approvisionnement, cela n’a pas été une tâche facile ni légère. En conclusion, avec les frameworks d’apprentissage profond, beaucoup de choses peuvent être réalisées pour les chaînes d’approvisionnement, mais l’incompatibilité entre les chaînes d’approvisionnement et les frameworks d’apprentissage profond existants est forte ; ce qui augmente les coûts, les retards et limite 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 aspect 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 aspect d’optimisation numérique. Les décisions doivent être optimisées en fonction des facteurs é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 connexes telles que la méthode 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é à fournir la flexibilité et l’évolutivité nécessaires pour fournir des solutions opérationnelles à de nombreux défis de la chaîne d’approvisionnement, voire à la plupart d’entre eux. La programmation entière est un outil extrêmement performant lorsqu’il s’agit de résoudre des problèmes complexes avec peu de variables (par exemple, le placement des composants dans un appareil électronique grand public), mais elle présente 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 la demande et les délais de transport sont probabilistes).

L’un des aspects les plus sous-estimés de l’apprentissage profond 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 des algorithmes extrêmement efficaces pour effectuer des optimisations à grande échelle. Non seulement ces algorithmes d’optimisation “d’apprentissage profond” - tous basés sur la descente de gradient stochastique - sont beaucoup plus efficaces que leurs homologues branch-and-cut, mais ils sont également beaucoup mieux adaptés au matériel informatique dont nous disposons, à savoir les CPU SIMD et (GP)GPU, ce qui se traduit en pratique par un gain de vitesse supplémentaire de deux à trois ordres de grandeur. 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 frameworks d’apprentissage profond é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 framework pour permettre aux scientifiques de la chaîne d’approvisionnement de mettre en œuvre les contraintes et les métriques à respecter et à optimiser respectivement.

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 l’apprentissage profond 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 connaissances 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 l’apprentissage profond et la programmation différentiable : c’est plutôt un continuum allant des systèmes les plus évolutifs (apprentissage profond) aux systèmes les plus expressifs (programmation différentiable) avec de nombreux concepts de programmation qui deviennent progressivement disponibles - au détriment de l’évolutivité brute - lorsqu’on se dirige 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 industriel déployé à grande échelle.

Apprentissage Profond Programmation Différentiable
Objectif principal Apprentissage Apprentissage+Optimisation
Utilisation typique Apprentissage une fois, Évaluation multiple Apprentissage une fois, Évaluation une fois
Granularité des entrées Objets volumineux (images, séquences vocales, scans lidar, pages de texte complètes) Objets fins (produits, clients, références, prix)
Variété des entrées Objets homogènes (par exemple, images ayant toutes le même rapport hauteur/largeur) Objets hétérogènes (tables relationnelles, graphes, séries temporelles)
Volume des entrées De mégaoctets à pétaoctets De kilo-octets à dizaines de gigaoctets
Accélération matérielle Accélération matérielle Bonne
Expressivité Graphes statiques d’opérations sur tenseurs 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 AI”, le temps d’apprentissage 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 programmation différentiable, les paramètres entraînés sont souvent les résultats mêmes que nous cherchons à obtenir ; rendant ainsi la contrainte d’évaluation en temps réel sans objet. Les attentes concernant les entrées de données, tant en termes de granularité, de variété que de volume, sont également très différentes. Typiquement, le point de vue de l’IA “Big AI” met l’accent sur des quantités quasi infinies de données d’apprentissage (par exemple, toutes les pages de texte du web) où le défi principal 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 frameworks 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 sur tenseurs. 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 en sont des exemples. Deuxièmement, ces recettes jouent également un rôle important du point de vue de la modélisation afin de prendre en compte correctement les comportements probabilistes au sein des systèmes de chaîne d’approvisionnement (par exemple, les délais de livraison variables). À l’inverse, il existe un écart énorme entre la programmation différentiable et la programmation en nombres entiers mixtes - l’approche dominante au cours des dernières décennies a été de réaliser des optimisations numériques complexes.

Programmation en Nombres Entiers Mixtes Programmation Différentiable
Objectif principal Optimisation Apprentissage+Optimisation
Granularité et variété des entrées Objets fins, hétérogènes Idem
Volume des entrées De octets à dizaines de mégaoctets De kilo-octets à 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 en nombres entiers mixtes, ces outils - lorsqu’ils parviennent à 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 supply chains. Elle est basée sur le deep learning, qui s’est révélé extrêmement efficace pour résoudre de nombreux problèmes d’IA “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 auxquels sont confrontées les supply chains du monde réel. Lokad s’appuie sur 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 programmation différentiable va au-delà de la simple prévision, elle unifie l’optimisation et l’apprentissage, débloquant des solutions pour une multitude de problèmes qui n’avaient pas de solutions viables auparavant.